好书推荐 好书速递 排行榜 读书文摘

软件工程

软件工程
作者:(美)Roger S.Pressman
译者:郑人杰 / 马素霞
副标题:实践者的研究方法
出版社:机械工业出版社
出版年:2011-05
ISBN:9787111335818
行业:学术研究
浏览数:136

内容简介

本书自1982年发行第1版以来,一直受到软件工程界的高度重视,成为高等院校计算机相关专业软件工程课程的重要教学参考书。近30年来,它的各个后继版本一直都是软件专业人土熟悉的读物,在国际软件工程界享有无可质疑的权威地位。它在全面而系统地介绍软件工程的有关概念、原则、方法和工具方面获得了广大读者的好评。第7版绝不是前一版的简单更新,它包含了很多新的内容,而且调整了全书的结构,以改进教学顺序,同时更加强调一些新的、重要的软件工程过程和软件工程实践知识。全书分软件过程、建模、质量管理、软件项目管理和软件工程高级课题五个部分,系统地论述了软件工程领域最新的基础知识,包括新的概念、原则、技术、方法和工具,同时提供了大量供读者进一步研究探索的参考信息。 本书适合作为本科生和研究生的软件工程及相关课程的教材,新版中五个部分的划分有利于教师根据学时和教学要求安排教学,同时也适合作为软件专业人员的工作指南,即使是资深专业人员,阅读本书也能获益匪浅。

......(更多)

作者简介

Roger S. Pressman是软件过程改进和软件工程技术领域的国际知名权威。30多年来,他作为软件工程师、管理人员、教授、作者及咨询顾问始终投身于软件工程领域。 Pressman博士曾经以软件产业专业技术人员和管理人员的身份从事先进工程、制造领域的CAD/CAM系统的开发。他也做过科学和系统程序设计方面的工作。 在获得美国康涅狄格大学工程学博士学位后,Pressman博士进入学术界成为布里奇波特(Bridgeport)大学计算机工程系副教授,同时担任该校CAD/CAM中心主任。 现在,Pressman博士是R. S. Pressman & Associates,Inc.的总裁,该公司专门从事软件工程方法的咨询和培训业务。作为公司的主要咨询专家,他设计和开发了一套完整的软件工程录像课程“Essential Software Engineering”以及软件过程改进的指导系统“Process Advisor”。这两项产品已为世界上数千家公司采用。最近,他与印度Edistalearning公司合作,开发网上软件工程教学系统“eSchool”。 Pressman博士撰写了许多论文,是多种行业期刊的固定撰稿人,并著有6本技术书。除本书之外,还有: 《A Manager’s Guide to Software Engineering》(McGraw-Hill) 该书曾获奖。 《Making Software Engineering Happen》(Prentice-Hall) 这是涉及软件过程改进的关键管理问题的第一本书。 《Software Shock》(Dorset House) 该书论述软件及其对商业和社会的影响。 Pressman博士曾任多种行业杂志的编委,多年来一直担任《IEEE Software》杂志Manager专栏的编辑。 Pressman博士是知名的演讲者,曾在许多行业会议上作重要讲话,他还是美国计算机协会(ACM)、美国电气与电子工程师协会(IEEE)等组织的成员。 Pressman博士和他的妻子Barbara住在南佛罗里达。他热爱体育运动,擅长网球和高尔夫球。还曾写过两部小说《The Aymara Bridge》和《The Puppeteer》,并打算再写一部。

......(更多)

目录

出版者的话

译者序

前言

作者简介

第1章 软件和软件工程 1

1.1 软件的本质 2

1.1.1 定义软件 3

1.1.2 软件应用领域 5

1.1.3 遗留软件 6

1.2 WebApp的特性 7

1.3 软件工程 8

1.4 软件过程 9

1.5 软件工程实践 11

1.5.1 实践的精髓 11

1.5.2 一般原则 12

1.6 软件神话 14

1.7 这一切是如何开始的 15

