上流工程における要注意事項


ウォーターフォール型システム開発の上流工程における要注意事項についてお話します。

1.ウォーターフォール型システム開発に対する簡単な説明

 ウォーターフォール型では、概ね以下のフェーズに分けて段階的にシステム開発を行います。
 ※細かい部分は開発案件による違いがありますが、だいたいこんな感じという程度に捉えてください
 
           開発側  ユーザー
 (1)要件定義      ○    ○
 (2)基本設計      ○    ○
 (3)詳細設計      ○    -
 (4)プログラム製造   ○    -
 (5)単体テスト     ○    -
 (6)結合テスト     ○    -
 (7)総合テスト     ○    △
 (8)運用テスト     △    ○
 
 上記のうち(1)(2)がこの記事で取り上げる上流工程にあたり、この2つのフェーズはユーザー(システムの使用者)と打合せをして、どのようなシステムを開発するかについて、設計書上で具体的なかたちに起こしていきます。

 (3)~(6)のフェーズについては、基本的にはユーザーとは関係しない開発側だけの作業となり、(7)(8)のフェーズにて再びユーザーとの共同作業となります。(実際にこのように綺麗にいくかは別ですが、定義としては・・・という話です)

2.上流工程におけるスケジュール管理

 
 システム開発に対する進捗管理はマスタスケジュール表(ユーザーと共有)を作成することで行いますが、上流工程で管理されるスケジュールの単位は開発するシステムの機能であり、ユーザーがシステムの完成品をイメージできる設計書になります。
 
 この上流工程のスケジュールに遅れが発生することは(基本的には)絶対に許されず、とにかくこの上流工程の期間はユーザーとの打合せおよびマスタスケジュールの遵守が最優先事項となります。
 

3.上流工程における要注意事項

 さて、この上流工程においてユーザーとの合意を取りながらマスタスケジュールを死守していく一方で、その裏側(水面下)ではもう一つの最重要課題があります。
 
 それは、他でもない詳細設計(上記1(3))とプログラム製造(上記1(4))に対する準備です。
 
 具体的には、テーブル項目とその使い方、根幹となる機能や処理に対する内部処理フローなどになるのですが、これらの設計書はユーザーに対しては必ずしもそのすべてを説明する必要はなく、ユーザーと共有するマスタスケジュールにも基本的には登場しないことが多いです。

 このため、これらの作業に対する優先度は自ずと下がってしまう傾向にあり、結果として詳細設計以降に開発メンバーが合流した時点でプロジェクト内部は一気に混乱し、ある日突如として大幅なスケジュール遅延が発生(といよりは、発覚)してしまうことになります。
 

4.回避策

 これは相当に難しいです。
 
 理論上はWBSを導入することで回避可能なのでしょうが、いろいろな意味において、その難易度は極めて高いと思っています。
 
 そういう意味で、私自身としても明確な回避策はないのですが、ある日突然プロジェクト内部を破綻させないためにも、詳細設計以降の開発を十分に意識したうえで上流工程を進めることが大切です。。。
 
 
以上