Software engineering:A practitioner’s approach

副标题:无

作   者:(美)[R.S.普雷斯曼]Roger S.Pressman著;黄柏素,梅宏译

分类号:

ISBN:9787111072829

微信扫一扫,移动浏览光盘

简介

   本书以丰富的信息资源、广泛的角度深刻地论述了软件工程的方方面面,内容包括软件工程的相关语境、管理软件项目的方法、各种软件工程的方法论、面向对象的方法、客户/服务器软件工程、CASE等。本书内容新颖、见解独到,适合大学计算机专业高年级学生、研究生学习,也适合软件工程开发者、组织者、管理者参考。   

目录

目 录

作者简介

译者简介

前言

第一部分 产品和过程

第1章 产品 1

1.1 软件的发展 褎 1.1 产业的观点 4

1.1.2 老化的软件工厂 4

1.1.3 软件的竞争 5

1.2 软件 5

1.2.1 软件特征 6

1.2.2 软件构件 8

1.2.3 软件应用 9

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

1.4 软件神话 10

1.5 小结 12

参考文献 12

思考题 13

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

第2章 过程 15

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

2.1.1 过程、方法和工具 15

2.1.2 软件工程的一般视图 16

2.2 软件过程 17

2.3 软件过程模型 19

2.4 线性顺序模型 20

2.5 原型模型 22

2.6 rad模型 23

2.7 演化软件过程模型 25

2.7.1 增量模型 25

2.7.2 螺旋模型 27

2.7.3 构件组装模型 28

2.7.4 并发开发模型 29

2.8 形式化方法模型 31

2.9 第四代技术 31

2.10 过程技术 32

2.11 产品和过程 33

2.12 小结 33

参考文献 34

思考题 35

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

第二部分 软件项目的管理

第3章 项目管理的概念 39

3.1 管理的范围 39

3.1.1 人员 40

3.1.2 问题 40

3.1.3 过程 40

3.2 人员 40

3.2.1 项目参与者 41

3.2.2 项目负责人 41

3.2.3 软件项目组 42 3.2.4 协调和通信问题 44

3.3 问题 46

3.3.1 软件范围 46

3.3.2 问题分解 46

3.4 过程 47

3.4.1 合并问题和过程 47

3.4.2 过程分解 48

3.5 项目 49

3.6 小结 49

参考文献 49

思考题 50

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

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

4.1 测度、度量和指标 53

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

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

4.2.2 项目度量 57

4.3 软件测量 58

4.3.1 面向规模的度量 58

4.3.2 面向功能的度量 59

4.3.3 扩展的功能点度量 61

4.4 调和不同的度量方法 63

4.5 软件质量度量 63

4.5.1 概述影响质量的因素 64

4.5.2 测量质量 64

4.5.3 缺陷排除效率 65

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

4.7 小结 67

参考文献 67

思考题 68

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

第5章 软件项目计划 71

5.1 对估算的观察 71

5.2 项目计划目标 72

5.3 软件范围 72

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

5.3.2 一个范围定义的例子 73

5.4 资源 75

5.4.1 人力资源 75

5.4.2 可复用软件资源 76

5.4.3 环境资源 76

5.5 软件项目估算 77

5.6 分解技术 77

5.6.1 软件规模估算 78

5.6.2 基于问题的估算 78

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

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

5.6.5 基于过程的估算 81

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

5.7 经验估算模型 83

5.7.1 估算模型的结构 83

5.7.2 cocomo模型 83

5.7.3 软件方程式 85

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

5.8.1 创建决策树 87

5.8.2 外购 88

5.9 自动估算工具 88

5.10 小结 88

参考文献 89

思考题 89

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

第6章 风险管理 92

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

6.2 软件风险 92

6.3 识别风险 93

6.3.1 产品规模风险 94

6.3.2 商业影响风险 94

6.3.3 客户相关的风险 95

6.3.4 过程风险 95

6.3.5 技术风险 96

6.3.6 开发环境风险 97

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

6.3.8 风险因素和驱动因子 98

6.4 风险预测 98

6.4.1 建立风险表 98

6.4.2 评估风险影响 100

6.4.3 风险评估 100

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

6.6 安全性风险和危险 103

6.7 rmmm计划 103

6.8 小结 104

参考文献 104

思考题 104

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

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

7.1 基本概念 107

7.1.1 关于“延迟”的评注 108

7.1.2 基本原则 109

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

7.2.1 一个例子 110

7.2.2 一个经验关系 111

7.2.3 工作量分布 111

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