1.8 小结 16

习题与思考题 17

推荐读物与阅读信息 17

第一部分 软件过程

第2章 过程模型 20

2.1 通用过程模型 21

2.1.1 定义框架活动 22

2.1.2 明确任务集 23

2.1.3 过程模式 23

2.2 过程评估与改进 25

2.3 惯用过程模型 26

2.3.1 瀑布模型 26

2.3.2 增量过程模型 28

2.3.3 演化过程模型 29

2.3.4 协同模型 33

2.3.5 演化模型的最终评述 34

2.4 专用过程模型 34

2.4.1 基于构件的开发 35

2.4.2 形式化方法模型 35

2.4.3 面向方面的软件开发 35

2.5 统一过程 37

2.5.1 简史 37

2.5.2 统一过程的阶段 37

2.6 个人过程模型和团队过程模型 38

2.6.1 个人软件过程 39

2.6.2 团队软件过程 39

2.7 过程技术 40

2.8 产品与过程 41

2.9 小结 42

习题与思考题 42

推荐读物与阅读信息 43

第3章 敏捷开发 45

3.1 什么是敏捷 46

3.2 敏捷及变更的成本费用 47

3.3 敏捷过程是什么 47

3.3.1 敏捷原则 48

3.3.2 敏捷开发的战略 48

3.3.3 人的因素 49

3.4 极限编程 50

3.4.1 极限编程的权值 50

3.4.2 极限编程过程 51

3.4.3 工业极限编程 53

3.4.4 关于XP的争论 54

3.5 其他敏捷过程模型 55

3.5.1 自适应软件开发 56

3.5.2 Scrum 57

3.5.3 动态系统开发方法 58

3.5.4 Crystal 59

3.5.5 特征驱动开发 59

3.5.6 精益软件开发 60

3.5.7 敏捷建模 60

3.5.8 敏捷统一过程 61

3.6 敏捷过程工具集 62

3.7 小结 63

习题与思考题 63

推荐读物与阅读信息 64

第二部分 建模

第4章 指导实践的原则 68

4.1 软件工程知识 69

4.2 核心原则 69

4.2.1 指导过程的原则 69

4.2.2 指导实践的原则 70

4.3 指导每个框架活动的原则 71

4.3.1 沟通原则 71

4.3.2 策划原则 73

4.3.3 建模原则 74

4.3.4 构造原则 77

4.3.5 部署原则 79

4.4 小结 80

习题与思考题 81

推荐读物与阅读信息 81

第5章 理解需求 83

5.1 需求工程 84

5.2 建立根基 88

5.2.1 确认利益相关者 88

5.2.2 识别多重观点 88

5.2.3 协同合作 88

5.2.4 首次提问 89

5.3 导出需求 89

5.3.1 协作收集需求 90

5.3.2 质量功能部署 92

5.3.3 用户场景 92

5.3.4 导出工作产品 93

5.4 开发用例 94

5.5 构建需求模型 97

5.5.1 需求模型的元素 98

5.5.2 分析模式 100

5.6 协商需求 100

5.7 确认需求 101

5.8 小结 102

习题与思考题 102

推荐读物与阅读信息 103

第6章 需求建模:场景、信息

与类分析 105

6.1 需求分析 106

6.1.1 总体目标和原理 106

6.1.2 分析的经验原则 107

6.1.3 域分析 107

6.1.4 需求建模的方法 109

6.2 基于场景建模 110

6.2.1 新建初始用例 110

6.2.2 细化初始用例 112

6.2.3 编写正规的用例 113

6.3 补充用例的UML模型 115

6.3.1 开发活动图 115

6.3.2 泳道图 115

6.4 数据建模概念 116

6.4.1 数据对象 117

6.4.2 数据属性 117

6.4.3 关系 118

6.5 基于类的建模 119

6.5.1 识别分析类 119

6.5.2 描述属性 121

6.5.3 定义操作 122

