《软件架构设计实践教程》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:张家浩编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2014
  • ISBN:9787302366379
  • 页数:511 页
图书介绍:本书以现代软件工程的基本原理为依据、从系统架构师的角色、定位的介绍开始,讲解软件架构师的职责和作用。并以实际案例为基础,导入软件架构设计的基本概念和基本技术方法。

第1章 认识软件架构 1

1.1 软件架构与软件工程 1

1.1.1 软件产业的工业化与现代化 1

1.1.2 软件系统的复杂性 2

1.1.3 克服“软件危机”的进程 3

1.1.4 现代软件产业发展的时代特征 4

1.1.5 国内软件产业发展的问题 6

1.1.6 软件架构与软件工程课程的关系 7

1.1.7 本课程的参考书 7

1.2 软件架构概述 8

1.2.1 软件架构的定义 8

1.2.2 软件架构的视角 9

1.2.3 软件架构的表示方法 10

1.2.4 架构的一般特性 10

1.2.5 统一过程(RUP)的架构 13

1.3 感受身边的架构存在 13

1.3.1 电灯开关控制系统的架构 13

1.3.2 鼠标接口的架构 14

1.4 两个小程序的架构分析 15

1.4.1 两个小程序 15

1.4.2 “欢迎”程序的实现过程 16

1.4.3 小程序的架构实现小结 19

1.5 实践与思考 19

1.5.1 实践题 19

1.5.2 思考题 20

第2章 架构与架构师的作用 21

2.1 架构是需求将如何被实现的描述 22

2.1.1 文件传输软件的架构描述与分析 22

2.1.2 文件传输软件的新需求及其改进方案 25

2.1.3 架构描述表达了系统必须实现的需求 26

2.1.4 架构描述表达了软件系统的实现结构 27

2.2 架构提供满足关键属性需求的方案 29

2.2.1 汽车控制系统架构演变的案例分析 29

2.2.2 软件系统的关键质量属性需求 33

2.2.3 关键质量属性需求与系统功能的正交性 34

2.3 架构是软件迭代开发的框架 36

2.3.1 架构是软件迭代开发的框架 36

2.3.2 软件产品开发对架构的依赖 39

2.4 架构是软件过程管理的基础 40

2.4.1 软件过程可视性与软件架构 40

2.4.2 软件过程管理的基本内容 42

2.4.3 微软VSTS的软件过程跟踪 47

2.4.4 将架构的关键构件设定为基线 51

2.5 软件过程对架构的反作用 52

2.5.1 需求影响架构 53

2.5.2 系统设计影响架构 54

2.5.3 软件过程影响架构 55

2.5.4 组织影响架构 56

2.5.5 架构的反作用 56

2.6 软件架构师的作用、任务与责任 58

2.6.1 架构师的作用 58

2.6.2 架构师的任务与责任 58

2.6.3 从编码工程师到架构师 59

2.7 实践与思考 60

2.7.1 实践题 60

2.7.2 思考题 60

第3章 软件架构的描述与可视化 61

3.1 架构描述与UML架构视图 61

3.1.1 架构描述的基本考虑 63

3.1 .2基于UML4+1的软件架构视图 64

3.2 绘制软件架构视图 68

3.2.1 用Visio 2007绘制架构视图 68

3.2.2 用Rational Rose 2003绘制架构视图 72

3.2.3 用VS 2010绘制架构视图 73

3.2.4 架构师的思考 76

3.3 使用Rational Rose逆向分析工具分析架构 77

3.3.1 Rational Rose逆向分析工具概述 77

3.3.2 对C++项目进行架构逆向分析 78

3.3.3 “欢迎”程序架构的逆向分析 82

3.3.4 架构师的思考 83

3.4 用微软VS 2010逆向分析工具分析架构 86

3.4.1 微软VS 2010逆向分析工具概述 86

3.4.2 使用VS 2010对五子棋程序进行架构逆向分析 90

3.4.3 “五子棋”系统架构的逆向分析 94

3.4.4 架构师的思考 99

3.5 架构设计阶段的软件工程文档 101

3.5.1 系统设计规范的内容 101

3.5.2 规范系统设计活动过程 101

3.5.3 规范设计的制品 104

3.5.4 需要编写哪些架构视图和文档 105

3.5.5 透过架构视图表现架构设计的核心内容 106

3.6 实践与思考 108

3.6.1 实践题 108

3.6.2 思考题 108

第4章 从需求到架构 109

4.1 架构师的需求过程 110

4.1.1 现代软件工程的需求过程 110

4.1 .2需求获取阶段与架构师的关注点 111

4.1.3 需求分析阶段与架构师的关注点 114

4.1 .4需求处理阶段与架构师的关注点 116

4.1.5 需求评审阶段与架构师的关注点 119

4.2 需求转换的面向过程方法 121

