《软件工程》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:陈永主编;张薇,杨磊副主编
  • 出 版 社:北京:中国铁道出版社
  • 出版年份:2017
  • ISBN:9787113197179
  • 页数:385 页
图书介绍:本书结合国内外软件工程领域最新的进展,以软件设计方法、工具应用为主线,全书通过基础理论篇、高级软件工程篇和项目案例篇三部分,从实践、实用的角度,通过丰富的实例和热点问题系统的介绍了软件工程的基本思想、方法。本书内容涉及内容全面,涉及大数据、云计算、可穿戴计算、面向服务计算等新技术内容,此外对软件职业素质和职业道德也进行了阐述。

基础篇 2

第1章 概论 2

1.1 软件危机 3

1.1.1 摩尔定律和超越摩尔 3

1.1.2 软件危机的介绍 4

1.1.3 产生软件危机的原因 5

1.1.4 消除软件危机的途径 6

1.2 软件开发工程化 7

1.2.1 软件工程的定义 7

1.2.2 软件开发的发展过程 8

1.2.3 软件工程的基本原理 10

1.3 软件工程产品分类及来源 11

1.3.1 软件工程产品分类 11

1.3.2 软件工程项目来源 12

1.4 软件生命周期 13

1.4.1 软件生命周期的定义 13

1.4.2 软件生命周期的阶段 14

1.5 软件工程方法学 16

1.5.1 软件工程方法学的定义 16

1.5.2 软件工程方法学的类型 16

1.6 软件工程人员的业务素质和职业道德 19

1.6.1 软件工程师的业务素质 20

1.6.2 软件工程师的职业道德规范 20

1.6.3 软件工程师职业实践的准则 21

1.6.4 软件工程师职业实践的国际标准 22

本章小结 23

习题 23

第2章 软件过程与模型 25

2.1 软件过程 25

2.1.1 软件过程的定义 25

2.1.2 软件过程的特点 25

2.1.3 软件过程的分类 26

2.1.4 软件过程的作用 26

2.1.5 软件过程模型化 26

2.2 瀑布模型 26

2.2.1 瀑布模型的基本思想 26

2.2.2 瀑布模型的特点 28

2.2.3 瀑布模型的应用范围 30

2.3 快速原型法 30

2.3.1 快速原型法的基本思想 30

2.3.2 快速模型的特点 31

2.3.3 快速原型法的应用范围 32

2.4 增量模型 32

2.4.1 增量模型的基本思想 32

2.4.2 增量模型的特点 32

2.4.3 增量模型应用范围 33

2.5 螺旋模型 33

2.5.1 螺旋模型的基本思想 33

2.5.2 螺旋模型的特点 35

2.5.3 螺旋模型的应用范围 35

2.6 V模型 35

2.6.1 V模型的基本思想 35

2.6.2 V模型的特点 36

2.6.3 V模型的应用范围 36

2.7 敏捷软件开发 36

2.7.1 敏捷开发的基本思想 36

2.7.2 敏捷开发的特点 37

2.7.3 敏捷开发的应用范围 38

本章小结 38

习题 38

第3章 软件计划与可行性研究 40

3.1 问题定义 40

3.2 软件规模估算 41

3.2.1 软件估算的概念 41

3.2.2 软件估算的方法 41

3.3 可行性研究 43

3.3.1 可行性研究的概念 43

3.3.2 可行性研究的分类 44

3.3.3 可行性研究的步骤 45

3.4 软件项目计划 47

3.4.1 软件范围 47

3.4.2 环境资源 47

3.4.3 制定进度表 48

3.5 系统流程图 48

3.5.1 系统流程图的定义 48

3.5.2 系统流程图的符号表示 48

3.5.3 应用实例 49

3.6 其他补充说明 50

本章小结 51

习题 51

第4章 软件需求分析 53

4.1 软件需求的定义 53

4.2 需求分析的层次内容 54

4.3 需求分析的任务 55

4.3.1 确定项目的范围 55

4.3.2 确定具体需求 56

4.3.3 软件需求文档化 56

4.4 需求获取的方法 57

4.4.1 用户沟通交流法 57

4.4.2 工具分析法 59

4.4.3 模型及语言描述法 61

4.4.4 原型化方法 62

4.5 需求分析的步骤 64

4.6 数据流图 66

4.6.1 数据流图的定义 66

4.6.2 数据流图的符号表示 66

4.6.3 数据流图的绘制方法 67

4.6.4 银行储蓄系统应用实例 68

4.6.5 毕业生就业管理系统应用实例 70

4.7 数据字典 72

4.7.1 数据字典的定义 72

4.7.2 基本符号 72

4.7.3 互联网+电商销售应用实例 73

4.8 实体-联系图 74

4.8.1 实体-联系图的定义 74

4.8.2 实体-联系图的符号表示 75

4.8.3 应用实例 75

4.9 状态转换图 76

4.9.1 状态转换图的定义 76

4.9.2 状态转换图的符号表示 76

