软件工程

软件工程
作 者: 朴勇
出版社: 电子工业出版社
丛编项:
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  朴勇,工学博士,大连理工大学软件学院副教授。毕业于大连理工大学计算机系,2004年3月至今就职于大连理工大学软件学院(国家示范性软件学院)。目前主讲\

内容简介

本书主要围绕软件的系统工程化开发过程,介绍相关的理论、方法、技术和工具。本书以面向对象的分析和设计为主线,以基本理论为出发点,遵循UML 2标准,介绍软件开发的阶段组织及生命周期模型;重点针对软件开发的具体活动,讨论需求分析、软件架构的构建、类的分析与设计、代码生成、类的详细设计、设计优化、实现技术、交互设计、软件测试等重要环节;介绍软件项目级管理及软件过程管理与改进。本书内容丰富、循序渐进,注重软件工程理论与实践的结合,适合作为高等院校计算机相关专业本科生和研究生的教材,可也为从事软件开发的理论研究人员和工程技术人员提供参考。

图书目录

目 录

第1章 软件工程概述\t1

1.1 软件危机与软件工程\t1

1.1.1 软件危机\t1

1.1.2 软件工程\t2

1.2 系统工程与UML\t3

1.2.1 系统工程\t3

1.2.2 统一建模语言UML\t4

1.3 系统开发的解空间\t6

1.4 软件工程开发方法\t8

1.4.1 传统方法\t8

1.4.2 面向对象方法\t8

1.4.3 理解两种开发方法\t9

1.5 习题\t10

第2章 软件开发过程\t11

2.1 软件生命周期与软件过程\t11

2.2 传统生命周期模型\t13

2.2.1 瀑布模型\t13

2.2.2 快速原型模型\t14

2.2.3 增量模型\t16

2.2.4 螺旋模型\t16

2.2.5 喷泉模型\t18

2.3 敏捷生命周期模型\t18

2.3.1 增量交付与迭代开发\t19

2.3.2 敏捷生命周期模型的优势\t20

2.3.3 极限编程\t21

2.3.4 Scrum\t22

2.3.5 DevOps过程\t23

2.4 习题\t25

第3章 需求分析\t26

3.1 需求分析活动\t26

3.1.1 需求准备\t26

3.1.2 系统涉众\t27

3.1.3 系统目标\t29

3.2 用例与系统功能\t29

3.2.1 用例及其表示\t30

3.2.2 识别用例\t31

3.2.3 用例规约\t33

3.2.4 用例提炼\t34

3.3 过程建模与事件流\t36

3.3.1 过程建模\t36

3.3.2 事件流\t40

3.4 功能性需求\t41

3.5 非功能性需求\t44

3.6 需求跟踪\t46

3.7 习题\t48

第4章 软件架构的构建\t50

4.1 软件架构及其定义\t50

4.1.1 软件架构的理解\t50

4.1.2 软件架构的定义\t51

4.1.3 软件架构的“4+1”视图模型\t51

4.2 软件架构模型\t53

4.3 软件架构风格\t53

4.3.1 管道与过滤器\t53

4.3.2 层次结构\t54

4.3.3 仓库/黑板系统\t55

4.3.4 正交软件结构\t56

4.3.5 客户机/服务器结构\t56

4.3.6 浏览器/服务器结构\t57

4.3.7 MVC结构\t58

4.4 软件架构设计\t59

4.4.1 包及其结构\t59

4.4.2 包结构设计\t60

4.5 习题\t63

第5章 类的分析与设计\t64

5.1 基本类的确定\t64

5.1.1 类的识别\t65

5.1.2 初始类图\t66

5.1.3 类的方法\t67

5.1.4 类的关系\t68

5.1.5 类与对象\t70

5.2 类的细化\t70

5.2.1 管理类和控制类\t70

5.2.2 设计优化\t73

5.3 补充和确认\t74

5.3.1 顺序图\t74

5.3.2 场景模拟\t76

5.4 界面类设计\t80

5.5 习题\t82

第6章 代码生成\t83

6.1 逆向工程与CASE工具\t83

6.2 单个类的实现\t84

6.3 关联关系的实现\t86

6.4 对象归属关系的实现\t90

6.4.1 聚合关系\t90

6.4.2 组合关系\t92

6.4.3 依赖关系\t94

6.5 软件架构的实现\t94

6.6 其他物理实现\t99

6.7 习题\t101

第7章 类的详细设计\t103

7.1 详细设计的主要活动\t103

