《软件工程实用教程 第2版》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:陶华亭主编;吴洁,魏里副主编
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302275688
  • 页数:290 页
图书介绍:本书分为“项目管理”和“工程技术”两大部分内容。

第1章 概述 1

1.1软件工程学科的诞生 1

1.1.1软件的特点 1

1.1.2软件生产的发展 2

1.1.3软件危机 3

1.1.4软件工程学科的诞生 5

1.1.5软件工程学科的知识体系 6

1.2基本概念和原理 7

1.2.1软件工程的概念 7

1.2.2软件工程面临的主要问题 7

1.2.3软件工程的目标 8

1.2.4软件生存周期 9

1.2.5软件工程的基本原理 10

1.3软件工程的主要内容 11

1.3.1软件开发过程 11

1.3.2软件工程技术 11

1.3.3软件项目管理 12

1.3.4计算机辅助软件工程 12

1.4软件工程师职业道德规范与要求 13

1.4.1软件工程师的职业素质 13

1.4.2职业软件工程师要注意的十大问题 14

本章小结 15

习题 15

第2章 软件过程 16

2.1软件过程的概念 16

2.1.1软件过程的概念及理论基础 16

2.1.2软件过程讨论的主要内容 16

2.2常见的软件过程模型 17

2.2.1边改边做模型 17

2.2.2瀑布模型 17

2.2.3演化模型 19

2.2.4增量迭代模型 22

2.2.5喷泉模型 23

2.3软件过程的新发展 23

2.4敏捷方法 24

2.4.1敏捷过程 24

2.4.2极限编程 25

2.4.3敏捷方法的实践小技巧 27

2.5 RUP 28

2.5.1 RUP的特点 28

2.5.2 RUP简介 28

2.6软件过程改进与CMM 30

本章小结 35

习题 36

第3章 软件项目管理 37

3.1概述 37

3.1.1软件工程项目的特殊性 37

3.1.2软件工程管理的重要性 37

3.1.3软件项目管理的主要内容 38

3.2软件规模估算 38

3.2.1代码行技术 38

3.2.2功能点技术 40

3.3工作量估算 42

3.3.1静态单变量模型 42

3.3.2动态多变量模型 43

3.3.3 COCOMO2模型 43

3.4开发周期估算 44

3.5估算方法 45

3.6项目进度计划与控制 46

3.6.1项目进度控制的主要目标 46

3.6.2甘特图 47

3.6.3工程网络图 48

3.7人员组织 51

3.7.1民主制程序员组 51

3.7.2主程序员组 52

3.7.3现代程序员组 53

3.8质量保证 55

3.8.1软件质量 55

3.8.2软件质量保证措施 55

3.9软件配置管理 57

3.9.1软件配置 57

3.9.2基线 57

3.9.3软件配置管理过程 58

本章小结 59

习题 60

第4章 项目调查与初步计划 61

4.1项目调查的任务 61

4.2项目调查的步骤 62

4.2.1审查系统规模和目标 62

4.2.2调查目前正在使用的系统 62

4.2.3导出新系统的高层逻辑模型 63

4.2.4导出和评价供选择的方案 63

4.2.5推荐行动方针 63

4.2.6草拟项目计划 64

4.2.7编写文档提交审查 64

4.3结构化方案设计 64

4.3.1系统流程图 65

4.3.2数据流图 67

4.3.3结构化方案表述 68

4.4面向对象的方案设计 69

4.4.1用例、场景和角色 70

4.4.2用例图 71

4.4.3用例的内容描述 72

4.4.4用例的提取 72

4.4.5活动图 73

4.4.6状态图 74

4.4.7面向对象的方案表述 75

4.4.8案例 76

4.5成本效益分析 78

4.5.1成本估算 78

4.5.2成本/效益分析的方法 79

4.6可行性分析报告 80

4.6.1主要内容 80

4.6.2参考格式 80

本章小结 81

习题 82

第5章 结构化需求分析 83

5.1需求分析概述 83

5.1.1需求分析的任务 83

5.1.2人员组织 84

5.1.3分析师的角色 84

5.1.4需求分析的活动和原则 84

5.2结构化分析方法 86

5.2.1结构化分析的概念 86

5.2.2细化数据流图 87

5.2.3实例 89

5.3数据流图的绘制 90

5.3.1数据流图的布局 90

5.3.2符号的组合应用 90

5.3.3避免线条交叉 91

5.3.4抽象数据流的应用 91

5.3.5编号规则 92

5.3.6命名规则 92

