《软件工程模型与方法》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:肖丁,吴建林,周春燕等编
  • 出 版 社:北京:北京邮电大学出版社
  • 出版年份:2008
  • ISBN:9787563515356
  • 页数:551 页
图书介绍:

第1章 软件工程概述 1

1.1 计算机软件 1

1.1.1 软件的定义 1

1.1.2 软件的特点 2

1.1.3 软件的分类 3

1.2 软件的发展和软件危机 6

1.2.1 软件发展阶段 6

1.2.2 软件危机 8

1.2.3 软件危机的解决途径 9

1.3 软件工程 10

1.3.1 软件工程定义 10

1.3.2 软件工程要素 11

1.3.3 软件工程的目标和原则 11

1.3.4 软件工程基本原理 12

1.4 通信软件工程 14

1.4.1 通信系统 14

1.4.2 通信软件 16

1.4.3 通信软件工程 19

1.5 软件工程知识体系 20

1.5.1 软件工程知识体系指南简介 20

1.5.2 软件工程知识体系知识域 21

习题 23

第2章 软件生命周期模型 24

2.1 软件工程过程 24

2.2 软件生命周期 24

2.3 软件过程模型 25

2.4 传统软件生命周期模型 26

2.4.1 瀑布模型 26

2.4.2 V模型和W模型 28

2.4.3 原型方法 30

2.4.4 演化模型 38

2.4.5 增量模型 39

2.4.6 螺旋模型 40

2.4.7 喷泉模型 42

2.4.8 构件组装模型 43

2.4.9 快速应用开发模型 44

2.5 新型软件生命周期模型 45

2.5.1 RUP 45

2.5.2 敏捷模型 51

习题 54

第3章 系统需求分析及可行性分析3.1 基于计算机系统的系统分析 55

3.1.1 计算机系统工程 55

3.1.2 系统需求识别 56

3.2 可行性分析 57

3.2.1 可行性分析的任务和步骤 57

3.2.2 经济可行性分析 57

3.2.3 技术可行性分析 60

3.3 系统体系结构建模 61

3.3.1 构建系统级体系结构 62

3.3.2 系统结构的规格说明定义 64

3.3.3 分配与权衡 65

3.4 系统流程图 66

3.4.1 符号 66

3.4.2 示例 67

3.4.3 分层 68

3.5 系统分析的总结 68

3.5.1 系统规格说明书 68

3.5.2 可行性分析报告模板 69

习题 71

第4章 软件需求分析 72

4.1 什么是“需求” 72

4.1.1 需求的定义 72

4.1.2 需求分析失败的案例 73

4.2 软件需求分析的目标及任务 74

4.3 软件需求分析建模的原则和方法 75

4.3.1 数据建模 76

4.3.2 功能和行为建模 77

4.3.3 问题划分 77

4.4 软件需求工程 77

4.5 软件需求分析过程 79

4.5.1 需求获取的对象及注意事项 79

4.5.2 需求获取 80

4.5.3 需求类别 83

4.5.4 需求分析与综合 84

4.5.5 需求建模 85

4.5.6 编制需求分析文档 86

4.5.7 需求确认 88

4.5.8 需求分析评审 88

习题 89

第5章 结构化需求分析 90

5.1 结构化分析发展简史 90

5.2 分析模型的结构 91

5.2.1 数据建模与范式 91

5.2.2 功能建模与数据流图 95

5.2.3 系统行为建模 101

5.2.4 数据词典 104

5.3 软件需求规格说明书 110

习题 112

第6章 软件设计 113

6.1 软件设计的目标 113

6.2 软件设计的历史和变迁 113

6.3 软件设计在开发阶段中的重要性 114

6.4 软件设计的过程 115

6.5 软件概要设计的步骤 115

6.5.1 制定设计规范 115

6.5.2 软件系统结构的总体设计 115

6.5.3 处理方式设计 116

6.5.4 数据结构设计 116

6.5.5 可靠性设计 116

6.5.6 编写概要设计阶段的文档 117

6.5.7 概要设计评审 117

6.6 软件详细设计的步骤 117

6.7 软件设计原则 118

6.7.1 抽象化 119

6.7.2 模块化 120

6.7.3 信息隐藏 121

