《实用软件工程》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:殷人昆,郑人杰,马素霞等编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302222002
  • 页数:513 页
图书介绍:本教材共10章,系统地介绍软件工程的概念、方法和技术,包括软件生存周期、需求分析、设计、编码、测试、维护等。力图让学习者不但能理解相关知识,而且能学会运用相关技能。

第1章 软件工程概述 1

1.1 软件的概念、特点和分类 1

1.1.1 软件的概念及特点 1

1.1.2 软件的分类 2

1.1.3 软件的发展及软件危机 3

1.2 软件工程 5

1.2.1 软件工程的定义 5

1.2.2 软件工程的框架 6

1.2.3 软件工程知识体系及知识域 7

1.2.4 软件工程的基本原理 10

1.3 软件生存周期与软件过程 11

1.3.1 软件生存周期的基本任务 11

1.3.2 软件过程 13

1.4 软件过程模型 13

1.4.1 瀑布模型 14

1.4.2 快速原型模型 15

1.4.3 形式化系统开发模型 16

1.4.4 面向复用的开发模型 17

1.4.5 增量模型 18

1.4.6 螺旋模型 19

1.4.7 喷泉模型 21

1.4.8 智能模型 21

1.4.9 快速应用开发模型 22

1.4.10 Rational统一开发过程 24

1.5 问题解决和范型 26

1.5.1 范型 27

1.5.2 流行的范型 27

第2章 计算机系统工程 32

2.1 基于计算机的系统 32

2.2 计算机系统工程 33

2.2.1 识别用户的要求 33

2.2.2 系统分析和结构设计 35

2.2.3 可行性研究 36

2.2.4 建立成本和进度的限制 36

2.2.5 生成系统需求规格说明 36

2.3 系统分析与结构设计 38

2.3.1 系统分析的层次 38

2.3.2 业务过程工程和产品工程建模 39

2.3.3 系统模型模板 41

2.3.4 系统文档与评审 45

2.4 可行性研究 46

2.4.1 经济可行性 46

2.4.2 技术可行性 49

2.4.3 法律可行性 50

2.4.4 用户操作可行性 50

2.4.5 方案的选择和折衷 50

2.4.6 可行性研究报告 51

2.5 其他系统描述方法 52

2.5.1 系统框图和系统流程图 52

2.5.2 HIPO建模 53

第3章 面向对象方法与UML 57

3.1 面向对象系统的概念 57

3.1.1 面向对象系统的概念 57

3.1.2 对象 58

3.1.3 类与封装 59

3.1.4 继承 60

3.1.5 多态性和动态绑定 61

3.1.6 消息通信 62

3.1.7 对象生存周期 63

3.2 统一建模语言UML概述 63

3.2.1 什么是建模 63

3.2.2 UML发展历史 64

3.2.3 UML的特点 65

3.2.4 UML的视图 66

3.3 UML的模型元素 67

3.3.1 UML的事物 68

3.3.2 UML中的关系 69

3.4 UML中的图 75

3.4.1 外部视图 75

3.4.2 内部视图 80

3.5 UML的元模型结构 86

3.6 UML建模工具Rational Rose 87

3.6.1 Rose的特点 88

3.6.2 Rose简介 89

3.6.3 Rose的基本操作 90

3.6.4 在Rose环境下建立UML模型 98

第4章 软件需求工程 108

4.1 软件需求工程基础 108

4.1.1 软件需求的定义和层次 108

4.1.2 软件需求工程过程 111

4.1.3 需求工程方法 114

4.2 需求获取 115

4.2.1 需求获取的任务和原则 115

4.2.2 需求获取的过程 116

4.2.3 需求的表达 120

4.2.4 用逆向沟通改善需求的质量 123

4.3 传统的分析建模方法 124

4.3.1 数据建模 125

4.3.2 功能建模 127

4.3.3 行为建模 132

4.3.4 数据字典 136

4.3.5 基本加工逻辑说明 139

4.4 面向对象的分析建模方法 142

4.4.1 面向对象分析建模概述 142

4.4.2 识别类或对象 143

4.4.3 识别关系(结构) 149

4.4.4 标识类的属性和服务 150

4.4.5 分析模型评审 152

4.5 原型化方法 153

4.5.1 软件原型的分类 153

4.5.2 快速原型开发模型 154

4.5.3 原型开发技术 157

4.6 需求规格说明 159

4.6.1 软件需求规格说明的目标 159

4.6.2 软件需求规格说明编制的原则 159

4.6.3 软件需求规格说明模板 161

4.6.4 SRS和DRD的质量要求 163

4.7 软件需求评审 165

4.7.1 正式的需求评审 165

4.7.2 需求评审中的常见风险 167

4.8 软件需求管理 167

4.8.1 需求管理的概念 167

4.8.2 需求规格说明的版本控制 168

4.8.3 需求跟踪 169

4.8.4 需求变更请求的管理 172

第5章 软件设计工程 175

5.1 软件设计的目标与准则 175

5.1.1 性能准则 175

5.1.2 可靠性准则 175

5.1.3 成本准则 176

