第一篇 基础篇:软件体系结构的理论第1章 绪论 3
1.1 软件体系结构的概念演化 4
1.1.1 软件体系结构的定义 5
1.1.2 软件体系结构的理论基础 9
1.2 软件体系结构形式化方法概述 11
1.2.1 基于CHAM的体系结构形式规约 12
1.2.2 基于Z语言的体系结构形式规约 12
1.2.3 基于一阶逻辑的体系结构形式规约 12
1.2.4 基于图论的体系结构形式规约 13
1.2.5 目前形式化方法存在的问题 13
1.3 软件体系结构描述语言概述 13
1.4 软件质量与质量模型 16
思考题 18
第2章 软件建模的基础 19
2.1 一个简单例子 19
2.2 面向对象特性 21
2.2.1 封装性 21
2.2.2 继承性 23
2.2.3 多态性 24
2.3 接口 25
2.4 设计原则 26
2.4.1 SRP单一职责原则 27
2.4.2 OCP开闭原则 28
2.4.3 LSP里氏替换原则 29
2.4.4 ISP接口分离原则 30
2.4.5 DIP依赖倒置原则 30
2.5 UML2的各种图 32
2.6 需求建模:用例 34
2.6.1 一个用例图例子 34
2.6.2 用例与参与者 34
2.6.3 用例图 35
2.6.4 用例间关系 36
2.6.5 用例对需求建模 38
2.7 基本结构建模 39
2.7.1 一个类图例子 39
2.7.2 性质 40
2.7.3 对象图 44
2.7.4 操作 46
2.7.5 接口 50
2.7.6 关系 53
2.7.7 关系建模 67
2.7.8 类图 68
2.8 高级结构建模 69
2.8.1 公共扩展机制 69
2.8.2 包和包图 72
2.8.3 复合结构 74
2.8.4 模板 77
2.9 Kruchten 4+1模型描述软件体系结构 81
2.9.1 逻辑视图:面向对象的分解 82
2.9.2 过程视图:过程分解 83
2.9.3 开发视图:子系统分解 85
2.9.4 物理视图:从软件到硬件的映射 86
2.9.5 场景视图:汇总 88
2.9.6 视图间的交流 89
2.9.7 模型的迭代过程和软件文档 91
思考题 92
第3章 软件体系结构的形式化 94
3.1 软件的生命周期 95
3.2 基于抽象代数的形式化方法 99
3.2.1 构件 100
3.2.2 连接件 102
3.2.3 软件体系结构 102
3.2.4 软件体系结构关系 103
3.2.5 软件体系结构范式 104
3.3 基于粒度计算的形式化方法 106
3.3.1 软件体系结构演化 108
3.3.2 属性合成和跟踪 110
3.3.3 软件体系结构多视图表达及集成 111
3.3.4 软件体系结构风格和软件体系结构风格发现 112
3.4 基于π演算的形式化方法 113
3.4.1 π演算基本语法 114
3.4.2 π演算约简关系 115
3.4.3 π演算迁移关系 116
3.5 动态软件体系结构的形式化描述:化学抽象机 118
3.5.1 化学抽象机模型 118
3.5.2 软件体系结构描述 118
思考题 121
第4章 软件体系结构的风格 122
4.1 管道和过滤器风格 123
4.2 仓库风格和黑板风格 126
4.3 事件驱动风格 128
4.4 客户机-分配器-服务器风格 132
4.5 分层系统风格 133
4.6 解释器 136
4.7 面向服务的体系结构 136
4.7.1 面向服务体系结构中的组成元素 138
4.7.2 面向服务体系结构的设计原则 141
4.8 过程控制环路模式 143
思考题 144
第5章 体系结构描述语言 146
5.1 典型ADL 146
5.1.1 C2概述 146
5.1.2 Darwin与Wright概述 151
5.1.3 ACME概述 152
5.1.4 UniCon概述 159
5.1.5 Aesop概述 161
5.1.6 Rapide概述 162
5.1.7 MetaH 163
5.1.8 SADL概述 163
5.2 πADL的概述 167
5.2.1 πADL体系结构描述框架 168
5.2.2 πADL体系结构风格描述方法 171
5.3 πADL体系结构行为规约 172
思考题 173
第6章 软件质量建模方法 178
6.1 软件质量建模与分析 181
6.1.1 风险分析的基本概念 181
6.1.2 风险分析的基本方法 182
6.1.3 图形化建模语言 184
6.2 实证分析:软件体系结构的质量 190
6.2.1 地面智能机器人的软件系统 190
6.2.2 解决方案1:过程控制环路模式 191
6.2.3 解决方案2:分层架构模式 192
6.2.4 解决方案3:基于事件驱动的隐式调用模式 193
6.2.5 解决方案4:黑板体系模式 195
6.2.6 解决方案比较 196
思考题 196
第7章 设计模式 197
7.1 设计模式概述 197
7.2 设计模式的分类 197
7.3 创建型的设计模式 199
7.3.1 Factory 200
7.3.2 Prototype 201
7.3.3 Builder 202
7.3.4 Singleton 204
7.3.5 Adapter 205
思考题 207
第8章 战场环境中自适应服务的软件组合框架 210
8.1 服务的描述与特征 210
8.1.1 服务模型 211
8.1.2 服务事务处理 211
8.2 TSCF服务组合框架 212
8.2.1 TSCF框架 212
8.2.2 服务代理设计 215
8.2.3 服务组合协调 216
8.3 服务调度流程控制的应用实现 223
8.4 小结 224
思考题 225
第二篇 软件复用与构件库的设计 229
第9章 构件库研究现状 229
9.1 问题的提出 229
9.2 构件库研究现状 229
第10章 软件复用概述 231
10.1 软件复用的定义及复用驱动的软件过程 231
10.1.1 软件复用的定义及软件复用的实体 231
10.1.2 复用驱动的软件过程 232
10.2 软件复用的研究现状 233
10.3 软件复用的分类 234
10.3.1 按构件的透明程度进行分类 234
10.3.2 按构件粒度进行分类 234
10.4 软件复用关键因素 234
10.4.1 软件构件技术 234
10.4.2 领域工程 235
10.4.3 软件工厂 235
10.4.4 软件再工程 236
10.4.5 软件过程 237
10.4.6 开放系统 237
10.4.7 CASE技术 238
10.4.8 非技术因素 238
第11章 构件技术 239
11.1 构件的特点 240
11.1.1 构件的特点 241
11.1.2 构件的分类 241
11.2 软件构件技术规范 242
11.2.1 Microsoft的COM/DCOM/COM+ 242
11.2.2 OMG的CCM 244
11.2.3 SUN的EJB 246
11.3 构件描述模型 247
11.3.1 3C模型 248
11.3.2 REBOOT模型 248
11.3.3 青鸟构件模型 248
11.4 构件获取 249
11.5 构件管理 250
11.6 构件复用 254
11.7 运用体系结构进行构件组装 259
11.7.1 青鸟系统的构件组装方案 260
11.7.2 基于软件体系结构的构件组装 260
第12章 Web构件库实现 262
12.1 Web开发简述 262
12.2 Web构件库总体结构 264
12.3 Web应用的构件模型 265
12.4 构件库的具体实现 268
12.4.1 用户管理模块 268
12.4.2 构件入库模块 269
12.4.3 构件浏览模块 271
12.4.4 构件检索模块 272
12.4.5 构件组装模块 273
第三篇 软件规模的度量 277
第13章 软件规模度量研究现状 277
13.1 软件过程管理 277
13.2 软件规模度量 277
第14章 FPA方法 281
14.1 数据功能点(Data Function Point) 281
14.2 事务功能点(Transaction Function Point) 283
14.3 调整系数(Value Adjustment Factor) 287
14.4 怎样计算功能点 291
第15章 FPA方法的实际应用及其不足 292
15.1 实例项目简介 292
15.2 招标管理模块 293
15.3 预算管理模块 297
15.4 开发管理模块 301
15.5 调整系数以及调整功能点的计算 305
15.6 传统FPA方法的不足 306
15.6.1 关于几个复杂性对照表,以及功能点换算表 306
15.6.2 关于一般系统特性(GSC) 307
15.6.3 关于涉及算法复杂度较高的画面的评估 307
第16章 FPA方法的改进 308
16.1 对传统FPA方法的功能点计算矩阵的改进 308
16.1.1 传统FPA方法的功能点计算矩阵 308
16.1.2 函数逼近问题,二元函数插值 309
16.1.3 利用二元函数插值对功能点计算矩阵进行改进 310
16.2 对一般系统特性GSC的改进 310
16.3 对有较高算法复杂度画面的分析所存在的问题的改进 311
16.4 针对B/S结构下Web站点开发类型的项目的改进 311
16.4.1 关于DET、RET 311
16.4.2 关于ILF、EIF、FTR 312
16.4.3 关于数据功能点和事务功能点换算表的改进 312
第17章 改进后FPA方法的应用及实例试验 315
17.1 招标管理模块 315
17.1.1 改进后评标情况详细画面功能点计算 315
17.1.2 改进后招标管理模块功能点计算 316
17.2 预算管理模块 316
17.2.1 改进后数据功能点计算画面功能点计算 316
17.2.2 改进后预算管理模块功能点计算 317
17.3 开发管理模块 317
17.3.1 改进后项目组管理画面功能点计算 317
17.3.2 改进后开发管理模块功能点计算 318
17.4 改进前后对比 318
17.5 对比结论 319
第四篇 软件的性能抗衰 323
第18章 软件的性能问题与抗衰技术 323
18.1 软件性能衰退 326
18.2 性能保持与恢复技术 326
18.2.1 性能恢复技术 327
18.2.2 软件抗衰技术 327
第19章 新型软件抗衰策略 329
19.1 国内外研究现状 329
19.1.1 基于时间的软件抗衰策略 329
19.1.2 基于检测的软件抗衰策略 330
19.1.3 基于时间与负载的软件抗衰策略 331
19.2 基于特定失效概率的软件抗衰策略 332
19.2.1 基于特定失效概率确定重启间隔 332
19.2.2 基于特定失效概率的停机时间与成本分析 333
19.3 基于时间与检测的软件抗衰策略 334
19.3.1 基于时间与检测的软件抗衰策略概述 334
19.3.2 策略的停机时间与抗衰成本分析 334
19.3.3 3种策略的抗衰成本比较 335
19.3.4 案例分析 336
第20章 细粒度软件抗衰策略研究 338
20.1 国内外研究现状 338
20.1.1 异常检测算法 338
20.1.2 软件抗衰策略的实施粒度 339
20.2 计算系统的衰退规律分析 339
20.2.1 基于Haar小波变换的数据平滑 339
20.2.2 性能衰退的检测指标 340
20.2.3 性能衰退规律评价 341
20.2.4 概率分布函数的确定 341
20.3 细粒度软件抗衰策略 343
20.3.1 抗衰粒度的确定 343
20.3.2 建立重启链 343
20.3.3 各级对象间的嵌套重启关系 344
第21章 细粒度重启技术研究 347
21.1 国内外研究现状 347
21.2 重启相关性分析 348
21.2.1 软件体系结构与模块间的耦合性 348
21.2.2 重启相关性的分类和性质 349
21.2.3 重启相关度与重启相关性判定 350
21.3 重启群与重启树的构建 352
21.3.1 重启群 353
21.3.2 重启树的构建 353
21.3.3 重启的实施 355
21.4 小结 358
第22章 细粒度软件抗衰策略模型研究 359
22.1 国内外研究现状 359
22.2 单次抗衰过程的Petri网描述 360
22.3 细粒度软件抗衰策略的自动机描述 362
22.3.1 有限状态自动机定义 362
22.3.2 TMSRP的自动机描述 362
22.3.3 DMSRP的自动机描述 367
22.4 细粒度软件抗衰策略的实施过程模型 369
附录A 缩略词及中英文词汇对照 372
附录B 软件体系结构支持工具 375
参考文献 378