ソフトウェアで実現したいこと(ここでは「要求」と呼ぶことにします)と、そのために必要な設計要素は多対多の関係になることが多く、開発スケジュールを決める段階では、その関係を把握することポイントになってきます。
例えば、
といったケースでは、要求 1 と要求 2 の実装工数を別々に見積ることにあまり意味はありません。 なぜなら、それらを実現するために必要な設計要素 A が重複しているため、単純に合計したときに正しい見積りとならないからです(過大な工数見積りになってしまう)。 つまり、工数見積りは、あくまで設計要素に対して行い、それらの組み合わせとしてどの要求が満たされるか、といった考え方をするべきです。
要求変更や仕様変更に対する設計要素への影響を見える化するための「トレーサビリティ・マトリクス」という考え方がありますが、プロジェクトの初期段階ではそこまでしっかりとした表を作る必要はなく、ざっと工数見積りを行うための表を描いてみるとよいです。 例えば以下のような感じです。
工数 | 要求1 | 要求2 | |
---|---|---|---|
設計要素 A | 7 | ● | ● |
設計要素 B | 1 | ● | |
設計要素 C | 3 | ● |
このような表があれば、要求 1 だけを実現するための工数は 8 (7+1)、要求 2 だけを実現するための工数は 4 (1+3)、両方を実現するための工数は 11 (7+1+3)、と見積ることができます。 どのような実装をすれば、より少ない工数でより多くの要求を満たすことができるのかを把握できるようになります。