5.1.4 维护准则 176

5.1.5 最终用户准则 177

5.2 软件设计工程的任务 177

5.2.1 软件设计的概念 177

5.2.2 软件设计的阶段与任务 178

5.2.3 软件设计的过程 179

5.3 创建良好设计的原则 180

5.3.1 分而治之和模块化 180

5.3.2 模块独立性 181

5.3.3 尽量降低耦合性 181

5.3.4 尽量提高内聚性 184

5.3.5 提高抽象层次 186

5.3.6 复用性设计 187

5.3.7 灵活性设计 187

5.3.8 预防过期 188

5.3.9 可移植性设计 188

5.3.10 可测试性设计 188

5.3.11 防御性设计 189

5.4 传统的面向过程的设计方法 189

5.4.1 结构化设计与结构化分析的关系 190

5.4.2 软件结构及表示工具 190

5.4.3 典型的数据流类型和系统结构 194

5.4.4 变换流映射 197

5.4.5 事务流映射 200

5.4.6 软件模块结构改进的方法 201

5.4.7 接口设计 205

5.5 面向对象的系统设计 205

5.5.1 子系统分解 206

5.5.2 问题域部分的设计 208

5.5.3 人机交互部分的设计 210

5.5.4 任务管理部分的设计 213

5.5.5 数据管理部分的设计 214

5.6 对象设计 216

5.6.1 使用模式设计对象 216

5.6.2 接口规格说明设计 220

5.6.3 重构对象设计模型 222

5.6.4 优化对象设计模型 222

5.7 处理过程设计 223

5.7.1 结构化程序设计 223

5.7.2 程序流程图 224

5.7.3 N-S图 227

5.7.4 PAD图 228

5.7.5 程序设计语言PDL 230

5.7.6 判定表 230

5.7.7 HIPO 232

5.8 软件设计规格说明 232

5.8.1 软件(结构)设计说明(SDD) 232

5.8.2 数据库(顶层)设计说明(DBDD) 233

5.8.3 接口设计说明(IDD) 234

5.9 软件设计评审 235

5.9.1 概要设计评审的检查内容 235

5.9.2 详细设计评审的检查内容 236

第6章 体系结构设计与设计模式 238

6.1 软件体系结构的概念 238

6.1.1 什么是体系结构 238

6.1.2 体系结构的重要作用 239

6.1.3 构件的定义与构件之间的关系 239

6.2 体系结构设计与风格 241

6.2.1 体系结构设计的过程 241

6.2.2 系统环境表示 241

6.2.3 体系结构的结构风格 242

6.2.4 体系结构的控制模型 247

6.2.5 体系结构的模块分解 249

6.3 特定领域的软件体系结构 250

6.3.1 类属模型 250

6.3.2 参考模型 251

6.4 分布式系统结构 252

6.4.1 多处理器体系结构 252

6.4.2 客户机服务器体系结构 252

6.4.3 分布式对象体系结构 256

6.4.4 代理 257

6.4.5 聚合和联邦体系 258

6.5 软件体系结构的评价 260

6.6 体系结构描述语言 261

6.7 设计模式 262

6.7.1 什么是设计模式 263

6.7.2 设计模式分类 264

6.7.3 创建型设计模式 264

6.7.4 结构型设计模式 271

6.7.5 行为型设计模式 281

6.7.6 设计模式如何解决设计问题 294

6.7.7 如何使用设计模式 298

第7章 软件实现 300

7.1 软件实现的过程与任务 300

7.2 程序设计方法概述 301

7.2.1 结构化程序设计 302

7.2.2 面向对象的程序设计方法 304

7.2.3 极限编程 308

7.3 编程风格与编码标准 312

7.3.1 源程序文档化 312

7.3.2 数据说明规范化 314

7.3.3 程序代码结构化 315

7.3.4 输入/输出风格可视化 318

7.3.5 编程规范 320

7.4 编程语言 324

7.4.1 编程语言特性的比较 325

7.4.2 编程语言的分类 328

7.4.3 编程语言的选择 334

7.5 程序效率与性能分析 335

7.5.1 算法对效率的影响 335

7.5.2 影响存储器效率的因素 336

7.5.3 影响输入/输出的因素 336

7.6 程序复杂性 336

7.6.1 代码行度量法 337

7.6.2 McCabe度量法 337

7.6.3 Henry-Kafura的信息流度量 339

7.6.4 Thayer复杂性度量 339

7.6.5 Halstead的软件科学 341

7.6.6 软件复杂性的综合度量 343

第8章 软件测试工程 344

8.1 软件测试的任务 344

8.1.1 软件测试的目的和定义 344

8.1.2 软件测试的原则 345

8.1.3 软件测试的对象 347

8.1.4 测试信息流 347

8.1.5 软件测试的生存周期模型 348

8.1.6 软件的确认和验证 349

8.1.7 软件测试文档 349

8.2 软件错误 352

8.2.1 按错误的影响和后果分类 352

8.2.2 按错误的性质和范围分类 352

8.2.3 按软件生存周期阶段分类 353

8.2.4 错误统计 354

8.3 人工测试 354

