图书目录

第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软件与软件过程10

1.3.1软件的概念11

1.3.2软件的分类12

1.3.3软件生命周期13

1.3.4软件过程15

1.4软件过程模型16

1.4.1瀑布模型16

1.4.2原型模型17

1.4.3增量模型18

1.4.4螺旋模型19

1.4.5喷泉模型20

1.4.6敏捷过程模型20

1.4.74GT过程模型22

1.4.8基于构件的开发模型23

1.4.9Rational统一建模过程24

1.4.10微软解决框架过程模型25

1.5软件开发方法26

1.5.1结构化开发方法27

1.5.2面向对象开发方法27〖1〗软件工程基础(第2版)目录[3]〖3〗1.6案例描述28

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

1.6.2试卷自动生成系统29

1.7本章小结30

习题31

第2章软件需求工程/33

2.1软件需求的基本概念33

2.1.1需求分析的任务33

2.1.2需求分析的原则34

2.1.3需求分析的内容35

2.2需求工程的过程36

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

2.2.2可行性研究37

2.2.3需求工程过程中的活动39

2.2.4需求工程的管理40

2.3需求获取技术41

2.4结构化需求分析和建模43

2.4.1结构化需求分析概述44

2.4.2面向数据的数据建模44

2.4.3面向数据流的功能建模46

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

2.4.5数据字典51

2.4.6加工逻辑53

2.5案例——“简历自动获取和查询系统”的需求建模54

2.5.1数据建模——ER图描述54

2.5.2功能建模——数据流图55

2.5.3行为建模——状态转换图56

2.5.4数据字典57

2.5.5加工逻辑——PDL语言的描述57

2.6需求评审58

2.6.1软件需求规格说明文档58

2.6.2需求评审标准及需求验证61

2.6.3需求变更管理63

2.7本章小结64

习题64

第3章软件设计基础/66

3.1软件设计概述66

3.1.1软件设计与软件需求66

3.1.2软件设计的任务67

3.1.3软件设计的原则69

3.2软件体系结构设计70

3.2.1体系结构设计概述70

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

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

3.2.4层次模型73

3.2.5管道与过滤器模型74

3.3模块化设计75

3.3.1软件模块化与分解75

3.3.2抽象76

3.3.3信息隐藏76

3.3.4模块独立性77

3.3.5启发式规则79

3.4界面设计82

3.4.1界面设计的任务82

3.4.2界面设计的原则83

3.4.3界面设计的特性84

3.4.4MVC模型84

3.5软件设计评审85

3.5.1软件设计规格说明文档85

3.5.2软件设计评审标准89

3.5.3软件设计验证90

3.6本章小结91

习题92

第4章结构化设计方法/93

4.1结构化设计方法概述93

4.2面向数据流的设计方法94

4.2.1层次图和结构图94

4.2.2变换分析法96

4.2.3事务分析法100

4.2.4混合分析法101

4.3面向数据的设计方法102

4.3.1Jackson图102

4.3.2Jackson系统开发方法103

4.4案例——“简历自动获取和查询系统”的数据流设计方法106

4.4.1用变换分析法进行设计106

4.4.2用事务分析法进行设计107

4.4.3两种方法的比较108

4.5结构化详细设计的工具109

4.5.1程序流程图109

4.5.2盒图(NS图)110

4.5.3问题分析图(PAD图)111

4.5.4判定树113

4.5.5判定表113

4.5.6详细设计工具的比较114

4.6本章小结115

习题116

第5章软件实现/118

5.1程序设计语言118

5.1.1程序设计语言的分类118

5.1.2程序设计语言的特性119

5.1.3选择程序设计语言120

5.2程序设计风格122

5.2.1程序编排和组织的准则122

5.2.2程序设计的效率126

5.3代码复用127

5.4代码评审129

5.5本章小结132

习题133

第6章软件测试/136

6.1软件测试基础136

6.1.1软件测试概念136

6.1.2软件测试过程模型137

6.1.3软件测试原则139

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

6.1.5软件测试信息流143

6.1.6软件测试技术分类143

6.2白盒测试145

6.2.1逻辑覆盖145

6.2.2循环测试148

