《软件工程》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:杨志宏主编;庄晋林,杨雅军副主编
  • 出 版 社:北京:化学工业出版社
  • 出版年份:2013
  • ISBN:9787122161215
  • 页数:273 页
图书介绍:本教材从软件开发、维护和管理等方面,系统地介绍了软件工程的概念、原理、过程及主要方法,按照软件生存周期依次讲述了软件开发的可行性分析、项目计划、需求分析、系统设计、软件实现、软件测试与调试、软件运行与维护,并对数据库、面向对象技术以及软件项目的管理进行了介绍,在附录中编排了课程设计内容,供读者实践。本书采用案例式教学,理论与实践紧密结合,内容翔实,既注重基本知识的表述,又注重内容的先进性、科学性和系统性,反映软件工程、软件开发技术发展的最新成果,实用性、可操作性强。

第1章 软件及其可行性分析 1

1.1 软件与软件危机 1

1.1.1 软件的特点 1

1.1.2 软件发展简史 2

1.1.3 软件危机 2

1.2 软件生命周期 4

1.2.1 软件定义 4

1.2.2 软件开发 5

1.2.3 软件维护 6

1.3 软件过程模型 6

1.3.1 瀑布模型 6

1.3.2 快速原型模型 7

1.3.3 增量模型 8

1.3.4 螺旋模型 9

1.3.5 喷泉模型 10

1.3.6 构件组装模型 10

1.3.7 第四代技术模型 11

1.4 软件工程 11

1.4.1 软件工程的定义 11

1.4.2 软件工程的基本策略 12

1.4.3 软件工程应遵循的原则 12

1.5 可行性调研分析 14

1.5.1 项目开发背景 14

1.5.2 问题定义 14

1.5.3 可行性分析 15

1.5.4 开发计划的制定 15

1.6 实验实训 16

小结 16

习题一 16

第2章 需求分析 18

2.1 需求分析基础 18

2.1.1 需求分析的任务 18

2.1.2 需求分析的步骤 19

2.1.3 需求获取技术 20

2.1.4 需求分析模型 21

2.2 结构化分析方法 22

2.2.1 结构化开发方法 23

2.2.2 结构化分析方法 23

2.3 数据流图 24

2.3.1 数据流图的符号 25

2.3.2 数据流图的画法 27

2.3.3 检查和修改数据流图的原则 30

2.3.4 确定数据定义与加工策略 31

2.4 数据字典 31

2.4.1 数据字典的符号及其含义 31

2.4.2 实例 32

2.5 加工说明 33

2.5.1 结构化语言 33

2.5.2 判定表 34

2.5.3 判定树 35

2.6 软件需求规格说明与需求验证 35

2.6.1 需求规格说明 35

2.6.2 需求验证 38

2.7 实验实训 39

小结 39

习题二 39

第3章 软件设计 42

3.1 软件设计概述 42

3.1.1 软件设计在开发阶段中的重要性 42

3.1.2 软件设计的任务 42

3.2 软件设计的基本原理 44

3.2.1 模块化 44

3.2.2 抽象 45

3.2.3 信息隐蔽 45

3.2.4 模块独立性 45

3.3 软件设计的准则 50

3.4 用户界面设计 54

3.4.1 界面设计的基本类型 54

3.4.2 界面设计的一般问题 54

3.4.3 用户界面设计指南 55

3.5 软件设计工具 57

3.5.1 层次图和HIPO图 57

3.5.2 结构图 58

3.6 面向数据流的设计方法 59

3.6.1 基本概念 59

3.6.2 设计过程 60

3.6.3 变换分析 61

3.6.4 事务分析设计 62

3.6.5 综合设计 63

3.6.6 结构化设计应用示例 64

3.6.7 设计的后处理 65

3.7 详细设计 67

3.7.1 详细设计的基本任务与原则 67

3.7.2 结构化程序设计 68