8.3.1 桌面检查 354

8.3.2 代码检查 356

8.3.3 走查 358

8.4 软件开发生存周期中的测试活动 359

8.4.1 软件需求分析阶段的测试活动 360

8.4.2 软件设计阶段的测试活动 361

8.4.3 编程及单元测试阶段的测试活动 363

8.4.4 集成测试阶段的测试活动 364

8.4.5 系统测试阶段的测试活动 366

8.4.6 验收测试 366

8.4.7 运行和维护阶段的测试活动 367

8.4.8 回归测试 368

8.5 面向对象的测试 369

8.5.1 面向对象软件测试的问题 369

8.5.2 面向对象软件测试的模型 371

8.5.3 面向对象分析的测试 372

8.5.4 面向对象设计的测试 372

8.5.5 面向对象编程的测试 373

8.5.6 面向对象程序的单元测试 373

8.5.7 面向对象程序的集成测试 373

8.5.8 面向对象软件的系统测试 374

8.6 单元测试 374

8.6.1 单元测试的定义和目标 374

8.6.2 单元测试环境 375

8.6.3 单元测试策略 376

8.6.4 单元测试分析 377

8.6.5 面向对象程序的单元测试 379

8.7 集成测试 381

8.7.1 集成测试的定义和目标 381

8.7.2 集成测试环境 381

8.7.3 集成测试策略 382

8.7.4 集成测试分析 387

8.7.5 面向对象程序的集成测试 390

8.8 系统测试 391

8.8.1 系统测试的定义与目标 391

8.8.2 系统测试环境 391

8.8.3 系统测试策略 392

8.8.4 系统测试分析 400

8.9 程序调试 401

8.9.1 程序调试的步骤 401

8.9.2 几种主要的调试方法 402

8.9.3 调试的原则 404

第9章 软件测试用例设计 406

9.1 测试用例设计概述 406

9.1.1 测试用例的重要性 406

9.1.2 测试用例数和软件规模的关系 407

9.1.3 测试用例设计说明的书写规范 407

9.2 软件测试用例设计方法 409

9.2.1 黑盒测试方法(Black-Box Testing) 409

9.2.2 白盒测试方法(White-Box Testing) 410

9.3 白盒测试用例设计方法 411

9.3.1 逻辑覆盖 411

9.3.2 判定和循环结构测试 416

9.3.3 基本路径测试 418

9.4 黑盒测试用例设计方法 420

9.4.1 等价类划分 420

9.4.2 边界值分析 424

9.4.3 判定表法 426

9.4.4 因果图法 428

9.4.5 其他黑盒测试用例设计方法 431

9.4.6 选择测试方法的综合策略及工作步骤 432

9.5 单元测试用例设计 433

9.5.1 单元测试用例设计的步骤 433

9.5.2 单元测试用例设计方法 434

9.5.3 构建类声明的测试用例 437

9.5.4 根据状态图构建测试用例 440

9.6 集成测试的测试用例设计 442

9.6.1 集成测试用例设计的步骤 442

9.6.2 基于协作图生成集成测试用例设计 443

9.6.3 继承关系的测试用例设计 449

9.7 系统测试用例的设计 450

9.7.1 基于场景设计测试用例 450

9.7.2 基于功能图设计测试用例 455

9.7.3 基于有限状态机的系统级线索设计测试用例 457

9.7.4 基于UML的系统级线索测试用例设计 461

第10章 软件维护 462

10.1 软件维护的概念 462

10.1.1 软件维护的定义 462

10.1.2 影响维护工作量的因素 463

10.1.3 软件维护的策略 464

10.1.4 维护成本 465

10.2 软件维护的活动 466

10.2.1 维护机构 466

10.2.2 软件维护申请报告 466

10.2.3 软件维护过程模型 467

10.2.4 软件维护的一般工作流程 468

10.2.5 维护记录文档 469

10.2.6 维护评价 469

10.3 程序修改的步骤及修改的副作用 470

10.3.1 结构化维护与非结构化维护 470

10.3.2 软件维护面临的问题 471

10.3.3 分析和理解程序 472

10.3.4 评估修改范围 474

10.3.5 修改程序 474

10.3.6 重新验证程序 476

10.4 面向对象软件的维护 478

10.5 软件可维护性 480

10.5.1 可维护性的外部视图 480

10.5.2 影响可维护性的内部质量属性 481

10.5.3 其他可维护性的度量 483

10.6 提高可维护性的方法 488

10.6.1 建立明确的软件质量目标和优先级 488

10.6.2 使用提高软件质量的技术和工具 488

10.6.3 进行明确的质量保证审查 492

10.6.4 选择可维护的程序设计语言 495

10.6.5 改进程序的文档 496

10.7 遗留系统的再工程 496

10.7.1 遗留系统的演化 496

10.7.2 软件再工程 498

10.7.3 遗留系统的现代化改造的过程 501

10.7.4 重构与逆向工程 502

10.7.5 系统体系结构的重构 505

10.7.6 程序理解策略和模型 507

10.7.7 影响程序理解的因素及对策 509

参考文献 511