前言
教學建議
上篇 基礎理論篇
第1章 軟件架構概述 …… 2
1.1 軟件架構產生的背景 …… 2
1.2 軟件架構的主要思想和特征 …… 3
1.2.1 軟件架構的主要思想 …… 3
1.2.2 軟件架構的特征 …… 3
1.3 軟件架構的發(fā)展階段 …… 4
1.3.1 基礎研究階段(1968—1994) …… 4
1.3.2 概念體系和核心技術形成階段(1991—2000) …… 6
1.3.3 理論體系完善與發(fā)展階段(1996年至今) …… 7
1.3.4 普及應用階段(1999年至今) …… 7
1.4 軟件架構研究和應用現(xiàn)狀 …… 7
1.4.1 軟件架構理論和方法研究 …… 8
1.4.2 軟件架構的應用研究 …… 11
1.5 本章小結 …… 13
思考題 …… 13
參考文獻 …… 14
第2章 軟件架構的概念 …… 17
2.1 引言 …… 17
2.2 組成派的主要定義 …… 18
2.3 決策派的主要定義 …… 19
2.4 其他定義 …… 20
2.5 參考定義框架 …… 20
2.6 本章小結 …… 21
思考題 …… 22
參考文獻 …… 22
第3章 軟件架構模型 …… 23
3.1 引言 …… 23
3.2 軟件架構的可視化建模方法 …… 24
3.2.1 基于圖形可視化的建模方法 …… 24
3.2.2 基于UML的建模方法 …… 25
3.3 軟件架構的形式化建模方法 …… 31
3.3.1 基于形式化規(guī)格說明語言的建模方法 …… 32
3.3.2 基于UML的形式化建模方法 …… 36
3.4 其他建模方法 …… 45
3.4.1 文本語言建模方法 …… 45
3.4.2 模型驅動的架構建模方法 …… 47
3.5 軟件架構建模方法的發(fā)展趨勢分析 …… 49
3.5.1 第1層:文本模型 …… 50
3.5.2 第2層:圖形可視化模型 …… 50
3.5.3 第3層:UML模型 …… 50
3.5.4 第4層:形式化模型 …… 51
3.5.5 第5層:未來模型 …… 52
3.6 本章小結 …… 52
思考題 …… 53
參考文獻 …… 53
第4章 軟件架構的風格與模式 …… 59
4.1 軟件架構風格的定義 …… 59
4.2 軟件架構風格的分類 …… 60
4.3 典型的軟件架構風格 …… 60
4.3.1 管道-過濾器風格 …… 60
4.3.2 主程序/子程序風格 …… 62
4.3.3 面向對象風格 …… 64
4.3.4 層次化風格 …… 65
4.3.5 事件驅動風格 …… 67
4.3.6 解釋器風格 …… 69
4.3.7 基于規(guī)則的系統(tǒng)風格 …… 71
4.3.8 倉庫風格 …… 73
4.3.9 黑板系統(tǒng)風格 …… 75
4.3.10 C2風格 …… 77
4.3.11 客戶機/服務器風格 …… 79
4.3.12 瀏覽器/服務器風格 …… 83
4.3.13 平臺/插件風格 …… 85
4.3.14 面向Agent風格 …… 87
4.3.15 面向方面架構風格 …… 91
4.3.16 面向服務架構風格 …… 93
4.3.17 正交架構風格 …… 95
4.3.18 異構風格 …… 97
4.3.19 基于層次消息總線的架構風格 …… 99
4.3.20 模型-視圖-控制器風格 …… 101
4.4 軟件架構模式 …… 103
4.5 本章小結 …… 103
思考題 …… 104
參考文獻 …… 104
第5章 軟件架構描述語言 …… 107
5.1 引言 …… 107
5.2 ADL的核心設計元素 …… 107
5.2.1 組件 …… 108
5.2.2 連接件 …… 108
5.2.3 架構配置 …… 109
5.3 幾種典型的ADL …… 109
5.3.1 Aesop …… 109
5.3.2 C2 SADL …… 110
5.3.3 UniCon …… 114
5.3.4 Wright …… 116
5.3.5 XYZ/ADL …… 117
5.3.6 ACME …… 118
5.3.7 XBA …… 118
5.3.8 ABC/ADL …… 120
5.3.9 MetaH …… 121
5.3.10 Rapide …… 121
5.3.11 Darwin …… 122
5.3.12 xADL 2.0 …… 122
5.4 本章小結 …… 123
思考題 …… 123
參考文獻 …… 123
第6章 軟件架構與敏捷開發(fā) …… 125
6.1 軟件開發(fā)的發(fā)展簡史 …… 125
6.2 敏捷開發(fā) …… 127
6.2.1 敏捷開發(fā)的基本理念 …… 127
6.2.2 敏捷開發(fā)實踐 …… 128
6.3 敏捷開發(fā)過程中的軟件架構設計 …… 130
6.3.1 需求分析 …… 130
6.3.2 初始設計 …… 130
6.3.3 迭代過程 …… 130
6.3.4 敏捷的設計思想 …… 131
6.4 兩類常見的敏捷軟件架構設計方法 …… 132
6.4.1 敏捷開發(fā)初始階段設計 …… 133
6.4.2 敏捷開發(fā)迭代過程中的設計 …… 134
6.5 本章小結 …… 136
思考題 …… 137
參考文獻 …… 137
中篇 工程實踐篇
第7章 架構驅動的軟件開發(fā) …… 140
7.1 架構驅動的軟件開發(fā)簡介 …… 140
7.2 架構需求獲取 …… 140
7.3 架構設計、文檔化和評估 …… 144
7.3.1 架構設計、文檔化和評估是一個迭代過程 …… 144
7.3.2 什么是架構的結構 …… 147
7.3.3 從架構需求出發(fā)的評估 …… 148
7.3.4 尋找ATAM中的“權衡點”和“敏感點” …… 149
7.4 架構的實現(xiàn)與維護 …… 151
7.4.1 架構的實現(xiàn) …… 151
7.4.2 架構的維護 …… 152
7.5 本章小結 …… 152
思考題 …… 152
參考文獻 …… 153
第8章 軟件架構設計和實現(xiàn) …… 154
8.1 從需求分析到架構設計 …… 154
8.1.1 軟件架構對需求的影響 …… 155
8.1.2 基于軟件需求的軟件架構設計 …… 156
8.1.3 需求與架構的協(xié)同演化 …… 163
8.2 從軟件架構到詳細設計 …… 163
8.2.1 詳細設計對軟件架構的影