图书目录

第一版前言5

修订版(第二版)前言7

第三版前言9

第四版前言11

第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软件工程的基本原理7

1.2.3软件工程方法学9

1.3软件生命周期11

1.4软件过程14

1.4.1瀑布模型15

1.4.2快速原型模型16

1.4.3增量模型17

1.4.4螺旋模型19

1.5小结21

习题122

第2章可行性研究25

2.1可行性研究的任务25

2.2可行性研究过程26

2.3系统流程图282.3.1符号28

2.3.2例子28

2.3.3分层30

2.4数据流图30

软件工程导论目录2.4.1符号30

2.4.2例子32

2.4.3命名34

2.4.4用途35

2.5数据字典37

2.5.1数据字典的内容37

2.5.2定义数据的方法37

2.5.3数据字典的用途38

2.5.4数据字典的实现39

2.6成本/效益分析39

2.6.1成本估计40

2.6.2成本/效益分析的方法41

2.7小结43

习题243

第3章需求分析45

3.1需求分析的任务46

3.1.1确定对系统的综合要求46

3.1.2分析系统的数据要求47

3.1.3导出系统的逻辑模型48

3.1.4修正系统开发计划48

3.2与用户沟通获取需求的方法48

3.2.1访谈48

3.2.2面向数据流自顶向下求精49

3.2.3简易的应用规格说明技术49

3.2.4快速建立软件原型51

3.3分析建模与规格说明52

3.3.1分析建模52

3.3.2软件需求规格说明52

3.4实体联系图52

3.4.1数据对象53

3.4.2属性53

3.4.3联系53

3.4.4实体联系图的符号54

3.5数据规范化54

3.6状态转换图55

3.6.1状态55

3.6.2事件55

3.6.3符号56

3.6.4例子56

3.7其他图形工具57

3.7.1层次方框图58

3.7.2Warnier图58

3.7.3IPO图59

3.8验证软件需求60

3.8.1从哪些方面验证软件需求的正确性60

3.8.2验证软件需求的方法60

3.8.3用于需求分析的软件工具61

3.9小结62

习题363

第4章形式化说明技术65

4.1概述65

4.1.1非形式化方法的缺点65

4.1.2形式化方法的优点66

4.1.3应用形式化方法的准则66

4.2有穷状态机67

4.2.1概念67

4.2.2例子69

4.2.3评价72

4.3Petri网72

4.3.1概念72

4.3.2例子74

4.4Z语言75

4.4.1简介75

4.4.2评价78

4.5小结78

习题479

第5章总体设计81

5.1设计过程81

5.2设计原理84

5.2.1模块化84

5.2.2抽象85

5.2.3逐步求精85

5.2.4信息隐藏和局部化86

5.2.5模块独立87

5.3启发规则89

5.4描绘软件结构的图形工具92

5.4.1层次图和HIPO图92

5.4.2结构图93

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

5.5.1概念94

5.5.2变换分析95

5.5.3事务分析101

5.5.4设计优化102

5.6小结103

习题5104

第6章 详细设计107

6.1结构程序设计107

6.2人机界面设计109

6.2.1设计问题109

6.2.2设计过程111

6.2.3人机界面设计指南112

6.3过程设计的工具114

6.3.1程序流程图114

6.3.2盒图(NS图)114

6.3.3PAD图116

6.3.4判定表117

6.3.5判定树118

6.3.6过程设计语言118

6.4面向数据结构的设计方法119

6.4.1Jackson图120

6.4.2改进的Jackson图121

6.4.3Jackson方法122

6.5程序复杂程度的定量度量126

6.5.1McCabe方法127

6.5.2Halstead方法129

6.6小结130

习题6130

第7章 实现135

7.1编码136

7.1.1选择程序设计语言136

7.1.2编码风格137

7.2软件测试基础139

7.2.1软件测试的目标140

7.2.2软件测试准则140

7.2.3测试方法141

7.2.4测试步骤141

7.2.5测试阶段的信息流142

7.3单元测试143

7.3.1测试重点143

7.3.2代码审查144

7.3.3计算机测试145

7.4集成测试146

7.4.1自顶向下集成147

7.4.2自底向上集成148

7.4.3不同集成测试策略的比较149

7.4.4回归测试150

7.5确认测试150

7.5.1确认测试的范围150

7.5.2软件配置复查151

7.5.3Alpha和Beta测试151

7.6白盒测试技术152

7.6.1逻辑覆盖152

7.6.2控制结构测试155

7.7黑盒测试技术161

7.7.1等价划分162

7.7.2边界值分析165

7.7.3错误推测165

7.8调试166

7.8.1调试过程166

7.8.2调试途径168

7.9软件可靠性169

7.9.1基本概念169

7.9.2估算平均无故障时间的方法170

7.10小结172

习题7173

第8章 维护179

8.1软件维护的定义179

8.2软件维护的特点180

