《面向对象与传统软件工程 统一过程的理论与实践 原书第6版》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)Stephen R.Schach著;韩松,邓迎春译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2006
  • ISBN:7111179633
  • 页数:427 页
图书介绍:本书介绍了软件工程理论基础与生命周期。

第一部分 软件工程概述 3

第1章 软件工程的范畴 3

1.1 历史方面 4

1.2 经济方面 5

1.3 维护性方面 6

1.3.1 维护的传统和现代观点 8

1.3.2 交付后维护的重要性 9

1.4 需求、分析和设计方面 11

1.5 小组编程方面 13

1.6 为什么没有计划阶段 13

1.7 为什么没有测试阶段 14

1.8 为什么没有文档阶段 14

1.9 面向对象范型 15

1.10 正确看待面向对象范型 19

1.11 术语 19

1.12 道德问题 22

本章回顾 23

进一步阅读 23

习题 24

参考文献 25

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

2.1 理论上的软件开发 28

2.2 Winburg小型实例研究 28

2.3 Winburg小型实例研究心得 31

2.4 野鸭拖拉机公司小型实例研究 31

2.5 迭代和递增 32

2.6 修订的Winburg小型实例研究 34

2.7 迭代和递增的风险和其他方面 35

2.8迭 代和递增的控制 37

2.9 其他生命周期模型 37

2.9.1 编码-修补生命周期模型 37

2.9.2 瀑布生命周期模型 38

2.9.3 快速原型开发生命周期模型 39

2.9.4 极限编程 40

2.9.5 同步-稳定生命周期模型 42

2.9.6 螺旋生命周期模型 42

2.10 生命周期模型的比较 45

进一步阅读 46

本章回顾 46

习题 47

参考文献 48

第3章 软件过程 50

3.1 统一过程 51

3.2 面向对象范型内的迭代和递增 52

3.3 需求流 53

3.4 分析流 54

3.5 设计流 56

3.6 实现流 57

3.7 测试流 58

3.7.1 需求制品 58

3.7.2 分析制品 58

3.7.3 设计制品 58

3.7.4 实现制品 59

3.8 交付后维护 60

3.9 退役 61

3.10 统一过程的各阶段 61

3.10.1 开始阶段 62

3.10.2 细化阶段 63

3.10.3 构建阶段 64

3.10.4 转换阶段 64

3.11 一维与二维生命周期模型 65

3.12 改进软件过程 66

3.13 能力成熟度模型 66

3.14 软件过程改进方面的其他努力 69

3.15 软件过程改进的代价和收益 70

本章回顾 71

进一步阅读 72

习题 72

参考文献 73

第4章 软件小组 76

4.1 小组组织 76

4.2 民主小组方法 77

4.3 传统的主程序员小组方法 78

4.3.1 纽约时报项目 80

4.3.2 传统的主程序员小组方法的不实用性 80

4.4 主程序员小组和民主小组之外的编程小组 81

4.5 同步-稳定小组 82

4.6 极限编程小组 83

4.8 选择合适的小组组织 84

4.7 人员能力成熟度模型 84

本章回顾 85

进一步阅读 85

习题 85

参考文献 86

第5章 软件工程工具 88

5.1 逐步求精法 88

5.2 成本-效益分析法 92

5.3 软件度量 94

5.4 CASE 95

5.5 CASE的分类 95

5.6 CASE的范围 97

5.7.2 变种版 100

5.7.1 修订版 100

5.7 软件版本 100

5.8 配置控制 101

5.8.1 交付后维护期间的配置控制 102

5.8.2 基准 103

5.8.3 产品开发过程中的配置控制 103

5.9 建造工具 104

5.10 使用CASE技术提高生产力 104

本章回顾 105

进一步阅读 105

习题 106

参考文献 107

第6章 测试 109

6.1.1 软件质量保证 110

6.1 质量问题 110

6.1.2 管理独立 111

6.2 非执行测试 111

6.2.1 走查 111