6.5.4 类-职责-协作者建模 124

6.5.5 关联和依赖 128

6.5.6 分析包 129

6.6 小结 130

习题与思考题 130

推荐读物与阅读信息 131

第7章 需求建模:流程、行为、模式和Web应用 132

7.1 需求建模策略 132

7.2 面向数建模 133

7.2.1 创建数据流模型 133

7.2.2 创建控制流模型 135

7.2.3 控制规格说明 135

7.2.4 处理规格说明 137

7.3 生成行为模型 138

7.3.1 识别用例事件 139

7.3.2 状态表现 139

7.4 需求建模的模式 141

7.4.1 发现分析模式 142

7.4.2 需求模式举例:执行器-传感器 142

7.5 Web应用系统的需求建模 145

7.5.1 如何分析 145

7.5.2 需求建模的输入 146

7.5.3 需求建模的输出 146

7.5.4 Web应用系统内容建模 147

7.5.5 Web应用系统的交互模型 148

7.5.6 Web应用系统的功能模型 148

7.5.7 Web应用系统的配置模型 149

7.5.8 导航建模 150

7.6 小结 150

习题与思考题 151

推荐读物与阅读信息 151

第8章 设计概念 152

8.1 软件工程中的设计 153

8.2 设计过程 155

8.2.1 软件质量指导原则和属性 155

8.2.2 软件设计的演化 156

8.3 设计概念 157

8.3.1 抽象 158

8.3.2 体系结构 158

8.3.3 模式 159

8.3.4 关注点分离 159

8.3.5 模块化 159

8.3.6 信息隐蔽 160

8.3.7 功能独立 160

8.3.8 求精 161

8.3.9 方面 161

8.3.10 重构 162

8.3.11 面向对象的设计概念 163

8.3.12 设计类 163

8.4 设计模型 165

8.4.1 数据设计元素 166

8.4.2 体系结构设计元素 166

8.4.3 接口设计元素 166

8.4.4 构件级设计元素 168

8.4.5 部署级设计元素 168

8.5 小结 169

习题与思考题 169

推荐读物与阅读信息 170

第9章 体系结构设计 172

9.1 软件体系结构 172

9.1.1 什么是体系结构 173

9.1.2 体系结构为什么重要 174

9.1.3 体系结构描述 174

9.1.4 体系结构决策 175

9.2 体系结构类型 175

9.3 体系结构风格 177

9.3.1 体系结构风格的简单分类 178

9.3.2 体系结构模式 180

9.3.3 组织和求精 181

9.4 体系结构设计 181

9.4.1 系统环境的表示 181

9.4.2 定义原型 182

9.4.3 将体系结构精化为构件 183

9.4.4 描述系统实例 184

9.5 评估可选的体系结构设计 185

9.5.1 体系结构权衡分析方法 185

9.5.2 体系结构复杂性 187

9.5.3 体系结构描述语言 187

9.6 使用数据流进行体系结构映射 188

9.6.1 变换映射 188

9.6.2 精化体系结构设计 193

9.7 小结 194

习题与思考题 194

推荐读物与阅读信息 195

第10章 构件级设计 196

10.1 什么是构件 197

10.1.1 面向对象的观点 197

10.1.2 传统观点 198

10.1.3 过程相关的观点 199

10.2 设计基于类的构件 200

10.2.1 基本设计原则 200

10.2.2 构件级设计指导方针 203

10.2.3 内聚性 203

10.2.4 耦合性 205

10.3 实施构件级设计 206

10.4 WebApp的构件级设计 210

10.4.1 构件级内容设计 210

10.4.2 构件级功能设计 211

10.5 设计传统构件 211

10.5.1 图形化设计表示 211

10.5.2 表格式设计表示 212

10.5.3 程序设计语言 213

10.6 基于构件的开发 214

10.6.1 领域工程 215

10.6.2 构件合格性检验、适应性修改与组合 215

10.6.3 复用的分析与设计 217