3.7.3 详细设计的工具 69

3.8 软件设计文档及其复审 77

3.8.1 软件设计文档 77

3.8.2 软件设计复审 78

3.9 实验实训 78

小结 79

习题三 80

第4章 软件项目的实现 83

4.1 程序设计方法 83

4.1.1 程序设计方法的发展 83

4.1.2 结构化程序设计 84

4.1.3 模块化程序设计的方法 84

4.1.4 面向对象的程序设计 85

4.1.5 编码的标准 86

4.2 程序设计语言的选择 87

4.2.1 程序设计语言的定义 87

4.2.2 程序设计语言的基本成分 88

4.2.3 程序设计语言的特性 88

4.2.4 程序设计语言的分类 90

4.2.5 程序设计语言的选择 91

4.3 编码的风格 92

4.3.1 源程序文档化 93

4.3.2 数据说明 95

4.3.3 程序的视觉组织 95

4.3.4 输入和输出 95

4.3.5 效率 96

4.3.6 其他推荐原则 96

4.4 实验实训 97

小结 97

习题四 98

第5章 软件测试 100

5.1 软件测试的目的 100

5.1.1 软件测试的定义 100

5.1.2 软件测试的目的 100

5.1.3 软件测试的原则 101

5.2 软件测试的方法和步骤 102

5.2.1 软件测试的方法 102

5.2.2 软件测试的信息流 103

5.3 黑盒测试 103

5.3.1 测试用例 103

5.3.2 黑盒测试的概念 103

5.3.3 黑盒测试用例的设计 104

5.4 白盒测试 111

5.4.1 白盒测试的概念 111

5.4.2 白盒测试用例的设计 112

5.5 软件测试的过程 122

5.5.1 软件测试过程概述 122

5.5.2 软件测试过程与软件开发各阶段的关系 122

5.5.3 单元测试 123

5.5.4 集成测试 126

5.5.5 确认测试 130

5.5.6 系统测试 132

5.6 调试 132

5.6.1 调试步骤 132

5.6.2 调试方法 132

5.6.3 调试原则 135

5.7 实验实训 136

小结 136

习题五 137

第6章 软件维护 139

6.1 软件维护的目的 139

6.1.1 软件维护的原因 139

6.1.2 软件维护的定义 139

6.1.3 软件维护的分类 139

6.2 软件维护的成本 140

6.2.1 影响软件维护的因素 140

6.2.2 软件维护的困难性 141

6.2.3 软件维护成本的分析 141

6.3 软件维护活动的实施 142

6.3.1 软件维护的组织 142

6.3.2 软件维护的流程 142

6.3.3 保存软件维护记录 143

6.3.4 评价软件维护活动 144

6.4 软件可维护性 145

6.4.1 软件可维护性的定义 145

6.4.2 决定软件可维护性的因素 145

6.4.3 软件可维护性的度量 146

6.4.4 提高软件的可维护性方法 146

6.5 软件维护的副作用 148

6.6 软件再工程 148

6.6.1 软件再工程过程模型 149

6.6.2 逆向工程 149

6.6.3 软件重构 150

6.7 实验实训 150

小结 150

习题六 150

第7章 面向对象方法 152

7.1 面向对象方法的基础知识 152

7.1.1 面向对象方法的世界观 152

7.1.2 面向对象方法的基本概念 154

7.1.3 面向对象方法的基本过程 157

7.1.4 面向对象方法的与传统方法的比较 159

7.2 面向对象的系统分析 161

7.2.1 关于模型 161

7.2.2 面向对象分析的基本原则 162

7.2.3 面向对象分析的任务与过程 163

7.2.4 明确问题域与系统责任 165

7.2.5 定义对象与类 165

7.2.6 识别对象间的结构 166

7.2.7 划分主题 168

7.2.8 定义属性与实例连接 168

7.2.9 定义服务与消息连接 170

7.3 面向对象的系统设计 171