5.3.7父图与子图的平衡 92

5.4编写数据字典 93

5.4.1定义数据的方法 93

5.4.2数据字典的内容及格式 94

5.5加工逻辑的分析与表达 95

5.5.1结构式语言 95

5.5.2策略表 96

5.5.3策略树 97

5.5.4层次方框图 97

5.5.5 Warnier图 98

5.5.6 IPO图 99

5.6需求验证与评审 99

5.6.1从哪些方面验证软件需求 99

5.6.2验证软件需求的方法 100

5.6.3软件需求评审 100

本章小结 100

习题 101

第6章 结构化设计 102

6.1总体设计的过程 102

6.1.1方案设计 103

6.1.2软件结构设计 105

6.1.3数据库设计 106

6.1.4制定测试计划 106

6.1.5书写文档 106

6.1.6审查和复审 106

6.2设计原理 107

6.2.1模块化 107

6.2.2抽象 108

6.2.3逐步求精 108

6.2.4信息隐藏和局部化 108

6.2.5模块独立性 109

6.3启发性设计原则 113

6.3.1改进软件结构,提高模块独立性 113

6.3.2模块规模应该适中 113

6.3.3深度、宽度、扇出和扇入都应适当 113

6.3.4模块的作用域应该在控制域之内 114

6.3.5力争降低模块接口的复杂程度 115

6.3.6设计单入口单出口的模块 115

6.3.7模块功能应该可以预测 115

6.4描绘软件结构的图形工具 115

6.4.1层次图和HIPO图 115

6.4.2结构图 116

6.5面向数据流的设计方法 117

6.5.1面向数据流的设计原理 117

6.5.2变换分析 118

6.5.3事务分析 119

6.5.4结构优化 120

6.5.5设计过程 120

6.6实例 120

6.6.1确定变换中心 120

6.6.2确定主控制模块,产生第一张结构图 121

6.6.3分解与优化 122

6.6.4一个抽象的例子 123

本章小结 125

习题 125

第7章 详细设计 126

7.1代码设计 126

7.2数据库设计 128

7.2.1数据库设计的相关概念 128

7.2.2数据库设计的任务 129

7.2.3概念模型 129

7.2.4概念模型到数据模型的转换策略 131

7.3规范化理论 132

7.3.1规范化的概念 132

7.3.2非规范化形式 132

7.3.3第一范式 133

7.3.4第二范式 134

7.3.5第三范式 134

7.3.6实例 135

7.4数据库设计实例 136

7.4.1数据库设计的步骤 136

7.4.2实例 136

7.5系统平台设计 138

7.5.1计算机处理方式 138

7.5.2软硬件选择 138

7.5.3网络设计 138

7.5.4系统环境的配置 138

7.6对话设计 139

7.6.1对话设计的原则 139

7.6.2对话设计的基本类型 139

7.7输入输出设计 139

7.7.1输出设计 139

7.7.2输入设计 140

7.8处理过程设计 141

7.8.1盒图 141

7.8.2问题分析图 142

7.9编写系统设计说明书 142

本章小结 142

习题 143

第8章 编程与测试 144

8.1概述 144

8.1.1软件开发环境 144

8.1.2软件开发工具 144

8.1.3关于编程与测试 145

8.2编程 145

8.2.1编程语言的选择 145

8.2.2编程风格 146

8.3软件测试基本概念 148

8.3.1软件测试的目标 148

8.3.2软件测试的准则 148

8.3.3软件测试的方法 151

8.3.4软件测试的步骤 152

8.3.5软件测试活动过程 153

8.4白盒法 154

8.4.1逻辑覆盖 154

8.4.2控制结构覆盖 157

8.5黑盒法 161

8.5.1等价类划分 161

8.5.2边界值分析 163

8.5.3整数域的等价类和边界值 163

8.5.4实数域的等价类与边界值 164

8.5.5字符和字符串的等价类和边界值 164

8.5.6其他域的等价类和边界值 166

8.5.7错误推测 166

8.6调试 166

8.6.1调试过程 167

8.6.2调试途径 168

8.7单元测试 169

8.7.1测试重点 169

8.7.2测试方法 170

8.7.3代码审查 171

8.8集成测试 172

8.8.1自顶向下集成 173

8.8.2自底向上集成 174

8.8.3不同集成测试策略的比较 174

8.8.4回归测试 175

8.9确认测试 175

8.9.1概述 175

8.9.2软件配置复查 176

8.9.3 Alpha和Beta测试 176

8.10软件可靠性 176

