实用软件工程(第二版)

实用软件工程(第二版)"

作者:陆惠恩、张成姝
ISBN:9787302198802
定价:¥26
字数:千字
页数:
出版时间:2009.09.01
开本:
版次:2-6
装帧:
出版社:清华大学出版社
简介

本书着重从实用角度讲述软件工程的基本概念、原理和方法,系统地介绍目前较成熟的、广泛使用的软件工程技术。

内容包括软件工程概述,软件计划(软件定义、可行性分析、需求分析),结构化设计(概要设计、详细设计、界面设计和数据代码设计等),软件编码与软件测试,软件维护,面向对象方法学与统一建模语言UML,面向对象软件设计与实现,软件工程技术发展 (CASE技术、软件重用、RUP统一过程、Rational Rose简介、软件构件模型比较),软件工程管理,软件开发实例。每章都有小结供读者复习总结,精心挑选了习题供读者选用,部分习题有参考答案。

本书可作为应用型本科计算机相关专业的教材,也可供从事计算机软件开发及应用的广大科技人员 参考。

前言

软件工程是指导计算机软件开发和维护的学科。软件工程技术在不断发展、逐渐成熟,现在面向对象技术的应用更加广泛。

本书语言流畅、深入浅出、详略得当,可读性好、应用性强、易于理解。第二版在第一版的基础上增加了如下内容:

(1)有关面向对象方法,增加了7.7节面向对象测试、7.8节面向对象方法实例、8.6节Rational Rose简介、8.7节几种软件构件模型比较、软件构架技术等内容。

(2)有关软件工程管理方面,增加了2.2节软件计划实例、9.7节软件开发风险管理的内容。

(3)新增了一些例题(如,4.5.7节用基本路径覆盖法设计测试用例)和习题。

以上新增内容由张成姝编写,并由陆惠恩做了适当的修改,陆惠恩对全书进行了统稿,本书其他内容由陆惠恩编写。

应读者的要求,本书第二版对第一版中习题解答的内容也有所增加。

书中难免存在错误和不足之处,敬请读者批评指正。

编  者

2009年7月

目录

第1章  概述 1

1.1  软件工程的产生 1

1.1.1  软件工程发展史 1

1.1.2  软件危机 2

1.2  软件工程学 4

1.2.1  什么是软件 4

1.2.2  什么是软件工程 4

1.2.3  软件工程学的内容 4

1.2.4  软件过程 7

1.2.5  软件工程基本原理 7

1.3  软件生命周期 7

1.3.1  软件生命周期定义 7

1.3.2  软件生命周期划分阶段的原则 8

1.3.3  软件生命周期各阶段的任务 8

1.4  软件开发模型 9

1.4.1  瀑布模型 9

1.4.2  快速原型模型 11

1.4.3  增量模型 12

1.4.4  喷泉模型 13

1.4.5  螺旋模型 14

1.4.6  统一过程 15

小结 16

习题1 17

第2章  软件计划 19

2.1  软件问题定义及可行性研究 19

2.1.1  软件问题定义 19

2.1.2  可行性研究 20

2.1.3  制定项目开发计划 21

2.2  需求分析的任务 22

2.2.1  确定目标系统的具体要求 22

2.2.2  建立目标系统的逻辑模型 24

2.2.3  软件需求规格说明 24

2.2.4  修正系统开发计划 25

2.2.5  制定初步的系统测试计划 25

2.2.6  编写初步的用户手册 25

2.2.7  编写数据要求说明书 26

2.3  需求分析步骤 27

2.3.1  进行调查研究 27

2.3.2  分析和描述系统的逻辑模型 27

2.3.3  复审 28

2.4  实体-关系图 28

2.4.1  实体 29

2.4.2  属性 29

2.4.3  关系 29

2.5  数据流图 30

2.5.1  数据流图四种基本符号 30

2.5.2  数据流图几种附加符号 31

2.5.3  画数据流图的步骤 32

2.5.4  几点注意事项 32

2.6  状态转换图 35

2.7  数据字典 36

