Contenu connexe
Plus de Susumu Yamazaki (14)
アーキテクチャ入門
- 1. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
アーキテクチャ入門
∼構造化,オブジェクト指向の歴史を振り返って
北九州市立大学 山崎 進
1
2009年6月27日土曜日
- 2. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
構造化以前
• プログラムに構造がなく無秩序だ
と主に次の品質特性(quality
characteristics)が悪化する
• 保守性(maintainability)
• 解析容易性(analyzability)
• 変更容易性
(changeability)
• 安定性(stability)
• テスト容易性(testability)
• 移植性(portability)
• 俗にスパゲティ状態という
2
2009年6月27日土曜日
- 3. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
構造化への道
入れ子構造
• 入れ子構造(nesting)
• 構造の中に別の構造がすっ
ぽり収まっている
• 1つの入口と出口を持つ
• 中身を局所化・隠蔽できる
• goto文を排除する
• 構造化定理
• 任意のプログラムを入れ子
構造のプログラムに等価変
換できる(意訳)
3
2009年6月27日土曜日
- 4. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
構造化への道
関数や手続きの概念
• 関数(function)
手続き(procedure)
• 入れ子に名前を付けたもの
• 名前で共用参照する
• 中身を局所化・隠蔽できる
• 構造化プログラミング
(structured programming)
• 1967年ダイクストラが提唱
4
2009年6月27日土曜日
- 5. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
オブジェクト指向への道
大域変数の排除
• 大域変数(global variable)
• どの場所からでもアクセスできる変数
• データフロー構造が複雑化し,理解しにくくなる
• プログラム変更時に問題が多発する可能性が大きい
• 局所化により大域変数を排除
• ブロック(block)内
• 関数・手続き内
• モジュール(module)内
5
2009年6月27日土曜日
- 6. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
オブジェクト指向へ
の道
6
• 結合度(coupling)
• モジュール間の関連性
• 低い方がいい
• 凝集度(cohesion)
• モジュール内の関連性
• 高い方がいい
• 次のような設計指針がよい
• 関連性の高い情報を
モジュールにまとめる
• 関連性の低い情報は
モジュールを分ける
2009年6月27日土曜日
- 7. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
オブジェクト指向への道
抽象データ型
• 抽象データ型(abstract data type)
• 凝集度を高くするために
• データと,データへの操作をモジュールとしてまとめる
• モジュールとしてまとまった操作は共通するデータを扱う
• 結合度を低くするために
• モジュールの外からのデータへのアクセスを禁止する
• モジュール間で直接データを共有しない
• オブジェクト指向プログラミング(OOP: object-oriented programming)
• オブジェクト=抽象データ型+実体(実際の値としてのデータ)
• 言語の例
• Simula(1960s), Smalltalk(1970s), C++(1980s), Java(1990s)
7
2009年6月27日土曜日
- 8. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
アーキテクチャ
• ソフトウェアの急速な大規模化
• モジュール数が増加し,多数の開発者が関わるようになる
• 秩序が必要(特にモジュール間の関係)
• (ソフトウェア)アーキテクチャ(software architecture)
• 基本定義: モジュールの相互接続を記述したもの
• 世の中には100種類以上もアーキテクチャの定義がある
http://www.sei.cmu.edu/architecture/definitions.html
• アーキテクチャスタイル(architectural style)
アーキテクチャパターン(architectural pattern)
• モジュールと,モジュール間の関係の型
8
2009年6月27日土曜日
- 9. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
アーキテクチャスタ
イルの例
• レイヤーアーキテクチャ
(layered architecture)
• 関連性の高いモジュール群
を1つのパッケージ
(package)にする
• パッケージが層状に積み重
なった形にする
• 上位層が下位層を呼び出す
関係を保つ
• 呼出関係の構造が単純化
• 最も基本的なアーキテクチャ
• 例: OSI参照モデル, TCP/IP
9
2009年6月27日土曜日
- 10. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
まとめ
• ソフトウェアに構造がないと保守性と移植性が悪化する
• 構造化プログラミングにより,制御構造が構造化された
• 結合度と凝集度の概念はソフトウェアの構造を決める上で重要である
• オブジェクト指向プログラミングにより,データ構造も含めて構造化された
• アーキテクチャの概念により,モジュール間の関係が構造化された
• 最も基本的なアーキテクチャスタイルの1つはレイヤーアーキテクチャである
10
2009年6月27日土曜日