《面向对象与传统软件工程 原书第5版》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)Stephen R.Schach著;韩松等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2003
  • ISBN:7111124774
  • 页数:465 页
图书介绍:本书为软件工程的经典教科书,论述了软件工程的各个方面。

第一部分 软件工程介绍 3

第1章 软件工程的范畴 3

1.1 历史方面 4

1.2 经济方面 6

1.3 维护性方面 7

1.4 规格说明和设计阶段 10

1.5 小组编程方面 12

1.6 面向对象范型 13

1.7 术语 17

本章回顾 18

进一步阅读指导 18

思考题 19

参考文献 20

第2章 软件过程 23

2.1 客户、开发人员和用户 24

2.2 需求阶段 25

2.2.1 需求阶段测试 26

2.2.2 需求阶段文档 26

2.3 规格说明阶段 26

2.3.1 规格说明阶段测试 28

2.3.2 规格说明阶段文档 29

2.4 设计阶段 29

2.4.1 设计阶段测试 29

2.6 集成阶段 30

2.5.2 实现阶段文档 30

2.6.1 集成阶段测试 30

2.4.2 设计阶段文档 30

2.5 实现阶段 30

2.5.1 实现阶段测试 30

2.6.2 集成阶段文档 31

2.7 维护阶段 31

2.7.1 维护阶段测试 32

2.7.2 维护阶段文档 32

2.8 退役 32

2.9 软件生产中存在的问题:本质的和偶发的 32

2.9.1 复杂性 33

2.9.3 可变性 35

2.9.2 一致性 35

2.9.4 不可见性 36

2.9.5 没有银弹吗 36

2.10 改进软件过程 37

2.11 能力成熟度模型 37

2.12 软件过程改进方面的其他努力 40

2.13 软件过程改进的成本和效益 40

本章回顾 42

进一步阅读指导 42

思考题 43

参考文献 44

第3章 软件生命周期模型 47

3.1 建造-修补模型 47

3.2 瀑布模型 48

3.3 快速原型开发模型 51

3.4 增量模型 52

3.5 极限编程 54

3.6 同步-稳定模型 56

3.7 螺旋模型 56

3.8 面向对象的生命周期模型 60

3.9 生命周期模型的比较 61

思考题 62

进一步阅读指导 62

本章回顾 62

参考文献 63

第4章 软件小组 65

4.1 小组组织 65

4.2 民主小组方法 66

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

4.3.1 纽约时报项目 68

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

4.4 超越主程序员小组和民主小组 69

4.5 同步-稳定小组 71

4.6 极限编程小组 72

思考题 73

本章回顾 73

进一步阅读指导 73

参考文献 74

第5章 软件工程工具 75

5.1 逐步求精法 75

逐步求精法示例 75

5.2 成本-效益分析法 79

5.3 软件度量 80

5.4 CASE 81

5.5 CASE的分类 82

5.6 CASE的范围 83

5.7.1 修订版 86

5.7 软件版本 86

5.7.2 变种版 87

5.8 配置控制 87

5.8.1 产品维护期间的配置控制 89

5.8.2 基线 89

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

5.9 建造工具 90

5.10 使用CASE技术提高生产率 90

本章回顾 91

进一步阅读指导 92

思考题 92

参考文献 93

第6章 测试 97

6.1 质量问题 98

6.1.1 软件质量保证 98

6.1.2 管理独立 98

6.2 非执行测试 99

6.2.1 走查 99

6.2.2 管理走查 99

6.2.3 审查 100

6.2.4 审查与走查的对比 102

6.2.5 评审的长处和短处 102

6.2.6 评审的度量 102

6.3 执行测试 102

6.4 应该测试什么 103

6.4.1 实用性 104

6.4.2 可靠性 104

6.4.3 健壮性 104

6.4.4 性能 105

6.4.5 正确性 105

6.5 测试与正确性证明 106

6.5.1 正确性证明的例子 107

6.5.2 正确性证明案例研究 109

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

6.6 谁来完成执行测试 112

进一步阅读指导 113

本章回顾 113

6.7 何时停止测试 113

思考题 114

参考文献 115

第7章 从模块到对象 119

7.1 什么是模块 119

7.2 内聚 121

7.2.1 偶然性内聚 122

7.2.2 逻辑性内聚 122

7.2.3 时间性内聚 123

7.2.4 过程性内聚 123

7.2.5 通信性内聚 123

7.2.7 信息性内聚 124

7.2.6 功能性内聚 124

7.2.8 内聚示例 125

7.3 耦合 125

7.3.1 内容耦合 126

7.3.2 共用耦合 126

