変革の時代を迎えたソフトウェア産業
−開発の手戻りをしないために−
日本アイ・ビー・エム株式会社
布川 薫
第2回開発工程の決め方(2)
さまざまな開発工程/開発様式
ソフトウェア・エンジニアリング
の分野では、1970年に米国のロイ
ス(W.W.Royce)によって初めて
開発工程が形式化されたのを皮切り
に、今日まで様々なパラダイムが提
唱され実用化されている。以下にそ
の主なものを紹介する。
●ウォータフォール・モデル
ロイスによる最も典型的なソフト
ウェアの開発様式。開発工程を何段
階かに分割し、前工程の出力を次工
程の入力としながら滝が流れ落ちる
ように作業を進めるため、後戻りを
許さない[図1 ]。この様式は今
日、多くのプロジェクトにおいて採
用されており、他のどのような開発
様式もこれが基本となっている。
●スパイラル・モデル
ベーム(B.W.Borhm,1986)が提
唱した、計画や要件定義、設計とい
った開発の上流の各段階でプロトタ
イプを作成し、それを洗練しながら
工程を進める様式[図1 ]。この様
式は、リスクが小さくなった時点か
ら従来のウォータフォールに入る。
しかし近年では、ごく小さな対象
のシステム仕様とプログラムを試行
錯誤的に段々とたたき直していく方
法にこの名称が付けられている。ラ
ウンド・トリップは、オブジェクト指
向開発でのスパイラル型にあたる。
また、大きな開発で一気にこの方
式を用いると、プロジェクトが収束
せず失敗するのが常なので十分な注
意が必要である。
●インクリメンタル
対象をサブシステムやコンポーネ
ントなど小部分に分割し、優先順位
の高い部分から順次に作っていく方
法[図1 ]。完成させた部分から
順次に本番稼働させる場合は、イン
クリメンタル・デリバリー(Incre-mental
Delivery)という。
●イタラティブ
分割した小部分ごとに複数の開発
サイクルを繰返し、修正や改良を加
えながら完成させていく方法[図1
]。各サイクルごとに明確な開発
目標を設定し、完了時にその達成度
を評価してから次の変更や改良に進
んでいく。ロレンツ(M.Lorenz,
1993)が提唱したこのやり方は、オ
ブジェクト指向の開発にも適合し、
通常2〜4回の繰返しがプランされ
る。
●RAD(Rapid Application
Development)
短期間・高品質・低コストを目的
に、マーチン(J.Martin,1991)
によって提唱された開発様式。シス
テムの目的や範囲が明確でリスクの
少ない、小さなプロジェクトを切り
出して開発する方法である。その特
徴としては、
□少数精鋭チームでの開発
□エンドユーザの十分な参画
□タイムボックス開発
□自動化ツールとプロトタイピン
グの活用
などがある。タイムボックス開発は、
対象を小さく分割し、各々3カ月、
6カ月と期間を限定しインクリメン
タルに開発するもので、期限を第一
とするため、ときに優先順位の低い
機能は切り捨てるか次回の開発にま
わすこともある。
●クリーンルーム
IBMのミルズ(H.D.Mills,
1987)らが提唱した無故障ソフトウ
ェアの開発を目指す手法。RADと
同様、少数精鋭・短期サイクルのイ
ンクリメンタル開発を基本とする。
そのほか、
□固有の形式的仕様記述言語を用い
て仕様を作成する
□ブラックボックス(外部仕様)→
ステートボックス(内部仕様)→
クリアボックス(モジュール論理
仕様)の3段階のボックス表現に
より設計を進める
□毎日の検証により単体テストを省
略できる
□テストは開発チームとは別個の品
質保証チームが担当する
□使用頻度を想定したサンプリン
グ・テストを重視する
などの特徴がある。これは主として
ソフトウェア製品の開発などに適し
ている。
●プロトタイピング
ウォータフォールやほかの開発工
程と組合わせて用いるもので、
(1)システム化案の具体化/可視化を
目的にユーザの目の前で直接デモ
の形で実施するもの
(2)迅速なユーザインタフェースの仕
様固めに用いるもの
(以上、“廃棄型”)
(3)最初に骨格部分のプロトタイプを
作り順次これに肉付けしながら本
番に仕上げていくもの(“進化型”)
がある。いずれの場合も繰返し実施
するので、適切なビジュアル開発ツ
ールなどを用いることが肝要であ
る。
開発規模が数百ファンクション・
ポイント(COBOL換算で数万ステ
ップ相当)以下といった小さなプロ
ジェクトなら、最初からいろいろな
<-- 99 -->
開発工程の検討が可能である。しか
し、数千ファンクション・ポイント
あるいはそれ以上の大規模/特大規
模プロジェクトの場合は、局面化や
サブシステム化の適用が必須とな
る。局面化(Phased Approach)とサ
ブシステム化(Subsystemization)
の目的は「大規模プロジェクトを実
行可能/管理可能なサイズに分割す
る」ことであるが、局面化がプロジ
ェクトの遂行期間を時間軸に沿って
縦切りにするのに対し、サブシステ
ム化は開発サイズの観点から横切り
にする。
図2に示した「サブシステム化の
要領」で大事なのは、サブシステム
を決定するタイミングが外部設計
(システムの方式設計)の開始後で
あり、外部設計の中程までにこれを
確定することである[図2/上部]。
大きな開発では、業務別に要件調査
チームの分割を行ったりするが、こ
れがそのままサブシステムにはなら
ない。BPR(ビジネス・プロセ
ス・リエンジニアリング)の例を持
ち出すまでもなく、現行の組織や業
務処理のあり方自体が、必ずしも最
適になっているとは言い難いためで
ある。サブシステムは、業務におけ
る情報やデータの流れを中心にし
て、業務的な括りやデータや処理の
配置(集中/分散など)といったシ
ステム形態の観点での括りも考慮し
ながら、主要なデータストア(論理
データベース)を中心とした処理の
まとまりとして切り出す。この際、
サブシステムの境界は、データの流
れの「より簡素な部分」とし[図2/
下部]、各サブシステムの独立性を高
めることで、変更や修正に伴う相互
の影響を最小限に抑える。(独立性の
強い小さな開発ほど生産性が高まる
ことは、第1回で言及した。)サブシ
ステムは、インタフェースとなる受
渡しデータを定義した後、確定する。
開発工程の組み方
クライアント/サーバやネットワ
ーク・コンピューティングなどの新
しい開発環境下での大きな規模の開
発では、次のような開発工程をとる
とよい[図3]。
システム全体の整合性をとるため
に、要件定義を局面として実施す
る。要件定義局面のワークロード
比率は、25%もしくはそれ以上
とする。(これは、下流工程に効
率的な開発ツールを採用すること
で、要件定義の比率が相対的に増
加するためでもある。)
要件定義の成果物である新システ
ムの論理モデルをもとに、データ
と処理の実現方法を十分に検討し
ながら、サブシステム分割を行
う。
外部設計〜開発実施の間は、各サ
ブシステムごとの特性や開発期
間、要員数、使用するツールとそ
の熟練度、プロジェクトのリスク
などを考慮し、ウォータフォール
/ノンウォータフォールのいずれ
か、あるいはそれにプロトタイピ
ングを組合せた工程をとる。
すべてのサブシステムの開発が完
了した後(ただし、インクリメン
タル・デリバリー=段階的なカッ
トオーバーの方式をとる場合は、
計画に基づき完了したサブシステ
ムまで)、サブシステム間統合テ
ストを局面として実施する。
開発の最後に、業務システム全体
としてのシステムテスト局面を実
施する。
次回は、RADやプロトタイピン
グを採用する場合の考慮点について
詳述する。
profile
布川 薫(ぬのかわかおる)
1971年群馬大学工学部電気工学科卒業、同年富士ゼロックス鞄社。
1973年日本アイ・ビー・エム鞄社、システム・エンジニアとして各種情報シス
テムの開発、都市銀行システムの開発を担当。現在、サービス事業・コンピテン
シーに所属し、アプリケーション開発方法論やプロジェクト管理技術などを担当。
副主管ITスペシャリスト(次長)。
おもな著書に、『システムの開発と運用』、『アプリケーション開発技術』(いずれ
も共著、リックテレコム)