《软件工程 第3版》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:钱乐秋,赵文耘,牛军钰编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2016
  • ISBN:9787302446088
  • 页数:374 页
图书介绍:本书从软件开发、维护和管理等方面介绍软件工程的概念、原理、过程及主要方法,内容上覆盖了ACM&IEEE最新制订的CC2013中有关软件工程的主要知识点。

第1章 概论 1

1.1 计算机软件 1

1.1.1 软件的发展 1

1.1.2 软件的特点 2

1.1.3 软件的分类 3

1.1.4 软件语言 3

1.2 软件工程 5

1.2.1 软件工程定义 5

1.2.2 软件工程框架 6

1.2.3 软件生存周期 7

1.3 软件过程 7

1.3.1 软件生存周期过程 8

1.3.2 能力成熟度模型 11

1.3.3 能力成熟度模型集成 13

1.4 软件过程模型 16

1.4.1 瀑布模型 16

1.4.2 演化模型 17

1.4.3 增量模型 18

1.4.4 原型模型 18

1.4.5 螺旋模型 20

1.4.6 喷泉模型 21

1.4.7 基于构件的开发模型 21

1.4.8 形式化方法模型 22

1.5 CASE工具与环境 23

1.5.1 软件工具 23

1.5.2 软件开发环境 25

1.6 小结 26

习题 26

第2章 系统工程 27

2.1 基于计算机的系统 27

2.2 系统工程的任务 28

2.3 可行性分析 29

2.3.1 经济可行性 29

2.3.2 技术可行性 31

2.3.3 法律可行性 31

2.3.4 方案的选择和折衷 31

2.4 小结 32

习题 32

第3章 需求工程 33

3.1 需求工程概述 33

3.2 需求获取 35

3.2.1 软件需求 35

3.2.2 需求获取方法与策略 36

3.3 需求分析、协商与建模 40

3.3.1 需求分析原则 40

3.3.2 信息域 40

3.3.3 需求协商 41

3.3.4 需求建模 41

3.4 需求规约与验证 42

3.4.1 需求规约的原则 42

3.4.2 需求规约 42

3.4.3 需求验证 44

3.5 需求管理 44

3.6 小结 45

习题 45

第4章 设计工程 46

4.1 软件设计工程概述 46

4.2 软件设计原则 48

4.2.1 抽象与逐步求精 49

4.2.2 模块化 49

4.2.3 信息隐藏 50

4.2.4 功能独立 51

4.3 软件体系结构设计 53

4.3.1 体系结构发展过程 53

4.3.2 软件体系结构的风格 54

4.3.3 评估可选的体系结构 56

4.4 部件级设计技术 57

4.4.1 结构化程序设计方法 58

4.4.2 图形表示法 58

4.4.3 判定表 61

4.4.4 设计性语言PDL 62

4.5 设计规约与设计评审 63

4.5.1 设计规约 63

4.5.2 设计评审 64

4.6 小结 65

习题 65

第5章 结构化分析与设计 67

5.1 结构化分析方法概述 67

5.2 数据流图 69

5.2.1 数据流图的图形表示 69

5.2.2 分层数据流图的画法 72

5.3 分层数据流图的审查 76

5.3.1 分层数据流图的一致性和完整性 77

5.3.2 构造分层DFD时需要注意的问题 80

5.3.3 分解的程度 82

5.4 数据字典 82

5.4.1 字典条目的种类及描述符号 82

5.4.2 字典条目 83

5.4.3 字典条目实例 87

5.4.4 数据字典的实现 88

5.5 描述基本加工的小说明 88

5.5.1 结构化语言 89

5.5.2 判定表 90

5.5.3 判定树 91

5.6 结构化设计概述 91

5.6.1 结构图 92

5.6.2 启发式设计策略 94

5.6.3 结构化设计的步骤 96

5.7 数据流图到软件体系结构的映射 97

5.7.1 信息流 97

5.7.2 数据流图映射到结构图的步骤 98

5.7.3 变换分析 98

5.7.4 事务分析 101

