勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

ソフトウェア見積もりとステップ数のこと

そういえば、「100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊」に「ソフトウェア見積り―人月の暗黙知を解き明かす」が入っていなかったのが気になっていた(「アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~」はちゃんと入っているのに)。

ステップ数見積を見積工程の成果物にすると、計画を立てずに物事を進めるということにつながりやすいので、いけませんよということです。
生産性とかアジャイルとかフレームワークとか言語とかも大事だけど、見積をちゃんとやるのはすごく成功に寄与するよ。
ソフト開発をステップ数で見積っていることに疑問を持たなくてはならない - 山本大@クロノスの日記

以下個人的な見解。

  • ステップ数見積もりは思考停止ワードの一種なので、まずこの単語が出て来たらかなり注意する
  • ステップ数見積もりを行うこと自体は悪いことじゃない。ただ、ソフトウェア規模を図る方法の一つであって、工数とかコストを見積もるためにステップ数見積もりを行うのはかなり乱暴
  • 同一の言語、アーキテクチャ、ドメインといった条件が揃えばステップ数見積もりはそれなりに正確にできるかもしれないけど、条件がちょっとでも変ればあまり意味は無い
    • ソフトウェア保守のような局面では、ステップ数見積もりはかなり高い精度で出来るかもしれないけど、やっぱり工数とかコストの見積もりには繋がらない。テストなどの兼ね合いで、ステップ数と工数は単純に相関してないから
  • じゃあ何の為にステップ数を見積もるのかというと、他の手法で行った見積もりを検証したり、他のプロジェクトと比較をするため。要は検算目的
    • 何かの見積もりロジックや計算式がバグっていないかを確認するために時々使えることがある
    • メンバーのひと月あたりの作業量などに割り戻して、「ありえねー」作業量になっていないか確認するとか

コード行という指標は、ソフトウェアの規模を測るにはまったく適さない方法である。ただし、規模を測る他の方法よりはましである。それにもかかわらず、多くの組織では、過去のプロジェクトの規模を測定したり、また新しいプロジェクトの初期の見積りを作成するために、コード行という指標を相変わらず馬車馬のように使っている。コード行はソフトウェア見積りの指標のリンガフランカ(共通語)である。この指標の限界さえ覚えておけば、手始めとしては適しているだろう。
ソフトウェア見積り―人月の暗黙知を解き明かす

最初の一歩であってもいいけど、最後の決め手につかうのはだめだ。

ソフトウェア見積り―人月の暗黙知を解き明かす
スティーブ マコネル
日経BPソフトプレス
売り上げランキング: 23135