图书目录

第1章 软件工程概述 /1

1.1 软件工程的发展历程 /1

1.1.1 软件危机 /1

1.1.2 软件危机出现的原因 /3

1.1.3 软件工程的发展 /4

1.2 软件工程的概念 /5

1.2.1 软件工程的定义 /5

1.2.2 软件工程的目标 /6

1.2.3 软件工程的实施原则 /8

1.2.4 软件工程的基本原理 /9

1.3 软件与软件过程 /11

1.3.1 软件的概念 /11

1.3.2 软件的分类 /13

1.3.3 软件生命周期 /14

1.3.4 软件过程 /15

1.4 软件过程模型 /17

1.4.1 瀑布模型 /17

1.4.2 原型模型 /18

1.4.3 增量模型 /19

1.4.4 螺旋模型 /20

1.4.5 喷泉模型 /21

1.4.6 敏捷过程模型 /22

1.4.7 基于四代技术的过程模型 /23

1.4.8 微软解决框架过程模型 /24

1.4.9 组合模型的开发 /25

1.5 软件开发方法 /25

1.5.1 结构化开发方法 /26

1.5.2 面向对象开发方法 /26

1.6 案例描述 /27

1.6.1 简历信息自动获取和查询系统 /27

1.6.2 试卷自动生成系统 /28

1.7 小结 /29

习题 /31第2章 软件需求工程 /32

2.1 软件需求的基本概念 /32

2.1.1 需求分析的任务 /32

2.1.2 需求分析的原则 /33

2.1.3 需求分析的内容 /34

2.2 需求工程的过程 /36

2.2.1 需求工程中的参与人员 /36

2.2.2 需求工程过程中的活动 /36

2.2.3 需求工程的管理 /38

2.3 需求获取技术 /39

2.4 结构化需求分析和建模 /41

2.4.1 结构化分析概述 /42

2.4.2 面向数据的数据建模 /42

2.4.3 面向数据流的功能建模 /44

2.4.4 面向状态转换的行为建模 /48

2.4.5 数据字典 /49

2.4.6 加工逻辑 /51

2.5 案例--简历自动获取和查询系统的需求

建模 /52

2.5.1 数据建模--ER图描述 /53

2.5.2 功能建模--数据流图 /53

2.5.3 行为建模--状态转换图 /55

2.5.4 数据字典 /55

2.5.5 加工逻辑--PDL语言的描述 /56

2.6 需求评审 /56

2.6.1 软件需求规格说明文档 /57

2.6.2 需求评审标准 /60

2.7 小结 /61

习题 /61第3章 软件设计基础 /63

3.1 软件设计概述 /63

3.1.1 软件设计与软件需求 /63

3.1.2 软件设计的任务 /64

3.1.3 软件设计的原则 /66

3.2 软件体系结构设计 /67

3.2.1 体系结构设计概述 /67

3.2.2 以数据为中心的数据仓库模型 /68

3.2.3 客户端/服务器模式的分布式

结构/69

3.2.4 层次模型 /71

3.3 模块化设计 /72

3.3.1 软件模块化与分解 /72

3.3.2 抽象 /73

3.3.3 信息隐藏 /73

3.3.4 模块独立性 /74

3.3.5 启发式规则 /76

3.4 界面设计 /79

3.4.1 界面设计的任务 /79

3.4.2 界面设计的原则 /80

3.4.3 界面设计的特性 /81

3.4.4 MVC模型 /81

3.5 软件设计评审 /83

3.5.1 软件设计规格说明文档 /83

3.5.2 软件设计评审标准 /86

3.6 小结 /88

习题 /88第4章 结构化设计方法 /90

4.1 结构化设计方法概述 /90

4.2 面向数据流的设计方法 /91

4.2.1 层次图和结构图 /91

4.2.2 变换分析法 /93

4.2.3 事务分析法 /97

4.2.4 混合分析法 /98

4.3 面向数据的设计方法 /99

4.3.1 Jackson图 /99

4.3.2 Jackson系统开发方法 /100

4.4 案例--简历自动获取和查询系统的数据流

设计方法 /102

4.4.1 用变换分析法进行设计 /103

4.4.2 用事务分析法进行设计 /104

4.4.3 两种方法的比较 /105

4.5 结构化详细设计的工具 /106

4.5.1 程序流程图 /106

4.5.2 盒图(NS图) /107

4.5.3 问题分析图 /108

4.5.4 判定树 /110

4.5.5 判定表 /110

4.5.6 详细设计工具的比较 /111

4.6 小结 /112

习题 /113第5章 软件实现 /114

5.1 程序设计语言 /114

5.1.1 程序设计语言的分类 /114

5.1.2 程序设计语言的特性 /115

5.1.3 选择程序设计语言 /116

5.2 程序设计风格 /118

5.2.1 程序编排和组织的准则 /118

5.2.2 程序设计的效率 /122

5.3 代码复用 /124

5.4 代码评审 /125

5.5 小结 /129

习题 /129第6章 软件测试 /131

6.1 软件测试基础 /131

6.1.1 软件测试的概念 /131

6.1.2 软件测试过程模型 /132

6.1.3 软件测试原则 /134

6.1.4 软件测试在软件开发各阶段的工作

流程 /137

6.1.5 软件测试信息流 /138

6.1.6 软件测试技术分类 /139

6.2 白盒测试 /140

6.2.1 逻辑覆盖 /141

6.2.2 循环测试 /144

6.2.3 路径测试 /145

6.3 黑盒测试 /148

6.3.1 等价类划分 /148

6.3.2 边界值分析 /150

6.3.3 错误推测法 /150

6.3.4 因果图法 /151

6.4 白盒测试和黑盒测试的比较 /153

6.5 软件测试策略 /154

6.5.1 单元测试 /155