10.6.4 构件分类与检索 217

10.7 小结 218

习题与思考题 219

推荐读物与阅读信息 220

第11章 用户界面设计 221

11.1 黄金规则 222

11.1.1 用户操纵控制 222

11.1.2 减轻用户记忆负担 223

11.1.3 保持界面一致 224

11.2 用户界面的分析与设计 225

11.2.1 用户界面分析和设计模型 225

11.2.2 过程 226

11.3 界面分析 227

11.3.1 用户分析 227

11.3.2 任务分析和建模 228

11.3.3 显示内容分析 232

11.3.4 工作环境分析 232

11.4 界面设计步骤 233

11.4.1 应用界面设计步骤 233

11.4.2 用户界面设计模式 235

11.4.3 设计问题 235

11.5 WebApp界面设计 237

11.5.1 界面设计原则与指导方针 238

11.5.2 WebApp的界面设计工作流 241

11.6 设计评估 242

11.7 小结 243

习题与思考题 244

推荐读物与阅读信息 245

第12章 基于模式的设计 246

12.1 设计模式 247

12.1.1 模式的种类 248

12.1.2 框架 249

12.1.3 描述模式 250

12.1.4 模式语言和存储库 251

12.2 基于模式的软件设计 251

12.2.1 不同环境下基于模式

的设计 252

12.2.2 在模式中思考 252

12.2.3 设计任务 253

12.2.4 建立模式组织表 254

12.2.5 常见设计错误 255

12.3 体系结构模式 255

12.4 构件级设计模式 257

12.5 用户界面设计模式 259

12.6 WebApp设计模式 261

12.6.1 设计焦点 261

12.6.2 设计粒度 261

12.7 小结 262

习题与思考题 263

推荐读物与阅读信息 263

第13章 WebApp设计 265

13.1 WebApp设计质量 266

13.2 设计目标 268

13.3 WebApp设计金字塔 269

13.4 WebApp界面设计 269

13.5 美学设计 270

13.5.1 布局问题 270

13.5.2 美术设计问题 271

13.6 内容设计 271

13.6.1 内容对象 271

13.6.2 内容设计问题 272

13.7 体系结构设计 272

13.7.1 内容体系结构 273

13.7.2 WebApp体系结构 274

13.8 导航设计 275

13.8.1 导航语义 275

13.8.2 导航语法 276

13.9 构件级设计 277

13.10 面向对象的超媒体设计方法 277

13.10.1 OOHDM的概念设计 278

13.10.2 OOHDM的导航设计 279

13.10.3 抽象界面设计与实现 279

13.11 小结 279

习题与思考题 280

推荐读物与阅读信息 280

第三部分 质量管理

第14章 质量概念 284

14.1 什么是质量 285

14.2 软件质量 285

14.2.1 Garvin的质量维度 286

14.2.2 McCall的质量因素 287

14.2.3 ISO 9126质量因素 287

14.2.4 定向质量因素 288

14.2.5 过渡到量化观点 289

14.3 软件质量困境 289

14.3.1 “足够好”的软件 289

14.3.2 质量成本 290

14.3.3 风险 291

14.3.4 疏忽和责任 292

14.3.5 质量和安全 292

14.3.6 管理活动的影响 292

14.4 实现软件质量 293

14.4.1 软件工程方法 293

14.4.2 项目管理技术 293

14.4.3 质量控制 294

14.4.4 质量保证 294

14.5 小结 294

习题与思考题 294

推荐读物与阅读信息 295

第15章 评审技术 296

15.1 软件缺陷对成本的影响 297

15.2 缺陷放大和消除 297

15.3 评审度量及其应用 299

15.3.1 分析度量数据 299

15.3.2 评审的成本效益 300

15.4 评审:正式程度 301

15.5 非正式评审 301

15.6 正式技术评审 303

15.6.1 评审会议 303

15.6.2 评审报告和记录保存 304

15.6.3 评审指导原则 304

