《软件工程 实践者的研究方法》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)(R.S.普雷斯曼)Roger S.Pressman著;黄柏素,梅宏译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:1999
  • ISBN:7111072820
  • 页数:579 页
图书介绍:本书以丰富的信息资源、广泛的角度深刻地论述了软件工程的方方面面,内容包括软件工程的相关语境、管理软件项目的方法、各种软件工程的方法论、面向对象的方法、客户/服务器软件工程、CASE等。本书内容新颖、见解独到,适合大学计算机专业高年级学生、研究生学习,也适合软件工程开发者、组织者、管理者参考。

第一部分 产品和过程 1

第1章 产品 1

1.1 软件的发展 2

1.1.3 软件的竞争 4

1.1.2 老化的软件工厂 4

1.1.1 产业的观点 4

1.2 软件 5

1.2.1 软件特征 6

1.2.2 软件构件 8

1.2.3 软件应用 9

1.4 软件神话 10

1.3 软件:地平线上的危机 10

参考文献 12

1.5 小结 12

推荐阅读文献及其他信息源 13

思考题 13

2.1.1 过程、方法和工具 15

2.1 软件工程——一种层次化技术 15

第2章 过程 15

2.1.2 软件工程的一般视图 16

2.2 软件过程 17

2.3 软件过程模型 19

2.4 线性顺序模型 20

2.5 原型模型 22

2.6 RAD模型 23

2.7.1 增量模型 25

2.7 演化软件过程模型 25

2.7.2 螺旋模型 27

2.7.3 构件组装模型 28

2.7.4 并发开发模型 29

2.9 第四代技术 31

2.8 形式化方法模型 31

2.10 过程技术 32

2.12 小结 33

2.11 产品和过程 33

参考文献 34

推荐阅读文献及其他信息源 35

思考题 35

3.1 管理的范围 39

第3章 项目管理的概念 39

第二部分 软件项目的管理 39

3.2 人员 40

3.1.3 过程 40

3.1.1 人员 40

3.1.2 问题 40

3.2.2 项目负责人 41

3.2.1 项目参与者 41

3.2.3 软件项目组 42

3.2.4 协调和通信问题 44

3.3.2 问题分解 46

3.3.1 软件范围 46

3.3 问题 46

3.4.1 合并问题和过程 47

3.4 过程 47

3.4.2 过程分解 48

参考文献 49

3.6 小结 49

3.5 项目 49

思考题 50

推荐阅读文献及其他信息源 51

4.1 测度、度量和指标 53

第4章 软件过程和项目的度量 53

4.2.1 过程度量和软件过程改进 54

4.2 过程和项目领域中的度量 54

4.2.2 项目度量 57

4.3.1 面向规模的度量 58

4.3 软件测量 58

4.3.2 面向功能的度量 59

4.3.3 扩展的功能点度量 61

4.5 软件质量度量 63

4.4 调和不同的度量方法 63

4.5.2 测量质量 64

4.5.1 概述影响质量的因素 64

4.5.3 缺陷排除效率 65

4.6 在软件过程中集成度量 66

参考文献 67

4.7 小结 67

思考题 68

推荐阅读文献及其他信息源 69

5.1 对估算的观察 71

第5章 软件项目计划 71

5.3.1 获取定义软件范围所需的信息 72

5.3 软件范围 72

5.2 项目计划目标 72

5.3.2 一个范围定义的例子 73

5.4.1 人力资源 75

5.4 资源 75

5.4.3 环境资源 76

5.4.2 可复用软件资源 76

5.6 分解技术 77

5.5 软件项目估算 77

5.6.2 基于问题的估算 78

5.6.1 软件规模估算 78

5.6.3 一个基于LOC估算的例子 79

5.6.4 一个基于FP估算的例子 80

5.6.5 基于过程的估算 81

5.6.6 一个基于过程估算的例子 82

5.7.2 COCOMO模型 83

5.7.1 估算模型的结构 83

5.7 经验估算模型 83

5.7.3 软件方程式 85

5.8 自行开发或购买的决策 86

5.8.1 创建决策树 87

5.10 小结 88

5.9 自动估算工具 88

5.8.2 外购 88