5.7.5 分层DFD的映射 102

5.8 初始结构图的改进 104

5.8.1 结构图改进实例 104

5.8.2 结构图改进技巧 106

5.9 小结 108

习题 108

第6章 面向数据结构的分析与设计 110

6.1 JSP方法 110

6.1.1 数据结构与程序结构的表示 110

6.1.2 JSP方法的分析和设计步骤 114

6.2 JSD方法简介 118

6.3 小结 119

习题 119

第7章 面向对象方法基础 120

7.1 面向对象的基本概念 121

7.2 面向对象分析和设计过程 124

7.2.1 面向对象分析过程 124

7.2.2 面向对象设计过程 126

7.2.3 设计模式 128

7.3 UML概述 129

7.3.1 UML发展历史 129

7.3.2 UML简介 130

7.3.3 视图 131

7.3.4 图 133

7.4 小结 136

习题 136

第8章 面向对象建模 137

8.1 用况建模 137

8.1.1 用况建模步骤 137

8.1.2 确定执行者 138

8.1.3 确定用况 139

8.1.4 用况描述 140

8.1.5 用况图中的关系 142

8.1.6 案例说明 143

8.1.7 用况建模实例 144

8.2 静态建模 147

8.2.1 类图和对象图 148

8.2.2 CRC技术 148

8.2.3 类之间的关系 153

8.2.4 静态建模实例 161

8.3 动态建模 163

8.3.1 状态机图 163

8.3.2 活动图 170

8.3.3 顺序图 172

8.3.4 通信图 176

8.3.5 动态建模实例 178

8.4 物理体系结构建模 179

8.4.1 构件图 180

8.4.2 部署图 181

8.5 小结 182

习题 182

第9章 基于构件的软件开发 184

9.1 基于构件的软件开发概述 184

9.1.1 构件 184

9.1.2 基于构件的软件开发过程 187

9.1.3 CBSD对质量、生产率和成本的影响 189

9.2 建造可复用构件 190

9.2.1 对可复用构件的要求 190

9.2.2 创建领域构件的设计框架 191

9.2.3 可变性分析 191

9.2.4 可变性机制 192

9.3 应用系统工程 194

9.3.1 基于CBSD的应用系统分析和设计 194

9.3.2 构件的鉴定、特化和组装 195

9.4 构件的管理 196

9.4.1 构件的分类描述 196

9.4.2 构件库管理系统 197

9.5 小结 198

习题 198

第10章 敏捷软件开发 199

10.1 敏捷软件开发方法概述 199

10.1.1 敏捷宣言 199

10.1.2 精益思想 201

10.1.3 敏捷方法综述 202

10.2 Scrum方法 203

10.2.1 Scrum简介 203

10.2.2 Scrum团队 205

10.2.3 需求管理 205

10.2.4 基于时间盒的迭代 206

10.2.5 回顾会议 209

10.3 极限编程方法 210

10.3.1 极限编程简介 210

10.3.2 价值观和原则 211

10.3.3 实践 212

10.4 看板方法 217

10.4.1 看板方法简介 217

10.4.2 看板方法的规则 218

10.4.3 看板方法和Scrum的比较 219

10.5 小结 220

习题 220

第11章 人机界面设计 221

11.1 人的因素 221

11.1.1 人对感知过程的认识 221

11.1.2 用户的技能和行为方式 222

11.1.3 人体测量学对设计的影响 222

11.2 人机界面风格 224

11.3 人机界面分析与建模 227

11.3.1 人机界面设计过程 227

11.3.2 人机界面设计中涉及的模型 228

11.3.3 任务分析的途径与方法 228

11.4 界面设计活动 229

11.4.1 定义界面对象和动作 229

11.4.2 设计问题 230

11.4.3 黄金原则 231

11.5 实现工具 233

11.6 设计评估 233

11.7 小结 235

习题 235

第12章 程序设计语言和编码 236

12.1 程序设计语言 236

12.1.1 程序设计语言的基本成分 236

12.1.2 程序设计语言的特性 238

