第1篇 用例和方面的应用实例 1
第1章 要解决的问题 3
1.1 组件现在的用途 3
1.1.1 使用组件构建系统 4
1.1.2 组件的益处 6
1.2 组件的局限性 6
1.2.1 无法使对等关注点相互分离 8
1.2.2 无法使扩展相互分离 9
1.3 寻求解决方案 11
1.3.1 对于扩展的早期支持 12
1.3.2 UML对扩展的支持 15
1.4 使关注点保持分离 16
第2章 使用方面技术来解决问题 17
2.1 使用方面技术寻求解决方案 17
2.2 基于方面技术使对等关注点保持分离 19
2.3 基于方面技术使扩展保持分离 21
2.4 方法学指导的需要 26
第3章 现在基于用例 29
3.1 用例概述 29
3.2 用例驱动开发 32
3.3 用例的角色和益处 34
3.4 用例技术的缺口(gap) 34
3.5 基于方面来填补缺口(gap) 35
第4章 将来基于用例模块 37
4.1 通过叠加用例切片来构建系统 38
4.2 使对等用例保持分离 40
4.3 使扩展用例保持分离 42
4.4 基于用例模块开发 45
第2篇 基于用例捕获关注点并建模 49
第5章 基于用例对关注点建模 51
5.1 用例建模 51
5.2 用例实例和事件流 53
5.3 用例描述 54
5.4 用例事件流的可视化 57
5.5 总结与强调 60
第6章 用例结构化 61
6.1 用例关系 61
6.2 用例扩展关系 63
6.3 用例包含关系 70
6.4 用例泛化 73
6.5 公共用例 77
6.6 总结与强调 79
第7章 基于用例捕获关注点 81
7.1 理解涉众关注点 81
7.1.1 理解问题域 82
7.1.2 抽取系统特性 83
7.1.3 处理功能和非功能需求 84
7.2 捕获应用用例 86
7.2.1 识别用例变量 87
7.2.2 处理用例变量 88
7.2.3 处理扩展用例 91
7.3 捕获基础结构用例 93
7.3.1 执行事务用例 94
7.3.2 基础结构用例的结构化 96
7.3.3 描述基础结构用例 98
7.3.4 处理系统范围的关注点 100
7.4 总结与强调 101
第3篇 基于用例模块实现关注点分离 103
第8章 基于用例切片使对等用例保持分离 105
8.1 实现对等用例 106
8.1.1 协作 106
8.1.2 实现一个用例 108
8.1.3 对等用例实现之间的交迭 110
8.2 使用例特定部分保持分离 111
8.2.1 合并特定于某用例的类 113
8.2.2 合并用例特定的类扩展 115
8.2.3 用例切片中的协作 117
8.3 处理叠加 118
8.3.1 被包含的用例切片 119
8.3.2 用例切片泛化 121
8.3.3 非用例特定切片 123
8.4 总结与强调 125
第9章 基于pointcut使扩展保持分离 127
9.1 实现扩展用例 128
9.2 使扩展用例的实现保持模块化 129
9.2.1 操作扩展 130
9.2.2 Pointcut 133
9.3 参数化Pointcut 135
9.3.1 标识参数 136
9.3.2 定义参数 137
9.3.3 用AOP实现pointcut参数化 138
9.4 对扩展用例实现进行泛化 139
9.5 对用例切片模板化 142
9.6 总结与强调 144
第10章 基于用例模块构建系统 145
10.1 系统由模型组成 146
10.2 用例模型 147
10.3 分析模型 148
10.3.1 分析的语言 149
10.3.2 进行分析 150
10.4 设计和实现模型 152
10.4.1 设计和实现的语言 152
10.4.2 进行设计和实现 154
10.5 用例模型横切于模型 154
10.5.1 保持用例模型中的结构 155
10.5.2 用例模块包括用例切片 157
10.5.3 用例模块间的关系 158
10.6 合并和配置用例模块 159
10.7 总结与强调 161
第4篇 基于用例和方面建立架构 163
第11章 通往弹性软件架构之路 167
11.1 什么是架构 168
11.2 什么是好的架构 168
11.3 建立架构基线的步骤 170
11.4 从平台无关的结构开始 174
11.4.1 元素结构 174
11.4.2 用例结构 177
11.5 叠加平台特性 179
11.5.1 选择平台 179
11.5.2 保持平台特性独立 181
11.6 总结与强调 184
第12章 基于对等的应用用例使功能需求保持分离 187
12.1 分析应用用例 188
12.1.1 识别类 189
12.1.2 为类分配用例行为 190
12.2 使应用用例保持分离 195
12.2.1 元素结构 195
12.2.2 用例结构 196
12.3 设计应用用例 199
12.3.1 识别设计元素 200
12.3.2 识别组件和接口 203
12.4 精炼设计元素 205
12.4.1 使类扩展保持分离 205
12.4.2 使操作扩展保持独立 207
12.4.3 保持状态转换独立 209
12.5 总结与强调 211
第13章 基于应用-扩展用例使功能需求保持分离 213
13.1 分析应用-扩展用例 214
13.1.1 识别类 215
13.1.2 识别Pointcut 216
13.1.3 将用例行为分配给类 218
13.2 使应用-扩展用例保持分离 220
13.2.1 结构化备选事件流 221
13.2.2 使备选事件流保持分离 222
13.3 设计应用-扩展用例 224
13.3.1 操作扩展设计 224
13.3.2 从用例扩展中标识组件接口 225
13.3.3 实现用例的多重扩展 226
13.3.4 从多个用例扩展 229
13.4 处理基用例的变化 230
13.4.1 使用反射 232
13.4.2 使用设计模式 232
13.4.3 使用自适应编程 235
13.5 总结与强调 236
第14章 基于基础结构用例使非功能需求保持分离 239
14.1 基础结构用例分析 240
14.1.1 识别类 241
14.1.2 标识pointcut 242
14.1.3 将用例行为分配给类 245
14.2 使基础结构用例保持分离 247
14.3 基础结构用例设计 250
14.3.1 基于方面应用基础结构用例切片 251
14.3.2 基于过滤器应用基础结构用例切片 252
14.3.3 在基础结构层中标识组件 255
14.4 处理多个基础结构用例 256
14.5 总结与强调 261
第15章 基于平台相关用例切片使平台特性保持分离 263
15.1 使平台特性保持分离 264
15.1.1 三层(Tier)系统 264
15.1.2 tier包 266
15.1.3 使用基础结构用例对tier建模 268
15.2 叠加用户界面 269
15.2.1 没有表示层细节的最小化用例设计 270
15.2.2 J2EE的Web表示机制 271
15.2.3 表示机制的设计 273
15.2.4 应用表示层机制 275
15.3 加入分布式处理 276
15.3.1 不考虑分布式处理的最小化用例设计 277
15.3.2 EJB分布式机制 278
15.3.3 分布式机制设计 281
15.3.4 分布式机制的应用 286
15.4 加入持久性处理 290
15.4.1 不包含持久性的最小化用例设计 291
15.4.2 J2EE中的关系型持久性机制 292
15.4.3 持久性机制设计 293
15.4.4 持久性机制应用 297
15.5 保持用例结构 298
15.6 总结与强调 299
第16章 基于用例测试切片使测试保持分离 301
16.1 测试优先方法 301
16.2 从用例确定测试用例 303
16.2.1 从用例事件流中确定测试用例 304
16.2.2 从用例变量确定测试用例 305
16.2.3 确定横切多个应用用例的测试用例 306
16.2.4 为基础结构用例和平台特性确定测试用例 306
16.2.5 确定性能测试用例 307
16.3 确定要测试的元素 308
16.4 测试的设计与实现 310
16.4.1 测试基础结构的设计 312
16.4.2 设计测试用例 316
16.5 总结与强调 317
17.1 将其合在一起 319
第17章 架构评估 319
17.2 关注点分离的评估 324
17.2.1 设计元素的评估 325
17.2.2 设计包的评估 325
17.2.3 用例结构的评估 327
17.2.4 自动评估 329
17.2.5 强制对关注点进行分离 330
17.3 系统级关注点的评估和实现 332
17.3.1 可维护性的评估和实现 332
17.3.2 可扩展性的评估和实现 332
17.3.3 可移植性的评估和实现 333
17.3.4 复用性的评估与实现 334
17.3.5 性能和可靠性的评估与实现 334
17.4 总结与强调 336
第18章 架构描述 339
18.1 架构视图组成的架构描述 340
18.2 用例模型的架构视图 342
18.3 分析模型的架构视图 344
18.3.1 架构性重要分析元素 344
18.3.2 架构性重要用例分析切片 346
18.4 设计模型的架构视图 347
18.4.1 架构重要的部署元素 348
18.4.2 架构性重要进程元素 348
18.4.3 架构重要的设计元素 349
18.4.4 架构重要用例设计切片 351
18.5 总结与强调 352
第5篇 在项目中应用用例和方面 355
第19章 运作一个项目 357
19.1 迭代式开发 357
19.1.1 项目中的阶段 358
19.1.2 迭代中的活动 359
19.2 估算开发工作量 359
19.2.1 在项目之初进行估算 360
19.2.2 对估算进行提炼 362
19.3 项目的计划和监控 363
19.3.1 项目延误估算 363
19.3.2 使项目跟上进度 364
19.4 保持关注点分离带来的生产率提高 365
19.5 总结与强调 367
第20章 方法剪裁 369
20.1 实现正确的平衡 369
20.2 选择应用的科目 370
20.3 在项目的不同阶段采用 373
20.4 总结与强调 374
第21章 方面与超越 375
21.1 在扩展(Extensions)上构建系统 375
21.2 均衡各种最佳实践 376
21.3 未来之路 377
附录A 使用UML对方面和用例切片建模 379
A.1 用类扩展对Intertype声明建模 380
A.2 用操作扩展对Advice建模 381
A.2.1 Before和After的语义 382
A.2.2 Around的语义 382
A.3 对Pointcuts建模 383
A.4 对用例切片建模 384
附录B 符号指南 387
B.1 包(Package) 387
B.2 参与者和用例 388
B.3 类和实例 389
B.4 组件和接口 391
B.5 进程和节点 392
参考文献 395
术语表 399
索引 407