思考题 89

参考文献 89

推荐阅读文献及其他信息源 90

6.2 软件风险 92

6.1 被动和主动的风险策略 92

第6章 风险管理 92

6.3 识别风险 93

6.3.2 商业影响风险 94

6.3.1 产品规模风险 94

6.3.4 过程风险 95

6.3.3 客户相关的风险 95

6.3.5 技术风险 96

6.3.7 与人员数目及经验相关的风险 97

6.3.6 开发环境风险 97

6.4.1 建立风险表 98

6.4 风险预测 98

6.3.8 风险因素和驱动因子 98

6.4.3 风险评估 100

6.4.2 评估风险影响 100

6.5 风险缓解、监控和管理 101

6.7 RMMM计划 103

6.6 安全性风险和危险 103

思考题 104

参考文献 104

6.8 小结 104

推荐阅读文献及其他信息源 105

7.1 基本概念 107

第7章 项目进度安排及跟踪 107

7.1.1 关于“延迟”的评注 108

7.1.2 基本原则 109

7.2.1 一个例子 110

7.2 人员和工作量之间的关系 110

7.3 为软件项目定义任务集合 111

7.2.3 工作量分布 111

7.2.2 一个经验关系 111

7.3.1 严格度 112

7.3.3 计算任务集合选择因子的值 113

7.3.2 定义适应性准则 113

7.3.4 解释TSS值并选择任务集合 114

7.5 主要任务的求精 115

7.4 选择软件工程任务 115

7.7 进度安排 118

7.6 定义任务网络 118

7.7.2 跟踪进度 119

7.7.1 时间表 119

7.9 小结 122

7.8 项目计划 122

思考题 123

参考文献 123

推荐阅读文献及其他信息源 124

8.1 质量概念 125

第8章 软件质量保证 125

8.1.2 质量控制 126

8.1.1 质量 126

8.1.4 质量的成本 127

8.1.3 质量保证 127

8.2 质量运动 128

8.3.1 背景 129

8.3 软件质量保证 129

8.4 软件复审 130

8.3.2 SQA活动 130

8.4.2 缺陷的放大和消除 131

8.4.1 软件缺陷对成本的影响 131

8.5.1 复审会议 133

8.5 正式技术复审 133

8.5.3 复审指南 134

8.5.2 复审报告和记录保存 134

8.6 SQA的形式化方法 135

8.7 统计质量保证 136

8.8 软件可靠性 137

8.8.2 软件的安全和危险的分析 138

8.8.1 可靠性和可用性的度量 138

8.9 SQA计划 139

8.10 ISO9000质量标准 140

8.10.2 ISO9001标准 141

8.10.1 ISO对质量保证系统的方法 141

参考文献 142

8.11 小结 142

思考题 143

推荐阅读文献及其他信息源 144

9.1 软件配置管理 147

第9章 软件配置管理 147

9.1.1 基线 148

9.1.2 软件配置项 149

9.2 SCM过程 150

9.3 软件配置中对象的标识 151

9.4 版本控制 153

9.5 变化控制 154

9.8 SCM标准 157

9.7 状态报告 157

9.6 配置审计 157

参考文献 158

9.9 小结 158

推荐阅读文献及其他信息源 159

思考题 159

10.1 基于计算机的系统 161

第10章 系统工程 161

第三部分 传统软件工程方法 161

10.2 系统工程层次结构 163

10.2.1 系统建模 164

10.2.2 信息工程:概述 165

10.2.3 产品工程:概述 167

10.4 信息策略计划 168

10.3 信息工程 168

10.4.1 企业建模 169

10.4.2 业务级数据建模 170

10.5 业务域分析 171

10.5.1 处理建模 172

10.6 产品工程 173

10.5.2 信息流建模 173

10.6.3 可行性研究 176

10.6.2 说明客户需要 176

10.6.1 系统分析 176

10.6.4 经济分析 177

10.6.5 技术分析 179

10.7 系统体系结构建模 180

10.8 系统建模和仿真 182

10.9 系统规约 183

10.10 小结 184

思考题 185

参考文献 185

推荐阅读文献及其他信息源 187

11.1 需求分析 188

