《软件工程导论 第6版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:张海藩,牟永敏编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302330981
  • 页数:347 页
图书介绍:本书全面系统地讲述了软件工程的概念、原理和典型的方法学,并介绍了软件项目的管理技术。本书正文共13章,第1章是概述,第2章至第8章顺序讲述软件生命周期各阶段的任务、过程、结构化方法和工具,第9章至第12章分别讲述面向对象方法学引论、面向对象分析、面向对象设计和面向对象实现,第13章介绍软件项目管理。本书可作为高等院校软件工程课程的教材,也可供从事软件相关工作的技术人员阅读参考。

第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.4.5喷泉模型 21

1.4.6 Rational统一过程 22

1.4.7敏捷过程与极限编程 25

1.4.8微软过程 29

1.5小结 31

习题1 32

第2章 可行性研究 35

2.1可行性研究的任务 35

2.2可行性研究过程 36

2.3系统流程图 38

2.3.1符号 38

2.3.2例子 38

2.3.3分层 40

2.4数据流图 40

2.4.1符号 40

2.4.2例子 42

2.4.3命名 44

2.4.4用途 45

2.5数据字典 47

2.5.1数据字典的内容 47

2.5.2定义数据的方法 47

2.5.3数据字典的用途 48

2.5.4数据字典的实现 49

2.6成本/效益分析 49

2.6.1成本估计 50

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

2.7小结 53

习题2 53

第3章 需求分析 55

3.1需求分析的任务 56

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

3.1.2分析系统的数据要求 57

3.1.3导出系统的逻辑模型 58

3.1.4修正系统开发计划 58

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

3.2.1访谈 58

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

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

3.2.4快速建立软件原型 61

3.3分析建模与规格说明 62

3.3.1分析建模 62

3.3.2软件需求规格说明 62

3.4实体-联系图 62

3.4.1数据对象 63

3.4.2属性 63

3.4.3联系 63

3.4.4实体-联系图的符号 64

3.5数据规范化 64

3.6状态转换图 65

3.6.1状态 65

3.6.2事件 65

3.6.3符号 66

3.6.4例子 66

3.7其他图形工具 67

3.7.1层次方框图 68

3.7.2 Warnier图 68

3.7.3 IPO图 69

3.8验证软件需求 70

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

3.8.2验证软件需求的方法 70

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

3.9小结 72

习题3 73

第4章 形式化说明技术 75

4.1概述 75

4.1.1非形式化方法的缺点 75

4.1.2形式化方法的优点 76

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

4.2有穷状态机 77

4.2.1概念 77

4.2.2例子 79

4.2.3评价 82

4.3 Petri网 82

4.3.1概念 82

4.3.2例子 84

4.4 Z语言 85

4.4.1简介 85

4.4.2评价 88

4.5小结 88

习题4 89

第5章 总体设计 91

5.1设计过程 91

5.2设计原理 94

5.2.1模块化 94

5.2.2抽象 95

5.2.3逐步求精 95

5.2.4信息隐藏和局部化 96

5.2.5模块独立 97

5.3启发规则 99

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

5.4.1层次图和HIPO图 102

5.4.2结构图 103

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

5.5.1概念 104

5.5.2变换分析 105

5.5.3事务分析 111

5.5.4设计优化 112

5.6小结 113

习题5 114

第6章 详细设计 117

6.1结构程序设计 117

6.2人机界面设计 119

6.2.1设计问题 119

6.2.2设计过程 121

6.2.3人机界面设计指南 122

6.3过程设计的工具 124

6.3.1程序流程图 124

6.3.2盒图 125

6.3.3 PAD图 126

6.3.4判定表 127

6.3.5判定树 128

6.3.6过程设计语言 128

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

6.4.1 Jackson图 130

6.4.2改进的Jackson图 131

6.4.3 Jackson方法 132

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

6.5.1 McCabe方法 137

6.5.2 Halstead方法 139

6.6小结 140

习题6 140

第7章 实现 145

7.1编码 146

7.1.1选择程序设计语言 146

7.1.2编码风格 147

7.2软件测试基础 149

7.2.1软件测试的目标 150

7.2.2软件测试准则 150

7.2.3测试方法 151

7.2.4测试步骤 151

7.2.5测试阶段的信息流 152

7.3单元测试 153

7.3.1测试重点 153

7.3.2代码审查 154

7.3.3计算机测试 155

7.4集成测试 156

7.4.1自顶向下集成 157

7.4.2自底向上集成 158

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

7.4.4回归测试 160

7.5确认测试 160

7.5.1确认测试的范围 160

7.5.2软件配置复查 161

7.5.3 Alpha和Beta测试 161