6.7.4 模块的独立性 121

6.7.5 降低模块间耦合度的方法 126

6.8 软件设计基础 127

6.8.1 自顶向下,逐步细化 127

6.8.2 系统控制结构 127

6.8.3 结构划分和结构图 128

6.8.4 数据结构 129

6.8.5 软件过程 130

6.9 软件体系结构简介 131

6.9.1 软件体系结构概述 131

6.9.2 软件体系结构的定义 131

6.9.3 软件体系结构三要素 132

6.9.4 软件体系结构风格 133

习题 141

第7章 结构化设计方法 142

7.1 系统功能结构图结构 142

7.1.1 系统结构图中的模块 142

7.1.2 变换型数据流与变换型系统结构图 143

7.1.3 事务型数据流与事务型系统结构图 143

7.2 变换映射 145

7.3 事务映射 147

7.4 变换-事务混合型的系统结构图 148

7.5 改进系统功能结构图的启发式原则 149

7.5.1 模块功能的完善化 149

7.5.2 消除重复功能,改善软件结构 149

7.5.3 模块的作用范围应在控制范围之内 150

7.5.4 尽可能减少高扇出结构 150

7.5.5 避免或减少使用病态连接 151

7.5.6 模块的大小要适中 152

7.5.7 设计功能可预测的模块,避免过分受限制的模块 152

7.5.8 软件包应满足设计约束和可移植性 152

7.6 数据设计和文件设计的过程与原则 153

7.6.1 数据设计 153

7.6.2 文件设计 154

7.7 设计的后处理 155

7.7.1 处理说明 155

7.7.2 接口说明 155

7.7.3 数据结构说明 155

7.7.4 概要设计评审 156

7.7.5 设计的优化 156

7.8 详细设计 157

7.8.1 程序流程图 157

7.8.2 N-S图 158

7.8.3 PAD 159

7.8.4 判定表 160

7.8.5 PDL 162

7.9 界面设计 163

7.9.1 置用户于控制之下 164

7.9.2 减少用户的记忆负担 164

7.9.3 保持界面一致 165

7.9.4 界面设计模型 165

7.9.5 用户界面设计过程 166

7.9.6 界面设计需要注意的常见问题 166

7.9.7 界面设计评估和优化 168

7.10 HIPO设计工具 169

7.10.1 可视目录表 169

7.10.2 IPO图 170

7.10.3 利用HIPO进行迭代式细化设计 171

7.11 Jackson系统开发方法 172

7.11.1 JSD方法的步骤 172

7.11.2 Jackson程序设计方法 172

7.11.3 Jackson的三种结构冲突类型 175

习题 177

第8章 面向对象基础 178

8.1 面向对象基本思想 178

8.2 面向对象的主要概念和基本原则 180

8.2.1 主要概念 180

8.2.2 基本原则 184

8.3 几种经典的面向对象分析和设计方法 188

8.3.1 OOA/OOD 188

8.3.2 Booch方法 189

8.3.3 对象建模技术 190

8.3.4 面向对象软件工程方法 191

8.4 统一建模语言简介 191

8.4.1 UML的出现和发展 191

8.4.2 UML概述 192

8.4.3 UML中的扩展机制 194

8.4.4 UML中的图 195

8.4.5 基于UML的面向对象软件开发过程 227

习题 228

第9章 面向对象分析 229

9.1 面向对象分析综述 229

9.2 用例建模 231

9.2.1 确定系统边界 232

9.2.2 识别参与者 232

9.2.3 识别用例 234

9.2.4 其他需求分析工件 246

9.3 创建领域模型 246

9.3.1 识别概念类 246

9.3.2 添加关联 249

9.3.3 添加属性 252

9.4 绘制系统顺序图 252

9.5 创建系统操作契约 255

习题 258

第10章 面向对象设计 259

10.1 面向对象设计综述 259

10.2 把模型层次化 260

10.2.1 用户界面层 261

10.2.2 控制器/处理层 261

10.2.3 业务/领域层 262

10.2.4 持久化层 262

10.2.5 系统层 262

10.3 面向对象设计原则 263

10.3.1 单一职责原则 263

10.3.2 开闭原则 264

10.3.3 里氏替换原则 266

10.3.4 依赖倒置原则 267

