変革の時代を迎えたソフトウェア産業
−開発の手戻りをしないために−

日本アイ・ビー・エム株式会社
布川 薫

第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スペシャリスト(次長)。
おもな著書に、『システムの開発と運用』、『アプリケーション開発技術』(いずれ も共著、リックテレコム)