オブジェクト指向のシステム開発での設計作業は、
基本的には分析結果を詳細化する作業である。

オブジェクト指向による開発手順の概要は以下の通りである。

要求分析

システムに求められる用件を確認する。



システム化対象範囲をモデル化する

入力文書
業務構造および業務手順が得られる文書
(業務構造図、業務フロー、業務機能仕様書)
出力文書
ユースケース図

新システム化構想作業の中でまとめられた、業務構造や
業務の手順、業務の仕様を示した文書 (業務構造図や業務フロー、業務機能仕様など) を
基にシステム対象領域を確認する。その領域内に、どのようなコンピュータ処理が
存在しているかを抽出し、その結果をユースケース図にまとめる。

ユースケース図は、システムの利用者がそのシステムに対して
何をさせたいと希望しているかを明確にした物であり、
システムの使用例を記述した物と言える。

ユースケース図は、アクターユースケースで表す。



業務処理手順をモデル化する

入力文書
ユースケース図
業務構造および業務手順が得られる文書
出力文書
アクティビティ図

業務処理手順のモデル化の作業では、ユースケース図や業務構造および
業務手順を示す文書を用いて、アクティビティ図を作成する。
このことで、ユースケース内で、アクターがどのような操作を行っているかを把握する。

システムが持つ機能は、ユースケース図に記述されているが、
ユースケース図ではどのようなタイミングで処理がなされるかという
制御の部分や時間の経過に伴う変化の具合などが見えにくい。
アクティビティ図ではこれが明確になる。



機能を詳細化する

入力文書
ユースケース図
アクティビティ図
業務構造および業務手順が得られる文書
出力文書
ユースケース記述
(概要ユースケース、詳細ユースケース)

新システムの用件をより具体的に確認するために、
各ユースケースの内容をより詳細化する。
ユースケース図によって、システムが受け持つ処理の範囲と境界が明らかになったが、
システムに持たせる機能を明確にするために、これまでに作成した文書を基に、
インタビューを行いながら、ユースケースの詳細化を行う。
この作業で作成する文書は、UML には含まれていないが、
システム用件を確認する上で、必要に応じて作成する。

すべてのユースケースについて以下の事項をユースケース記述で明らかにする。

  • ユースケース番号 (ex. USE001)
  • ユースケース名 (ex.備品の登録)
  • アクター : ユースケースの主な利用者 (ex. 備品管理者)
  • 事象 : ユースケースを実行するトリガ (ex. 備品の新規購入があった)
  • 事前条件 : 実行条件 (ex. 備品コードが登録されている)
  • 内容 : 処理機能 (ex. 備品管理者が入力する項目は、備品コード・購入数量・購入年月日となる。システムは入力終了の後、最新備品リストを出力する。)
  • 事後条件 : 終了条件 (ex. 新規購入備品が登録される)
  • 例外事項 : エラー処理の内容 (ex. 登録されていない備品コードが入力された場合、次のメッセージを表示する。「備品コードが登録されていません。」)

詳細ユースケースの作成

詳細ユースケースは、概要ユースケースを更に詳細化した文書である。
概要ユースケースは、業務の中で使われる用語を基にまとめた文書であるが、
詳細ユースケースは、コンピュータ内での処理を中心にまとめた文書である。

詳細ユースケースの作成での作業事項と留意点は以下の通り。
作業事項
  • 概要ユースケースに記述された操作を抽出する。
  • 抽出した操作に対応するシステム内での処理を記述する。
  • 設定したシステム内での処理にコマンド名をつける。
  • コマンドに対応する入力項目、出力項目を鍵括弧で括る。
  • コマンドの例外処理を設定する。

留意点
  • システムが行う処理をコマンドという。その名称をコマンド名という。コマンドには @ をつける。
  • 概要ユースケースとの整合性を取りながら詳細ユースケースを作成する。
  • 具体的なユースケース記述の項目を洗い出す過程で、その画面設計、画面遷移および帳票設計も合わせて行う。




オブジェクト分析

オブジェクト分析では、要求分析の結果を基に
オブジェクトを設定し、オブジェクト間のメッセージの受け渡し、
オブジェクトの構造と状態変化およびサブシステムへの分割をモデル化する。



オブジェクトメッセージ順序をモデル化する

入力文書
アクティビティ図
ユースケース記述
出力文書
シーケンス図