10.3.5 接口隔离原则 269

10.3.6 组合/聚合复用原则 270

10.3.7 迪米特法则 271

10.4 设计用例实现方案 271

10.4.1 类职责分配模式 272

10.4.2 类职责分配 276

10.4.3 持久化层设计 284

10.4.4 创建设计类图 288

10.4.5 startUp用例 292

习题 293

第11章 软件实现 294

11.1 软件实现概述 294

11.1.1 软件实现的目标 294

11.1.2 软件实现的任务 294

11.2 程序设计语言与集成开发环境 294

11.2.1 程序设计语言简介 294

11.2.2 程序设计语言的选择 296

11.2.3 集成开发环境简介 297

11.2.4 集成开发环境的选择 298

11.3 程序设计方法 298

11.3.1 结构化程序设计方法 298

11.3.2 面向对象程序设计方法 300

11.4 程序设计风格 303

11.4.1 源程序文档化 304

11.4.2 数据说明 304

11.4.3 语句结构 305

11.4.4 输入和输出(I/O) 306

11.4.5 错误处理 307

11.5 程序效率 308

11.5.1 讨论效率的准则 308

11.5.2 算法对效率的影响 308

11.5.3 存储效率 308

11.5.4 输入/输出效率 309

习题 309

第12章 软件测试 310

12.1 软件测试基础 310

12.1.1 软件测试概述 310

12.1.2 软件的可测试性 311

12.1.3 软件测试的对象 313

12.1.4 软件测试信息流 313

12.1.5 软件测试步骤 314

12.1.6 软件测试流程 315

12.1.7 软件测试与软件开发各阶段的关系 316

12.1.8 程序错误的分类 316

12.2 软件测试方法与技术 319

12.2.1 测试技术分类 319

12.2.2 白盒测试技术 321

12.2.3 黑盒测试技术 328

12.2.4 测试方法选择的综合策略 333

12.2.5 针对专门环境和应用的测试 333

12.3 软件测试过程 335

12.3.1 单元测试 335

12.3.2 集成测试 337

12.3.3 确认测试 338

12.3.4 系统测试 339

12.3.5 何时停止测试 340

12.4 面向对象的测试方法 341

12.4.1 面向对象测试与传统测试的区别 342

12.4.2 面向对象的测试模型 342

12.4.3 面向对象分析的测试 343

12.4.4 面向对象设计的测试 345

12.4.5 面向对象编程的测试 346

12.4.6 面向对象的单元测试 347

12.4.7 面向对象的集成测试 348

12.4.8 面向对象的系统测试 349

12.5 程序的静态分析方法 350

12.5.1 源程序静态分析 350

12.5.2 人工测试 351

12.6 软件调试方法 352

12.6.1 调试过程 352

12.6.2 调试原则 353

12.6.3 主要调试方法 354

12.7 软件测试工具 356

12.7.1 软件测试工具分类 356

12.7.2 常用的软件测试工具简介 357

12.8 软件的可靠性 360

12.8.1 基本概念 360

12.8.2 软件可靠性衡量方法 360

习题 362

第13章 软件维护 364

13.1 软件维护概述 364

13.1.1 软件维护的定义 364

13.1.2 软件维护的分类 364

13.1.3 影响软件维护工作量的因素 365

13.1.4 软件维护中的典型问题 366

13.2 软件维护活动 366

13.2.1 维护机构 366

13.2.2 软件维护申请报告 367

13.2.3 软件维护工作流程 367

13.2.4 软件维护记录及其评价 369

13.3 修改程序的步骤和副作用 369

13.3.1 分析和理解程序 370

13.3.2 修改程序 370

13.3.3 修改程序的副作用 371

13.3.4 重新验证程序 372

13.4 软件的可维护性 373

13.5 软件的逆向工程和再工程 376

13.5.1 基本概念 376

13.5.2 逆向工程 377

13.5.3 软件再工程 378

习题 383

第14章 软件项目管理 384

14.1 项目和软件项目 384

14.2 项目管理一般过程 385

14.3 软件项目管理过程 386

14.4 风险分析 388

14.4.1 风险识别 389

14.4.2 风险量化 392

14.4.3 风险应对计划制定 394