4.2.1 理解需求模型的概念与意义 122

4.2.2 面向过程的需求建模方法 123

4.2.3 面向过程的需求转换 124

4.2.4 面向过程的变换流与事物流转换 125

4.2.5 采用变换流方法的案例分析 128

4.2.6 采用UC矩阵方法的案例分析 132

4.2.7 面向过程需求转换方式的弊端 135

4.3 认识和理解需求分析的OMT模型 138

4.3.1 面向过程与面向对象的区别 138

4.3.2 基于UML用例的业务建模 139

4.3.3 基于UML的类与对象建模 140

4.3.4 基于UML的动态建模 146

4.3.5 基于UML的功能建模 147

4.3.6 电梯控制系统的OMT模型描述与分析 148

4.4 面向对象的需求转换方法 150

4.4.1 面向对象转换的一般概念 150

4.4.2 从需求模型到物理架构 152

4.4.3 从需求模型到开发和运行架构 155

4.4.4 从需求模型到逻辑架构和数据架构 155

4.4.5 电梯控制系统的5个架构分析 158

4.5 ATM扩展项目的需求转换过程 163

4.5.1 ATM基本系统 163

4.5.2 ATM扩展的需求获取 166

4.5.3 ATM扩展需求的现状与对策分析 169

4.5.4 ATM扩展需求的架构规划 178

4.5.5 ATM扩展需求的架构设计与平衡 181

4.6 软件架构师的需求参与 184

4.6.1 需求与架构衔接阶段的角色扮演 184

4.6.2 架构师参与需求深度的“底线” 185

4.6.3 需求与架构平衡的“底线” 185

4.7 实践与思考 186

4.7.1 实践题 186

4.7.2 思考题 187

第5章 软件架构设计的参考模型 188

5.1 传统系统设计的基本思路和思想方法 189

5.1.1 传统系统设计的思路 189

5.1.2 抽象与求精的设计方法 194

5.1.3 模块松耦合与强内聚的追求 198

5.2 两种典型软件系统的架构模式分析 202

5.2.1 开放式系统互连参考模型架构的层次模式 202

5.2.2 操作系统架构的层次模式 205

5.2.3 两种系统架构模式的比较与借鉴 208

5.3 其他典型软件架构模型及其参考意义 209

5.3.1 流程处理系统 209

5.3.2 客户/服务器系统 210

5.3.3 层状系统 212

5.3.4 三级和多级系统 212

5.3.5 团聚和串行法 213

5.3.6 代理 214

5.3.7 聚合和联邦系统 215

5.4 实践与思考 216

5.4.1 实践题 216

5.4.2 思考题 216

第6章 软件架构的概要设计与实现 217

6.1 软件架构概要设计的任务与过程 217

6.1.1 系统概要设计的任务 217

6.1.2 系统概要设计的意义 218

6.1.3 面向结构的系统概要设计过程 219

6.1.4 面向对象的系统概要设计过程 220

6.2 软件系统概要设计的子系统设计 222

6.2.1 子系统的含义与特性 222

6.2.2 子系统所包含的内部组件 223

6.2.3 基于网络拓扑结构的子系统划分 225

6.2.4 基于责任层次的子系统划分 229

6.2.5 基于状态转换的子系统划分 232

6.2.6 子系统的其他划分方法 236

6.2.7 子系统划分中的关注点分离 237

6.2.8 将子系统分配到硬件 238

6.3 电梯控制系统的概要设计与实现 240

6.3.1 需求模型中的子系统划分与疑问 240

6.3.2 选择适合电梯控制系统的架构模型 241

6.3.3 电梯控制子系统划分的关键因素与分离点 243

6.3.4 根据实时与并发特性划分子系统 245

6.3.5 将逻辑子系统与物理子系统对应起来 246

6.3.6 电梯控制系统的实现与测试验收 247

6.3.7 电梯控制系统概要设计效果的检验 251

6.4 实践与思考 252

6.4.1 实践题 252

6.4.2 思考题 252

第7章 基于接口、组件和SOA的架构设计与实现 253

7.1 接口设计与实现 254

7.1.1 接口的基本概念 254

7.1.2 抽象类继承与接口继承 257

7.1.3 面向接口编程与面向接口设计 260

7.1.4 面向接口设计的实现案例与分析 262

7.1.5 理解面向接口的设计 273

7.2 软件架构设计的模式与风格 275

7.2.1 设计模式 275

7.2.2 风格 276

7.2.3 框架 276

7.2.4 行业应用框架 277

7.2.5 模式、风格与框架的区别 277

7.3 面向对象的设计模式 278

7.3.1 从软件架构到设计模式 278

7.3.2 创建型设计模式 279

7.3.3 创建型设计模式应用实例分析 288

7.3.4 设计模式的选择与运用思路 294