システムの中で、オブジェクトは互いにメッセージをやりとりしながら、
相互に影響を及ぼし合っている。オブジェクトを抽出し、
時間の経過とともにオブジェクト間で、どのようなメッセージが送受信されるかを
時系列的にモデル化し、その結果をシーケンス図にまとめる。

シーケンス図は、ユースケース図で明らかにされたユースケースの単位で作成し、
要求分析で明らかにしたアクティビティ図とユースケース記述を基に、
オブジェクト間でどのようなメッセージが受け渡されるかをモデル化する。
この場合、全てのユースケースについてシーケンス図を作成する必要は無く、
処理が複雑な物についてだけ作成する。また、この段階で必要に応じて
コミュニケーション図を作成する。

オブジェクトの抽出

オブジェクトの抽出での作業事項と留意点は以下の通り。
作業事項
  • ユースケース記述を基に、エンティティオブジェクトの候補を抽出する。
  • アクターとユースケースのインターフェースをオブジェクトの候補として抽出する。
  • エンティティオブジェクトとインターフェースオブジェクトを制御するオブジェクトの候補を抽出する。

留意点
  • オブジェクトは詳細に定義する必要は無く、候補として抽出する。
  • オブジェクトの詳細な定義はオブジェクト構造の詳細化で行う。
  • オブジェクトの一つ一つを識別して管理する必要があるかを確認して、オブジェクトを抽出する。
  • アクターがインターフェースオブジェクトを通してシステムと対話出来るかを確認する。

シーケンス図の作成

シーケンス図の作成での作業事項と留意点は以下の通り。
作業事項
  • 抽出したオブジェクトを上段に並べる。
  • オブジェクト間のメッセージ送受信の順序性を考えてメッセージを並べる。
  • 各オブジェクト間のメッセージ送受信で、条件分岐によるメッセージ送受信があれば、分岐の条件を記述する。

留意点
  • 一つのユースケースに一つのシーケンス図を対応させる。
  • ユースケース記述を基にシーケンス図の見直しを行う。
  • オブジェクト間の相互作用が明白な物はシーケンス図の作成は不要である。
  • ユースケース内でオブジェクト間のメッセージの送受信が複雑な物をシーケンス図にまとめる。



オブジェクト構造をモデル化する

入力文書
シーケンス図
出力文書
クラス図

アクティビティ図やユースケース記述から、システムで必要になると思われるクラスを抽出する。
クラスの操作と属性について、この時点で明白な物があれば記述しておく。
次に、クラス間の関連を明らかにすることによって、システムの静的な
データの構造をモデル化する。このようにして作成した物をクラス図と呼ぶ。
クラス図は分析および設計を通して、何度も検討しながら改良される。

概念レベルでのデータの静的な構造とは、シーケンス図に表されたオブジェクト間の
相互の多重度などの関連を明確にし、クラスの構造とクラス間の関係を表現することである。
各クラスの属性や捜査の詳細な記述はオブジェクト設計の中で行う。

オブジェクト構造のモデル化での作業事項と留意点は以下の通り。
作業事項
  • シーケンス図に表されたオブジェクトをクラスとして抽出する。
  • 抽出したクラスでメッセージの送受信を行っているクラス間に関連づける。
  • クラス間の関連の多重度を記述する。
  • クラス間に継承関係があれば、その関連を記述する。
  • クラス間に集約関係があれば、その関連を記述する。

留意点
  • クラス内の属性や操作が明らかになっている場合は、その内容をクラス図に反映しておく。



オブジェクト状態変化をモデル化する

入力文書
シーケンス図
クラス図
出力文書
ステートマシン図

オブジェクトは、操作によって状態が変化する。
その時系列的な変化の様子をモデル化した物をステートマシン図と呼ぶ。
ステートマシン図はシーケンス図とクラス図を基にして作成する。

オブジェクトの状態変化を把握し、ステートマシン図にまとめるまでの作業事項と
留意点は以下の通り。
作業事項
  • シーケンス図やクラス図に記述されたオブジェクトで、