15.6.4 样本驱动评审 305

15.7 小结 306

习题与思考题 306

推荐读物与阅读信息 307

第16章 软件质量保证 308

16.1 背景问题 309

16.2 软件质量保证的要素 309

16.3 软件质量保证的任务、目标和度量 311

16.3.1 软件质量保证任务 311

16.3.2 目标、属性和度量 311

16.4 软件质量保证的形式化方法 312

16.5 统计软件质量保证 313

16.5.1 一个普通的例子 313

16.5.2 软件工程中的六西格玛 314

16.6 软件可靠性 314

16.6.1 可靠性和可用性的测量 315

16.6.2 软件安全 316

16.7 ISO 9000质量标准 316

16.8 SQA计划 317

16.9 小结 318

习题与思考题 318

推荐读物与阅读信息 319

第17章 软件测试策略 320

17.1 软件测试的策略性方法 321

17.1.1 验证与确认 321

17.1.2 软件测试的组织 322

17.1.3 软件测试策略—宏观 322

17.1.4 测试完成的标准 324

17.2 策略问题 324

17.3 传统软件的测试策略 325

17.3.1 单元测试 325

17.3.2 集成测试 327

17.4 面向对象软件的测试策略 331

17.4.1 面向对象环境中的单元测试 331

17.4.2 面向对象环境中的集成测试 332

17.5 WebApp的测试策略 332

17.6 确认测试 333

17.6.1 确认测试准则 333

17.6.2 配置评审 333

17.6.3 a测试与b测试 333

17.7 系统测试 334

17.7.1 恢复测试 335

17.7.2 安全测试 335

17.7.3 压力测试 335

17.7.4 性能测试 336

17.7.5 部署测试 336

17.8 调试技巧 337

17.8.1 调试过程 337

17.8.2 心理因素 338

17.8.3 调试策略 338

17.8.4 纠正错误 340

17.9 小结 340

习题与思考题 340

推荐读物与阅读信息 341

第18章 测试传统的应用系统 343

18.1 软件测试基础 344

18.2 测试的内部视角和外部视角 345

18.3 白盒测试 346

18.4 基本路径测试 346

18.4.1 流图表示 346

18.4.2 独立程序路径 347

18.4.3 导出测试用例 349

18.4.4 图矩阵 350

18.5 控制结构测试 351

18.5.1 条件测试 351

18.5.2 数据流测试 351

18.5.3 循环测试 352

18.6 黑盒测试 353

18.6.1 基于图的测试方法 353

18.6.2 等价类划分 354

18.6.3 边界值分析 355

18.6.4 正交数组测试 355

18.7 基于模型的测试 357

18.8 针对特定环境、体系结构和应用系统的测试 358

18.8.1 图形用户界面测试 358

18.8.2 客户/服务器体系结构测试 358

18.8.3 文档测试和帮助设施测试 359

18.8.4 实时系统的测试 360

18.9 软件测试模式 361

18.10 小结 362

习题与思考题 362

推荐读物与阅读信息 363

第19章 测试面向对象的应用系统 364

19.1 扩展测试的视野 364

19.2 测试OOA和OOD模型 365

19.2.1 OOA和OOD模型的正确性 365

19.2.2 面向对象模型的一致性 366

19.3 面向对象测试策略 367

19.3.1 面向对象环境中的单元测试 367

19.3.2 面向对象环境中的集成测试 368

19.3.3 面向对象环境中的确认测试 368

19.4 面向对象测试方法 368

19.4.1 面向对象概念的测试用例设计的含义 369

19.4.2 传统测试用例设计方法的可应用性 369

19.4.3 基于故障的测试 369

19.4.4 测试用例与类层次 370

19.4.5 基于场景的测试设计 370

19.4.6 表层结构和深层结构的测试 371

19.5 类级可应用的测试方法 372

19.5.1 面向对象类的随机测试 372

19.5.2 类级的划分测试 373