7.3.3 控制耦合 127

7.3.4 印记耦合 128

7.3.5 数据耦合 128

7.3.6 耦合示例 129

7.3.7 耦合的重要性 130

7.4 数据封装 130

7.4.1 数据封装和产品开发 132

7.4.2 数据封装和产品维护 133

7.5 抽象数据类型 138

7.6 信息隐藏 139

7.7 对象 141

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

7.9 对象的内聚和耦合 145

7.10 面向对象范型 145

本章回顾 147

进一步阅读指导 147

思考题 148

参考文献 149

8.1 复用的概念 151

第8章 可复用性、可移植性和互操作性 151

8.2 复用的障碍 152

8.3 复用案例研究 153

8.3.1 Raytheon导弹系统部 153

8.3.2 东芝软件工厂 155

8.3.3 NASA软件 155

8.3.4 GTE数据服务 156

8.3.5 惠普公司 156

8.3.6 欧洲航天局 157

8.4 对象和复用 158

8.5 设计和实现阶段的复用 158

8.5.1 设计复用 158

8.5.2 应用框架 159

8.5.3 设计模式 160

8.5.4 软件体系结构 162

8.6 复用和维护 164

8.7 可移植性 164

8.7.1 硬件的不兼容性 165

8.7.2 操作系统的不兼容性 165

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

8.7.4 编译器的不兼容性 167

8.8 为什么需要可移植性 170

8.9 实现可移植性的技术 171

8.9.1 可移植的系统软件 171

8.9.2 可移植的应用软件 172

8.9.3 可移植的数据 173

8.10 互操作性 173

8.10.1 COM 173

8.10.2 CORBA 174

8.10.3 COM和CORBA的比较 174

8.11 互操作性的未来趋势 175

本章回顾 175

进一步阅读指导 176

思考题 177

参考文献 179

第9章 计划和估算 185

9.1 计划和软件过程 185

9.2 周期和成本估算 186

9.2.1 产品规模的度量 187

9.2.2 成本估算的技术 190

9.2.3 中间COCOMO 192

9.2.4 COCOM0Ⅱ 194

9.2.5 跟踪周期和成本估算 195

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

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

9.5 IEEE软件项目管理计划 197

9.6 测试计划 198

9.7 计划面向对象的项目 199

9.9 文档标准 200

9.8 培训需求 200

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

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

本章回顾 201

进一步阅读指导 201

思考题 202

参考文献 203

第二部分 软件生命周期的各个阶段 209

第10章 需求阶段 209

10.1 需求获取 209

10.1.1 访谈 210

10.1.2 情景 210

10.1.3 其他需求获取技术 211

10.2 需求分析 212

10.3 快速原型开发 212

10.4 人的因素 213

10.5 作为一种规格说明技术的快速原型开发 215

10.6 复用快速原型 216

10.7 快速原型开发模型的管理含意 217

10.8 快速原型开发的试验 218

10.9 需求获取和需求分析技术 219

10.10 在需求分析阶段测试 220

10.11 需求阶段的CASE工具 220

10.13 面向对象的需求 221

10.12 需求阶段的度量 221

10.14 “空中美食”案例研究:需求阶段 222

10.15 “空中美食”案例研究:快速原型 224

10.16 需求阶段面临的挑战 225

本章回顾 226

进一步阅读指导 227

思考题 227

参考文献 228

第11章 规格说明阶段 231

11.1 规格说明文档 231

11.2 非形式化规格说明 232

案例研究:文本处理 233

11.3 结构化系统分析 233

Sally的软件商店 234

11.4 其他半形式化的技术 239

11.5 建造实体-关系模型 240

11.6 有限状态机 241

电梯问题:有限状态机 243

11.7 Petri网 246

11.8 Z规格说明语言 250

11.8.1 电梯问题:Z规格说明 250

11.8.2 Z的分析 252

11.9 其他形式化技术 253

11.10 规格说明技术的比较 253

11.11 在规格说明阶段测试 254

11.12 规格说明阶段的CASE工具 255

11.13 规格说明阶段的度量 255

11.14 “空中美食”案例研究:结构化系统分析 255

11.15 “空中美食”案例研究:软件项目管理计划 257

11.16 规格说明阶段面临的挑战 257

本章回顾 258

进一步阅读指导 258

思考题 259

参考文献 261

第12章 面向对象分析阶段 265

12.1 面向对象分析 265

12.3 用例建模 267

12.2 电梯问题:面向对象分析 267

12.4 类建模 268

12.4.1 名词提取 269

12.4.2 CRC卡片 270

12.5 动态建模 271