14.4.4 风险监控 395

14.5 软件项目度量 395

14.5.1 软件度量 395

14.5.2 软件项目规模度量 398

14.6 软件项目估算 401

14.6.1 明确软件项目范围 402

14.6.2 估算项目资源 403

14.6.3 估算成本和工作量 404

14.7 项目进度安排 415

14.7.1 工作量与人数关系 417

14.7.2 工作量分配 417

14.7.3 项目任务及其关系 418

14.7.4 进度安排 419

14.8 项目跟踪和调整 423

14.9 项目组织结构 425

习题 428

第15章 软件过程管理 429

15.1 软件过程框架 429

15.1.1 通用过程框架 429

15.1.2 过程模式 432

15.2 软件过程建模 434

15.2.1 软件过程特点 434

15.2.2 软件过程建模技术 435

15.2.3 ISO/IEC 12207-1995的过程分类 438

15.2.4 过程模型裁剪 444

15.3 软件能力成熟度模型 444

15.3.1 软件过程能力 444

15.3.2 软件组织的成熟性 445

15.3.3 CMM背景 446

15.3.4 CMM内容 447

15.3.5 CMM层次结构 450

15.3.6 CMM应用 454

15.4 能力成熟度模型集成 456

15.4.1 阶段式CMMI 456

15.4.2 连续式CMMI 459

15.4.3 CMMI和CMM的对比 460

15.5 软件过程改进模型 461

15.6 个体软件过程 464

15.7 小组软件过程 466

习题 468

第16章 软件质量管理 469

16.1 软件质量相关概念 469

16.1.1 软件质量 469

16.1.2 质量控制 470

16.1.3 质量保证 471

16.1.4 质量成本 471

16.2 软件质量模型 471

16.2.1 软件质量特性 471

16.2.2 Boehm软件质量模型 472

16.2.3 McCall软件质量模型 475

16.2.4 ISO软件质量模型 478

16.2.5 软件质量特性之间的竞争 479

16.3 软件质量度量与评价 480

16.3.1 软件质量度量方法 480

16.3.2 软件质量评价方法 481

16.3.3 几个重要质量特性的度量 482

16.4 软件质量保证 489

16.4.1 质量保证的概念 489

16.4.2 软件质量保证活动 490

16.4.3 质量检查 492

16.4.4 软件评审中的正式技术评审 493

16.5 软件质量保证实施 497

16.5.1 软件质量保证体系 497

16.5.2 质量目标、度量方法和质量保证实施步骤 500

16.6 软件配置管理 502

16.6.1 软件配置管理基本概念 502

16.6.2 软件配置管理过程 504

16.7 ISO9000质量标准简介 509

16.7.1 质量管理体系标准的产生 510

16.7.2 ISO9000族标准的构成 512

16.7.3 质量管理原则 513

16.7.4 质量管理体系基础 514

16.7.5 质量管理体系要求 518

16.7.6 ISO9000族标准的特点及实施意义 519

习题 519

第17章 软件工程标准与环境17.1 软件工程标准 520

17.1.1 软件工程标准化的意义 520

17.1.2 软件工程标准的制定与推行 521

17.1.3 软件工程标准的类型与层次 522

17.1.4 软件工程的国家标准 525

17.2 软件文档 527

17.2.1 什么是软件文档 527

17.2.2 软件文档的作用 528

17.2.3 文档的分类 528

17.2.4 软件文档的工作 529

17.2.5 对文档编制的质量要求 530

17.2.6 文档的管理和维护 531

17.3 软件开发环境 532

17.3.1 软件开发环境概述 532

17.3.2 软件开发环境分类 533

17.3.3 软件开发环境的特点 534

17.3.4 软件开发环境的组成与结构 535

17.4 软件工具 535

17.4.1 软件工具的基本概念 536

17.4.2 软件工具的发展 536

17.4.3 软件工具的作用与功能 537

17.4.4 软件工具的分类 537

17.5 计算机辅助软件工程 538

17.5.1 CASE相关概念 538

17.5.2 CASE分类 540

17.5.3 集成化CASE环境 541

17.5.4 CASE生存期 544

17.5.5 CASE与软件工程 544

17.5.6 常用CASE工具简介 545

习题 549

参考文献 550