6.2.3路径测试149

6.3黑盒测试152

6.3.1等价类划分152

6.3.2边界值分析154

6.3.3错误推测法154

6.3.4因果图法155

6.4白盒测试和黑盒测试的比较157

6.5软件测试策略158

6.5.1单元测试158

6.5.2集成测试161

6.5.3确认测试164

6.5.4系统测试165

6.6调试167

6.6.1软件调试过程167

6.6.2软件调试方法168

6.7软件测试报告169

6.7.1软件测试说明169

6.7.2软件测试报告170

6.8本章小结171

习题172

第7章UML统一建模语言/174

7.1UML的发展174

7.1.1UML的产生174

7.1.2UML的构成175

7.1.3UML的特点176

7.2面向对象的基本概念176

7.3UML视图182

7.4UML的图和模型元素183

7.4.1用例图183

7.4.2类图185

7.4.3包图186

7.4.4状态图187

7.4.5活动图187

7.4.6顺序图189

7.4.7协作图190

7.4.8构件图191

7.4.9配置图192

7.5UML的关系192

7.5.1关联关系193

7.5.2泛化关系196

7.5.3依赖关系199

7.5.4实现关系200

7.6UML的通用机制200

7.6.1修饰201

7.6.2注释201

7.6.3规格说明201

7.6.4扩展机制202

7.7基于UML的软件过程203

7.8本章小结205

习题206

第8章面向对象分析/207

8.1面向对象分析概述207

8.1.1传统软件过程中的不足207

8.1.2面向对象的特点208

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

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

8.1.5静态模型的5个层次210

8.2建立功能模型(用例模型)211

8.2.1识别参与者212

8.2.2识别用例212

8.2.3识别用例间关系214

8.2.4用例描述文档215

8.3建立静态模型(对象模型)216

8.3.1识别类与对象216

8.3.2划分主题218

8.3.3确定结构219

8.3.4确定属性220

8.3.5确定服务221

8.3.6类图描述文档221

8.3.7包图描述文档222

8.4建立动态模型223

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

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

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

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

8.5本章小结229

习题229

第9章面向对象设计/231

9.1面向对象设计概述231

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

9.1.2面向对象设计原则232

9.2精化类及类间关系233

9.2.1设计类的属性233

9.2.2设计类的方法234

9.2.3设计类间泛化关系235

9.2.4设计关联类236

9.3数据设计237

9.3.1基于关系数据库的数据设计237

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

9.4人机交互设计240

9.5建立实现模型241

9.5.1构件图及其描述文档241

9.5.2配置图及其描述文档243

9.6设计模式简介244

9.6.1概述244

9.6.2Singleton模式245

9.6.3Abstract Factory模式247

9.6.4Mediator模式249

9.6.5Adapter模式251

9.6.6Iterator模式253

9.6.7State模式256

9.7面向对象的测试258

9.7.1面向对象测试概述258

9.7.2面向对象的单元测试259

9.8本章小结261

习题262

第10章软件维护/265

10.1软件维护概述265

10.1.1软件维护的任务265

10.1.2软件维护的特点266

10.1.3软件维护的分类266

10.2软件维护过程267

10.2.1软件维护方式268

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

10.2.3维护中存在的问题273

10.2.4维护活动记录274

10.3软件的可维护性275

10.3.1可维护性因素275

10.3.2提高软件的可维护性276

10.4逆向工程278

10.5本章小结280

习题281

第11章软件项目管理/282

11.1软件项目管理概述282

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

11.1.2软件项目管理目标283

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

11.2软件项目规模度量285

11.2.1代码行技术286

11.2.2功能点计算287

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

11.3软件项目估算291

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

11.3.2专家估算模型291

11.3.3Putnam模型292

11.3.4COCOMO模型292

11.3.5项目估算模型的小结295

11.4项目进度管理295

11.4.1项目进度控制295

11.4.2甘特图296

11.4.3工程网络图297

11.5项目风险管理298

11.5.1软件风险概念299

11.5.2风险管理过程299

11.6项目质量管理302

11.6.1软件质量因素303

11.6.2软件质量保证活动307

11.6.3软件质量保证计划308

11.7软件配置管理309