7.3.1 严格度 112

7.3.2 定义适应性准则 113

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

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

7.4 选择软件工程任务 115

7.5 主要任务的求精 115

7.6 定义任务网络 118

7.7 进度安排 118

7.7.1 时间表 119

7.7.2 跟踪进度 119

7.8 项目计划 122

7.9 小结 122

参考文献 123

思考题 123

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

第8章 软件质量保证 125

8.1 质量概念 125

8.1.1 质量 126

8.1.2 质量控制 126

8.1.3 质量保证 127

8.1.4 质量的成本 127

8.2 质量运动 128

8.3 软件质量保证 129

8.3.1 背景 129

8.3.2 sqa活动 130

8.4 软件复审 130

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

8.4.2 缺陷的放大和消除 131

8.5 正式技术复审 133

8.5.1 复审会议 133

8.5.2 复审报告和记录保存 134

8.5.3 复审指南 134

8.6 sqa的形式化方法 135

8.7 统计质量保证 136

8.8 软件可靠性 137

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

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

8.9 sqa计划 139

8.10 iso9000质量标准 140

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

8.10.2 iso9001 标准 141

8.11 小结 142

参考文献 142

思考题 143

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

第9章 软件配置管理 147

9.1 软件配置管理 147

9.1.1 基线 148

9.1.2 软件配置项 149

9.2 scm过程 150

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

9.4 版本控制 153

9.5 变化控制 154

9.6 配置审计 157

9.7 状态报告 157

9.8 scm标准 157

9.9 小结 158

参考文献 158

思考题 159

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

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

第10章 系统工程 161

10.1 基于计算机的系统 161

10.2 系统工程层次结构 163

10.2.1 系统建模 164

10.2.2 信息工程:概述 165

10.2.3 产品工程:概述 167

10.3 信息工程 168

10.4 信息策略计划 168

10.4.1 企业建模 169

10.4.2 业务级数据建模 170

10.5 业务域分析 171

10.5.1 处理建模 172

10.5.2 信息流建模 173

10.6 产品工程 173

10.6.1 系统分析 176

10.6.2 说明客户需要 176

10.6.3 可行性研究 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章 分析概念和原则 188

11.1 需求分析 188

11.2 通信技术 189

11.2.1 过程的启动 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 软件原型 198

11.4.1 选择原型方法 198

11.4.2 原型方法和工具 199

11.5 规约 199

11.5.1 规约原则 200

11.5.2 表示 200

11.5.3 软件需求规约 201

11.6 规约复审 202

11.7 小结 203

参考文献 203

思考题 204

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

第12章 分析建模 206

12.1 简史 206

12.2 分析模型的元素 207

12.3 数据建模 208

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

12.3.2 基数和形态 210

12.3.3 实体—关系图 211

12.4 功能建模和信息流 214

12.4.1 数据流图 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 其他传统分析方法概述 233

12.8.1 数据结构化系统开发 233

12.8.2 jackson系统开发 233

12.8.3 sadt 234

12.9 小结 234

参考文献 234

思考题 235

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

第13章 设计概念和原则 238

13.1 软件设计和软件工程 238

13.2 设计过程 239

13.2.1 设计和软件质量 239

13.2.2 软件设计的演化 240

13.3 设计原则 240

13.4 设计概念 241

13.4.1 抽象 241

13.4.2 求精 242

13.4.3 模块化 242

13.4.4 软件体系结构 244

13.4.5 控制层次 245

13.4.6 结构划分 246

13.4.7 数据结构 247

13.4.8 软件过程 247

13.4.9 信息隐蔽 248

13.5 有效的模块设计 248

13.5.1 功能独立性 249

13.5.2 内聚 249

13.5.3 耦合 250

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

13.7 设计模型 253

13.8 设计文档 253

13.9 小结 254

参考文献 254

思考题 256

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

第14章 设计方法 258

14.1 数据设计 258

14.2 体系结构设计 259

14.2.1 贡献者 259

14.2.2 应用域 260

14.3 体系结构设计过程 260

14.3.1 变换流 260

14.3.2 事务流 261

14.4 变换映射 261

14.4.1 一个实例 261

14.4.2 设计步骤 262

14.5 事务映射 268

14.5.1 一个实例 268

14.5.2 设计步骤 268

14.6 设计的后处理 272

14.7 体系结构设计优化 272

14.8 接口设计 273

14.8.1 内部和外部接口设计 273

14.8.2 用户界面设计 273

14.9 人机界面设计 273

