ソフトウェアモデリング
SOFTWARE MODELING
10
ソフトウェア工学
Software Engineeringソフトウェアモデリングとは?
■ グラフィカルモデル: 所定の記法による図で表現 → 流れ図,クラス図など ■ 数 理 モ デ ル: 数式や論理式で表現 → 形式手法(モデル検査など) ソフトウェアの抽象なモデルを,さまざまな視点から簡潔に表現する作業【表現方法】
【視
点】
モデリングをいつおこない,いつ使うのか
既存システムのモデリング → 既存システムの明確化(利点・欠点,再利用性) 新 シ ス テ ムのモデリング → 要求の導出と明確化(関係者との対話・合意) 【要求定義フェーズ】 要求定義 要求 設 計 実 装 テ ス ト 要求仕様書 設計書 プログラム 製品 【設計フェーズ】 【実装フェーズ】 【テストフェーズ】 新システムのモデル → エンジニアへの説明(設計や文書化にモデルを利用) 新システムのモデル → モデル駆動開発ではモデルから実装の一部を自動生成も 新システムのモデル → モデルに基づいたテストケースの生成 (model-driven development)UML
(Unified Modeling Language)
ソフトウェアモデルを表現するためのグラフィカルモデリング言語の1つ 13の図式が規定されている1990年代に提案された種々のオブジェクト指向モデリング図式を統一したもの 1997年に初版 UML 1.0 が公開
■ ユースケース図 (use-case diagram) システムの機能群と利用者の関係
■ クラス図 (class diagram) クラスの定義とクラス間の関係
■ アクティビティ図 (activity diagram) システムがおこなう処理の流れ
■ シーケンス図 (sequence diagram) オブジェクト間のメッセージ交換の順序
■ 状態機械図 (state machine diagram) イベントに伴うオブジェクトの状態遷移
UMLの主な図式
■13の図式のうち,今回はつぎの5つを学ぶユースケース図
システムの機能群と利用者の関係を図示
履修登録 履修者名簿編集 履修管理システム 学生 サブジェクト 記述しようとしているシステム (subject) (actor) アクタ 外部のユーザ/オブジェクト /システムの役割の名前【履修管理システムの例】
クラス図
(1/9)
人
母
父
生年月日
父を取得( )
母を取得( )
年齢を計算( )
クラス名
属
性
操
作
【
クラスの定義
】
(簡易版:要求定義段階) ※属性と操作は場合によっては省略可 (attribute) (operation)クラスの定義とクラス間の関係を図示
Javaでは フィールド(field) C++では メンバ変数(member variable) 抽象化され直接アクセスできないときは プロパティ(property) と呼ばれる Javaでは メソッド(method) C++では メンバ関数(member function) と呼ばれるクラス図
(2/9)
Person
- mother: Person
- father: Person
- birthday: Date
+ getFather( ): Person
+ getMother( ): Person
+ getAge(today: Date): int
クラス名 操作名(引数: 型): 戻り値の型
【クラスの定義】
(詳細版:プログラム設計段階) 属性名: 属性の型可視性
-
private
(外部からアクセス不可)
+
public
(外部からアクセス可能)
(visibility)【クラス間の関係:
汎 化
】
人
生年月日
年齢を計算( )
学 生
学生番号
教 員
職員番号
スーパークラス
サブクラス
【
継承
】
●サブクラスは,スーパークラスの 属性と操作を引き継ぐ ●サブクラスに,新しい属性と操作を追加可能 (generalization) (inheritance)B
A
Ais aB汎化
B
A
general specialクラス図
(3/9)
【クラス間の関係:
(association)関 連
】
A
n
B
関連名 関 連A
単方向関連B
多重度 クラスAのインスタンスを 1 個固定したとき クラスBのインスタンスが n 個対応 (multiplicity) n 必ず n n..m n 以上 m 以下 0..* または * 0 以上 1..* 1 以上クラス図
(4/9)
Ais associated withB【
オブジェクト図
】
(object diagram) 人1
車 所 有*
クラス図
オブジェクト図
Aさん:人 そ 56-21:車 Bさん:人 ふ 33-52:車 と 8493:車 リンクでインスタンスを結ぶ クラス図の表す抽象構造 の1つの具体例の表示 インスタンス名:クラス名 (下線を引く)クラス図
(5/9)
【
ロール
】
(role) A B ロール この関連においてクラスAが果たす役割 人 会社 大学 車 従業員 学生 所有者クラス図
(6/9)
Person
mother: Person
father:
Person
birthday: Date
属性,関連:どちらで表現してもよい/混在させてもよい
Person
mother: Person
father: Person
Date
Person
Date
mother father 11
*
*
*
birthday
1
birthday
1
*
クラス図
(7/9) 【属性/関連】
【
集約
/
コンポジション
】
(aggregation / composition)A
集 約B
A
コンポジションB
強い集約関係 クラスAのインスタンスが削除されると クラスBのインスタンスも削除 全体-部分の関係 クラスBはクラスAの一部(whole-part) Ahas aBクラス図
(8/9)
授業科目