11.7.1软件配置项310

11.7.2配置管理过程310

11.7.3软件配置管理计划313

11.8项目人员组织管理315

11.8.1团队组织315

11.8.2团队组织方式315

11.9软件能力成熟度模型317

11.9.1基本概念317

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

11.9.3关键过程域319

11.10本章小结320

习题321

参考文献/3231.6案例描述28

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

1.6.2试卷自动生成系统29

1.7本章小结30

习题31

第2章软件需求工程/33

2.1软件需求的基本概念33

2.1.1需求分析的任务33

2.1.2需求分析的原则34

2.1.3需求分析的内容35

2.2需求工程的过程36

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

2.2.2可行性研究37

2.2.3需求工程过程中的活动39

2.2.4需求工程的管理40

2.3需求获取技术41

2.4结构化需求分析和建模43

2.4.1结构化需求分析概述44

2.4.2面向数据的数据建模44

2.4.3面向数据流的功能建模46

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

2.4.5数据字典51

2.4.6加工逻辑53

2.5案例——“简历自动获取和查询系统”的需求建模54

2.5.1数据建模——ER图描述54

2.5.2功能建模——数据流图55

2.5.3行为建模——状态转换图56

2.5.4数据字典57

2.5.5加工逻辑——PDL语言的描述57

2.6需求评审58

2.6.1软件需求规格说明文档58

2.6.2需求评审标准及需求验证61

2.6.3需求变更管理63

2.7本章小结64

习题64第3章软件设计基础/66

3.1软件设计概述66

3.1.1软件设计与软件需求66

3.1.2软件设计的任务67

3.1.3软件设计的原则69

3.2软件体系结构设计70

3.2.1体系结构设计概述70

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

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

3.2.4层次模型73

3.2.5管道与过滤器模型74

3.3模块化设计75

3.3.1软件模块化与分解75

3.3.2抽象76

3.3.3信息隐藏76

3.3.4模块独立性77

3.3.5启发式规则79

3.4界面设计82

3.4.1界面设计的任务82

3.4.2界面设计的原则83

3.4.3界面设计的特性84

3.4.4MVC模型84

3.5软件设计评审85

3.5.1软件设计规格说明文档85

3.5.2软件设计评审标准90

3.5.3软件设计验证91

3.6本章小结92

习题93

第4章结构化设计方法/94

4.1结构化设计方法概述94

4.2面向数据流的设计方法95

4.2.1层次图和结构图95

4.2.2变换分析法97

4.2.3事务分析法101

4.2.4混合分析法102

4.3面向数据的设计方法103

4.3.1Jackson图103

4.3.2Jackson系统开发方法104

4.4案例——“简历自动获取和查询系统”的数据流设计方法107

4.4.1用变换分析法进行设计107

4.4.2用事务分析法进行设计108

4.4.3两种方法的比较109

4.5结构化详细设计的工具110

4.5.1程序流程图110

4.5.2盒图(NS图)111

4.5.3问题分析图(PAD图)112

4.5.4判定树114

4.5.5判定表114

4.5.6详细设计工具的比较115

4.6本章小结116

习题117

第5章软件实现/119

5.1程序设计语言119

5.1.1程序设计语言的分类119

5.1.2程序设计语言的特性120

5.1.3选择程序设计语言121

5.2程序设计风格123

5.2.1程序编排和组织的准则123

5.2.2程序设计的效率127

5.3代码复用128

5.4代码评审130

5.5本章小结133

习题134

第6章软件测试/137

6.1软件测试基础137

6.1.1软件测试概念137

6.1.2软件测试过程模型138

6.1.3软件测试原则140

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

6.1.5软件测试信息流144

6.1.6软件测试技术分类144

6.2白盒测试146

6.2.1逻辑覆盖146

6.2.2循环测试149

6.2.3路径测试150

6.3黑盒测试153

6.3.1等价类划分153

6.3.2边界值分析155

6.3.3错误推测法155

6.3.4因果图法156

6.4白盒测试和黑盒测试的比较158

6.5软件测设策略159

6.5.1单元测试159

6.5.2集成测试162

6.5.3确认测试165

6.5.4系统测试166