第11章 分析概念和原则 188

11.2.1 过程的启动 189

11.2 通信技术 189

11.2.2 便利的应用规约技术 190

11.2.3 质量功能部署 192

11.3 分析原则 193

11.3.1 信息域 194

11.3.2 建模 195

11.3.3 划分 196

11.3.4 基本视图和实现视图 197

11.4.1 选择原型方法 198

11.4 软件原型 198

11.5 规约 199

11.4.2 原型方法和工具 199

11.5.2 表示 200

11.5.1 规约原则 200

11.5.3 软件需求规约 201

11.6 规约复审 202

参考文献 203

11.7 小结 203

思考题 204

推荐阅读文献及其他信息源 205

12.1 简史 206

第12章 分析建模 206

12.2 分析模型的元素 207

12.3.1 数据对象、属性和关系 208

12.3 数据建模 208

12.3.2 基数和形态 210

12.3.3 实体—关系图 211

12.4.1 数据流图 214

12.4 功能建模和信息流 214

12.4.2 针对实时系统的扩展 216

12.4.3 Ward和Mellor扩展 217

12.4.4 Hatley和Pirbhai扩展 219

12.5 行为建模 220

12.6 结构化分析的技巧 222

12.6.1 创建实体—关系图 223

12.6.2 创建数据流模型 225

12.6.3 创建控制流模型 227

12.6.4 控制规约 229

12.6.5 加工规约 230

12.7 数据字典 231

12.8.2 Jackson系统开发 233

12.8.1 数据结构化系统开发 233

12.8 其他传统分析方法概述 233

参考文献 234

12.9 小结 234

12.8.3 SADT 234

思考题 235

推荐阅读文献及其他信息源 236

13.1 软件设计和软件工程 238

第13章 设计概念和原则 238

13.2.1 设计和软件质量 239

13.2 设计过程 239

13.3 设计原则 240

13.2.2 软件设计的演化 240

13.4.1 抽象 241

13.4 设计概念 241

13.4.3 模块化 242

13.4.2 求精 242

13.4.4 软件体系结构 244

13.4.5 控制层次 245

13.4.6 结构划分 246

13.4.8 软件过程 247

13.4.7 数据结构 247

13.5 有效的模块设计 248

13.4.9 信息隐蔽 248

13.5.2 内聚 249

13.5.1 功能独立性 249

13.5.3 耦合 250

13.6 针对有效模块化的设计启发 251

13.8 设计文档 253

13.7 设计模型 253

参考文献 254

13.9 小结 254

思考题 256

推荐阅读文献及其他信息源 256

14.1 数据设计 258

第14章 设计方法 258

14.2.1 贡献者 259

14.2 体系结构设计 259

14.3.1 变换流 260

14.3 体系结构设计过程 260

14.2.2 应用域 260

14.4.1 一个实例 261

14.4 变换映射 261

14.3.2 事务流 261

14.4.2 设计步骤 262

14.5.2 设计步骤 268

14.5.1 一个实例 268

14.5 事务映射 268

14.7 体系结构设计优化 272

14.6 设计的后处理 272

14.9 人机界面设计 273

14.8.2 用户界面设计 273

14.8 接口设计 273

14.8.1 内部和外部接口设计 273

14.9.1 界面设计模型 274

14.9.3 设计问题 275

14.9.2 任务分析和建模 275

14.9.5 设计评估 277

14.9.4 实现工具 277

14.10.1 一般交互 279

14.10 界面设计指南 279

14.10.3 数据输入 280

14.10.2 信息显示 280

14.11.2 图形设计符号 281

14.11.1 结构化程序设计 281

14.11 过程设计 281

14.11.3 表格设计符号 284

14.11.5 一个PDL实例 285

14.11.4 程序设计语言 285

参考文献 288

14.12 小结 288

思考题 290

推荐阅读文献及其他信息源 292

15.1 系统考虑 294

第15章 实时系统的设计 294

15.2.1 集成和性能问题 295

15.2 实时系统 295

15.2.2 中断处理 296

15.2.4 实时操作系统 297

15.2.3 实时数据库 297

15.2.6 任务同步和通信 298

15.2.5 实时语言 298

