昨日の続き
設計には、「仕様設計」と「詳細設計」がある。「詳細設計」の設計書はソースコード+α程度で良いが、「仕様設計」の設計書=仕様書は、先にかなりの完成度で作っておかなければならない。
さて、ウォーターフォールの工程は、大きく「設計」「製造」「テスト」になる。ここで、各工程の内容を定義してみる。
- 設計
- 入力:要件
- 作業:仕様設計・システム設計
- 出力:仕様書、システム構成図、システムテスト仕様書
- 製造
- テスト
- 入力:設計フェーズの出力+バイナリ
- 作業:システムテスト
- 出力:システムテスト成績書
こうすれば、プログラマは「製造」工程でかなりの自由度を得る事が出来る。
ユニットテストも「製造」の一部なので、テストファーストが「製造」⇒「テスト」の流れに反する事も無い。
コードになったらゴミ箱行きでいい筈のメモ・スケッチを、誰が読んでも判るようなWord文書に整形する必要も無い。
ウォーターフォールでは、各工程の間のinput/outputは明文化されたドキュメント(はんこ付き)で区切られるべきであり、そこに暗黙知が入り込んではいけない。逆に言えば、詳細設計+コーディング+ユニットテストはお互いに密接に結びついた作業であり、ウォーターフォールのフェーズとして切り離す事は間違いである。