第1章 概述 /1
1.1 关于软件工程原则 /1
1.2 指导实践的核心原则 /2
1.2.1 指导过程的原则 /2
1.2.2 指导实践的原则 /3
1.3 指导框架活动的原则 /4
1.3.1 沟通原则 /4
1.3.2 策划原则 /5
1.3.3 建模原则 /7
1.3.4 构造原则 /10
1.3.5 部署原则 /11
1.4 什么是软件体系结构 /12
1.4.1 软件设计层次 /12
1.4.2 体系结构 /13
1.4.3 软件体系结构的定义 /14
1.5 体系结构的描述与决策 /16
1.6 体系结构的研究范畴 /18
1.7 体系结构的设计原则 /18
1.8 习题 /19
1.9 实验与思考: 软件设计的网络支持环境 /21
1.9.1 实验目的 /21
1.9.2 工具/准备工作 /21
1.9.3 实验内容与步骤 /21
1.9.4 实验总结 /24
1.9.5 实验评价(教师) /24
1.10 阅读与分析: 技术资格(水平)考试与相关
职业 /24第2章 理解需求 /28
2.1 需求工程 /28 2.2 建立根基 /31
2.2.1 确认利益相关者 /31
2.2.2 识别多重观点 /31
2.2.3 协同合作 /32
2.2.4 首次提问 /32
2.3 导出需求 /33
2.3.1 协同收集需求 /33
2.3.2 质量功能部署(QFD) /34
2.3.3 用户场景 /34
2.3.4 导出工作产品 /34
2.4 开发用例 /35
2.5 构建需求模型 /36
2.5.1 需求模型的元素 /36
2.5.2 分析模式 /38
2.6 协商需求 /38
2.7 确认需求 /39
2.8 习题 /39
2.9 实验与思考: 软件系统的需求分析 /41
2.9.1 实验目的 /41
2.9.2 工具/准备工作 /41
2.9.3 实验内容与步骤 /41
2.9.4 实验总结 /44
2.9.5 实验评价(教师) /44
2.10 阅读与分析: 后PC时代的竞争图谱: 谁在蚕
食PC市场? /45第3章 需求建模: 场景、信息与类分析 /48
3.1 需求分析 /48
3.1.1 总体目标和原理 /48
3.1.2 分析的经验原则 /49
3.1.3 域分析 /493.1.4 需求建模的方法 /50
3.2 基于场景建模 /51
3.2.1 新建初始用例 /51
3.2.2 细化初始用例 /52
3.2.3 编写正规用例 /52
3.3 补充用例的UML模型 /53
3.3.1 开发活动图 /53
3.3.2 泳道图 /54
3.4 数据建模概念 /55
3.4.1 数据对象 /55
3.4.2 数据属性 /55
3.4.3 关系 /56
3.5 基于类的建模 /56
3.5.1 识别分析类 /56
3.5.2 描述属性 /57
3.5.3 定义操作 /58
3.5.4 类-职责-协作者建模 /58
3.5.5 关联和依赖 /61
3.5.6 分析包 /61
3.6 习题 /62
3.7 实验与思考: 信息系统需求分析 /63
3.7.1 实验目的 /63
3.7.2 工具/准备工作 /63
3.7.3 实验内容与步骤 /63
3.7.4 实验总结 /67
3.7.5 实验评价(教师) /67
3.8 阅读与分析: 为什么自由软件的用户体
验差 /67第4章 需求建模: 流程、模式与Web应用 /70
4.1 面向数据流建模 /70
4.1.1 创建数据流模型 /70
4.1.2 创建控制流模型 /72
4.1.3 控制规格说明 /72
4.1.4 处理规格说明 /74
4.2 生成行为模型 /75
4.3 需求建模的模式 /77
4.3.1 发现分析模式 /77
4.3.2 需求模式举例: 执行器-传感器 /78
4.4 Web应用系统的需求建模 /81
4.4.1 如何分析 /81
4.4.2 需求建模的输入 /81
4.4.3 需求建模的输出 /82
4.4.4 Web应用系统内容建模 /82
4.4.5 Web应用系统的交互模型 /83
4.4.6 Web应用系统的功能模型 /84
4.4.7 Web应用系统的配置模型 /84
4.4.8 导航建模 /84
4.5 习题 /85
4.6 实验与思考: 数据集成与架构建模 /86
4.6.1 实验目的 /86
4.6.2 工具/准备工作 /87
4.6.3 实验内容与步骤 /87
4.6.4 实验总结 /89
4.6.5 实验评价(教师) /90
4.7 阅读与分析: Facebook程序员如何工作: 扎克
伯格亲自把关 /90第5章 设计的概念 /93
5.1 软件工程中的设计 /93
5.2 设计过程 /94
5.2.1 软件质量指导原则和属性 /95
5.2.2 软件设计的演化 /96
5.3 关注点分离 /96
5.4 关于设计的概念 /98
5.4.1 抽象 /98
5.4.2 体系结构 /99
5.4.3 模式 /99
5.4.4 模块化 /100
5.4.5 信息隐蔽 /100
5.4.6 功能独立 /100
5.4.7 求精 /101
5.4.8 方面 /101
5.4.9 重构 /102
5.4.10 设计类 /102
5.5 设计模型 /103
5.5.1 数据设计元素 /104
5.5.2 体系结构设计元素 /104
5.5.3 接口设计元素 /105
5.5.4 构件级设计元素 /106
5.5.5 部署级设计元素 /106
5.6 习题 /107
5.7 实验与思考: 系统架构设计 /108
5.7.1 实验目的 /108
5.7.2 工具/准备工作 /108
5.7.3 实验内容与步骤 /109
5.7.4 实验总结 /111
5.7.5 实验评价(教师) /111
5.8 阅读与分析: IBM DB2总架构师: 数据库的未
来是NoSQL /111第6章 体系结构的模式与结构 /113
6.1 体系结构视图 /113
6.2 体系结构类型 /114
6.3 体系结构的风格与模式 /117
6.3.1 风格与模式 /117
6.3.2 基本体系结构 /118
6.3.3 组织和求精 /119
6.4 典型的体系结构模式 /119
6.4.1 管道-过滤器 /120
6.4.2 分层系统 /121
6.4.3 知识库(容器) /123
6.4.4 客户机-服务器 /126
6.4.5 数据抽象和面向对象组织 /127
6.4.6 事件驱动与隐式调用 /128
6.4.7 解释器 /129
6.4.8 过程控制 /129
6.4.9 主程序/子程序组织 /130
6.5 应用框架 /131
6.6 应用体系结构 /131
6.6.1 体系结构的应用方式 /132
6.6.2 事务处理系统 /132
6.6.3 信息系统 /133
6.6.4 语言处理系统 /134
6.7 习题 /136
6.8 实验与思考: “上下文关键字” /138
6.8.1 实验目的 /138
6.8.2 工具/准备工作 /138
6.8.3 实验内容与步骤 /139
6.8.4 实验总结 /144
6.8.5 实验评价(教师) /144
6.9 阅读与分析: 盘点你所不知道的十大Intel技
术成果 /144第7章 体系结构的设计与实现 /149
7.1 系统环境的表示 /149
7.2 体系结构设计决策 /151
7.3 定义原型 /152
7.4 将体系结构精化为构件 /153
7.5 利用UML进行面向对象设计 /155
7.5.1 系统上下文与交互 /156
7.5.2 设计体系结构 /157
7.5.3 识别对象类 /158
7.5.4 设计模型 /159
7.5.5 描述接口 /162
7.6 设计模式 /163
7.7 实现问题 /164
7.7.1 复用 /164
7.7.2 配置管理 /165
7.7.3 宿主机-目标机开发 /166
7.8 开源开发 /166
7.8.1 开源软件 /167
7.8.2 开源使用许可 /168
7.9 习题 /169
7.10 实验与思考: 仪器软件设计 /171
7.10.1 实验目的 /171
7.10.2 工具/准备工作 /171
7.10.3 实验内容与步骤 /171
7.10.4 实验总结 /178
7.10.5 实验评价(教师) /178
7.11 阅读与分析: 谷歌盲人工程师讲述软件设计
之路 /178第8章 构件级设计 /182
8.1 什么是构件 /182
8.1.1 面向对象的观点 /182
8.1.2 传统观点 /184
8.1.3 过程相关的观点 /185
8.2 设计基于类的构件 /186
8.2.1 基本设计原则 /186
8.2.2 构件级设计指导方针 /188
8.2.3 内聚性 /188
8.2.4 耦合性 /189
8.3 实施构件级设计 /190
8.4 WebApp的构件级设计 /193
8.4.1 构件级内容设计 /193
8.4.2 构件级功能设计 /193
8.5 基于构件的开发 /194
8.5.1 领域工程 /194
8.5.2 构件合格性检验、适应性修改与组
合 /194
8.5.3 复用的分析与设计 /196
8.5.4 构件分类与检索 /197
8.6 习题 /197
8.7 实验与思考: 移动机器人的体系结构 /199
8.7.1 实验目的 /199
8.7.2 工具/准备工作 /199
8.7.3 实验内容与步骤 /200
8.7.4 实验总结 /207
8.7.5 实验评价(教师) /207
8.8 阅读与分析: Android厂商面临的11项专利指
控 /207第9章 基于模式的设计 /212
9.1 模式设计 /212
9.1.1 模式的种类 /213
9.1.2 框架 /214
9.1.3 描述模式 /214
9.1.4 模式语言和存储库 /215
9.2 基于模式的软件设计 /216
9.2.1 不同环境下基于模式的设计 /216
9.2.2 在模式中思考 /217
9.2.3 设计任务 /217
9.2.4 建立模式组织表 /218
9.3 体系结构模式 /219
9.4 构件级设计模式 /220
9.5 用户界面设计模式 /221
9.6 WebApp设计模式 /223
9.6.1 设计焦点 /224
9.6.2 设计粒度 /224
9.7 习题 /225
9.8 实验与思考: 信息系统的可靠性、安全性 /226
9.8.1 实验目的 /226
9.8.2 工具/准备工作 /226
9.8.3 实验内容与步骤 /227
9.8.4 实验总结 /229
9.8.5 实验评价(教师) /230
9.9 阅读与分析: 希望开发者不要再重复发明
轮子 /230第10章 WebApp设计 /232
10.1 WebApp设计质量 /232
10.2 设计目标 /234
10.3 界面设计 /235
10.4 美学设计 /235
10.5 内容设计 /236
10.5.1 内容对象 /237
10.5.2 设计问题 /238
10.6 体系结构设计 /238
10.6.1 内容体系结构 /238
10.6.2 WebApp体系结构 /240
10.7 导航设计 /241
10.7.1 导航语义 /241
10.7.2 导航语法 /241
10.8 构件级设计 /242
10.9 面向对象的超媒体设计方法 /242
10.9.1 OOHDM的概念设计 /243
10.9.2 OOHDM的导航设计 /243
10.9.3 抽象界面设计与实现 /244
10.10 习题 /244
10.11 实验与思考: Web应用开发 /246
10.11.1 实验目的 /246
10.11.2 工具/准备工作 /246
10.11.3 实验内容与步骤 /246
10.11.4 实验总结 /249
10.11.5 实验评价(教师) /249
10.12 阅读与分析: 微软“云+端”推进产业
创新 /249第11章 嵌入式软件设计 /254
11.1 实时系统的概念 /254
11.2 嵌入式系统设计 /255
11.2.1 实时系统建模 /258
11.2.2 实时编程 /258
11.3 体系结构模式 /259
11.3.1 观察和反应 /260
11.3.2 环境控制 /262
11.3.3 处理管道 /263
11.4 时序分析 /264
11.5 实时操作系统 /267
11.6 习题 /269
11.7 实验与思考: 嵌入式软件体系架构 /271
11.7.1 实验目的 /271
11.7.2 工具/准备工作 /271
11.7.3 实验内容与步骤 /272
11.7.4 实验总结 /275
11.7.5 实验评价(教师) /275
11.8 阅读与分析: Windows奋斗史: 崛起与
衰败 /276第12章 分布式系统体系结构 /278
12.1 分布式系统的概念 /278
12.2 分布式系统的问题 /279
12.2.1 透明性 /279
12.2.2 开放性 /279
12.2.3 可扩展性 /280
12.2.4 信息安全性 /280
12.2.5 服务质量 /281
12.2.6 失败管理 /281
12.3 交互模型 /281
12.4 中间件 /282
12.5 客户机-服务器计算 /283
12.6 分布式系统的体系结构模式 /284
12.6.1 主从体系结构 /284
12.6.2 两层客户机-服务器结构 /285
12.6.3 多层客户机-服务器结构 /286
12.6.4 分布式组件体系结构 /287
12.6.5 对等体系结构 /289
12.7 软件作为服务 /291
12.8 习题 /294
12.9 实验与思考: 外包管理与数据库备份 /296
12.9.1 实验目的 /296
12.9.2 工具/准备工作 /296
12.9.3 实验内容与步骤 /296
12.9.4 实验总结 /298
12.9.5 实验评价(教师) /299
12.10 阅读与分析: BigInsights: 解读IBM基于Hadoop的数据分析平台 /299第13章 面向服务的体系结构 /302
13.1 面向服务的体系结构的概念 /302
13.2 服务作为可复用的组件 /305
13.3 服务工程 /306
13.3.1 可选服务的识别 /307
13.3.2 服务接口设计 /309
13.3.3 服务实现和部署 /310
13.3.4 遗留系统服务 /311
13.4 使用服务的软件开发 /311
13.4.1 工作流设计和实现 /313
13.4.2 服务测试 /315
13.5 习题 /316
13.6 实验与思考: 软件架构评估与Web应用 /318
13.6.1 实验目的 /318
13.6.2 工具/准备工作 /318
13.6.3 实验内容与步骤 /319
13.6.4 实验总结 /321
13.6.5 实验评价(教师) /321
13.7 阅读与分析: 中小企业推动SaaS模式软件平
台成熟 /322第14章 体系结构的描述与评估 /326
14.1 体系结构研究的发展 /326
14.2 体系结构的描述 /327
14.2.1 IEEE软件体系结构描述框架
标准 /327
14.2.2 体系结构描述语言(ADL) /328
14.2.3 体系结构的形式化模型 /332
14.2.4 使用UML描述体系结构 /332
14.3 体系结构评估的组织与结果 /333
14.4 体系结构评估方法 /334
14.4.1 体系结构分析方法(SAAM) /334
14.4.2 体系结构权衡分析方法
(ATAM) /335
14.4.3 评估体系结构的复杂性 /336
14.5 习题 /336
14.6 课程实验总结 /338
14.6.1 实验的基本内容 /338
14.6.2 实验的基本评价 /340
14.6.3 课程学习能力测评 /341
ⅩVIV14.6.4 课程实验总结 /342
14.6.5 实验评价(教师) /342
14.7 阅读与分析: 雅虎与Facebook和解专利诉讼并扩大战略合作 /342附录 部分习题与实验参考答案 /344主要参考文献 /371