6.2.2 管理走查 112

6.2.3 审查 113

6.2.4 审查与走查的对比 114

6.2.5 评审的优缺点 115

6.2.6 审查的度量 115

6.3 执行测试 115

6.4 应该测试什么 115

6.4.1 实用性 116

6.4.4 性能 117

6.4.3 健壮性 117

6.4.2 可靠性 117

6.4.5 正确性 118

6.5 测试与正确性证明 119

6.5.1 正确性证明的例子 119

6.5.2 正确性证明小型实例研究 121

6.5.3 正确性证明和软件工程 122

6.6 谁应当完成执行测试 124

6.7 测试什么时候停止 125

本章回顾 126

进一步阅读 126

习题 126

参考文献 128

7.1 什么是模块 130

第7章 从模块到对象 130

7.2 内聚 133

7.2.1 偶然性内聚 133

7.2.2 逻辑性内聚 133

7.2.3 时间性内聚 134

7.2.4 过程性内聚 135

7.2.5 通信性内聚 135

7.2.6 功能性内聚 135

7.2.7 信息性内聚 136

7.2.8 内聚示例 136

7.3 耦合 137

7.3.1 内容耦合 137

7.3.2 共用耦合 138

7.3.3 控制耦合 139

7.3.4 印记耦合 140

7.3.5 数据耦合 141

7.3.6 耦合示例 141

7.3.7 耦合的重要性 142

7.4 数据封装 143

7.4.1 数据封装和产品开发 144

7.4.2 数据封装和产品维护 146

7.5 抽象数据类型 150

7.6 信息隐藏 152

7.7 对象 154

7.8 继承、多态和动态绑定 156

7.9 面向对象范型 158

进一步阅读 161

习题 161

本章回顾 161

参考文献 162

第8章 可重用性和可移植性 165

8.1 重用的概念 165

8.2 重用的障碍 167

8.3 重用实例研究 168

8.3.1 Raytheon导弹系统部 168

8.3.2 欧洲航天局 169

8.5 设计和实现期间的重用 170

8.5.1 设计重用 170

8.4 对象和重用 170

8.5.2 应用框架 171

8.5.3 设计模式 172

8.5.4 软件体系结构 175

8.5.5 基于组件的软件工程 176

8.6 重用和交付后维护 176

8.7 可移植性 177

8.7.1 硬件的不兼容性 177

8.7.2 操作系统的不兼容性 178

8.7.3 数值计算软件的不兼容性 178

8.7.4 编译器的不兼容性 180

8.8 为什么需要可移植性 182

8.9.2 可移植的应用软件 183

8.9.1 可移植的系统软件 183

8.9 实现可移植性的技术 183

8.9.3 可移植的数据 184

本章回顾 185

进一步阅读 185

习题 186

参考文献 188

第9章 计划和估算 192

9.1 计划和软件过程 192

9.2 周期和成本估算 193

9.2.1 产品规模的度量 194

9.2.2 成本估算技术 197

9.2.3 中间COCOMO 199

9.2.5 跟踪周期和成本估算 202

9.2.4 COCOMOⅡ 202

9.3 软件项目管理计划的组成 203

9.4 软件项目管理计划框架 204

9.5 IEEE软件项目管理计划 205

9.6 计划测试 207

9.7 计划面向对象的项目 208

9.8 培训需求 208

9.9 文档标准 209

9.10 用于计划和估算的CASE工具 209

9.11 测试软件项目管理计划 210

本章回顾 210

进一步阅读 210

习题 211

参考文献 212

第二部分 软件生命周期的各个阶段第10章 需求 216

10.1 确定客户需要什么 216

10.2 需求阶段概述 217

10.3 理解应用域 217

10.4 商业模型 218

10.4.1 访谈 218

10.4.2 其他技术 219

10.4.3 用例 219

10.5 初始需求 221

10.6 对应用领域的初始理解:Osbert Oglesby实例研究 221

10.7 初始商业模型:Osbert Oglesby实例研究 222

