オブジェクト指向による 分析と設計

47070
オブジェクト指向モデリング
[2]
2001年10月9日
オブジェクト指向モデリング
前回 モデルとは何か
1.1 ソフトウェアと情報システム
1.2 情報システムとモデル
1.3 モデル
1.4 概念モデル
1.5 認識主体
2
1.モデルとは何か
1.5 認識主体(1)
 モデルで表現されるべきもの
 人間活動システムの…
 基本定義(Root Definition)
 システムのインスタンスしか定義できない
 目的
 変換(Transformation)
 受益者(Customer)
 組織(Actors)
 世界観(Weltanschauung)
 環境(Environment)
 システムの所有者/観測者(Owner)
CATWOE
 プロセス
 概念
3
オブジェクト指向モデリング
第2回 良い情報システムとは
2.1 良いシステムとは何か
2.2 良いシステムは存在するのか
2.3 良いシステムとはどんなものか
2.4 良いシステムはどのようにして作るのか
テキスト 第1章
4
2.良い情報システムとは
2.1 良いシステムとは何か
 良いソフトウェアの条件
 有用(useful)で使いやすい(usable):効果がある
 信頼できる:バグがない
 柔軟である:保守しやすい
 安い:
 利用できる
 手に入る
 存在する
 良い情報システムの条件は
 Ownerの要求を満たしている:ビジネスにインパクト
5
2.良い情報システムとは
2.2 良いシステムは存在するのか
 失敗の事例研究
 Ariane5
 Therac-25
 なぜ以前は問題なく動いていたものが,後で修正されて問
題が顕在化するのか(演習問題4)
 再利用の問題
 再利用の文脈が異なっていることが察知できない
 システムが複雑すぎる
 「デバッグ」という手法の限界
 問題を想定してバグを排除する→想定できない問題も多い
 解決策は?
6
2.良い情報システムとは
2.2 良いシステムは存在するのか
 プロジェクトの失敗
 開発期間は1.5倍に
 3/4は赤字,1/4は中止
2-3-2-4
の法則
 新技術は信用できるか
 大規模開発
 人月の神話
 構造化分析・設計・プログラミング
 モジュール性,カプセル化
 ベストプラクティス
人
限界線
 開発方法論
月
7
2.良い情報システムとは
2.3 良いシステムはどんなものか
 問題の原因
 人間が一度に理解できる量には限界がある
A
 c.f. magical number 7±2
 限界を超えると破綻へ
B
 バグの原因,スパゲッティコード
D
 goto有害論
 理解できる単位でシステムを組立てる
C
 モジュール
 結合度(coupling)
 凝集度(cohesion)
 インタフェース
 カプセル化,抽象化
client
A
A
依存性
A
server
B
B
B
D
C
8
2.良い情報システムとは
2.3 良いシステムはどんなものか
 カプセル化
 インタフェース
 使用を許すサービスの定義
 言語系の支援(タイプ)
 文脈依存性
Aがどのサービス
を必要とするか
どんなサービス
を用意しているか
A
 必要とするサービス
 モジュール間の「契約」
 事前条件,事後条件,不変表明
 カプセル化されたモジュールを使う利点
 必要とする知識の最小化
 影響範囲の局所化
演習問題5
 結合度を識別し,測定し,低くするには
9
2.良い情報システムとは
2.3 良いシステムはどんなものか
 凝集性
 異質なものが含まれていないこと
 抽象化
 必要なことのみ気にすればよい
 情報の隠蔽=抽象化+カプセル化
 再利用可能
 再利用の風土
 アーキテクチャ
抽象化:インタフェース記
述だけで十分使える
カプセル化:インタフェー
ス記述以外は不可知
 アーキテクチャ判断
 よいモジュール
 プラグイン可能性,取り換え可能
10
2.良い情報システムとは
2.4 良いシステムはどのようにして作るのか
 ソフトウェア工学
 プロセスの定義
 プロジェクト
 フェーズと成果物
方向づけ
 品質検査
 validation and verification
構築
移行
分析
設計
制作
検査
 局面(方向づけ,遂行,構築,移行)
 作業(分析,設計,制作,検査)
 繰り返し
 要求が満足されているか
遂行
要求とは?
機能的要求
非機能的要求
品質要求
技術要求
 品質保証
 知識,アーキテクチャ,コンポーネントの蓄積
 ツールの使用
11
2.良い情報システムとは
2.4 良いシステムはどのようにして作るのか
 作業(ワークフロー)
 分析→設計→制作→検査
 分解プロセスではない
制約,価値観
変換(演繹)
判断
制約,価値観
変換(演繹)
判断
Function
Function
Requirement
変換(演繹)
判断
Artifact
Artifact
Artifact
Artifact
Feature
Feature
Feature
機能
機能
要求
制約,価値観
実装
実装
実装
実装
機能
機能
機能
変換(帰納)
変換(帰納)
変換(帰納)
分析
設計
制作
概念レベル
仕様レベル
実装レベル
検査
12