15.3.1 实时系统分析的数学工具 299

15.3 实时系统的分析和仿真 299

15.3.2 仿真和建模技术 302

15.4 实时设计 306

参考文献 307

15.5 小结 307

推荐阅读文献及其他信息源 309

思考题 309

16.1.1 测试目标 311

16.1 软件测试基础 311

第16章 软件测试技术 311

16.1.3 可测试性 312

16.1.2 测试原则 312

16.2 测试用例设计 314

16.4.1 流图符号 315

16.4 基本路径测试 315

16.3 白盒测试 315

16.4.3 导出测试用例 318

16.4.2 环形复杂性 318

16.4.4 图矩阵 321

16.5.1 条件测试 322

16.5 控制结构测试 322

16.5.2 数据流测试 324

16.5.3 循环测试 325

16.6.1 基于图的测试方法 326

16.6 黑盒测试 326

16.6.2 等价划分 328

16.6.3 边界值分析 329

16.7.1 GUI测试 330

16.7 针对专门环境和应用的测试 330

16.6.4 比较测试 330

16.7.3 测试文档和帮助设施 331

16.7.2 客户/服务器体系结构的测试 331

16.7.4 实时系统测试 332

参考文献 333

16.8 小结 333

思考题 334

推荐阅读文献及其他信息源 335

17.1.1 验证和确认 337

17.1 软件测试的策略途径 337

第17章 软件测试策略 337

17.1.2 软件测试的组织 338

17.1.3 一种软件测试策略 339

17.1.4 测试完成的标准 340

17.3.1 单元测试考虑 342

17.3 单元测试 342

17.2 策略问题 342

17.3.2 单元测试规程 344

17.4 集成测试 345

17.4.1 自顶向下集成 346

17.4.2 自底向上集成 347

17.4.3 回归测试 348

17.4.5 集成测试文档 349

17.4.4 关于集成测试的讨论 349

17.5.1 确认测试的标准 350

17.5 确认测试 350

17.6 系统测试 351

17.5.3 Alpha和Beta测试 351

17.5.2 配置复审 351

17.6.3 压力测试 352

17.6.2 安全测试 352

17.6.1 恢复测试 352

17.7.1 调试过程 353

17.7 调试的技巧 353

17.6.4 性能测试 353

17.7.3 调试方法 354

17.7.2 心理考虑 354

17.8 小结 355

参考文献 356

推荐阅读文献及其他信息源 357

思考题 357

18.1 软件质量 359

第18章 软件的技术度量 359

18.1.1 McCall的质量因素 360

18.1.3 到量化视图的变迁 362

18.1.2 FURPS 362

18.2.2 测度原则 363

18.2.1 技术度量的挑战 363

18.2 软件技术度量框架 363

18.2.3 有效软件度量的属性 364

18.3.1 基于功能的度量 365

18.3 分析模型的度量 365

18.3.2 “撞击值”度量 366

18.3.3 规约质量的度量 368

18.4.1 高层设计度量 369

18.4 设计模型的度量 369

18.4.2 构件级设计度量 371

18.4.3 界面设计度量 373

18.5 源代码度量 374

18.6 对测试的度量 375

18.8 小结 376

18.7 对维护的度量 376

参考文献 377

思考题 378

推荐阅读文献及其他信息源 379

第19章 面向对象的概念和原则 381

第四部分 面向对象的软件工程 381

19.1 面向对象的范型 382

19.2 面向对象概念 383

19.2.1 类和对象 385

19.2.4 消息 386

19.2.3 操作方法和服务 386

19.2.2 属性 386

19.2.5 封装、继承和多态 388

19.3.1 标识类和对象 390

19.3 标识对象模型的元素 390

19.3.2 表示属性 393

19.3.4 完成对象定义 394

19.3.3 定义操作 394

19.4.1 OO的公共过程框架 395

19.4 面向对象软件项目的管理 395

19.4.2 面向对象项目的度量和估算 396

19.4.3 一种OO估算和进度安排方法 397

19.4.4 面向对象项目的跟踪过程 398

参考文献 399

19.5 小结 399

推荐阅读文献及其他信息源 400

思考题 400