6.5.2 集成测试 /157

6.5.3 确认测试 /159

6.5.4 系统测试 /160

6.6 调试 /162

6.6.1 软件调试过程 /162

6.6.2 软件调试方法 /163

6.7 软件测试报告 /164

6.7.1 软件测试说明 /164

6.7.2 软件测试报告 /166

6.8 小结 /167

习题 /167第7章 UML统一建模语言 /169

7.1 UML的发展 /169

7.1.1 UML的产生 /169

7.1.2 UML的构成 /170

7.1.3 UML的特点 /171

7.2 面向对象的基本概念 /171

7.3 UML视图 /177

7.4 UML的图和模型元素 /178

7.4.1 用例图 /179

7.4.2 类图 /180

7.4.3 包图 /182

7.4.4 状态图 /183

7.4.5 活动图 /183

7.4.6 顺序图 /185

7.4.7 协作图 /186

7.4.8 构件图 /187

7.4.9 配置图 /187

7.5 UML的关系 /188

7.5.1 关联关系 /188

7.5.2 泛化关系 /191

7.5.3 依赖关系 /195

7.5.4 实现关系 /196

7.6 UML的通用机制 /196

7.6.1 修饰 /196

7.6.2 注释 /197

7.6.3 规格说明 /197

7.6.4 扩展机制 /197

7.7 基于UML的软件过程 /199

7.8 小结 /201

习题 /202第8章 面向对象分析 /203

8.1 面向对象分析概述 /203

8.1.1 传统软件过程中的不足 /203

8.1.2 面向对象的特点 /204

8.1.3 面向对象分析的基本过程 /205

8.1.4 面向对象分析的3类模型 /205

8.1.5 静态模型的5个层次 /206

8.2 建立功能模型 /207

8.2.1 识别参与者 /208

8.2.2 识别用例 /209

8.2.3 识别用例间关系 /210

8.2.4 用例描述文档 /211

8.3 建立静态模型(对象模型) /212

8.3.1 识别类与对象 /213

8.3.2 划分主题 /215

8.3.3 确定结构 /215

8.3.4 确定属性 /216

8.3.5 确定服务 /217

8.3.6 类图描述文档 /218

8.3.7 包图描述文档 /219

8.4 建立动态模型 /220

8.4.1 建立顺序图及其描述文档 /220

8.4.2 建立状态图及其描述文档 /221

8.4.3 建立协作图及其描述文档 /223

8.4.4 建立活动图及其描述文档 /224

8.5 小结 /226

习题 /226第9章 面向对象设计 /228

9.1 面向对象设计概述 /228

9.1.1 面向对象分析与设计的关系 /228

9.1.2 面向对象设计原则 /229

9.2 精化类及类间关系 /230

9.2.1 设计类的属性 /230

9.2.2 设计类的方法 /231

9.2.3 设计类间泛化关系 /232

9.2.4 设计关联类 /234

9.3 数据设计 /234

9.3.1 基于关系数据库的数据设计 /234

9.3.2 基于其他方式的数据设计 /237

9.4 人机交互设计 /237

9.5 建立实现模型 /239

9.5.1 构件图及其描述文档 /239

9.5.2 配置图及其描述文档 /240

9.6 设计模式简介 /242

9.6.1 概述 /242

9.6.2 Singleton模式 /243

9.6.3 Abstract Factory模式 /244

9.6.4 Mediator模式 /245

9.6.5 Adapter模式 /247

9.7 面向对象的测试 /248

9.7.1 面向对象测试概述 /249

9.7.2 面向对象的单元测试 /249

9.8 小结 /251

习题 /252第10章 软件维护 /254

10.1 软件维护概述 /254

10.1.1 软件维护的任务 /254

10.1.2 软件维护的特点 /255

10.1.3 软件维护的分类 /255

10.2 软件维护过程 /257

10.2.1 软件维护方式 /257

10.2.2 软件维护管理的基本内容 /258

10.2.3 维护中存在的问题 /263

10.2.4 维护活动记录 /264

10.3 软件的可维护性 /264

10.3.1 可维护性因素 /265

10.3.2 提高软件的可维护性 /265

10.4 逆向工程 /268

10.5 小结 /270

习题 /271第11章 软件项目管理 /272

11.1 软件项目管理概述 /272

11.1.1 软件项目管理的特点和内容 /272

11.1.2 软件项目管理目标 /273

11.1.3 软件项目管理的4P观点 /274

11.2 软件项目规模度量 /275

11.2.1 代码行技术 /276

11.2.2 功能点计算 /277

11.2.3 代码行与功能点间的转换 /280

11.3 软件项目估算 /280

11.3.1 代码行和功能点的其他估算

模型/281

11.3.2 专家估算模型 /281

11.3.3 Putnam模型 /282

11.3.4 COCOMO模型 /282

11.3.5 项目估算模型的小结 /285

11.4 项目进度管理 /285

11.4.1 项目进度控制 /285

11.4.2 甘特图 /286

11.4.3 工程网络图 /287

11.5 项目风险管理 /288

11.5.1 软件风险概念 /289

11.5.2 风险管理过程 /289

11.6 项目质量管理 /293

11.6.1 软件质量因素 /293

11.6.2 软件质量保证活动 /297

11.6.3 软件质量保证计划 /298

11.7 软件配置管理 /300

11.7.1 软件配置项 /300

11.7.2 配置管理过程 /301

11.7.3 软件配置管理计划 /304

11.8 项目人员组织管理 /305

11.8.1 团队组织 /305

11.8.2 团队组织方式 /306

11.9 软件能力成熟度模型 /308

11.9.1 基本概念 /308

11.9.2 软件能力成熟度模型等级 /309

11.9.3 关键过程域 /310

11.10 小结 /311

习题 /312

参考文献 /314