2.7.1  数据字典的内容 36

2.7.2  数据字典使用的符号 37

2.7.3  数据字典与图形工具 38

2.8  需求分析的其他图形工具 38

2.8.1  层次图 39

2.8.2  Warnier图 39

2.8.3  IPO图 40

2.9  软件计划阶段文档 40

2.9.1  软件计划阶段文档的编写步骤 40

2.9.2  软件计划实例 41

小结 46

习题2 46

第3章  结构化设计 48

3.1  软件设计步骤 48

3.1.1  概要设计步骤 49

3.1.2  详细设计的基本任务 50

3.2  软件结构设计 51

3.2.1  软件结构设计的基本原理 51

3.2.2  模块化 53

3.2.3  模块独立性 54

3.2.4  模块设计启发规则 58

3.3  软件结构设计的图形工具 59

3.3.1  层次图(或HIPO图) 59

3.3.2  结构图 59

3.4  面向数据流的设计方法 61

3.5  过程设计工具 63

3.5.1  流程图 63

3.5.2  盒图(N-S) 67

3.5.3  PAD图 69

3.5.4  判定表 70

3.5.5  判定树 71

3.5.6  过程设计语言 71

3.6  系统人机界面设计 72

3.6.1  人机界面设计问题 72

3.6.2  人机界面设计过程 73

3.6.3  评估界面设计的标准 73

3.6.4  界面设计指南 74

3.7  数据代码设计 75

3.7.1  代码设计目的 75

3.7.2  代码设计原则 76

3.7.3  代码种类 76

3.7.4  代码设计方法 78

3.8  面向数据结构的设计方法 78

3.9  软件设计文档 82

3.9.1  概要设计说明书 82

3.9.2  数据库设计说明书 83

3.9.3  详细设计说明书 84

3.9.4  操作手册编写提示 85

小结 86

习题3 86

第4章  软件编码和软件测试 89

4.1  结构化程序设计 89

4.1.1  程序设计语言的选择 89

4.1.2  程序设计风格 91

4.2  软件测试目标 93

4.3  软件测试方法 94

4.3.1  静态分析与动态测试 94

4.3.2  黑盒法与白盒法 94

4.4  软件测试步骤 95

4.4.1  模块测试 95

4.4.2  集成测试 95

4.4.3  程序审查会和人工运行 96

4.4.4  确认测试 97

4.4.5  平行运行 97

4.5  设计软件测试方案 98

4.5.1  等价类划分法 98

4.5.2  边界值分析法 99

4.5.3  错误推测法 99

4.5.4  逻辑覆盖法 99

4.5.5  程序环形复杂度的度量 102

4.5.6  因果图法 105

4.5.7  用基本路径覆盖法设计测试用例 107

4.6  软件测试原则和策略 110

4.6.1  软件测试原则 110

4.6.2  实用测试策略 111

4.7  软件调试、验证与确认 111

4.7.1  软件调试 111

4.7.2  软件验证 112

4.7.3  软件确认 112

4.8  软件测试文档 113

小结 114

习题4 114

第5章  软件维护 118

5.1  软件维护的种类、过程和副作用 118

5.1.1  软件维护的种类 118

5.1.2  软件维护的特点 119

5.1.3  软件维护的过程 120

5.1.4  软件维护的副作用 123

5.2  软件的可维护性 124

5.2.1  决定可维护性的因素 124

5.2.2  可维护性的度量 124

5.2.3  如何提高软件的可维护性 125

小结 126

习题5 126

第6章  面向对象方法学与UML 128

6.1  面向对象方法概述 128

6.1.1  面向对象方法学的要素和优点 129

6.1.2  面向对象方法的概念 130

6.2  UML概述 133

6.2.1  UML的发展 133

6.2.2  UML的内容 133

6.3  UML图 135

6.3.1  用例图 135

6.3.2  类图和包 137

6.3.3  对象图 141

6.3.4  状态图 142

6.3.5  顺序图 143

6.3.6  活动图 144

6.3.7  协作图 144

6.3.8  构件图 145