12.1.3 程序设计语言的分类 239

12.1.4 程序设计语言的选择 240

12.2 程序设计风格 241

12.2.1 源程序文档化 241

12.2.2 数据说明 244

12.2.3 语句结构 244

12.2.4 输入和输出 246

12.3 小结 246

习题 246

第13章 软件测试 247

13.1 软件测试基础 247

13.1.1 软件测试的目的 247

13.1.2 软件测试的基本原则 248

13.1.3 白盒测试和黑盒测试 249

13.2 白盒测试 249

13.2.1 逻辑覆盖测试 249

13.2.2 逻辑表达式错误敏感的测试 254

13.2.3 基本路径测试 255

13.2.4 数据流测试 257

13.2.5 循环测试 258

13.3 黑盒测试 259

13.3.1 等价类划分 259

13.3.2 边界值分析 262

13.3.3 比较测试 263

13.3.4 错误猜测 263

13.3.5 因果图 263

13.4 测试策略 267

13.4.1 V模型 267

13.4.2 单元测试 268

13.4.3 集成测试 269

13.4.4 确认测试 272

13.4.5 系统测试 273

13.5 面向对象测试 274

13.5.1 面向对象语境对测试的影响 274

13.5.2 面向对象测试策略 275

13.5.3 面向对象测试用例设计 276

13.6 测试完成标准 276

13.7 调试 277

13.7.1 调试过程 277

13.7.2 调试方法 277

13.7.3 纠正错误 278

13.8 小结 279

习题 279

第14章 Web工程 281

14.1 WebApp的属性和类型 281

14.1.1 WebApp的属性 281

14.1.2 WebApp的类型 283

14.2 Web工程过程 284

14.2.1 过程框架 284

14.2.2 改善框架 285

14.2.3 Web工程的最佳实践 285

14.2.4 方法和工具 285

14.3 WebApp建模 286

14.3.1 WebApp需求建模 286

14.3.2 WebApp设计建模 288

14.4 WebApp质量管理 293

14.4.1 WebApp质量维度 293

14.4.2 WebApp的测试 294

14.4.3 WebApp配置管理 295

14.5 小结 296

习题 296

第15章 软件维护与再工程 297

15.1 软件维护 297

15.1.1 软件维护的概念 297

15.1.2 软件维护的过程 300

15.1.3 软件可维护性 302

15.2 再工程技术 305

15.2.1 再工程的概念 305

15.2.2 业务过程再工程 305

15.2.3 软件再工程过程 306

15.2.4 逆向工程 308

15.3 小结 309

习题 309

第16章 软件项目管理 310

16.1 软件项目管理概述 310

16.1.1 软件项目管理的关注点 310

16.1.2 软件项目管理的内容 313

16.2 软件度量 316

16.2.1 面向规模的度量 317

16.2.2 面向功能的度量 318

16.2.3 软件质量模型 321

16.2.4 程序复杂性度量 327

16.2.5 软件可靠性度量 329

16.3 软件项目估算 330

16.3.1 代码行、功能点和工作量估算 330

16.3.2 IBM估算模型 331

16.3.3 CoCoMo模型 332

16.3.4 Putnam模型 334

16.3.5 软件可靠性估算 335

16.4 项目进度管理 336

16.4.1 人员与工作量之间的关系 337

16.4.2 任务的分解与并行 337

16.4.3 任务工作量的确定 338

16.4.4 进度安排 339

16.5 风险管理 344

16.5.1 风险标识 344

16.5.2 风险预测 345

16.5.3 风险评估 345

16.5.4 风险管理和监控 346

16.6 软件项目的组织 348

16.6.1 组织结构的模式 348

16.6.2 程序设计小组的组织形式 348

16.6.3 人员配备 350

16.7 软件质量管理 351

16.7.1 软件质量保证 352

16.7.2 软件评审 353

16.8 软件配置管理 355

16.8.1 软件配置管理的基本概念 355

16.8.2 软件配置管理的主要活动 356

16.9 小结 359

习题 359

词汇索引 361

参考文献 371