19.6 类间测试用例设计 373

19.6.1 多类测试 374

19.6.2 从行为模型导出的测试 374

19.7 小结 375

习题与思考题 376

推荐读物与阅读信息 376

第20章 测试Web应用系统 377

20.1 WebApp的测试概念 377

20.1.1 质量维度 378

20.1.2 WebApp环境中的错误 378

20.1.3 测试策略 379

20.1.4 测试策划 379

20.2 测试过程概述 380

20.3 内容测试 380

20.3.1 内容测试的目标 381

20.3.2 数据库测试 381

20.4 用户界面测试 383

20.4.1 界面测试策略 383

20.4.2 测试界面机制 383

20.4.3 测试界面语义 385

20.4.4 可用性测试 385

20.4.5 兼容性测试 386

20.5 构件级测试 387

20.6 导航测试 388

20.6.1 测试导航语法 388

20.6.2 测试导航语义 389

20.7 配置测试 390

20.7.1 服务器端问题 390

20.7.2 客户端问题 390

20.8 安全性测试 391

20.9 性能测试 392

20.9.1 性能测试的目标 392

20.9.2 负载测试 393

20.9.3 压力测试 393

20.10 小结 395

习题与思考题 396

推荐读物与阅读信息 396

第21章 形式化建模与验证 398

21.1 净室策略 399

21.2 功能规格说明 400

21.2.1 黑盒规格说明 401

21.2.2 状态盒规格说明 401

21.2.3 清晰盒规格说明 402

21.3 净室设计 402

21.3.1 设计求精 402

21.3.2 设计验证 403

21.4 净室测试 404

21.4.1 统计使用测试 404

21.4.2 认证 405

21.5 形式化方法的概念 406

21.6 应用数学表示法描述形式化规格说明 408

21.7 形式化规格说明语言 409

21.7.1 对象约束语言 409

21.7.2 Z规格说明语言 412

21.8 小结 414

习题与思考题 415

推荐读物与阅读信息 415

第22章 软件配置管理 417

22.1 软件配置管理概述 418

22.1.1 SCM场景 418

22.1.2 配置管理系统元素 419

22.1.3 基线 419

22.1.4 软件配置项 420

22.2 SCM中心存储库 421

22.2.1 中心存储库的作用 421

22.2.2 一般特征和内容 421

22.2.3 SCM特征 422

22.3 SCM过程 423

22.3.1 软件配置中的对象标识 424

22.3.2 版本控制 424

22.3.3 变更控制 425

22.3.4 配置审核 428

22.3.5 状态报告 428

22.4 WebApp配置管理 429

22.4.1 WebApp配置管理的主要问题 429

22.4.2 WebApp的配置对象 430

22.4.3 内容管理 430

22.4.4 变更管理 432

22.4.5 版本控制 434

22.4.6 审核和报告 435

22.5 小结 436

习题与思考题 436

推荐读物与阅读信息 437

第23章 产品度量 438

23.1 产品度量框架 439

23.1.1 测度、度量和指标 439

23.1.2 产品度量的挑战 439

23.1.3 测量原则 440

23.1.4 面向目标的软件测量 440

23.1.5 有效软件度量的属性 441

23.2 需求模型的度量 442

23.2.1 基于功能的度量 443

23.2.2 规格说明质量的度量 445

23.3 设计模型的度量 446

23.3.1 体系结构设计度量 446

23.3.2 面向对象设计度量 447

23.3.3 面向类的度量—CK度量集 448

23.3.4 面向类的度量—MOOD度量集 450

23.3.5 Lorenz与Kidd提出的面向对象度量 451

23.3.6 构件级设计度量 451

23.3.7 面向操作的度量 453

23.3.8 用户界面设计度量 453

23.4 WebApp的设计度量 453

23.5 源代码度量 455

23.6 测试的度量 456

23.6.1 用于测试的Halstead度量 456

23.6.2 面向对象测试的度量 457

