Part2では,多くのシステム開発で実績を持つ日本IBMの「IBM-DOA」に基づく外部設計フェーズの手順を説明する。ここで紹介するDOAに基づく複合/構造化設計手法は,どんなプロジェクトにも応用できる基本的なアプローチだ。基本をしっかりと身に付けてほしい。

 DOA(Data Oriented Approach:データ中心型アプローチ)は対象システムの「データの流れ」の把握に重点を置きながら,要件定義や設計を進めていくアプローチである。

 DOAには様々なタイプがあるが,日本IBM独自の「IBM-DOA」では,主に業務全体をデータの流れに着目して図で表現するDFD(Data Flow Diagram)を使って業務を分析・設計していく。Part2では,この「IBM-DOA」に基づく外部設計フェーズの進め方を説明しよう。「今さらDOAか」と思わないでほしい。最も基本的で一般的なアプローチなので,どんなプロジェクトにも応用が利く。ぜひしっかりと理解してほしい。

中心的な役割果たすDFD

 IBM-DOAで中心的な役割を果たすDFDは,アプリケーションの要求を仕様としてまとめるのに向いており,データを中心に明確であいまいさの残りにくい仕様を作成できる。

 後続フェーズへの連続性もDFDの大きなメリットである。実際,要件定義フェーズの成果物として作成したDFDは外部設計のインプットとなり,外部設計ではDFDを基にサブシステム分割を行ってプロセスやデータの実現方法を決定していく。

 DFDでは,業務全体を「データフロー(データの流れ)」,「データストア(データの蓄積)」,「プロセス(処理)」などの要素で表現する(図1)。IBM-DOAではこの表記法に従って,4つのDFDモデルを作成する。現行業務のデータの流れを表す「DFD現物理モデル」,そこから本質的なデータの流れのみに絞った「DFD現論理モデル」,新システムへの要件を加えた「DFD新論理モデル」,そしてアーキテクチャなどの物理的な特性を加味した「DFD新物理モデル」である。このうちDFD新論理モデルまでは要件定義で作成し,DFD新物理モデルは外部設計で作成する。これらのDFDモデルは,最も抽象度の高いレベルから段階的に詳細化していく。

図1●DFD(Data Flow Diagram)の表記法
図1●DFD(Data Flow Diagram)の表記法
表記法には,トム・デマルコ氏が考案した「デマルコ式」と,クリス・ゲイン/トリッシュ・サーソン氏が考案した「ゲイン/サーソン式」がある。日本IBMではゲイン/サーソン式を採用している

 要件定義では,DFD新論理モデルの中の「データストア」に含まれるデータ項目をリストアップした「データストア記述」,「データフロー」に含まれるデータ項目をリストアップした「データフロー記述」,「プロセス」の内容をIPO(Input Process Output:入力-処理-出力)形式で記述した「処理機能記述」も作成する。DFD新論理モデルとこれら3つの仕様書を「DFD4点セット」(図2)と呼び,外部設計への重要なインプットとなる。

 DFD4点セットのうち「データストア記述」はデータの正規化とER図作成を経てデータベース設計に,「データフロー記述」は画面や帳票設計に,「処理機能記述」はプログラムの機能仕様に直接つながる。このように,要件定義の成果物を無駄なく機械的に外部設計のインプットにつなげられる点が,IBM-DOAが特に大規模開発において実績を上げている大きな理由の1つである。もちろん,このアプローチは,中小規模のプロジェクトにも十分適用できる。

図2●DFD4点セット<br>DFDに加えて,データストアの内容を示した「データストア記述」,データフローの内容を示した「データフロー記述」,プロセスの内容を示した「処理機能記述」の4つを,要件定義フェーズで作成する
図2●DFD4点セット
DFDに加えて,データストアの内容を示した「データストア記述」,データフローの内容を示した「データフロー記述」,プロセスの内容を示した「処理機能記述」の4つを,要件定義フェーズで作成する
[画像のクリックで拡大表示]

複合/構造化設計を知る

 IBM-DOAは1980年代の初めに確立されたものであり,設計手法としては,アプリケーションを分かりやすいまとまりに分割する「構造化手法」をベースとしている。構造化手法に馴染みのない読者もいるかもしれないので,はじめに構造化手法について説明しておこう。

 構造化手法は60年代後半からの「構造化プログラミング」に始まり,今日までにいくつかの手法が確立している。代表的な手法としてはDFD,データの正規化,データ項目の集まり(エンティティ)とエンティティ間の関連を図で表現するER図(Entiry Relationship Diagram),複合/構造化設計(Composite/Structured Design)などがある。

 複合/構造化設計は,G.J.マイヤーズらが1970年代に体系立てたソフトウエア構造の設計手法である。IBM-DOAでもこの複合/構造化設計の考え方が根底に流れている。

 実際,外部設計におけるサブシステム分割やシステム機能仕様の作成では,複合/構造化設計のモジュール分割手法がベースになっている。複合/構造化設計は,外部設計の基本中の基本」なので,以下で,より詳しく説明しよう。