8.2.1结构化维护与非结构化维护差别巨大180

8.2.2维护的代价高昂180

8.2.3维护的问题很多181

8.3软件维护过程182

8.4软件的可维护性185

8.4.1决定软件可维护性的因素185

8.4.2文档186

8.4.3可维护性复审187

8.5预防性维护188

8.6软件再工程过程188

8.7小结191

习题8192

第9章面向对象方法学引论193

9.1面向对象方法学概述193

9.1.1面向对象方法学的要点193

9.1.2面向对象方法学的优点195

9.1.3喷泉模型199

9.2面向对象的概念200

9.2.1对象200

9.2.2其他概念202

9.3面向对象建模206

9.4对象模型207

9.4.1类图的基本符号208

9.4.2表示关系的符号209

9.5动态模型215

9.6功能模型215

9.6.1用例图215

9.6.2用例建模218

9.73种模型之间的关系219

9.8小结220

习题9220

第10章面向对象分析223

10.1面向对象分析的基本过程223

10.1.1概述223

10.1.23个子模型与5个层次224

10.2需求陈述225

10.2.1书写要点225

10.2.2例子226

10.3建立对象模型227

10.3.1确定类与对象228

10.3.2确定关联230

10.3.3划分主题233

10.3.4确定属性233

10.3.5识别继承关系236

10.3.6反复修改236

10.4建立动态模型239

10.4.1编写脚本239

10.4.2设想用户界面240

10.4.3画事件跟踪图241

10.4.4画状态图242

10.4.5审查动态模型244

10.5建立功能模型245

10.5.1画出基本系统模型图245

10.5.2画出功能级数据流图245

10.5.3描述处理框功能246

10.6定义服务247

10.7小结247

习题10248

第11章面向对象设计249

11.1面向对象设计的准则249

11.2启发规则251

11.3软件重用253

11.3.1概述253

11.3.2类构件255

11.3.3软件重用的效益256

11.4系统分解257

11.5设计问题域子系统260

11.6设计人机交互子系统263

11.7设计任务管理子系统265

11.8设计数据管理子系统267

11.8.1选择数据存储管理模式267

11.8.2设计数据管理子系统268

11.8.3例子270

11.9设计类中的服务270

11.9.1确定类中应有的服务270

11.9.2设计实现服务的方法271

11.10设计关联272

11.11设计优化273

11.11.1确定优先级273

11.11.2提高效率的几项技术274

11.11.3调整继承关系275

11.12小结277

习题11278

第12章面向对象实现279

12.1程序设计语言279

12.1.1面向对象语言的优点279

12.1.2面向对象语言的技术特点280

12.1.3选择面向对象语言284

12.2程序设计风格284

12.2.1提高可重用性285

12.2.2提高可扩充性287

12.2.3提高健壮性287

12.3测试策略288

12.3.1面向对象的单元测试288

12.3.2面向对象的集成测试289

12.3.3面向对象的确认测试289

12.4设计测试用例289

12.4.1测试类的方法290

12.4.2集成测试方法291

12.5小结293

习题12294

第13章软件项目管理295

13.1估算软件规模295

13.1.1代码行技术295

13.1.2功能点技术296

13.2工作量估算298

13.2.1静态单变量模型298

13.2.2动态多变量模型298

13.2.3COCOMO2模型299

13.3进度计划302

13.3.1估算开发时间302

13.3.2Gantt图304

13.3.3工程网络305

13.3.4估算工程进度306

13.3.5关键路径308

13.3.6机动时间308

13.4人员组织310

13.4.1民主制程序员组310

13.4.2主程序员组311

13.4.3现代程序员组312

13.5质量保证314

13.5.1软件质量314

13.5.2软件质量保证措施316

13.6软件配置管理318

13.6.1软件配置319

13.6.2软件配置管理过程319

13.7能力成熟度模型321

13.8小结324

习题13325

附录327

附录AC++类库管理系统的分析与设计327

A.1面向对象分析327

A.1.1需求327

A.1.2建立对象模型328

A.2面向对象设计329

A.2.1设计类库结构329

A.2.2设计问题域子系统330

A.2.3设计人机交互子系统331

A.2.4设计其他类333

附录B一个汉字行编辑程序的设计335

B.1设计规格说明335

B.1.1外部编辑命令335

B.1.2编辑命令335

B.1.3输出信息336

B.2概要设计337

B.2.1正文文件337

B.2.2两个工作模式339

B.2.3数据元素339

B.2.4过程340

B.3概要设计结果341

B.4详细设计344

B.4.1数据元素344

B.4.2控制数据元素346

B.4.3编辑过程346

B.4.4输入模式的过程347

B.4.5编辑模式的过程348

B.5详细设计结果351

B.5.1编辑程序的详细结构351

B.5.2类PASCAL伪码352

B.5.3实现编辑程序的算法354

参考文献381