7.3.1 面向对象设计的基本准则 171

7.3.2 面向对象设计过程 173

7.3.3 系统结构设计 173

7.3.4 类的设计 174

7.3.5 交互部分设计 176

7.3.6 数据管理部分设计 177

7.4 面向对象的程序设计 178

7.4.1 面向对象程序设计语言的发展 178

7.4.2 面向对象程序设计语言的特征 178

7.4.3 面向对象系统的实现途径 179

7.5 面向对象系统的测试 180

7.5.1 面向对象系统测试的特点 180

7.5.2 面向对象系统测试的过程 181

7.5.3 面向对象的测试策略 183

7.5.4 面向对象软件的测试用例设计 184

7.6 统一建模语言UML 185

7.6.1 UML概念 185

7.6.2 UML组成 186

7.6.3 静态建模 194

7.6.4 动态建模 199

7.7 应用案例 200

7.7.1 初始阶段 200

7.7.2 细化阶段 205

7.8 实验实训 216

小结 217

习题七 218

第8章 软件复用 222

8.1 软件复用概述 222

8.1.1 软件复用的意义 222

8.1.2 软件复用的过程 223

8.1.3 软件复用的类型 224

8.1.4 分层式体系结构 224

8.1.5 复用的难度 225

8.2 构件与构件库 226

8.2.1 领域分析 226

8.2.2 构件的开发 226

8.2.3 构件库的组织 228

8.2.4 软件构件的复用 229

8.3 面向对象的软件复用 229

8.3.1 类构件 230

8.3.2 类库 230

8.4 实验实训 231

小结 231

习题八 231

第9章 软件项目管理 233

9.1 软件项目管理概述 233

9.1.1 软件项目管理的重要性 233

9.1.2 软件项目管理的内容 233

9.1.3 软件项目管理的特点 234

9.2 软件项目的估算 235

9.2.1 估算前的规划 235

9.2.2 估算的对象 235

9.2.3 估算的策略 236

9.2.4 估算的方法 236

9.3 软件项目的计划管理 239

9.3.1 软件项目计划的概念 239

9.3.2 软件项目计划的内容 240

9.3.3 软件项目进度安排 240

9.4 软件项目的风险管理 242

9.4.1 风险管理的重要性 242

9.4.2 风险管理的过程 243

9.4.3 风险辨识 243

9.4.4 风险分析 243

9.4.5 风险评估 244

9.4.6 风险应对 245

9.5 软件项目的人力资源管理 245

9.5.1 软件项目的人力资源 245

9.5.2 人力资源的组织建立 246

9.5.3 人员配备 247

9.6 软件配置管理 249

9.6.1 基线(Baseline) 249

9.6.2 软件配置项 249

9.6.3 软件配置管理的过程 250

9.6.4 软件配置管理的特点 251

9.7 软件质量保证 252

9.7.1 软件质量的定义 252

9.7.2 软件质量的评价 252

9.7.3 质量度量模型 253

9.7.4 软件复杂性 253

9.7.5 软件可靠性 254

9.7.6 软件评审 255

9.7.7 软件容错技术 257

9.8 能力成熟度模型(CMM)简介 258

9.8.1 基本概念 258

9.8.2 CMM框架 258

9.8.3 CMM应用 261

9.8.4 能力成熟度集成模型(CMMI) 262

9.9 实验实训 263

小结 263

习题九 263

第10章 软件工程环境 266

10.1 软件工具 266

10.1.1 软件工具的基本概念 266

10.1.2 软件工具的分类 266

10.2 计算机辅助软件工程(CASE)集成环境 268

10.2.1 CASE的优势 268

10.2.2 CASE的组成 268

10.2.3 CASE的体系结构 269

10.3 实用CASE工具 270

10.3.1 Rational Rose简介 270

10.3.2 Power Designer简介 270

10.4 实验实训 272

小结 272

习题十 272

参考文献 273