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

47070
オブジェクト指向モデリング
[2]
2002年10月8日
モデルとは何か
 概念モデル
 世界についての認識を記述する
 概念と構造
 シンボル(表象)
 メンタルモデル
 Johnson-Lairdなど
 思考操作のための概念構造の表現
 捨象,単純化
 構造の理解→シミュレーション,予測
 ミシンの上糸と下糸
 認識の表現方法
 モデリング言語
 情報システムと人間活動システム
2
質問カードから
 社会現象というシステムをUMLで記述できるか
 できます。ほかにも表現手段はあるでしょうが。
 ビジネスモデルを書いて設計,実装につなげる。
 SSM(ソフトシステムズ方法論)との関連は
 要求を導く手段として有効であると考えています。
 ISの立場
 OOによる分析・設計が普及していない要因は何か
 OOの成功事例が少ないから(実はSA/SDでもそう)
 まじめに取り組んでいないから
 会社の話をして
 します。
3
IS(情報システム学)の立場
 情報システム作りに関わる人たち
 CS(Computer Science)
 アルゴリズム
 効率
 SE(Software Engineering)
 アーキテクチャ
 品質
 IS(Information Systems)
 システム
 効果
 CE(Computer Engineering)
4
オブジェクト指向モデリング
第2回 良い情報システムとは
2.1 良いシステムとは何か
2.2 良いシステムは存在するのか
2.3 良いシステムとはどんなものか
2.4 良いシステムはどのようにして作るのか
テキスト 第1章
5
2.良い情報システムとは
2.1 良いシステムとは何か
 良いソフトウェアの条件
 有用(useful)で使いやすい(usable):効果がある
 信頼できる:バグがない
 柔軟である:保守しやすい
 安い:
 利用できる
 手に入る
 存在する
 良い情報システムの条件は
 Ownerの要求を満たしている:ビジネスにインパクト
6
2.良い情報システムとは
2.2 良いシステムは存在するのか
 失敗の事例研究
 Ariane5
 Therac-25
 なぜ以前は問題なく動いていたものが,後で修正されて問
題が顕在化するのか
演習問題4
 再利用の問題
5つのwhy
 再利用の文脈が異なっていることが察知できない
 システムが複雑すぎる
 「デバッグ」という手法の限界
 問題を想定してバグを排除する→想定できない問題も多い
 解決策は?
7
2.良い情報システムとは
2.2 良いシステムは存在するのか
 プロジェクトの失敗
 開発期間は1.5倍に
 3/4は赤字,1/4は中止
2-4-2-3
の法則
 新技術は信用できるか
 大規模開発
 人月の神話
 構造化分析・設計・プログラミング
 モジュール性,カプセル化
 ベストプラクティス
人
限界線
 開発方法論
月
8
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
9
2.良い情報システムとは
2.3 良いシステムはどんなものか
 カプセル化
 インタフェース
 使用を許すサービスの定義
 言語系の支援(タイプ)
 文脈依存性
Aがどのサービス
を必要とするか
どんなサービス
を用意しているか
A
 必要とするサービス
 モジュール間の「契約」
 事前条件,事後条件,不変表明
 カプセル化されたモジュールを使う利点
 必要とする知識の最小化
 影響範囲の局所化
演習問題5
 結合度を識別し,測定し,低くするには
10
2.良い情報システムとは
2.3 良いシステムはどんなものか
 凝集性
 異質なものが含まれていないこと
 抽象化
 必要なことのみ気にすればよい
 情報の隠蔽=抽象化+カプセル化
 再利用可能
抽象化:インタフェース記述だけで
 再利用の風土
 アーキテクチャ
十分使える
カプセル化:インタフェース記述以
外は不可知
 アーキテクチャ判断
 よいモジュール
 プラグイン可能性,取り換え可能
11
2.良い情報システムとは
2.4 良いシステムはどのようにして作るのか
 ソフトウェア工学
 プロセスの定義
 プロジェクト
 フェーズと成果物
方向づけ
 品質検査
 validation and verification
構築
移行
分析
設計
制作
検査
 局面(方向づけ,推敲,構築,移行)
 作業(分析,設計,制作,検査)
 繰り返し
 要求が満足されているか
推敲
要求とは?
機能的要求
非機能的要求
品質要求
技術要求
 品質保証
 知識,アーキテクチャ,コンポーネントの蓄積
 ツールの使用
12
2.良い情報システムとは
2.4 良いシステムはどのようにして作るのか
 作業(ワークフロー)
 分析→設計→制作→検査
 分解プロセスではない
制約,価値観
変換(演繹)
判断
制約,価値観
変換(演繹)
判断
Function
Function
要求記述
変換(帰納)
変換(演繹)
判断
Artifact
Artifact
Artifact
Artifact
Feature
Feature
Feature
機能
機能
Requirements
制約,価値観
実装
実装
実装
実装
機能
機能
機能
変換(帰納)
変換(帰納)
分析
設計
制作
概念レベル
仕様レベル
実装レベル
検査
13