10.8 初始需求:Osbert Oglesby实例研究 224

10.9 继续需求阶段:Osbert Oglesby实例研究 225

10.10 测试阶段:Osbert Oglesby实例研究 230

10.11 传统的需求阶段 231

10.12 快速原型开发 231

10.13 人的因素 233

10.14 重用快速原型 234

10.15 需求流的CASE工具 235

10.16 需求阶段的度量 235

10.17 需求阶段面临的挑战 235

本章回顾 237

进一步阅读 237

习题 237

参考文献 238

11.1 规格说明文档 240

第11章 传统的分析 240

11.2 非形式化规格说明 241

11.3 结构化系统分析 243

11.4 结构化系统分析:Osbert Oglesby实例研究 248

11.5 其他半形式化技术 249

11.6 建造实体-关系模型 250

11.7 有穷状态机 251

11.8 Petri网 257

11.9 Z 260

11.9.1 Z:电梯问题实例研究 261

11.9.2 Z的分析 262

11.10 其他的形式化技术 263

11.11 传统分析技术的比较 264

11.13 传统分析阶段的CASE工具 265

11.12 在传统分析阶段测试 265

11.14 传统分析阶段的度量 266

11.15 软件项目管理计划:Osbert Oglesby实例研究 266

11.16 传统分析阶段面临的挑战 267

本章回顾 267

进一步阅读 267

习题 268

参考文献 270

第12章 面向对象分析 274

12.1 分析流 275

12.2 抽象实体类 275

12.3 面向对象分析:电梯问题实例研究 275

12.4 功能建模:电梯问题实例研究 276

12.5 实体类建模:电梯问题实例研究 277

12.5.1 名词抽象 278

12.5.2 CRC卡片 279

12.6 动态建模:电梯问题实例研究 280

12.7 测试流:面向对象分析 282

12.8 抽象边界类和控制类 285

12.9 初始功能模型:Osbert Oglesby实例研究 285

12.10 初始类图:Osbert Oglesby实例研究 287

12.11 初始动态模型:Osbert Oglesby实例研究 292

12.12 抽象边界类:Osbert Oglesby实例研究 293

12.13 抽象控制类:Osbert Oglesby实例研究 294

12.14 求精用例:Osbert Oglesby实例研究 294

12.15.1 Buy a Masterpiece用例 296

12.15 用例实现:Osbert Oglesby实例研究 296

12.15.2 Buy a Masterwork用例 300

12.15.3 Buy Other Painting用例 301

12.15.4 其余5个用例 302

12.16 类图递增:Osbert Oglesby实例研究 304

12.17 测试流:Osbert Oglesby实例研究 305

12.18 统一过程中的规格说明文档 305

12.19 关于动作者和用例更详细的内容 306

12.20 用于面向对象分析阶段的CASE工具 307

12.21 面向对象分析阶段所面临的问题 307

本章回顾 308

进一步阅读 308

习题 309

参考文献 310

第13章 设计 312

13.1 设计和抽象 312

13.2 面向操作设计 313

13.3 数据流分析 313

13.3.1 小型实例研究:字数统计 314

13.3.2 数据流分析扩展 318

13.4 事务分析 319

13.5 面向数据设计 320

13.6 面向对象设计 321

13.7 面向对象设计:电梯问题实例研究 322

13.8 面向对象设计:Osbert Oglesby实例研究 324

13.9 设计流 328

13.10 测试流:设计 329

13.11 测试流:Osbert Oglesby实例研究 329

13.12 详细设计的形式化技术 329

13.13 实时设计技术 330

13.14 设计阶段的CASE工具 331

13.15 设计阶段的度量 331

13.16 设计阶段面临的挑战 332

本章回顾 333

进一步阅读 333

习题 334

参考文献 334

第14章 实现 337

14.1 编程语言的选择 337

14.2 第四代语言 339

14.3.1 使用一致和有意义的变量名 341

14.3 良好的编程实践 341

14.3.2 自文档代码的问题 342

