パスワードを忘れた? アカウント作成
281352 journal

shimashimaの日記: [ソフトウェア工学]人月の神話 5

日記 by shimashima

すでにソフトウェア工学の古典となっている「人月の神話」。この中で紹介されている有名な法則として、遅れているプロジェクトに要員追加を行うとより遅れるというものがある。

この話はソフトウェア開発に身を置くものであればたいていの人は同意するだろうし、一定の条件下ではたしかにその通りだろう。(既存メンバの数倍の投入を行い、プロジェクトの再構成を行う場合はこの限りではない)
だが、タイトルになっている「人月の神話」の本質はそこではない。
「人月(man-manth)」という言葉が「要員数×時間(月)」という計算式であらわされた作業量だとしても、そこに人とと時間の可換性はなりたたないということだ。つまり、作業量300人月とされたとしても一月で300人動けばできるかといえばそうではないということだ。
商取引の金額を求めるための人月としての役割はある、人月で出された工数自体に意味はないということを理解しなければならない。

Capers Jones先生のFirst Order見積もりも、すこしずれるがみてみるといいだろう。
規模(単位はFP)に応じてミニマム必要な期間を割り出すことができる。

なんとなく、ブルックス先生の新刊「The Design of Design」の邦訳がでるので書いてみた。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by onetime_id (39093) on 2010年12月11日 12時37分 (#1872334) 日記

    http://www.atmarkit.co.jp/news/200806/26/juas.html [atmarkit.co.jp]
    「標準の開発工期は投入人月の立方根の2.4倍である」

    とか、人月からざっくり工期を出す計算式は割りと見る気がする。

    • by okky (2487) on 2010年12月11日 13時25分 (#1872352) ホームページ 日記

      つまり開発工期を x, 投入人数を y とすると

      ( x / 2.4 )^3 = x * y
      x^2 / (2.4^3) = y
      y = 0.0724 * x^2
      x = ( 2.4^3 )  * sqrt( y ) = 13.824 * sqrt( y )

      って感じか。

      …ん?これだと人数が1の時ですら、必ず1年以上かかるプロジェクトになるなぁ…。
      # もちろん、人数が 2 以上だと、さらに大きな数字になる。

      「よし。では技術者A をこのプロジェクトには 1/10 だけ関わらせることにしよう。そうすれば 0.13824 ヶ月の開発工期で完成するぞっ。
       おいっ、他に後9個、このクラスの開発事案もってこい。」

      --
      fjの教祖様
      親コメント
      • by onetime_id (39093) on 2010年12月11日 21時24分 (#1872505) 日記

        x^2 = ( 2.4^3 ) * y で
        x = sqrt(13.824) * sqrt( y ) ≒ 3.718 * sqrt( y ) では?

        あとsqrt(0.1)≒0.316なので
        13.824 * 0.316 ≒ 4.372

        で4.372ヶ月の開発工期では?

        #もっと根源的な部分で違和感があるのだけれど、いまいち表現しきれない。。。

        親コメント
      • by oku (4610) on 2010年12月15日 17時19分 (#1874238) 日記

        二行目から計算を間違えていますよ。

        y = 0.723 * x ^ 6
        x = 1.055 * y ^ (1/6)

        になるのでは?

        つまり、1人プロジェクトなら1人月くらいで1ヵ月くらいが「標準的」というのが IPA 的結論になるはず。

        親コメント
typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...