7.2 类方法的详细设计\t104

7.2.1 图形工具\t104

7.2.2 表格工具\t106

7.2.3 语言工具\t108

7.3 类的行为设计\t108

7.3.1 状态图的结构\t109

7.3.2 状态图的扩展\t111

7.3.3 状态图的应用\t112

7.4 对象约束语言\t114

7.5 习题\t118

第8章 设计优化\t121

8.1 小即是美\t121

8.2 设计优化思想\t122

8.2.1 运行时的多态\t122

8.2.2 耦合的消息链\t124

8.2.3 狎昵关系\t125

8.2.4 被拒绝的遗赠\t126

8.2.5 循环依赖\t126

8.3 设计原则\t127

8.3.1 接口隔离原则\t127

8.3.2 依赖倒置原则\t128

8.3.3 开放封闭原则\t128

8.3.4 Liskov替换原则\t130

8.3.5 单一职责原则\t131

8.3.5 合成/聚合复用原则\t132

8.4 设计模式\t133

8.4.1 抽象工厂模式\t134

8.4.2 单例模式\t136

8.4.3 适配器模式\t138

8.4.4 桥模式\t139

8.4.5 装饰模式\t140

8.4.6 门面模式\t141

8.4.7 代理模式\t142

8.4.8 观察者模式\t143

8.4.9 策略模式\t144

8.4.10 状态模式\t144

8.5 习题\t147

第9章 实现技术\t149

9.1 非功能性需求的实现\t149

9.2 分布式技术\t151

9.3 可扩展标记语言XML\t153

9.4 程序轮子\t154

9.4.1 组件\t155

9.4.2 框架\t158

9.5 数据的持久化\t162

9.5.1 文件持久化\t162

9.5.2 数据库持久化\t163

9.6 领域特定语言\t164

9.7 模型驱动架构\t166

9.7.1 原理及过程\t166

9.7.2 MDA的应用\t168

9.8 重构\t170

9.9 习题\t172

第10章 交互设计\t173

10.1 交互设计概述\t173

10.2 可用性\t174

10.2.1 任务适合性\t175

10.2.2 自我描述性\t176

10.2.3 可控性\t177

10.2.4 与用户期望一致性\t177

10.2.5 容错性\t179

10.2.6 可定制性\t179

10.2.7 易学性\t179

10.3 交互设计过程\t180

10.4 可用性的验证\t181

10.5 习题\t183

第11章 软件测试\t184

11.1 形式化验证\t184

11.2 测试技术\t186

11.2.1 测试分类\t186

11.2.2 测试策略\t187

11.2.3 非功能性测试\t189

11.3 软件度量\t189

11.3.1 控制流图与环形复杂度\t191

11.3.2 方法内聚缺乏度\t193

11.4 等价类测试\t194

11.4.1 等价类方法\t194

11.4.2 等价类与边界\t196

11.4.3 等价类组合\t197

11.4.4 面向对象中的等价类\t198

11.5 基于控制流的测试\t200

11.6 断言机制\t204

11.7 测试框架\t206

11.7.1 测试环境\t206

11.7.2 JUnit\t207

11.8 可测试性\t213

11.9 建设性质量保证\t217

11.10 人工测试\t218

11.11 习题\t220

第12章 软件项目级管理\t223

12.1 软件配置管理\t223

12.1.1 版本管理\t224

12.1.2 构建管理\t228

12.2 项目管理\t230

12.2.1 项目计划与工作分解\t231

12.2.2 软件规模估算\t232

12.2.3 开发成本估算\t234

12.2.4 任务安排与工程网络图\t237

12.2.5 项目组织与甘特图\t238

12.3 项目计划跟踪控制\t239

12.3.1 项目计划跟踪\t239

12.3.2 挣值分析\t240

12.3.3 项目偏差控制\t242

12.4 软件质量保证\t243

12.4.1 质量管理\t243

12.4.2 软件质量保证的内容\t244

12.4.3 软件质量保证的任务\t245

12.4.4 软件质量保证计划\t245

12.5 风险管理\t245

12.6 项目人员构成与沟通\t247

12.6.1 项目人员构成\t247

12.6.2 人员沟通\t249

12.7 习题\t250

第13章 软件过程管理与改进\t252

13.1 软件过程管理\t252

13.1.1 过程改进\t252

13.1.2 能力成熟度模型\t253

13.1.3 CMMI过程域\t255

13.2 个体软件过程\t262

13.3 团队软件过程\t262

13.4 习题\t263