20.1.1 传统方法和OO方法 402

20.1 面向对象的分析 402

第20章 面向对象分析 402

20.1.2 OOA概述 403

20.2.2 领域分析过程 406

20.2.1 复用和领域分析 406

20.2 领域分析 406

20.3 00分析模型的类属成分 408

20.4.1 使用实例 409

20.4 OOA过程 409

20.4.2 类—责任—协作者建模 410

20.4.3 定义结构和层次 414

20.4.4 定义主题和子系统 415

20.5 对象—关系模型 416

20.6 对象—行为模型 418

20.6.2 状态表示 419

20.6.1 用使用实例标识事件 419

参考文献 422

20.7 小结 422

思考题 423

推荐阅读文献及其他信息源 424

21.1 面向对象系统的设计 426

第21章 面向对象设计 426

21.1.1 传统方法和OO方法 427

21.1.2 设计问题 428

21.1.3 OOD概述 429

21.2 OO设计模型的类属成分 432

21.3.1 划分分析模型 433

21.3 系统设计过程 433

21.3.3 任务管理构件 434

21.3.2 并发性和子系统分配 434

21.3.6 人机界面构件 435

21.3.5 资源管理构件 435

21.3.4 数据管理构件 435

21.3.7 子系统间通信 436

21.4.1 对象描述 437

21.4 对象设计过程 437

21.4.2 设计算法和数据结构 438

21.4.3 程序构件和接口 439

21.5.2 在设计中使用设计模式 442

21.5.1 描述设计模式 442

21.5 设计模式 442

参考文献 443

21.7 小结 443

21.6 面向对象编程 443

思考题 444

推荐阅读文献及其他信息源 445

22.1 扩大测试的视角 447

第22章 面向对象测试 447

22.2.2 OOA和OOD模型的一致性 448

22.2.1 OOA和OOD模型的正确性 448

22.2 测试OOA和OOD模型 448

22.3 面向对象的测试策略 449

22.4 OO软件的测试用例设计 450

22.3.3 在OO语境中的有效性测试 450

22.3.1 在OO语境中的单元测试 450

22.3.2 在OO语境中的集成测试 450

22.4.3 基于故障的测试 451

22.4.2 传统测试用例设计方法的可用性 451

22.4.1 OO概念的测试用例设计的含义 451

22.4.4 OO编程对测试的影响 452

22.4.6 基于场景的测试设计 453

22.4.5 测试用例和类层次 453

22.4.7 测试表层结构和深层结构 454

22.5.2 在类级别上的划分测试 455

22.5.1 对OO类的随机测试 455

22.5 在类级别上可用的测试方法 455

22.6.1 多个类测试 456

22.6 类间测试用例设计 456

22.6.2 从行为模型导出的测试 457

参考文献 458

22.7 小结 458

推荐阅读文献及其他信息源 459

思考题 459

23.2.1 局部化 461

23.2 区别性的特征 461

第23章 面向对象系统的技术度量 461

23.1 面向对象度量的目的 461

23.3 对OO设计模型的度量 462

23.2.5 抽象 462

23.2.2 封装 462

23.2.3 信息隐蔽 462

23.2.4 继承 462

23.4.1 CK度量套件 463

23.4 面向类的度量 463

23.4.2 Lorenz和Kidd建议的度量 465

23.6 对面向对象测试的度量 466

23.5 面向操作的度量 466

23.8 小结 467

23.7 对面向对象项目的度量 467

思考题 468

参考文献 468

推荐阅读文献及其他信息源 469

24.1 基本概念 471

第24章 形式化方法 471

第五部分 软件工程高级课题 471

24.1.1 少量的形式化方法的不足 472

24.1.3 形式化方法概念 473

24.1.2 软件开发中的数学 473

24.2.1 集合和构造性规约 477

24.2 数学预备知识 477

24.2.2 集合运算符 478

24.2.4 序列 480

24.2.3 逻辑运算符 480

24.3 应用数学符号描述形式规约 481

24.4 形式化规约语言 482

24.5 用Z表示一个软件构件的例子 483

24.6 形式化方法的十条戒律 485

24.8 小结 486

24.7 形式化方法——未来之路 486