4.9.3 人体运动捕捉系统应用实例 77

4.9.4 电话系统行为过程应用实例 77

4.10 UML用例需求模型 78

4.10.1 UML基本概念 78

4.10.2 UML主要内容 78

4.10.3 用例需求功能模型 79

4.11 需求变更管理 81

4.11.1 控制项目范围的扩展 81

4.11.2 变更控制过程 82

4.11.3 变更控制委员会 84

4.11.4 度量变更活动 85

本章小结 85

习题 85

第5章 软件总体设计 87

5.1 软件总体设计阶段的任务 87

5.2 软件总体设计基本思想 88

5.2.1 雪球理论 88

5.2.2 模块化 88

5.2.3 抽象 89

5.2.4 逐步求精 91

5.2.5 信息隐藏和局部化 91

5.2.6 模块独立内聚和耦合 91

5.2.7 软件结构设计的启发式规则 93

5.3 总体设计阶段的工作步骤 96

5.3.1 总体设计阶段组成 96

5.3.2 总体设计步骤 96

5.4 系统设计阶段 97

5.4.1 二维码的食品安全追溯系统问题描述 97

5.4.2 二维码的食品安全追溯系统分析 98

5.4.3 二维码的食品安全追溯系统设计 99

5.5 软件结构设计工具 100

5.5.1 层次图定义及实例 100

5.5.2 结构图定义及实例 101

5.6 面向数据流的设计万法 103

5.6.1 定义 103

5.6.2 数据流图的类型 103

5.6.3 设计步骤 104

5.6.4 汽车数字仪表板实例 107

本章小结 110

习题 110

第6章 人机交互设计 112

6.1 人机交互基本概念 112

6.1.1 人机交互的定义 112

6.1.2 人机交互的研究内容 112

6.2 人机交互感知和认知基础 113

6.2.1 视觉感知 113

6.2.2 颜色模型 116

6.2.3 听觉感知 118

6.2.4 触觉感知 120

6.3 人机交互发展阶段 120

6.4 传统交互设备 121

6.5 可穿戴计算技术与设备 121

6.6 人机界面设计基础 122

6.6.1 人机界面设计的定义 122

6.6.2 理解用户 123

6.7 界面设计原则 125

6.7.1 图形用户界面的主要思想 125

6.7.2 图形用户界面的一般原则 127

6.8 Web界面设计 128

6.8.1 Web界面及相关概念 128

6.8.2 Web界面设计原则 128

6.8.3 Web风格与布局色彩设计 129

6.8.4 Web文本设计 130

本章小结 131

习题 131

第7章 软件详细设计 132

7.1 详细设计阶段的目的和任务 132

7.1.1 详细设计阶段的目的 132

7.1.2 详细设计阶段的任务 132

7.2 结构化程序设计与程序设计风格 133

7.2.1 结构化程序设计 133

7.2.2 程序设计的风格 134

7.3 常用的详细设计表达工具 135

7.3.1 程序流程图 135

7.3.2 盒图 136

7.3.3 PAD图 137

7.3.4 决策树 138

7.3.5 决策表 139

7.3.6 PDL设计语言 140

7.4 程序复杂度的定量计算 141

7.4.1 McCabe方法 141

7.4.2 Halstead万法 142

本章小结 143

习题 143

第8章 软件编码 145

8.1 程序设计语言 145

8.1.1 程序设计语言的定义 145

8.1.2 程序设计语言的特性 145

8.1.3 程序设计语言的分类 146

8.2 程序设计语言的选择 147

8.2.1 程序设计语言选择标准 148

8.2.2 程序设计风格 149

本章小结 150

习题 150

第9章 软件测试 151

9.1 软件测试基础 151

9.1.1 软件测试的定义 151

9.1.2 软件测试的目标 151

9.1.3 软件测试的内容 152

9.1.4 软件测试的心理依据 152

9.1.5 软件测试的发展史 154

9.1.6 软件测试典型案例 155

9.2 软件测试的原理与特点 157

9.2.1 软件测试的原理 157

9.2.2 软件测试的特点 158

9.3 软件测试的基本方法 158

9.3.1 人工测试和机器测试 158

9.3.2 白盒测试、黑盒测试和灰盒测试 159

9.3.3 Alpha测试和Beta测试 159

9.4 软件测试的过程和步骤 160

9.4.1 软件测试的过程 160

9.4.2 软件测试的步骤 160

9.4.3 回归测试 164

9.5 黑盒测试技术 164

9.5.1 黑盒测试方法概述 164

9.5.2 划分等价类 165

9.5.3 边界值分析法 165

9.5.4 错误推测法 166

9.6 白盒测试技术 166

9.6.1 白盒测试的方法 166

9.6.2 白盒测试的优缺点 167

9.7 软件可靠性与可用性 167

9.8 软件压力测试 168

9.9 软件容量测试 169

本章小结 169

习题 170

第10章 软件维护与再工程 171

10.1 软件维护 171

10.1.1 软件维护的定义 171