6.6调试168

6.6.1软件调试过程168

6.6.2软件调试方法169

6.7软件测试报告170

6.7.1软件测试说明170

6.7.2软件测试报告171

6.8本章小结172

习题173

第7章UML统一建模语言/175

7.1UML的发展175

7.1.1UML的产生175

7.1.2UML的构成176

7.1.3UML的特点177

7.2面向对象的基本概念177

7.3UML视图183

7.4UML的图和模型元素184

7.4.1用例图184

7.4.2类图186

7.4.3包图187

7.4.4状态图188

7.4.5活动图188

7.4.6顺序图190

7.4.7协作图191

7.4.8构件图192

7.4.9配置图193

7.5UML的关系193

7.5.1关联关系194

7.5.2泛化关系197

7.5.3依赖关系200

7.5.4实现关系201

7.6UML的通用机制201

7.6.1修饰202

7.6.2注释202

7.6.3规格说明202

7.6.4扩展机制203

7.7基于UML的软件过程204

7.8本章小结206

习题207

第8章面向对象分析/208

8.1面向对象分析概述208

8.1.1传统软件过程中的不足208

8.1.2面向对象的特点209

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

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

8.1.5静态模型的5个层次211

8.2建立功能模型(用例模型)212

8.2.1识别参与者213

8.2.2识别用例213

8.2.3识别用例间关系215

8.2.4用例描述文档216

8.3建立静态模型(对象模型)217

8.3.1识别类与对象217

8.3.2划分主题219

8.3.3确定结构220

8.3.4确定属性221

8.3.5确定服务222

8.3.6类图描述文档222

8.3.7包图描述文档223

8.4建立动态模型224

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

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

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

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

8.5本章小结230

习题230

第9章面向对象设计/232

9.1面向对象设计概述232

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

9.1.2面向对象设计原则233

9.2精化类及类间关系234

9.2.1设计类的属性234

9.2.2设计类的方法235

9.2.3设计类间泛化关系236

9.2.4设计关联类237

9.3数据设计238

9.3.1基于关系数据库的数据设计238

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

9.4人机交互设计241

9.5建立实现模型242

9.5.1构件图及其描述文档242

9.5.2配置图及其描述文档244

9.6设计模式简介245

9.6.1概述245

9.6.2Singleton模式246

9.6.3Abstract Factory模式248

9.6.4Mediator模式250

9.6.5Adapter模式252

9.6.6Iterator模式254

9.6.7State模式257

9.7面向对象的测试259

9.7.1面向对象测试概述259

9.7.2面向对象的单元测试260

9.8本章小结262

习题263

第10章软件维护/266

10.1软件维护概述266

10.1.1软件维护的任务266

10.1.2软件维护的特点267

10.1.3软件维护的分类267

10.2软件维护过程268

10.2.1软件维护方式269

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

10.2.3维护中存在的问题274

10.2.4维护活动记录275

10.3软件的可维护性276

10.3.1可维护性因素276

10.3.2提高软件的可维护性277

10.4逆向工程279

10.5本章小结281

习题282

第11章软件项目管理/283

11.1软件项目管理概述283

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

11.1.2软件项目管理目标284

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

11.2软件项目规模度量286

11.2.1代码行技术287

11.2.2功能点计算288

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

11.3软件项目估算292

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

11.3.2专家估算模型292

11.3.3Putnam模型293

11.3.4COCOMO模型293

11.3.5项目估算模型的小结296

11.4项目进度管理296

11.4.1项目进度控制296

11.4.2甘特图297

11.4.3工程网络图298

11.5项目风险管理299

11.5.1软件风险概念300

11.5.2风险管理过程300

11.6项目质量管理303

11.6.1软件质量因素304

11.6.2软件质量保证活动308

11.6.3软件质量保证计划309

11.7软件配置管理310

11.7.1软件配置项311

11.7.2配置管理过程311

11.7.3软件配置管理计划314

11.8项目人员组织管理316

11.8.1团队组织316

11.8.2团队组织方式316

11.9软件能力成熟度模型318

11.9.1基本概念318

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

11.9.3关键过程域320

11.10本章小结321

习题322

参考文献/324