14.9.1 界面设计模型 274

14.9.2 任务分析和建模 275

14.9.3 设计问题 275

14.9.4 实现工具 277

14.9.5 设计评估 277

14.10 界面设计指南 279

14.10.1 一般交互 279

14.10.2 信息显示 280

14.10.3 数据输入 280

14.11 过程设计 281

14.11.1 结构化程序设计 281

14.11.2 图形设计符号 281

14.11.3 表格设计符号 284

14.11.4 程序设计语言 285

14.11.5 一个pdl实例 285

14.12 小结 288

参考文献 288

思考题 290

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

第15章 实时系统的设计 294

15.1 系统考虑 294

15.2 实时系统 295

15.2.1 集成和性能问题 295

15.2.2 中断处理 296

15.2.3 实时数据库 297

15.2.4 实时操作系统 297

15.2.5 实时语言 298

15.2.6 任务同步和通信 298

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

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

15.3.2 仿真和建模技术 302

15.4 实时设计 306

15.5 小结 307

参考文献 307

思考题 309

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

第16章 软件测试技术 311

16.1 软件测试基础 311

16.1.1 测试目标 311

16.1.2 测试原则 312

16.1.3 可测试性 312

16.2 测试用例设计 314

16.3 白盒测试 315

16.4 基本路径测试 315

16.4.1 流图符号 315

16.4.2 环形复杂性 318

16.4.3 导出测试用例 318

16.4.4 图矩阵 321

16.5 控制结构测试 322

16.5.1 条件测试 322

16.5.2 数据流测试 324

16.5.3 循环测试 325

16.6 黑盒测试 326

16.6.1 基于图的测试方法 326

16.6.2 等价划分 328

16.6.3 边界值分析 329

16.6.4 比较测试 330

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

16.7.1 gui测试 330

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

16.7.3 测试文档和帮助设施 331

16.7.4 实时系统测试 332

16.8 小结 333

参考文献 333

思考题 334

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

第17章 软件测试策略 337

17.1 软件测试的策略途径 337

17.1.1 验证和确认 337

17.1.2 软件测试的组织 338

17.1.3 一种软件测试策略 339

17.1.4 测试完成的标准 340

17.2 策略问题 342

17.3 单元测试 342

17.3.1 单元测试考虑 342

17.3.2 单元测试规程 344

17.4 集成测试 345

17.4.1 自顶向下集成 346

17.4.2 自底向上集成 347

17.4.3 回归测试 348

17.4.4 关于集成测试的讨论 349

17.4.5 集成测试文档 349

17.5 确认测试 350

17.5.1 确认测试的标准 350

17.5.2 配置复审 351

17.5.3 alpha和beta测试 351

17.6 系统测试 351

17.6.1 恢复测试 352

17.6.2 安全测试 352

17.6.3 压力测试 352

17.6.4 性能测试 353

17.7 调试的技巧 353

17.7.1 调试过程 353

17.7.2 心理考虑 354

17.7.3 调试方法 354

17.8 小结 355

参考文献 356

思考题 357

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

第18章 软件的技术度量 359

18.1 软件质量 359

18.1.1 mccall的质量因素 360

18.1.2 furps 362

18.1.3 到量化视图的变迁 362

18.2 软件技术度量框架 363

18.2.1 技术度量的挑战 363

18.2.2 测度原则 363

18.2.3 有效软件度量的属性 364

18.3 分析模型的度量 365

18.3.1 基于功能的度量 365

18.3.2 “撞击值”度量 366

18.3.3 规约质量的度量 368

18.4 设计模型的度量 369

18.4.1 高层设计度量 369

18.4.2 构件级设计度量 371

18.4.3 界面设计度量 373

18.5 源代码度量 374

18.6 对测试的度量 375

18.7 对维护的度量 376

18.8 小结 376

参考文献 377

思考题 378

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

第四部分 面向对象的软件工程
第19章 面向对象的概念和原则 381

19.1 面向对象的范型 382

19.2 面向对象概念 383

19.2.1 类和对象 385

19.2.2 属性 386

19.2.3 操作、方法和服务 386

19.2.4 消息 386

19.2.5 封装、继承和多态 388

19.3 标识对象模型的元素 390

19.3.1 标识类和对象 390

19.3.2 表示属性 393

19.3.3 定义操作 394

19.3.4 完成对象定义 394

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

19.4.1 oo的公共过程框架 395

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

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

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

19.5 小结 399

参考文献 399

思考题 400

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

第20章 面向对象分析 402

