图书目录

第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