8.10.1基本概念 177

8.10.2估算平均无故障时间的方法 178

本章小结 179

习题 179

第9章 软件维护 180

9.1软件维护的内容 180

9.2软件维护的特点 181

9.2.1非结构化维护和结构化维护 181

9.2.2软件维护的困难性 181

9.2.3软件维护的费用 182

9.3软件维护的实施 182

9.3.1维护的组织 183

9.3.2维护的流程 183

9.3.3维护技术 186

9.3.4维护的副作用 186

9.4软件的可维护性 187

9.4.1可维护性定义 188

9.4.2可维护性的度量 188

9.4.3提高可维护性的方法 188

本章小结 191

习题 191

第10章 面向对象方法 192

10.1软件工程方法论 192

10.1.1软件工程的目标 192

10.1.2方法论的形成 192

10.1.3方法论的定义 193

10.1.4研究方法论的目的 194

10.1.5三种方法论 194

10.2从结构化到面向对象 195

10.2.1结构化方法遇到的挑战 195

10.2.2面向对象方法的优势 196

10.3面向对象的基本概念 199

10.3.1对象与类 199

10.3.2消息与责任 201

10.3.3操作与方法 201

10.3.4继承与多态 202

10.3.5封装与接口 203

10.4 UML 203

10.4.1概述 203

10.4.2 UML模型的基本内容 204

10.4.3 UML的语义扩展 205

10.4.4模型的组织结构 206

10.5 UML提供的常用图 206

10.5.1 Use Case图 206

10.5.2类图 207

10.5.3序列图 211

10.5.4协作图 212

10.5.5状态图 212

10.5.6活动图 214

10.6面向对象的建模过程 214

10.6.1建模过程简介 214

10.6.2模型演进 215

本章小结 219

习题 219

第11章 用例模型 220

11.1用例模型简介 220

11.2提取用例 221

11.3画用例图 222

11.4编写用例报告 222

11.4.1登录用例报告 222

11.4.2“选课、查询”用例报告 223

11.4.3“汇总选课情况”用例报告 225

11.5构造用户界面原型 226

本章小结 227

习题 227

第12章 全局分析 228

12.1选择构架模式 228

12.2识别关键抽象 229

12.2.1“关键抽象”的含义 229

12.2.2提取“关键抽象”的步骤 230

12.2.3“关键抽象”包的价值 230

12.3标识“关键技术” 231

12.3.1标识“关键技术”的步骤 231

12.3.2案例 231

12.4选定分析局部 231

12.4.1选定分析局部的步骤 232

12.4.2案例 232

12.4.3 “Use Case实现”的桥梁作用 232

本章小结 233

思考题 234

第13章 局部分析 235

13.1提取“分析类” 235

13.1.1“分析类”的构造型 236

13.1.2提取“分析类”的步骤 236

13.1.3案例 237

13.2转述需求场景 239

13.2.1“消息”与“责任” 239

13.2.2“责任”的沿用 239

13.2.3序列图中的Actor 239

13.2.4转述需求场景的步骤 240

13.2.5需求转述过程的要点 241

13.2.6案例 242

13.3整理分析类 245

13.3.1“参与类图”的含义 245

13.3.2整理分析类的步骤 245

13.4案例 246

本章小结 247

习题 248

第14章 全局设计 249

14.1确定核心元素 249

14.1.1确定核心设计类 250

14.1.2确定子系统接口 250

14.1.3要点 251

14.1.4实例 251

14.2引入外围元素 252

14.2.1引入外围设计元素的步骤 253

14.2.2案例 253

14.3优化模型结构 259

本章小结 260

习题 260

第15章 局部设计 261

15.1实现需求场景 261

15.1.1“分析类”和“设计类”的区别 261

15.1.2实现需求场景 261

15.1.3案例 262

15.2实现子系统接口 265

15.2.1实现子系统接口的步骤 266

15.2.2实例 266

本章小结 267

习题 267

第16章 细节设计 268

16.1精化“属性”与“操作” 269

16.1.1对“操作”的精化 269

16.1.2对“属性”的精化 269

16.1.3明确“操作”及“属性”的可见度 269

16.1.4案例 270

16.2明确类之间的关系 270

16.2.1对象间通信的连接可见度 270

16.2.2关联关系的详细内容 270

16.2.3实例 271

本章小结 272

习题 272

附录A建模工具Rational Rose简介 273

附录B软件工程职业道德规范和实践要求(5.2版) 281

附录C参考教学计划 286

附录D试题样卷 289

参考文献 290