忍者ブログ

東からの放浪者

様々なソフトウェア開発を経験してきた視点から、開発、マネジメント、経済などについて書いています。
タイトルは、あるレトロゲームからのオマージュ。

ツイッターアカウントはこちら。

ソフトウェアの開発規模とチーム人数

ソフトウェアは、開発規模が大きくなると生産性が落ちる。
また、開発規模に応じて開発手法を変えていかなくてはいけない。

でも、開発規模ってどうやって判断するの?

ソフトウェアの開発規模

前回の記事で、小規模プロジェクト、大規模プロジェクトという言葉を使っていましたが、
これらの言葉に具体的な定義はありません。(^_^;)

ソフトウェア開発で測定できるもの

ソフトウェアは形がなく、開発規模の測定や予測は難しいです。
けれど、何か定量的に測れるものがないと、開発規模の判断もできません。

判断材料としては、以下のようなものがあります。

開発費用
開発者でなくても測定できるので、上司にプロジェクトの説明をするときには便利です。
ただし、現場の開発者には知らされていないことが多く、
会社によっては、共有が難しいデータかもしれません。

コード行数
コード行数から開発規模を測定することには、いろいろ議論がありますが、
正確に、そして自動的に測定できるのが魅力です。
COCOMO という見積もり手法でも、コード行数が入力として使われています。

トランザクション数、データ数
ファンクションポイントという見積もり手法では、これらが入力として使われます。
ただし、データベースを扱うシステムの開発でないと、利用は難しいと思います。

開発者数

開発者、マネージャ共に目視で確認でき、ソフトウェア開発の経験がなくても、
簡単に判断できる指標があります。それが、開発者の数です。

もちろん、

  • 開発プロセスの成熟度
  • 開発するソフトウェアの種類、複雑性
  • 開発者が地理的に分散しているか否か

など、影響を与える要因は他にもあります。
しかし、私は経験上、これが一番簡単で確実だと思っています。

最適なチーム人数

以下のグラフは、『初めて学ぶソフトウェアメトリクス』という本に掲載されているデータを
グラフ化したものです。(他の書籍でも引用されている有名なデータです。)

チーム人数とスケジュールと生産性

チーム人数が、5~7人までは、
「開発工数は投入した人数分上がるが、開発期間は短くなる」
という期待通りの結果になっています。

しかし、それ以上にチーム人数が増えると、
「開発期間はむしろ長くなり、開発工数は跳ね上がる」
という結果になっています。

つまり、規模の不経済が働くわけです。


小規模開発の限界

私も経験上、7~8人が「チームとして最適に活動できる人数」の境界線だと思っています。

これ以上に人数が増えると、チーム内で情報をうまく共有することができなくなってきます。
すると、以下のような問題が増え、生産性が落ちてしまいます。

  • メンバー全員に情報を共有するのにコストがかかる
  • メンバー同士がお互いの仕事や状況を把握できないため、
    負荷に偏りが生じたとき、「作業を手伝う」「引き継ぐ」などができなくなる
  • 情報の共有不足により、作業の重複、作業の手戻りなどが発生する

最も簡単な対策は、チームを分割することです。

小規模開発の限界

その後は「チームで分業をし、チーム間で連携して開発をする」
という開発スタイルになります。

私は、これが小規模開発の終わりだと思います。

つまり、「個人の能力のみに頼った開発」が終わり、
チームリーダーを育てる必要が出てきます。

小規模開発の終わり

大規模開発へ

大規模開発になると、開発プロセスの成熟度マネジメント能力
プロジェクトの成否を左右するようになり、管理ツールの導入などが必須になってきます。

では、どれくらいの開発人数になると、その領域に突入するのでしょうか。
私は、これも前述の「最適なチーム人数」がカギだと思います。

つまり、こうです。

大規模開発の始まり

チーム数が 7~8 チームを超えてくると、
チームリーダーが全員優秀だったとしても、生産性が落ちてきます。
(リーダ同士の連携が、効率的に行えなくなる。)

こうなると、プロジェクトを分割して管理する必要がでてきます。
この状態は、完全に大規模開発だと思います。

この規模になると、技術的なリーダーシップだけでは開発が回らなくなってきます。
つまり、プロジェクトをマネジメントする人が必須になります。
(上の画だとプロジェクトリーダー)

今日のまとめ

  • チームの人数が 7~8人を超えたら、チームを分割する
  • チームを分割するようになったら、リーダーを育てる必要がある
  • チームリーダーの数が 7~8人を超えたら、大規模開発に突入する
  • 大規模開発になったら、マネジメントができる人を育てる必要がある

小規模と大規模の間は何なの?(*'-')

これは、中規模開発と呼ばれていて、
「個人の能力に頼った開発」「マネジメントによる開発」の間の規模です。

非常に中途半端な規模で、どういった開発スタイルがよいのかは、
プロジェクトごとに異なっていて、私も一概には判断できません。

ただ大事なことは、このときに
「開発規模をこれ以上大きくするのか否か」を決めなくてはいけない、ということです。

  • 個人の能力を重視したいから、開発規模の増大を抑えるのか
  • 大規模な製品を作りたいので、体制を整え、マネージャを育てて準備をするのか

一番よくないのは、ただ茫然と開発規模の肥大化を見過ごしてしまうことです。
大規模開発に突入した時点で、プロジェクトは失敗することになります。

そして、大規模開発の失敗は、会社に致命的なダメージを残します。
ソフトウェアを開発している会社は、開発規模の判断ができないといけないのです。
記事を気に入っていただけた方は、クリックしていただけると励みになります。
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓


PR

コメント

プロフィール

HN:
なかば
性別:
男性
職業:
元ソフトウェアエンジニア
自己紹介:
東京のゲーム会社でゲームプログラマ。
家電メーカーで組み込みエンジニア。
その後、京都に移動して観光を楽しみながら
製品開発、業務改善、QA管理などを経験。
今は東京に戻って暮らしています。

詳細な自己紹介は、こちら

カレンダー

03 2020/04 05
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30