12.6 在面向对象分析阶段测试 273

12.7 面向对象分析阶段的CASE工具 276

12.8 “空中美食”案例研究:面向对象分析 276

12.9 面向对象分析阶段面临的挑战 281

本章回顾 281

进一步阅读指导 281

思考题 282

参考文献 283

第13章 设计阶段 285

13.1 设计和抽取 285

13.2 面向行为设计 286

13.3 数据流分析 286

13.3.1 数据流分析示例 287

13.3.2 扩展 290

13.4 事务分析 291

13.5 面向数据设计 292

13.6 面向对象设计 292

13.7 电梯问题:面向对象设计 293

13.8 详细设计的形式化技术 299

13.9 实时设计技术 299

13.10 设计期间的测试 300

13.11 设计阶段的CASE工具 301

13.12 设计阶段的度量 301

13.13 “空中美食”案例研究:面向对象设计 302

13.14 设计阶段面临的挑战 308

本章回顾 309

进一步阅读指导 309

思考题 309

参考文献 310

第14章 实现阶段 313

14.1 编程语言的选择 313

14.2 第四代语言 315

14.3 良好的编程习惯 317

14.4 编码标准 321

14.5 模块复用 322

14.6 模块测试用例选择 322

14.6.1 规格说明测试与代码测试 322

14.6.2 规格说明测试的可行性 323

14.6.3 代码测试的可行性 323

14.7 黑盒模块测试技术 325

14.7.1 等价测试和边界值测试 325

14.7.2 功能测试 326

14.8 玻璃盒模块测试技术 327

14.8.1 结构测试:语句覆盖、分支覆盖以及路径覆盖 327

14.8.2 复杂性度量 328

14.10 模块测试技术的比较 330

14.9 代码走查和审查 330

14.11 净室 331

14.12 测试对象时潜在的问题 332

14.13 模块测试的管理方面 334

14.14 何时该重写而不是调试一个模块 334

14.15 实现阶段的CASE工具 335

14.16 “空中美食”案例研究:黑盒测试用例 335

14.17 实现阶段面临的挑战 337

本章回顾 337

进一步阅读指导 337

思考题 338

参考文献 339

15.1 实现与集成介绍 343

第15章 实现与集成阶段 343

15.1.1 自顶向下的实现与集成 344

15.1.2 自底向上的实现与集成 345

15.1.3 三明治式实现与集成 345

15.1.4 面向对象产品的实现与集成 347

15.1.5 实现与集成阶段的管理问题 347

15.2 实现与集成期间的测试 347

15.3 图形用户界面的集成测试 348

15.4 产品测试 348

15.5 验收测试 349

15.8 集成化开发环境 350

15.6 实现与集成阶段的CASE工具 350

15.7 软件开发全过程的CASE工具 350

15.9 商业应用软件开发环境 351

15.10 公共工具基础结构 352

15.11 开发环境的潜在问题 352

15.12 实现与集成阶段的度量 352

15.13 “空中美食”案例研究:实现与集成阶段 353

15.14 实现与集成阶段面临的挑战 353

本章回顾 353

进一步阅读指导 353

思考题 354

参考文献 355

16.1 维护的必要性 357

第16章 维护阶段 357

16.2 对维护程序员的要求 358

16.3 维护工作案例研究 359

16.4 维护管理 360

16.4.1 错误报告 360

16.4.2 批准对产品的修改 361

16.4.3 确保软件的可维护性 362

16.4.4 反复维护造成的问题 362

16.5 面向对象软件的维护 363

16.6 维护技能与开发技能 365

16.7 逆向工程 365

16.9 维护阶段的CASE工具 366

16.8 维护阶段的测试 366

16.10 维护阶段的度量 367

16.11 “空中美食”案例研究:维护阶段 367

16.12 维护阶段面临的挑战 367

本章小结 368

进一步阅读指导 368

思考题 368

参考文献 369

附录 375

附录A Broadlands地区儿童医院 375

附录B 软件工程资料 379

附录C “空中美食”案例研究:C快速原型 381

附录D “空中美食”案例研究:Java快速原型 382

附录E “空中美食”案例研究:结构化系统分析 383

附录F “空中美食”案例研究:软件项目管理计划 389

附录G “空中美食”案例研究:面向对象的分析 393

附录H “空中美食”案例研究:C++实现的设计 394

附录I “空中美食”案例研究:Java实现的设计 407

附录J “空中美食”案例研究:黑盒测试用例 419

附录K “空中美食”案例研究:C++源代码 424

附录L “空中美食”案例研究:Java源代码 425

参考文献 427

索引 451