思考题 487

参考文献 487

推荐阅读文献及其他信息源 488

25.1.1 净室策略 490

25.1 净室方法 490

第25章 净室软件工程 490

25.2 功能规约 492

25.1.2 什么使得净室独特? 492

25.2.1 黑盒规约 493

25.2.3 清晰盒规约 494

25.2.2 状态盒规约 494

25.3.1 设计求精和验证 495

25.3 设计求精和验证的优点 495

25.3.2 设计验证的优点 498

25.4.1 统计的使用测试 499

25.4 净室测试 499

25.5 小结 500

25.4.2 认证 500

参考文献 501

推荐阅读文献及其他信息源 502

思考题 502

26.1.1 复用的障碍 505

26.1 管理问题 505

第26章 软件复用 505

26.1.2 硬件类比 506

26.2 复用过程 507

26.1.3 建立复用途径的一些建议 507

26.2.1 可复用的软件制品 508

26.3 领域工程 509

26.2.2 一个过程模型 509

26.3.1 领域分析过程 510

26.3.3 结构建模和结构点 511

26.3.2 领域特征 511

26.4 建造可复用构件 512

26.4.1 为了复用的分析和设计 512

26.4.2 构造方法 513

26.4.3 基于构件的开发 514

26.5 分类和检索构件 515

26.5.1 描述可复用构件 515

26.5.2 复用环境 517

26.6 软件复用经济学 517

26.6.1 对质量、生产率和成本的影响 517

26.6.2 使用结构点的成本分析 518

26.6.3 复用度量 519

26.7 小结 519

参考文献 520

思考题 521

推荐阅读文献及其他信息源 522

27.1 业务过程再工程 524

27.1.1 业务过程 524

第27章 再工程 524

27.1.2 业务过程再工程的原则 526

27.1.3 BPR模型 527

27.2 软件再工程 528

27.2.1 软件维护 528

27.1.4 几句警告 528

27.2.2 软件再工程过程模型 529

27.3 逆向工程 532

27.3.1 理解处理的逆向工程 533

27.3.2 理解数据的逆向工程 533

27.3.3 用户界面的逆向工程 534

27.4 重构 535

27.4.1 代码重构 535

27.4.2 数据重构 536

27.5 正向工程 536

27.5.1 向客户/服务器体系结构的正向工程 537

27.5.2 向面向对象体系结构的正向工程 538

27.5.3 用户界面的正向工程 538

27.7 小结 539

参考文献 539

27.6 再工程经济学 539

思考题 541

推荐阅读文献及其他信息源 542

第28章 客户/服务器软件工程 543

28.1 客户/服务器系统的结构 543

28.1.1 C/S系统的软件构件 544

28.1.2 软件构件的分布 545

28.1.3 分布应用构件的指南 545

28.1.4 连接C/S软件构件 546

28.1.5 中间件和对象请求代理体系结构 546

28.2 对C/S系统的软件工程 547

28.4 对C/S系统的设计 548

28.4.1 传统设计方法 548

28.3 分析建模问题 548

28.4.2 数据库设计 549

28.4.3 某设计方法的概述 550

28.4.4 加工设计的迭代 551

28.5 测试问题 552

28.5.1 整体C/S测试策略 552

28.5.2 C/S测试策略 553

28.6小结 554

参考文献 554

思考题 555

推荐阅读文献及其他信息源 555

29.1 什么是CASE? 557

29.2 构造CASE的积木块 557

第29章 计算机辅助软件工程 557

29.3 CASE工具分类 559

29.4 集成化CASE环境 562

29.5 集成体系结构 563

29.6 CASE中心库 563

29.6.1 在I-CASE中中心库的角色 564

29.6.2 特征和内容 564

29.7 小结 567

参考文献 567

思考题 568

推荐阅读文献及其他信息源 568

第30章 未来之路 570

30.1 软件的重要性——再论 570

30.2 变化的范围 571

30.3 人及他们建造系统的方式 572

30.4 “新”的软件过程 574

30.5 表示信息的新模式 574

30.6 技术作为推动力 576

30.7 结束语 577

思考题 578

推荐阅读文献及其他信息源 578

参考文献 578