7.4 组件与组件的运用 295

7.4.1 组件概念与.COM组件的基本特性 295

7.4.2 使用普通DLL实现的应用程序案例 300

7.4.3 使用WMP的COM组件实现媒体播放器 302

7.4.4 理解WMP组件的对象模型 304

7.4.5 一般COM组件的实现与使用 307

7.4.6 使用ATL工具开发COM组件 320

7.4.7 基于组件的架构设计 326

7.5 基于SOA的分布式系统设计体验 331

7.5.1 SOA的概念与架构设计 331

7.5.2 VSTS分布式系统设计器介绍 338

7.5.3 定义组件的提供者 340

7.5.4 定义对组件提供者终节点的控制 341

7.5.5 定义组件之间的连接 343

7.5.6 应用程序的实现 343

7.6 实践与思考 349

7.6.1 实践题 349

7.6.2 思考题 349

第8章 基于MVC设计模式的架构设计与实现 350

8.1 面向对象的MVC设计模式 351

8.1.1 图形化与交互式应用的可变需求 351

8.1.2 MVC组件的作用和运行机制 353

8.1.3 MVC架构的设计和实现步骤 356

8.1.4 MVC的更进一步发展 357

8.1.5 对MVC模式的评价 359

8.2 基于MVC的Struts应用框架 360

8.2.1 整合进Struts的相关技术 361

8.2.2 两种Struts架构模型 363

8.2.3 Struts的构成与MVC角色 364

8.3 搭建一个简单的Struts应用程序 366

8.3.1 准备Struts架构开发环境 366

8.3.2 最简单的登录系统的功能需求 369

8.3.3 搭建一个基于Struts的登录系统 369

8.3.4 登录系统Struts架构的执行过程 376

8.3.5 实现MVC模式的Struts架构内部机制分析 376

8.4 SSH架构技术的特点与集成 383

8.4.1 Spring框架技术与特点 384

8.4.2 Hibernate框架技术与特点 387

8.4.3 SSH框架的集成 396

8.4.4 搭建基于MyEclipse的SSH框架 398

8.5 开发一个基于SSH架构的登录系统 404

8.5.1 SSH架构的各层模块及其任务 404

8.5.2 Hibernate层的实现 404

8.5.3 Spring层的实现 407

8.5.4 Struts层的实现 409

8.5.5 运行SSHLogin系统 411

8.5.6 SSHLogin系统各层的实现与分析 412

8.5.7 SSHLogin系统逻辑架构的总结 416

8.6 医药管理系统分析与SSH架构二次开发 419

8.6.1 医药管理系统的业务背景与需求 419

8.6.2 医药管理系统的架构分析 423

8.6.3 二次开发的需求与分析 431

8.6.4 二次开发的逻辑架构设计 432

8.6.5 二次开发的实现 435

8.6.6 医药管理系统二次开发的总结 441

8.7 实践与思考 446

8.7.1 实践题 446

8.7.2 思考题 446

第9章 基于关键需求的架构设计、验证与评审 447

9.1 理解架构设计中的关键需求 448

9.1.1 质量属性需求的一般概念 448

9.1.2 几个常见的质量属性需求 454

9.1.3 质量属性需求的场景描述 456

9.2 基于关键需求的架构设计对策 458

9.2.1 应对关键需求的对策思路 458

9.2.2 可用性战术 459

9.2.3 可修改性战术 462

9.2.4 性能战术 463

9.2.5 易用性战术 464

9.3 基于关键需求的架构设计 465

9.3.1 关键需求产生的背景和理由 465

9.3.2 与架构设计有关的约束与限制 469

9.3.3 影响架构设计的关键机制 471

9.3.4 基于关键属性驱动的架构设计 472

9.4 架构设计的验证 473

9.4.1 架构设计验证的基本概念 473

9.4.2 软件架构验证的实践 475

9.4.3 使用VS 2010进行层验证 476

9.4.4 验证MyPlyer程序的架构 483

9.5 架构的集成测试 484

9.5.1 集成测试的概念 484

9.5.2 模拟集成测试体验 486

9.5.3 测试StockBroker系统组件之间的操作 490

9.6 架构设计与评审 493

9.6.1 针对关键质量属性需求的架构设计评审 493

9.6.2 针对5个基本架构的架构评审 494

9.6.3 对一个架构评审案例的点评 495

9.7 电梯控制系统的架构设计实现与评审 503

9.7.1 理解学生项目的架构设计评审要求 504

9.7.2 原有电梯控制系统的架构分析 505

9.7.3 基于“并发性”的关键需求与效果预期 505

9.7.4 针对“并发性”需求的架构设计与实现 506

9.7.5 电梯控制系统架构设计的评审意见 508

9.8 实践与思考 510

9.8.1 实践题 510

9.8.2 思考题 510

参考文献 511