14.3.3 使用参数 344

14.3.4 为增加可读性的代码编排 344

14.3.5 嵌套的if语句 344

14.4 编码标准 345

14.5 代码重用 346

14.6 集成 346

14.6.1 自顶向下的集成 347

14.6.2 自底向上的集成 348

14.6.3 三明治集成 349

14.6.5 集成的管理 350

14.6.4 面向对象产品的集成 350

14.7 实现阶段 351

14.8 实现阶段:Osbert Oglesby实例研究 351

14.9 测试阶段:实现 351

14.10 测试用例选择 351

14.10.1 规格说明测试与代码测试 352

14.10.2 规格说明测试的可行性 352

14.10.3 代码测试的可行性 352

14.11 黑盒单元测试技术 354

14.11.1 等价测试和边界值测试 355

14.11.2 功能测试 356

14.12 黑盒测试用例:Osbert Oglesby实例研究 357

14.13.1 结构测试:语句、分支和路径覆盖 360

14.13 玻璃盒单元测试技术 360

14.13.2 复杂性度量 361

14.14 代码走查和审查 362

14.15 单元测试技术的比较 362

14.16 净室 362

14.17 测试对象时潜在的问题 363

14.18 单元测试的管理方面 365

14.19 何时该重写而不是调试一个代码模块 366

14.20 集成测试 367

14.21 产品测试 367

14.22 验收测试 368

14.23 测试流:Osbert Oglesby实例研究 368

14.24.2 集成化开发环境 369

14.24 实现的CASE工具 369

14.24.1 软件开发全过程的CASE工具 369

14.24.3 商业应用软件开发环境 370

14.24.4 公共工具基础结构 370

14.24.5 开发环境的潜在问题 371

14.25 实现流的度量 371

14.26 实现流面临的挑战 372

本章回顾 372

进一步阅读 373

习题 374

参考文献 376

15.1 为什么交付后维护是必要的 379

15.2 对交付后维护程序员的要求是什么 379

第15章 交付后维护 379

15.3 交付后维护小型实例研究 381

15.4 交付后维护的管理 382

15.4.1 缺陷报告 382

15.4.2 批准对产品的修改 383

15.4.3 确保可维护性 384

15.4.4 反复维护造成的问题 384

15.5 面向对象软件的维护 384

15.6 交付后维护技能与开发技能 387

15.7 逆向工程 387

15.8 交付后维护阶段的测试 388

15.9 交付后维护的CASE工具 388

15.12 交付后维护阶段面临的挑战 389

本章小结 389

15.10 交付后维护的度量 389

15.11 交付后维护:Osbert Oglesby实例研究 389

进一步阅读 390

习题 390

参考文献 391

第16章 UML的进一步讨论 393

16.1 UML不是一种方法 393

16.2 类图 394

16.2.1 聚合 395

16.2.2 多态 395

16.2.3 组合 396

16.2.5 关联 397

16.2.4 泛化 397

16.3 注解 398

16.4 用例图 398

16.5 模板 398

16.6 交互图 399

16.7 状态图 401

16.8 活动图 403

16.9 包 404

16.10 组件图 404

16.11 配置图 404

16.12 UML图回顾 404

习题 405

进一步阅读 405

本章回顾 405

16.13 UML和迭代 405

参考文献 406

附录 407

附录A 学期项目:Amlet沙漠中Ophelia的Oasis 407

附录B 软件工程资源 409

附录C 需求流:Osbert Oglesby实例研究 411

附录D 结构化系统分析:Osbert Oglesby实例研究 412

附录E 分析流:Osbert Oglesby实例研究 415

附录F 软件项目管理计划:Osbert Oglesby实例研究 416

附录G 设计流:Osbert Oglesby实例研究 419

附录H 实现流:Osbert Oglesby实例研究(C++版本) 425

附录I 实现流:Osbert Oglesby实例研究(Java版本) 426

附录J 测试流:Osbert Oglesby实例研究 427