20.1 面向对象的分析 402

20.1.1 传统方法和oo方法 402

20.1.2 ooa概述 403

20.2 领域分析 406

20.2.1 复用和领域分析 406

20.2.2 领域分析过程 406

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

20.4 ooa过程 409

20.4.1 使用实例 409

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

20.4.3 定义结构和层次 414

20.4.4 定义主题和子系统 415

20.5 对象—关系模型 416

20.6 对象—行为模型 418

20.6.1 用使用实例标识事件 419

20.6.2 状态表示 419

20.7 小结 422

参考文献 422

思考题 423

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

第21章 面向对象设计 426

21.1 面向对象系统的设计 426

21.1.1 传统方法和oo方法 427

21.1.2 设计问题 428

21.1.3 ood概述 429

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

21.3 系统设计过程 433

21.3.1 划分分析模型 433

21.3.2 并发性和子系统分配 434

21.3.3 任务管理构件 434

21.3.4 数据管理构件 435

21.3.5 资源管理构件 435

21.3.6 人机界面构件 435

21.3.7 子系统间通信 436

21.4 对象设计过程 437

21.4.1 对象描述 437

21.4.2 设计算法和数据结构 438

21.4.3 程序构件和接口 439

21.5 设计模式 442

21.5.1 描述设计模式 442

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

21.6 面向对象编程 443

21.7 小结 443

参考文献 443

思考题 444

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

第22章 面向对象测试 447

22.1 扩大测试的视角 447

22.2 测试ooa和ood模型 448

22.2.1 ooa和ood模型的正确性 448

22.2.2 ooa和ood模型的一致性 448

22.3 面向对象的测试策略 449

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

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

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

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

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

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

22.4.3 基于故障的测试 451

22.4.4 oo编程对测试的影响 452

22.4.5 测试用例和类层次 453

22.4.6 基于场景的测试设计 453

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

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

22.5.1 对oo类的随机测试 455

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

22.6 类间测试用例设计 456

22.6.1 多个类测试 456

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

22.7 小结 458

参考文献 458

思考题 459

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

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

23.1 面向对象度量的目的 461

23.2 区别性的特征 461

23.2.1 局部化 461

23.2.2 封装 462

23.2.3 信息隐蔽 462

23.2.4 继承 462

23.2.5 抽象 462

23.3 对oo设计模型的度量 462

23.4 面向类的度量 463

23.4.1 ck度量套件 463

23.4.2 lorenz和kidd建议的度量 465

23.5 面向操作的度量 466

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

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

23.8 小结 467

参考文献 468

思考题 468

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

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

第24章 形式化方法 471

24.1 基本概念 471

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

24.1.2 软件开发中的数学 473

24.1.3 形式化方法概念 473

24.2 数学预备知识 477

24.2.1 集合和构造性规约 477

24.2.2 集合运算符 478

24.2.3 逻辑运算符 480

24.2.4 序列 480

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

24.4 形式化规约语言 482

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

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

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

24.8 小结 486

参考文献 487

思考题 487

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

第25章 净室软件工程 490

25.1 净室方法 490

25.1.1 净室策略 490

25.1.2 什么使得净室独特? 492

25.2 功能规约 492

25.2.1 黑盒规约 493

25.2.2 状态盒规约 494

25.2.3 清晰盒规约 494

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

25.3.1 设计求精和验证 495

25.3.2 设计验证的优点 498

25.4 净室测试 499

25.4.1 统计的使用测试 499

25.4.2 认证 500

25.5 小结 500

参考文献 501

思考题 502

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

第26章 软件复用 505

26.1 管理问题 505

26.1.1 复用的障碍 505

26.1.2 硬件类比 506

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

26.2 复用过程 507

26.2.1 可复用的软件制品 508

26.2.2 一个过程模型 509

26.3 领域工程 509

26.3.1 领域分析过程 510

26.3.2 领域特征 511

26.3.3 结构建模和结构点 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章 再工程 524

27.1 业务过程再工程 524

27.1.1 业务过程 524

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

27.1.3 bpr模型 527

27.1.4 几句警告 528

27.2 软件再工程 528

27.2.1 软件维护 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.6 再工程经济学 539

27.7 小结 539

参考文献 540

思考题 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.3 分析建模问题 548

28.4 对c/s系统的设计 548

28.4.1 传统设计方法 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章 计算机辅助软件工程 557

29.1 什么是case? 557

29.2 构造case的积木块 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


已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Software engineering:A practitioner’s approach
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon