第一部分 软件架构的工程方法 2
第1章 引言 2
1.1软件设计的工程方法 4
1.2软件架构的角色 5
1.3软件组件的角色 5
1.4 Palladio方法 6
1.4.1 Palladio方法可以预测哪些质量属性和度量值 6
1.4.2 Palladio方法由哪些部分组成 7
1.4.3和遗产系统的关系 8
1.5本书结构和阅读路径 8
第2章 Palladio方法简介 10
2.1 Media Store 10
2.1.1 Media Store需求 10
2.1.2 Media Store用户交互 11
2.1.3初始设计 12
2.1.4初步设计决策 13
2.2 Palladio的角色 14
2.3仿真结果 15
2.4容量规划 16
2.5 Media Store:可选的设计 18
2.5.1将ReEncoder组件分配到另一个服务器 19
2.5.2增加缓存组件 20
2.5.3替换TagWatermarking和ReEncoder组件 21
2.6结论 22
第二部分 架构建模 24
第3章 架构级视点 24
3.1概述 24
3.2模型、视点、视图类型和视图 25
3.2.1模型和建模语言 25
3.2.2视图、视图类型和视点 27
3.2.3架构视点 28
3.3结构视点 29
3.3.1组件存储库 29
3.3.2装配 32
3.3.3组件类型层次结构 33
3.4行为视点 34
3.4.1组件内部行为 34
3.4.2组件间行为 35
3.4.3场景行为 36
3.5部署视点 37
3.6决策视点 38
3.6.1决策类型分类 39
3.6.2建模决策 39
3.6.3决策视图类型 40
3.6.4扩展示例 44
3.7问题和练习 45
3.7.1问题 45
3.7.2练习 45
3.8拓展阅读 46
3.9小贴士 47
第4章 架构重用 48
4.1术语 48
4.2组件和接口重用 49
4.3架构风格重用 52
4.4架构模式重用 53
4.5参考架构重用 54
4.6产品线架构 54
4.6.1产品合成 55
4.6.2产品配置 55
4.6.3上下文解释 56
4.7问题和练习 56
4.7.1问题 56
4.7.2练习 56
4.8拓展阅读 56
4.9小贴士 57
第三部分 架构分析 60
第5章 质量建模 60
5.1质量属性 60
5.1.1性能 60
5.1.2可靠性 61
5.1.3成本 61
5.2目标驱动方法 61
5.2.1实用主义 62
5.2.2表示 62
5.2.3简化 63
5.3组件质量 64
5.4使用画像及其传播 67
5.5执行环境 69
5.6领域特定质量建模 71
5.7整体Palladio模型装配 72
5.8问题和练习 72
5.8.1问题 72
5.8.2练习 73
5.9拓展阅读 74
5.10小贴士 74
第6章 数据获取 75
6.1概述 75
6.2真实用户和应用程序性能监控 78
6.2.1使用和适用性 78
6.2.2数据解释 79
6.2.3常用工具 80
6.2.4示例 81
6.2.5讨论 81
6.3资源需求估算 81
6.3.1使用和适用性 81
6.3.2数据解释 82
6.3.3常用工具 83
6.3.4示例 84
6.3.5讨论 84
6.4估算失效概率 84
6.4.1使用和适用性 85
6.4.2数据解释 86
6.4.3常用工具 86
6.4.4示例 86
6.4.5讨论 86
6.5常见的缺陷 87
6.5.1错误的资源需求 87
6.5.2不准确的计时器 87
6.5.3缺失资源 87
6.5.4没有验证 87
6.5.5太多细节 88
6.6问题和练习 88
6.6.1问题 88
6.6.2练习 88
6.7拓展阅读 89
6.8小贴士 90
第7章 回答设计问题 91
7.1设计问题 91
7.1.1常见的质量设计问题 91
7.1.2其他性能设计问题 92
7.1.3其他可靠性设计问题 92
7.2理解结果 93
7.2.1理解性能结果 93
7.2.2理解可靠性结果 101
7.3提高质量的策略 103
7.3.1性能策略 103
7.3.2可靠性策略 104
7.4自动搜索更好的架构 105
7.4.1评估标准 105
7.4.2自由度 105
7.4.3 PerOpteryx:自动化探索 106
7.5问题和练习 108
7.5.1问题 108
7.5.2练习 108
7.6拓展阅读 108
7.7小贴士 109
第8章 在后台 110
8.1质量分析工具 110
8.2 Palladio模型的性能模拟 112
8.2.1工作负载生成器 112
8.2.2模拟用户 112
8.2.3模拟系统请求 113
8.2.4模拟资源 114
8.2.5模拟调度策略 114
8.2.6收集度量数据 116
8.3性能分析工具 119
8.3.1 SimuCom:生成式模拟 119
8.3.2 EventSim:解释式模拟 120
8.3.3 SimuLizar:模拟中的自适应 120
8.3.4 ProtoCom:性能原型开发 121
8.3.5进一步的分析工具 121
8.3.6选择性能分析工具 122
8.4可靠性分析 123
8.4.1求解参数依赖性 123
8.4.2确定可能的物理系统状态及其概率 123
8.4.3为单个PSS生成DTMC 124
8.4.4评估DTMC和聚合结果 124
8.4.5总结 124
8.5成本分析 125
8.6问题和练习 125
8.6.1问题 125
8.6.2练习 126
8.7拓展阅读 126
8.8小贴士 126
第四部分 嵌入软件工程过程 128
第9章 软件工程过程 128
9.1何时使用(或不使用)基于模型驱动的软件质量预测 128
9.1.1基于模型驱动质量预测的成本 128
9.1.2基于模型驱动质量预测的好处 129
9.1.3 Palladio应用指标 129
9.1.4嵌入软件系统活动 130
9.2基于组件的质量感知的开发过程 133
9.2.1开发人员角色 134
9.2.2组件开发 135
9.2.3利用组件进行开发 135
9.2.4规范工作流 137
9.2.5质量分析工作流 140
9.2.6对质量进行建模时的交互 141
9.3开发过程中的应用 142
9.3.1顺序过程模型 143
9.3.2迭代过程模型 144
9.4问题和练习 146
9.4.1问题 146
9.4.2练习 146
9.5拓展阅读 147
9.6小贴士 147
第10章 与需求工程的关系 148
10.1需求工程基础 148
10.1.1需求来源 148
10.1.2需求类型 149
10.1.3精化质量需求 151
10.1.4软件质量术语 151
10.2需求活动和架构级活动的关系 153
10.2.1与架构级设计的关系 154
10.2.2与架构级分析的关系 156
10.3在生命周期后期阶段的需求检查 157
10.4问题和练习 158
10.4.1问题 158
10.4.2练习 158
10.5拓展阅读 158
10.6小贴士 159
第11章 与实现的关系 160
11.1正向工程和逆向工程概述 160
11.2正向工程 162
11.2.1 SimuCom仿真映射 163
11.2.2 Java SE和EE原型映射 165
11.2.3 Java SE和EE代码存根映射技术 167
11.2.4 SCA映射技术 168
11.2.5映射总结 168
11.3逆向工程 168
11.3.1组件结构检测 169
11.3.2组件行为检测 171
11.3.3控制流和数据流的参数化 172
11.3.4 Archimetrix 176
11.4问题和练习 178
11.4.1问题 178
11.4.2练习 178
11.5拓展阅读 178
11.6小贴士 179
第五部分 案例研究 182
第12章 1&1电子邮件系统的工作负载感知监控 182
12.1引言 182
12.2目标和问题 183
12.3系统描述 183
12.4建模 184
12.5数据采集 185
12.6分析 185
12.6.1工作负载感知性能监控过程的应用 186
12.6.2 STORE子系统 186
12.6.3性能建模研究 186
12.7评估 194
12.8经验教训 195
第13章 IBM存储虚拟化中的设计权衡问题 197
13.1目标和问题 197
13.2系统架构 197
13.2.1虚拟化层的设计 198
13.2.2同步设计 198
13.2.3异步设计 199
13.2.4同步决策的作用 199
13.3结构与行为建模 200
13.3.1组件交互和控制流 200
13.3.2建模限制 202
13.4数据采集 202
13.5分析与评估 203
13.5.1模型验证 203
13.5.2仿真结果讨论 205
13.6经验教训 206
第14章 ABB ASP.NET服务器的设计空间探索 208
14.1待研究系统 208
14.2目标和问题 209
14.3建模 210
14.3.1方法和工具选择 210
14.3.2模型构建 211
14.4数据采集 212
14.4.1工具选择 212
14.4.2工作负载建模 213
14.4.3测量执行 214
14.4.4模型校准 214
14.5分析 215
14.5.1手动设计空间探索 215
14.5.2正式RDS成本模型 216
14.5.3自由度和目标 216
14.5.4自动探测结果 217
14.6经验教训 221
14.6.1性能建模增加理解 221
14.6.2预测转移利益相关者讨论 221
14.6.3经济效益必须存在 222
14.6.4性能建模工具的能力有限 222
14.6.5值得投资的好工具 222
第15章 未来趋势 223
15.1拓展局限性的未来工作 223
15.2未来的主题 224
15.2.1云计算 224
15.2.2绿色计算 224
15.2.3 DevOps 225
第16章 结论 226
后记 Palladio简史 228
参考文献 230
索引 245