6.3.9  部署图 145

6.4  UML的应用 147

6.4.1  UML模型 147

6.4.2  UML视图 148

6.4.3  UML使用准则 150

6.4.4  UML的扩展机制 151

6.4.5  UML的应用领域 152

小结 153

习题6 153

第7章  面向对象软件设计与实现 155

7.1  面向对象分析 155

7.1.1  面向对象分析过程 155

7.1.2  面向对象分析原则 156

7.2  建立对象模型 157

7.2.1  建立对象模型的基本方法 157

7.2.2  确定对象和类 158

7.2.3  确定类的相互关系 159

7.2.4  划分主题 163

7.3  建立动态模型 164

7.4  建立功能模型 167

7.5  面向对象设计 169

7.5.1  系统设计 169

7.5.2  对象设计 172

7.5.3  面向对象设计的准则 173

7.5.4  面向对象设计的启发规则 174

7.6  面向对象系统的实现 174

7.6.1  选择程序设计语言 174

7.6.2  面向对象程序设计风格 175

7.6.3  面向对象实现的人员分工 177

7.7  面向对象的测试 177

7.7.1  面向对象测试策略 177

7.7.2  面向对象的测试步骤 179

7.8  面向对象方法实例 183

7.8.1  面向对象分析实例 183

7.8.2  面向对象的设计实例 188

小结 193

习题7 194

第8章  软件工程技术的发展 196

8.1  CASE技术 196

8.2  软件工具 198

8.2.1  软件工具的功能 198

8.2.2  软件工具的性能 199

8.2.3  软件工具的分类 199

8.3  软件开发环境 200

8.4  软件重用 202

8.4.1  可重用的软件成分 202

8.4.2  软件重用过程模型 203

8.4.3  开发可重用的软件构件 204

8.4.4  分类和检索软件构件 205

8.5  RUP统一过程 206

8.6  Rational Rose简介 208

8.6.1  Rational Rose 界面 210

8.6.2  Rational Rose模型的四个视图 211

8.6.3  Rational Rose的使用 212

8.7  几种软件构件模型比较 213

8.7.1  CORBA 213

8.7.2  COM+/DCOM 214

8.7.3  JavaBean 214

8.7.4  三种构件模型的分析比较 216

8.7.5  软件构架技术 217

小结 218

习题8 218

第9章  软件工程管理 219

9.1  软件工程管理概述 219

9.2  软件规模估算 220

9.2.1  软件开发成本估算方法 220

9.2.2  代码行技术 221

9.2.3  功能点技术 222

9.2.4  COCOMO2模型 223

9.3  进度计划 225

9.3.1  Gantt图 225

9.3.2  工程网络技术 226

9.4  人员组织 228

9.5  软件配置管理 231

9.6  软件质量保证 233

9.6.1  软件质量的特性 233

9.6.2  软件质量保证措施 234

9.7  软件开发风险管理 235

9.7.1  软件开发风险的分类 236

9.7.2  软件开发风险的识别 237

9.7.3  软件开发的风险预测 237

9.7.4  处理软件开发风险的策略 239

9.8  软件工程标准与软件文档 240

9.8.1  软件工程标准 240

9.8.2  软件文档的编写 242

小结 243

习题9 243

第10章  实例——招聘考试成绩管理系统 245

10.1  问题定义 245

10.2  可行性研究 245

10.2.1  技术可行性 245

10.2.2  经济可行性 246

10.3  需求分析 246

10.4  概要设计 248

10.4.1  数据库结构设计 248

10.4.2  系统结构设计 248

10.4.3  设计测试方案 249

10.5  详细设计 250

10.5.1  系统界面设计 250

10.5.2  考前处理 251

10.5.3  输入设计 251

10.5.4  成绩处理 252

10.5.5  录用过程设计 252

10.5.6  输出设计 253

10.5.7  测试用例设计 253

10.6  程序设计提示 255

10.7  软件测试 256

习题10 256

附录A  部分习题解答 258

参考文献 271

??

??

??

??

实用软件工程(第二版)

目  录

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个