コンポーネント指向には、ちーずまんの「チーズはどこへ消えた」とか(うそ、UML Componentsとか)、あときんそんのKobrA(これは本当。誤字ではない。「こぶら」)とかある。
そのちーずまんの、「チーズはどこへ消えた」じゃない(って、くどい ^^;)UML Componentsの手順についてまとめてみる。
ちなみに、UML Componentsについては、鷲崎先生講義の
ここの講義スライド No.1.1
のスライドとかみてくださいお。
っていうか、そこのスライド、話長すぎなんで、まとめるってこと(^^;)
■概要
大まかな手順としては、以下のステップで行う。
・要求
・仕様
・提供
・組み立て
・テスト
・配備
ここで、組み立て~配備までは、普通の開発(プログラミングして、テスト)と変わらない。
提供は、よくわかんない。
なんで、以下、要求と、仕様について説明する。
■要求
要求は、ドメインモデルをつくって、ユースケースを抽出する。
この辺は、ICONIXなんかと、対して違わない。ので、ざっと書いて、先に進む
<<手順>>
・ドメインモデル分析&作成
名詞抽出法などによって、概念クラスを抽出して、関係付けする
・ユースケースの抽出
業務(ビジネスプロセス)から機能を抽出し、ユースケースを出してもいいし(ユースケース法)
ゴールとなる状態を詳細化して、システム化できるレベル(ビジネス要求)まで落とし、
それを、いつ、だれが行うの?を決めていくというやりかた(KAOS)でも
なんでもいいから、ユースケースをだす。
■仕様
ここが大きく違う。かつ面倒。
大きく、「コンポーネントの識別」、「コンポーネントの相互作用」、「コンポーネントの仕様」の3ステップにわかれ、そのそれぞれのステップの中で、以下のような操作を行う。
・コンポーネントの識別
・ビジネスタイプモデルの作成
・ビジネスインターフェースの識別
・システムインターフェースの識別
・初期のコンポーネント仕様作成
・コンポーネントの相互作用
・ビジネス操作の識別(相互作用確認)
・インターフェースと操作を洗練する
・コンポーネント仕様を洗練する
・コンポーネントの仕様
・インターフェース情報モデル抽出
・事前条件/事後条件をOCL等で定義する
・インターフェースの制約をきめて、仕様を作成する
以下、3つのステップごとに説明する。
■仕様(1):コンポーネントの識別
以下の操作を行う
・ビジネスタイプモデルの作成
・要求で作った概念モデルから、今回開発範囲外のものを削除
・ビジネスインターフェースの識別
・ビジネスタイプモデル(はクラス図で提供されているとする)から、
「コアタイプ」となるクラスを抽出する
※コアタイプとなるクラス
1.識別氏がある
2.1対N(1対1でもいいけど)のとき、1のほう
例外:分類タイプのものとの場合は、多でもよい
→コアタイプが見つかったら、クラス図にステレオタイプでCOREと入れる
・ビジネスインターフェースの作成
コアタイプ1つに対して、ビジネスインターフェースを1つ作成する
→クラス図にクラス書き入れ
・システムインターフェースの識別
・ユースケース図のユースケース1つにつき、1つのシステムインターフェース
を作成する(クラス図で)
・初期のコンポーネント仕様作成
・コンポーネント図に、上記、ビジネスインターフェース、
システムインターフェースをまとめる。
1ビジネスインターフェースは1インターフェース&1コンポーネントとし、
1システムインターフェースは、1インターフェースとして、
各(システム)インターフェースをまとめて、1コンポーネントとする。
システムインターフェースのコンポーネントから、ビジネスインターフェースの
コンポーネントを呼び出す(要求する)
■コンポーネントの相互作用
・ビジネス操作の識別(相互作用確認)
コミュニケーション図を用意して、上記の各システムインターフェースごとに、
・システムインターフェースのオブジェクトを用意して
・ビジネスインターフェースのオブジェクトも用意して
・その間を行き交うメッセージを考えて、記述する
→メッセージ=操作(メソッド)なので、操作と引数、返り値がここできまる
・インターフェースと操作を洗練する&コンポーネント仕様を洗練する
上記のモデルを洗練する
■コンポーネントの仕様
・インターフェース情報モデル抽出
ビジネスインターフェース、システムインターフェースから、
DB等が持っているべき情報を抽出して、「インターフェース情報モデル」
(=ER図のエンティティみたいなもん)を作成する。
・事前条件/事後条件をOCL等で定義する
ビジネスインターフェース、システムインターフェースのメソッドに対する
(メソッド自体は、「コンポーネントの相互作用」の「ビジネス操作の識別」で決めているはず)
事前条件/事後条件をOCLで書く
・インターフェースの制約をきめて、仕様を作成する
インターフェース内における不変条件を制約として書き、仕様を作成する。
■これ以降
・提供
・組み立て
・テスト
・配備
は、他と変わらないということで、省略