一口に開発プロセスと言っても,様々な種類がある。具体的に,それぞれの開発プロセスにはどのような違いがあるのか。また,どのような基準に基づいて開発プロセスを選択すればいいのか。ここでは,様々な開発プロセスについて解説する。

 「反復型やスパイラル型といった言葉は聞いたことがあるが,それらの内容までは知らない」。読者の中には,こうしたエンジニアも少なくないのではないか。そこでここでは,様々な開発プロセスの歴史や特徴,選択の基準を説明しよう。

 まずは「開発プロセス」の定義を明確にしておきたい。

 英語の辞書を引くと,プロセスには「処理」と「工程」という2つの意味がある。一般に「処理」は単数形(Process),「工程」は複数形(Processes)で表す。

 情報システムにおける「処理」とは,仕様やデータ,プログラムなどの「入力」に対してなんらかの作業を実施して,結果を「出力」することを言う。一方の「工程」は,ある目的を実現するために複数の処理を順序付けて実行することを指す。

 「開発プロセス」と言った場合の「プロセス」は,通常この「工程」の意味で用いる。つまり,開発プロセスとは,システム開発で実施する処理とその手順を定めたものである。各処理の具体的な作業内容を「アクティビティ」,出力する仕様やプログラム,ドキュメントなどを「作業成果物」と呼ぶ。

ウォーターフォール型の誕生

 歴史をたどりながら,主な開発プロセスの特徴や誕生の背景を紹介していこう。

 1960年代後半,開発するシステムの大規模化に伴い,個人の能力や経験のみに頼った方法に限界が生じ,体系立った開発方法が求められるようになった。そんな中,1970年に米国のW.W.ロイスが,ソフトウエアの作成から廃棄までの「ライフサイクル・プロセス」の概念を提唱した。

 ライフサイクル・プロセスでは,開発工程をいくつかのフェーズ(局面)に分割し,前フェーズの成果物を次のフェーズの入力とする。滝が上から下へと流れ落ちるように開発していくことから,「ウォーターフォール型開発プロセス」と呼ばれる(図1)。

図1●ウォーターフォール型開発プロセスの例
図1●ウォーターフォール型開発プロセスの例
滝から水が落ちていくように,開発を順番に進めていく

 ウォーターフォール型は,別名「V字型モデル」ともいう。「要件定義」フェーズを左上とし,「開発」フェーズで折り返して右上へと進むことで“V字型”を形成する。V字型の前半部分は「品質を埋め込む段階」,後半は「品質を確認・検証する段階」と位置付けられ,左右のフェーズが対応付けられる(図2)。例えば,要件や仕様がすべて反映されていることは「システム・テスト」フェーズで検証し,「外部設計」フェーズの結果は「サブシステム間統合テスト」フェーズで,「内部設計」フェーズの結果は「コンポーネント間統合テスト」フェーズで検証する,という具合である。

図2●品質保証の観点から見たウォーターフォール型開発プロセス
図2●品質保証の観点から見たウォーターフォール型開発プロセス
「品質の埋め込みプロセス」と「品質の確認・検証プロセス」に分け,前者の仕様を後者で検証していく。 両者の対応関係がV字型になるので,ウォーターフォール型をV字型モデルと呼ぶこともある

 建築物や工業製品の製造のほとんどは,ウォーターフォール型と同様に,前フェーズの結果を次フェーズの入力とする。この確実性,一般性ゆえに,ウォーターフォール型は長年多くのシステム開発プロジェクトに適用されてきた。しかし,その一方でいくつかの問題点が指摘されている。

 主な問題点の1つは,システム化が初めてだったり,システムが複雑な場合,要件定義フェーズですべての要件を洗い出すことが困難なこと。ウォーターフォール型では要件定義フェーズでの漏れは想定していないので,当然リスクとして跳ね返る。

 2つめは,テスト・フェーズがプロジェクト後半に設定されているため,要件定義フェーズや外部設計フェーズなどの上流工程に欠陥があっても,それがプロジェクトの終盤まで発見できないケースが多いことだ。終盤で欠陥が発見された場合,手戻り(前のフェーズに戻ること)によるコストは極めて大きなものになる。