ソフトウェア開発工程
ソフトウェア開発には製造 (manufacturing) 工程が事実上存在しない。そのほとんどが設計工程に属する。
製造業では企画・設計・製造のプロセスが見出され、製造工程では量産とその最適化(カイゼン)がおこなわれる。しかしソフトウェアは複製コストがゼロであり、コピー・アンド・ペーストで製造が完了するためこの工程が事実上存在しない。もしソフトウェアデータが複製できないとしたら、作業員による完成コードの写経とテスト実行によりソフトウェアは1つずつ量産されるはずであり、これはまさに製造工程である。実際にはコピペでこの工程を丸々スキップできる、すなわち製造工程が存在しない。
ソフトウェアが頻繁に変更されることもこれを示唆している。製造業において製造工程(製造ライン)の全面的変更は極めて稀であり、するとしてもそれは作業員の役割ではない。一方ソフトウェア開発ではリファクタリングをはじめとしたソフトウェア内部の変更が推奨され、それはプログラマーの役割である。頻繁な変更が実作業者におこなわれるのは開発/設計段階であり、すなわちコーディング含むソフトウェア開発は製造工程でなく設計工程に属している。
開発プロセスは何種類のもサブプロセスからなる。開発サブプロセスのモデルには様々な種類がある。規格としてISO 12207、能力成熟度モデル統合(CMMI)が挙げられる。以下は代表的なサブプロセス(モデル)である。
大規模なシステム開発ではサブシステム化も併用し、各サブシステムで時期をずらしてウォーターフォール・モデルを採用する事で、先行するサブシステムで発見した問題を後続のサブシステムでは早い段階の工程で取り入れたり、各工程の要員(設計者・プログラマ・テスターなど)や主要イベント(プロジェクト立ち上げ・レビュー・検収・研修・本番稼動など)の平準化を図る場合も多い。また各工程の内部では後述のスパイラルモデルや反復型開発を組み合わせる場合もある。
ウォーターフォールの問題は、要求分析と要求管理についての技術的未熟さから生じることが多い。さらに言えば、開発工程の弱点の把握不足と開発者が問題を理解せずにコーディングを開始してしまうことからも問題が生じる。また、しばしば省略されがちな工程として顧客と開発者の間での共同レビューがある。開発者は危険を承知で設計を進めて開発するが、その設計は最終的には Critical Design Review(最終設計審査)というマイルストーンでチェックを受けることになる。この手法への批判はソフトウェア工学者よりも実際の技術者から出てくることが多い。批判者はWISCY(Why Isn't Someone coding yet?)アプローチなどを信奉している。