7.6白盒测试技术 162

7.6.1逻辑覆盖 162

7.6.2控制结构测试 165

7.7黑盒测试技术 171

7.7.1等价划分 172

7.7.2边界值分析 175

7.7.3错误推测 175

7.8调试 176

7.8.1调试过程 176

7.8.2调试途径 178

7.9软件可靠性 179

7.9.1基本概念 179

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

7.10小结 182

习题7 183

第8章 维护 189

8.1软件维护的定义 189

8.2软件维护的特点 190

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

8.2.2维护的代价高昂 190

8.2.3维护的问题很多 191

8.3软件维护过程 192

8.4软件的可维护性 194

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

8.4.2文档 195

8.4.3可维护性复审 196

8.5预防性维护 197

8.6软件再工程过程 198

8.7小结 200

习题8 201

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

9.1面向对象方法学概述 203

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

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

9.2面向对象的概念 209

9.2.1对象 209

9.2.2其他概念 211

9.3面向对象建模 215

9.4对象模型 216

9.4.1类图的基本符号 217

9.4.2表示关系的符号 218

9.5动态模型 223

9.6功能模型 224

9.6.1用例图 224

9.6.2用例建模 227

9.7.3种模型之间的关系 228

9.8小结 229

习题9 229

第10章 面向对象分析 231

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

10.1.1概述 231

10.1.2 3个子模型与5个层次 232

10.2需求陈述 233

10.2.1书写要点 233

10.2.2例子 234

10.3建立对象模型 235

10.3.1确定类与对象 236

10.3.2确定关联 238

10.3.3划分主题 241

10.3.4确定属性 241

10.3.5识别继承关系 244

10.3.6反复修改 244

10.4建立动态模型 247

10.4.1编写脚本 247

10.4.2设想用户界面 248

10.4.3画事件跟踪图 249

10.4.4画状态图 250

10.4.5审查动态模型 251

10.5建立功能模型 253

10.5.1画出基本系统模型图 253

10.5.2画出功能级数据流图 254

10.5.3描述处理框功能 254

10.6定义服务 255

10.7小结 256

习题10 256

第11章 面向对象设计 259

11.1面向对象设计的准则 259

11.2启发规则 261

11.3软件重用 263

11.3.1概述 263

11.3.2类构件 265

11.3.3软件重用的效益 266

11.4系统分解 267

11.5设计问题域子系统 270

11.6设计人机交互子系统 273

11.7设计任务管理子系统 275

11.8设计数据管理子系统 277

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

11.8.2设计数据管理子系统 278

11.8.3例子 280

11.9设计类中的服务 280

11.9.1确定类中应有的服务 280

11.9.2设计实现服务的方法 281

11.10设计关联 282

11.11设计优化 283

11.11.1确定优先级 283

11.11.2提高效率的几项技术 284

11.11.3调整继承关系 285

11.12小结 287

习题11 288

第12章 面向对象实现 289

12.1程序设计语言 289

12.1.1面向对象语言的优点 289

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

12.1.3选择面向对象语言 294

12.2程序设计风格 294

12.2.1提高可重用性 295

12.2.2提高可扩充性 297

12.2.3提高健壮性 297

12.3测试策略 298

12.3.1面向对象的单元测试 298

12.3.2面向对象的集成测试 299

12.3.3面向对象的确认测试 299

12.4设计测试用例 299

12.4.1测试类的方法 300

12.4.2集成测试方法 301

12.5小结 303

习题12 304

第13章 软件项目管理 305

13.1估算软件规模 305

13.1.1代码行技术 305

13.1.2功能点技术 306

13.2工作量估算 308

13.2.1静态单变量模型 308

13.2.2动态多变量模型 308

13.2.3 COCOMO2模型 309

13.3进度计划 312

13.3.1估算开发时间 312

13.3.2 Gantt图 314

13.3.3工程网络 315

13.3.4估算工程进度 316

13.3.5关键路径 318

13.3.6机动时间 318

13.4人员组织 320

13.4.1民主制程序员组 320

13.4.2主程序员组 321

13.4.3现代程序员组 322

13.5质量保证 324

13.5.1软件质量 324

13.5.2软件质量保证措施 326

13.6软件配置管理 328

13.6.1软件配置 329

13.6.2软件配置管理过程 329

13.7能力成熟度模型 331

13.8小结 334

习题13 335

附录A C++类库管理系统的分析与设计 337

A.1面向对象分析 337

A.1.1需求 337

A.1.2建立对象模型 338

A.2面向对象设计 339

A.2.1设计类库结构 339

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

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

A.2.4设计其他类 344

参考文献 347