10.1.2 结构化维护与非结构化维护 172

10.1.3 软件可维护性因素 173

10.1.4 软件文档 174

10.2 软件再工程 175

10.2.1 软件再工程概念 175

10.2.2 软件再工程方法 175

10.3 逆向工程 176

10.4 软件复用 176

10.5 领域工程 178

10.6 构件技术 179

本章小结 181

习题 181

高级篇 184

第11章 软件形式化方法 184

11.1 形式化方法 184

11.1.1 形式化方法的概念 184

11.1.2 形式化方法的分类 185

11.2 Petri网形式化理论 185

11.2.1 Petri网形式化介绍 185

11.2.2 Petri网数学定义 187

11.3 电梯问题Petri网求解 188

11.4 就餐问题Petri网求解 190

本章小结 200

习题 200

第12章 软件设计模式 201

12.1 设计模式概述 201

12.1.1 设计模式的基本概念 201

12.1.2 设计模式要素 201

12.2 设计模式的原则和策略 202

12.3 设计模式的类型 202

12.4 设计模式的优点 204

本章小结 204

习题 204

第13章 极限编程 205

13.1 极限编程基础 205

13.1.1 极限编程的定义 205

13.1.2 极限编程核心价值 206

13.2 极限编程设计原则 206

13.3 极限设计开发环节 208

本章小结 209

习题 209

第14章 大数据与面向服务的软件 210

14.1 大数据基础 210

14.1.1 大数据的定义 210

14.1.2 大数据与云计算 211

14.2 云计算 211

14.2.1 云计算的定义 211

14.2.2 云计算的特点 211

14.2.3 云计算的服务形式 212

14.3 面向服务的SOA架构 213

14.3.1 SOA定义 213

14.3.2 SOA的特点 214

14.4 面向服务的软件工程 214

14.4.1 面向服务计算 214

14.4.2 面向服务的软件工程 215

14.4.3 大数据时代下的软件服务工程 215

本章小结 216

习题 216

第15章 软件项目管理 217

15.1 软件项目管理基础 217

15.1.1 软件管理的定义 217

15.1.2 软件管理的内容 218

15.1.3 组织机构 220

15.1.4 项目管理沟通原则 220

15.2 软件项目风险管理 221

15.2.1 风险管理基础知识 221

15.2.2 软件风险管理 221

15.2.3 软件风险类型 222

15.3 文档管理 223

15.3.1 文档管理概述 223

15.3.2 文档管理控制方法 225

15.4 软件质量管理 226

15.4.1 ISO与ISO 9000标准族 226

15.4.2 ISO 9001质量管理体系 227

15.4.3 CMM与CMMI概述 228

15.4.4 CMM等级概述 229

本章小结 231

习题 231

第16章 合同管理 232

16.1 合同管理的定义 232

16.2 合同管理的要件 233

16.2.1 合同的实质要件 233

16.2.2 合同的形式要件 235

16.3 合同的订立 235

16.4 合同的履行 237

16.4.1 合同未尽事宜的确定 237

16.4.2 合同履行过程中的变动 238

16.5 合同的变更 238

16.6 合同的终止 239

16.7 违约责任 239

16.8 合同管理的其他注意事项 240

本章小结 240

习题 240

案例篇 242

第17章 项目实例——在线订餐系统的实现 242

17.1 项目背景说明 242

17.1.1 项目问题描述 243

17.1.2 目的及意义 243

17.2 开发技术 243

17.2.1 B/S模式 243

17.2.2 JSP技术 244

17.2.3 MySQL数据库 245

17.2.4 MVC模式 245

17.2.5 相似图像搜索算法 246

17.3 可行性分析 246

17.3.1 技术可行性分析 247

17.3.2 经济可行性分析 247

17.3.3 社会可行性分析 247

17.4 需求分析 247

17.4.1 业务需求分析 247

17.4.2 用尸需求分析 248

17.4.3 功能需求分析 248

17.4.4 非功能需求分析 249

17.5 系统概要设计 249

17.5.1 在线订餐系统的架构设计 249

17.5.2 在线订餐系统的功能模块设计 250

17.5.3 在线订餐系统的流程图设计 250

17.5.4 在线订餐系统的数据库设计 252

17.6 系统详细设计 254

17.6.1 用户模块的功能实现 254

17.6.2 餐厅菜品显示模块 266

17.6.3 用户购物车模块 270

17.6.4 以图搜索模块 279

17.6.5 文字搜索模块 284

17.6.6 用户分享模块 286

17.6.7 用户订单模块 286

17.6.8 在线支付模块 292

17.6.9 收藏模块 298

17.6.10 店家模块的功能实现 299

17.6.11 菜品管理模块 309

17.6.12 店家订单管理模块 314

17.7 系统测试 316

附录A 软件工程师职业实践的国际标准 319

附录B 软件工程术语和定义 324

附录C 软件工程缩略语 328

附录D 计算机软件文档编制规范 330

参考文献 385