23.7 维护的度量 457

23.8 小结 458

习题与思考题 459

推荐读物与阅读信息 459

第四部分 软件项目管理

第24章 项目管理概念 462

24.1 管理涉及的范围 463

24.1.1 人员 463

24.1.2 产品 463

24.1.3 过程 463

24.1.4 项目 464

24.2 人员 464

24.2.1 利益相关者 464

24.2.2 团队负责人 464

24.2.3 软件团队 465

24.2.4 敏捷团队 467

24.2.5 协调与沟通问题 468

24.3 产品 469

24.3.1 软件范围 469

24.3.2 问题分解 469

24.4 过程 470

24.4.1 合并产品和过程 470

24.4.2 过程分解 470

24.5 项目 471

24.6 W5HH原则 472

24.7 关键实践 473

24.8 小结 474

习题与思考题 474

推荐读物与阅读信息 474

第25章 过程度量和项目度量 477

25.1 过程领域和项目领域中的度量 478

25.1.1 过程度量和软件过程改进 478

25.1.2 项目度量 479

25.2 软件测量 480

25.2.1 面向规模的度量 481

25.2.2 面向功能的度量 482

25.2.3 调和代码行度量和功能点度量 482

25.2.4 面向对象的度量 484

25.2.5 面向用例的度量 485

25.2.6 Web应用项目度量 485

25.3 软件质量度量 486

25.3.1 测量质量 487

25.3.2 缺陷排除效率 488

25.4 在软件过程中集成度量 489

25.4.1 支持软件度量的论点 489

25.4.2 建立基线 490

25.4.3 度量收集、计算和评估 490

25.5 小型组织的度量 490

25.6 制定软件度量大纲 491

25.7 小结 493

习题与思考题 493

推荐读物与阅读信息 494

第26章 软件项目估算 496

26.1 对估算的观察 497

26.2 项目策划过程 498

26.3 软件范围和可行性 498

26.4 资源 499

26.4.1 人力资源 499

26.4.2 可复用软件资源 500

26.4.3 环境资源 500

26.5 软件项目估算 500

26.6 分解技术 501

26.6.1 软件规模估算 501

26.6.2 基于问题的估算 502

26.6.3 基于LOC估算的实例 503

26.6.4 基于FP估算的实例 505

26.6.5 基于过程的估算 505

26.6.6 基于过程估算的实例 506

26.6.7 基于用例的估算 507

26.6.8 基于用例的估算实例 508

26.6.9 协调不同的估算方法 508

26.7 经验估算模型 509

26.7.1 估算模型的结构 509

26.7.2 COCOMOⅡ模型 510

26.7.3 软件方程 511

26.8 面向对象项目的估算 512

26.9 特殊的估算技术 512

26.9.1 敏捷开发的估算 512

26.9.2 Web应用项目的估算 513

26.10 自行开发或购买的决策 514

26.10.1 创建决策树 514

26.10.2 外包 515

26.11 小结 517

习题与思考题 517

推荐读物与阅读信息 518

第27章 项目进度安排 519

27.1 基本概念 520

27.2 项目进度的安排 521

27.2.1 基本原则 522

27.2.2 人员与工作量之间的关系 522

27.2.3 工作量分配 524

27.3 为软件项目定义任务集 524

27.3.1 任务集举例 525

27.3.2 软件工程活动求精 525

27.4 定义任务网络 526

27.5 进度安排 527

27.5.1 时序图 528

27.5.2 跟踪进度 529

27.5.3 跟踪OO项目的进展 530

27.5.4 WebApp项目进度安排 530

27.6 挣值分析 533

27.7 小结 534

习题与思考题 534

推荐读物与阅读信息 535

第28章 风险管理 537

28.1 被动风险策略和主动风险策略 538

28.2 软件风险 538

28.3 风险识别 539

28.3.1 评估整体项目风险 540

28.3.2 风险因素和驱动因子 540

28.4 风险预测 541