属性内容が操作とともに変化するオブジェクトがあれば、
変化の様子をステートマシン図に記述する。
  • 属性の内容が変化するオブジェクトの変化前と変化後の状態名を記述する。
  • 状態中に行う動作があれば、do/ に続けてその内容を記述する。
  • 状態に移って初期動作があれば、entry/ に続けてその内容を記述する。
  • 状態を抜ける直前に終了動作があれば、exit/ に続けてその内容を記述する。
  • ある状態から次の状態に遷移させる事象を記述する。
  • 状態内の更に詳細な状態を確認するために、サブステートマシン図を作成してもよい。
  • オブジェクト単位にステートマシン図を作成する。

留意点
  • 状態の変化が少ないオブジェクトや状態の変化が無いオブジェクトは対象から外す。
  • 状態を決定する属性を詳細なクラス図に反映する。
  • オブジェクト分析での結果をオブジェクト設計で詳細化する。
  • 状態の変化に矛盾が無いかを確認する。




オブジェクト設計

オブジェクト設計では、オブジェクト分析で作成した文書を基に、
実装作業を行うために必要となるモデル化を行う。
オブジェクト分析で作成した文書の見直しと、
詳細化を中心にオブジェクト設計を進める。

オブジェクト設計を進める中で、オブジェクト分析の結果に
変更や新たな要求が発生することもある。
その際は、オブジェクト分析での作業に戻って、
該当する文書に要求内容を反映させる。





オブジェクトメッセージ順序を詳細化する

入力文書
シーケンス図
ステートマシン図
出力文書
詳細なシーケンス図

オブジェクト分析でオブジェクトメッセージ順序をモデル化したシーケンス図を詳細化する。
ステートマシン図を参照して、シーケンス図で明らかになったメッセージを
適切な関数名に置き換えて、関数の引数、戻り値を設定する。

オブジェクトメッセージの詳細化での作業項目と留意点は以下の通り。
作業事項
  • オブジェクト分析で作成したシーケンス図のメッセージの内容を確認し、
分かりやすい関数名をつけ、詳細なシーケンス図に記述する。
  • 関数の引数や戻り値があれば、それぞれの項目名を詳細なシーケンス図に記述する。
  • シーケンス図に表しているオブジェクトでステートマシン図を作成している場合、
ステートマシン図に出ているメッセージでシーケンス図に反映する物があれば、詳細なシーケンス図に記述する。

留意点
  • オブジェクト分析で作成した全てのシーケンス図について詳細なシーケンス図を作成する。



オブジェクト構造を詳細化する。 (詳細なクラス図)

オブジェクト分析で作成したクラス図を詳細化する。それぞれのクラスについて、
属性と操作を定義する。属性と操作は、詳細なシーケンス図のメッセージの関数や、
引数、戻り値を該当するクラスに定義する。

詳細化したクラス図は、オブジェクト分析段階で作成したクラス図および
シーケンス図、更にはオブジェクト設計段階で作成した詳細な
シーケンス図を参照して作成する。

さらに、オブジェクト構造の詳細化では、
オブジェクト構造のモデル化で定義したクラス図の関連について、
依存関係や参照可能性を明記することも出来る。



オブジェクト関係を詳細化する。 (コミュニケーション図)

詳細化されたシーケンス図およびクラス図を基にして、
オブジェクト間でどのようなメッセージが、どのような順番で送受信されるか、
などの制御関係の部分を詳細にモデル化する。
このようにして作成した物をコミュニケーション図という。
コミュニケーション図は、プログラミングでアルゴリズムを作成する際の
基となるモデルである。



オブジェクト状態変化を詳細化する。 (詳細なステートマシン図)

以下の文書を基に、分析段階で作成したオブジェクトの状態変化を詳細化する。
  • 詳細化されたシーケンス図
  • 詳細化されたクラス図
  • コラボレーション図

詳細化されたシーケンス図で明らかになった関数を
ステートマシン図に当てはめながら、詳細化されたステートマシン図を作成する。



オブジェクト操作仕様を定義する。 (操作仕様書)

オブジェクトが実装する操作の仕様を明らかにし、
それぞれの操作について操作仕様書を作成する。
操作仕様書では、引数、戻り値および機能について
詳細に定義する。

操作仕様書の作成では、以下の文書を参照する。
  • 詳細化されたシーケンス図
  • 詳細化されたクラス図
  • コミュニケーション図
  • 詳細化されたステートマシン図

操作仕様書は UML 表記法では提供されていないが、
オブジェクト設計には必要な文書である。
最終更新:2009年07月09日 21:41