28.4.1 建立风险表 542

28.4.2 评估风险影响 543

28.5 风险求精 545

28.6 风险缓解、监测和管理 545

28.7 RMMM计划 546

28.8 小结 548

习题与思考题 548

推荐读物与阅读信息 549

第29章 维护与再工程 550

29.1 软件维护 551

29.2 软件可支持性 552

29.3 再工程 552

29.4 业务过程再工程 553

29.4.1 业务过程 553

29.4.2 BPR模型 554

29.5 软件再工程 555

29.5.1 软件再工程过程模型 555

29.5.2 软件再工程活动 556

29.6 逆向工程 557

29.6.1 理解数据的逆向工程 558

29.6.2 理解处理的逆向工程 559

29.6.3 用户界面的逆向工程 559

29.7 重构 560

29.7.1 代码重构 560

29.7.2 数据重构 560

29.8 正向工程 561

29.8.1 客户/服务器体系结构的正向工程 562

29.8.2 面向对象体系结构的正向工程 563

29.9 再工程经济学 563

29.10 小结 564

习题与思考题 564

推荐读物与阅读信息 565

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

第30章 软件过程改进 568

30.1 什么是SPI 569

30.1.1 SPI的方法 569

30.1.2 成熟度模型 570

30.1.3 SPI适合每个人吗 571

30.2 SPI过程 571

30.2.1 评估和差距分析 572

30.2.2 教育和培训 573

30.2.3 选择和合理性判定 573

30.2.4 设置/迁移 574

30.2.5 评价 574

30.2.6 SPI的风险管理 574

30.2.7 关键的成功因素 575

30.3 CMMI 576

30.4 人员CMM 579

30.5 其他SPI框架 580

30.6 SPI的投资收益率 581

30.7 SPI趋势 582

30.8 小结 582

习题与思考题 583

推荐读物与阅读信息 583

第31章 软件工程的新趋势 584

31.1 技术演变 585

31.2 观察软件工程的发展趋势 586

31.3 识别“软趋势” 587

31.3.1 管理复杂性 588

31.3.2 开放世界的软件 589

31.3.3 意外需求 589

31.3.4 人才结构 590

31.3.5 软件构造块 590

31.3.6 对“价值”认识的转变 591

31.3.7 开源 591

31.4 技术方向 592

31.4.1 过程趋势 592

31.4.2 巨大的挑战 593

31.4.3 协同开发 594

31.4.4 需求工程 595

31.4.5 模型驱动的软件开发 595

31.4.6 后现代设计 596

31.4.7 测试驱动的开发 596

31.5 相关工具的趋势 597

31.5.1 顺应软趋势的工具 598

31.5.2 涉及技术趋势的工具 599

31.6 小结 599

习题与思考题 599

推荐读物与阅读信息 600

第32章 结束语 601

32.1 再论软件的重要性 601

32.2 人员及其构造系统的方式 602

32.3 表示信息的新模式 602

32.4 远景 603

32.5 软件工程师的责任 604

32.6 结束语 605

附录1 UML简介 607

附录2 面向对象概念 620

参考文献 625

......(更多)

读书文摘

理解4P-人员(people)、产品(product)、过程(process)、项目(project)。

Whittaker的书中包括了很重可以用于测试用例的设计指南的例子.其中所建议的一些最通用的指南包括: - 选择迫使系统生成所有错误消息的书输出. - 设计导致输入缓冲溢出的输入 - 多次同样的输入或输入序列 - 驱使生成非法的输出 - 驱使计算结果太大或者太小

可依赖性编程指南 1. 限制程序中信息的可见性 2. 检查所有输入的有效性 3. 为所有的异常提供处理程序 4. 尽可能使用不容易出错的结构 5. 提供重启功能 6. 检查数组边界 7. 调用外部构建时加上超时处理功能 8. 为每个表示现实世界的值的常量命名

......(更多)

猜你喜欢

点击查看