译者序
前言
第一部分 动机与背景
第1章 案例研究1:Scientific American预订处理系统
1. 1 原有系统
1. 2 编程解决方案: 自顶向下逐步求精
1. 3 编程方案:结果
1. 4 经济学编程方法
1. 5 经济学编程方法的结果
1. 6 综合讨论
1. 7 问题
第2章 案例研究2:市内校区考勤系统
2. 1 编程方面
2. 2 经济学方面
2. 3 人际关系方面
2. 4 得到的教训
2. 5 综合讨论
2. 6 问题
第3章 软件工程目标
3. 1 引言
3. 1. 1 分而治之
3. 1. 2 本章内容
3. 2 软件工程:定义
3. 3 软件趋势:成本
3. 4 软件趋势:社会影响
3. 5 目标的复杂性
3. 6 例子:WEINBERG的实验
3. 7 软件工程方法的复杂性
3. 8 软件工程目标结构
3. 9 软件工程的GOALS方法
3. 10 问题
第二部分 软件生命周期: 定量模型
第4章 软件生命周期:阶段与活动
4. 1 引言
4. 2 瀑布模型
4. 3 瀑布模型的经济学基本原理
4. 3. 1 前提A:所有过程子目标都是必要的
4. 3. 2 前提B:顺序地处理子目标
4. 3. 3 背离顺序方法:原型折中方法
4. 4 瀑布模型的精化
4. 4. 1 增量开发
4. 4. 2 先遣人员
4. 4. 3 软件经济学意义
4. 5 详细的生命周期阶段定义
4. 6 详细的阶段/活动定义
4. 7 软件工作分解结构 WBS
4. 8 软件维护
4. 9 问题
第5章 基本COCOMO模型
5. 1 引言
5. 1. 1 一些估算公式和问题
5. 1. 2 COCOMO模型的版本
5. 2 定义与假设
5. 3 开发的工作量和进度
5. 3. 1 基本COCOMO模型的工作量和进度公式:组织型模式
5. 3. 2 项目轮廓
5. 4 阶段分布
5. 5 正常项目轮廓
5. 6 雷利 Rayleigh 分布
5. 7 插值法
5. 8 基本软件维护量估算
5. 9 问题
第6章 基本COCOMO模型:开发模式
6. 1 引言
6. 2 基本工作量和进度公式
6. 3 软件开发的三种COCOMO模式
6. 3. 1 组织型模式
6. 3. 2 半独立型模式
6. 3. 3 嵌入型模式
6. 3. 4 总结
6. 4 对基本COCOMO工作量和进度公式的讨论
6. 4. 1 COCOMO数据库
6. 4. 2 工作量公式:估算与实际
6. 4. 3 工作量公式:模式间的比较
6. 4. 4 工作量公式:与其他模型的比较
6. 4. 5 进度公式:估算与实际
6. 4. 6 进度公式:与其他模型进行比较
6. 5 工作量与进度的阶段分布
6. 5. 1 百分比分布
6. 5. 2 表的使用
6. 5. 3 基本项目轮廓
6. 5. 4 劳动力分布曲线与雷利分布
6. 5. 5 最后的观点
6. 6 问题
第7章 基本COCOMO模型:活动分布
7. 1 引言
7. 2 按阶段的活动分布
7. 3 基本COCOMO案例研究:Hunt国家银行EFT系统
7. 4 绘制基本的项目组织系统图
7. 4. 1 通用的软件项目组织系统图
7. 4. 2 组织系统图裁剪指南
7. 4. 3 示例:Hunt国家银行EFT项目
7. 4. 4 其他阶段的组织系统图和决策
7. 5 基本COCOMO阶段与活动分布的讨论
7. 5. 1 雷利曲线比较
7. 5. 2 阶段/活动分布
7. 6 基本COCOMO的局限
7. 7 问题
第8章 中等COCOMO模型:产品级估算
8. 1 引言
8. 1. 1 中等COCOMO成本驱动因子属性
8. 1. 2 本章预览
8. 2 中等COCOMO模型:软件开发工作量估算
8. 2. 1 标称工作量换算公式
8. 2. 2 软件开发工作量乘数
8. 2. 3 工作量和进度的阶段与活动分布
8. 3 定价示例:微处理器通信软件
8. 4 管理示例:降低完成成本
8. 4. 1 问题
8. 4. 2 解决方案1:降低项目规模
8. 4. 3 其他可能的解决方案
8. 4. 4 其他的候选项
8. 4. 5 解决方案的选择
8. 5 年维护工作量的调整估算
8. 5. 1 不能用于维护阶段的成本驱动因子:SCED
8. 5. 2 修正过的工作量乘数:可靠性要求
8. 5. 3 修正过的工作量乘数:现代编程规范
8. 6 示例:微处理器通信软件的维护
8. 7 内插值和外插值
8. 8 估算改编现有软件的影响
8. 8. 1 改编需考虑的因素
8. 8. 2 COCOMO改编估算公式
8. 8. 3 COCOMO改编估算公式的基本原理
8. 8. 4 改编估算:注意事项
8. 9 对中等COCOMO工作量公式的讨论
8. 9. 1 中等COCOMO估算与实际的对比
8. 9. 2 中等COCOMO标称工作量估算公式与实际的比较
8. 9. 3 加权的交付源指令度量标准
8. 10 问题
第9章 中等COCOMO:组件级估算
9. 1 引言
9. 2 组件级估算表 CLEF
9. 3 对改编的软件采用CLEF
9. 4 事务处理系统 TPS 示例:基本开发估算
9. 4. 1 TPS描述
9. 4. 2 前端处理器 FEP 软件子系统
9. 4. 3 事务处理器 TP 软件子系统
9. 4. 4 TPS操作系统软件的开发估算
9. 5 TPS组件级维护估算与阶段分布
9. 6 问题
第三部分 软件工程经济学基础
第三部分A 成本效益分析
第10章 性能模型与成本效益模型
10. 1 性能模型
10. 1. 1 示例
10. 1. 2 综合讨论
10. 2 最佳性能
10. 2. 1 示例
10. 2. 2 综合讨论
10. 3 敏感性分析
10. 3. 1 示例
10. 3. 2 综合讨论
10. 4 成本效益模型
10. 4. 1 示例
10. 4. 2 综合讨论
10. 5 问题
第11章 生产函数:规模经济
11. 1 示例
11. 2 综合讨论:定义
11. 3 离散的生产函数
11. 4 软件开发的基本生产函数
11. 5 规模经济与规模不经济
11. 6 大型软件项目的规模不经济
11. 7 应对规模不经济的最好方法
11. 8 问题
第12章 可选方案的选择:决策标准
12. 1 示例:最大化可用预算
12. 2 最小化性能需求
12. 3 最大化效益/成本比
12. 4 最大化效益-成本差额
12. 5 复合选项
12. 6 综合讨论
12. 7 问题
第三部分B 多目标决策分析
第13章 净值与边际分析
13. 1 示例
13. 2 综合讨论:边际分析
13. 3 举例说明
13. 4 在处理净值与利润时的一些注意事项
13. 5 信息处理产品的价值
13. 6 问题
第14章 现在与未来的支出与收入
14. 1 示例:过分简单的成本分析
14. 2 利息计算
14. 3 现值计算
14. 4 一系列现金流的现值
14. 5 租借与购买分析的总结
14. 6 综合讨论:现值概念与公式的总结
14. 7 现值特征
14. 8 对利率或贴现率的敏感性
14. 9 现值分析应用于软件工程
14. 10 问题
第15章 品质因素
15. 1 示例:软件包选择
15. 2 净值分析
15. 3 品质因素分析
15. 4 综合讨论:软硬件选择的加权和分析-案例研究
15. 5 案例研究:活动描述
15. 6 案例研究:评价函数的问题
15. 7 案例研究:权重与级别的问题
15. 8 案例研究:总结
15. 9 已交付系统能力 DSC 品质因素
15. 10 DSC品质因素的轮廓
15. 11 重新考虑TPS示例
15. 12 加权和与DSC品质因素的比较
15. 13 问题
第16章 目标作为约束条件
16. 1 示例:TPS选项A的失效模式
16. 2 系统可靠性与可用性
16. 3 品质因素评价
16. 4 把目标表述成约束条件
16. 5 目标作为约束条件:可行集和成本价值等值线
16. 6 综合讨论:有约束条件的决策问题
16. 7 软件工程应用
16. 8 数学优化技术
16. 9 数学优化技术的能力与局限性
16. 10 问题
第17章 系统分析与约束优化
17. 1 示例
17. 2 综合讨论
17. 3 问题
第18章 处理不可协调与不能量化的目标
18. 1 示例:TPS选项B:开发专用操作系统
18. 2 内部开发与供应商开发相比较时要考虑的事项
18. 3 描述方法
18. 4 综合讨论:不可量化标准
18. 5 不可量化标准的描述方法
18. 6 混合量化标准与不可量化标准的描述方法
18. 7 在描述与解释多变量数据时的一些注意事项
18. 8 问题
第三部分C 处理不确定性. 风险与信息的价值
第19章 处理不确定性:风险分析
19. 1 示例:操作系统开发选项
19. 2 完全不确定性的决策规则
19. 3 主观概率
19. 4 总的讨论:完全不确定性情况下的决策规则
19. 5 信息的价值
19. 6 主观概率的应用
19. 7 效用函数
19. 8 软件工程的含义
19. 9 问题
第20章 统计学决策理论:信息的价值
20. 1 示例:原型方法
20. 2 完全信息的期望价值
20. 3 应对不完全信息
20. 4 示例
20. 5 贝叶斯公式
20. 6 最大化原型的净期望价值
20. 7 总的讨论:完全信息的期望价值
20. 8 不完全信息的期望价值
20. 9 信息的价值过程
20. 10 在软件工程中应用信息的价值过程
20. 11 信息的价值决策指南
20. 12 通过信息的价值方法避免缺陷
20. 13 信息的价值:最后的简要总结
20. 14 问题
第四部分 软件成本估算技术
第四部分A 软件成本估算方法与过程
第21章 软件成本估算中的七个基本步骤
21. 1 步骤1:建立目标
21. 1. 1 目标与阶段, 或理解级别
21. 1. 2 估算的含义
21. 1. 3 相对与绝对估算
21. 1. 4 慷慨的与保守的估算
21. 1. 5 总的方针
21. 2 步骤2:计划所需的数据与资源
21. 3 步骤3:准确说明软件需求
21. 4 步骤4:尽可能详细地做出估算
21. 4. 1 有关软件规模估算
21. 4. 2 PERT计算规模
21. 4. 3 为什么人们会过低估算软件规模
21. 5 步骤5:采用多种独立的方法和资源
21. 6 步骤6:比较与迭代估算
21. 6. 1 乐观/悲观现象
21. 6. 2 顶梁柱现象
21. 6. 3 一些有用的评价问题
21. 7 步骤7:跟进
21. 8 问题
第22章 可选择的软件成本估算方法
22. 1 算法模型
22. 1. 1 线性模型
22. 1. 2 乘法模型
22. 1. 3 分析模型
22. 1. 4 表格模型
22. 1. 5 复合模型
22. 1. 6 算法模型总的优缺点
22. 2 专家判断
22. 2. 1 小组一致方法:Delphi
22. 2. 2 一个Delphi/小组会议软件成本估算实验
22. 2. 3 宽带Delphi方法
22. 3 通过推理来进行估算
22. 4 帕金森估算
22. 5 价格策略估算
22. 6 自顶向下估算
22. 7 自底向上估算
22. 8 各种方法的总结比较
22. 9 问题
第四部分B 详细COCOMO模型
第23章 详细COCOMO:概述与运用描述
23. 1 引言
23. 1. 1 模块-子系统-系统层次
23. 1. 2 阶段敏感的工作量乘法
23. 1. 3 详细COCOMO过程
23. 2 软件分层估算表
23. 3 软件分层估算表过程
23. 4 详细COCOMO示例:学生工作信息系统
23. 4. 1 项目概述
23. 4. 2 估算步骤
23. 5 进度调整计算
23. 5. 1 进度调整过程
23. 5. 2 示例
23. 6 讨论
23. 6. 1 工作量的阶段分布
23. 6. 2 阶段分布:一个极端的例子
23. 6. 3 详细COCOMO的其他组成部分
23. 6. 4 COCOMO模型体系的概述
23. 7 问题
第24章 详细COCOMO成本驱动因子:产品属性
24. 1 RELY:要求的软件可靠性
24. 1. 1 级别与工作量乘数
24. 1. 2 与RELY级别相对应的项目活动的差异
24. 1. 3 与项目结果相比较
24. 1. 4 讨论
24. 1. 5 软件可靠性生产函数
24. 2 DATA:数据库规模
24. 2. 1 级别与工作量乘数
24. 2. 2 与项目结果的比较
24. 2. 3 讨论
24. 3 CPLX:软件产品复杂性
24. 3. 1 级别与工作量乘数
24. 3. 2 与项目结果相比较
24. 3. 3 讨论
24. 4 问题
24. 5 进一步研究的主题
第25章 详细COCOMO模型成本驱动因子:计算机属性
25. 1 TIME:执行时间约束
25. 1. 1 级别与工作量乘数
25. 1. 2 与项目结果进行比较
25. 1. 3 讨论
25. 1. 4 IBM-FSD数据库中的生产率变动范围
25. 2 STOR:主存储器约束
25. 2. 1 级别与工作量乘数
25. 2. 2 与项目结果相比较
25. 2. 3 相关数据与研究的讨论
25. 3 VIRT:虚拟机的易变性
25. 3. 1 级别与工作量乘数
25. 3. 2 与项目结果相比较
25. 3. 3 讨论
25. 4 TURN:计算机周转时间
25. 4. 1 级别与工作量乘数
25. 4. 2 与项目结果的比较
25. 4. 3 讨论
25. 5 问题
25. 6 进一步研究的主题
第26章 详细COCOMO成本驱动因子:人员属性
26. 1 ACAP:分析员能力
26. 1. 1 级别与工作量乘数
26. 1. 2 示例
26. 1. 3 与项目结果的比较
26. 1. 4 讨论
26. 2 AEXP:应用经验
26. 2. 1 级别与工作量乘数
26. 2. 2 与项目结果相比较
26. 2. 3 讨论
26. 3 PCAP:程序员能力
26. 3. 1 级别与工作量乘数
26. 3. 2 与项目结果的比较
26. 3. 3 讨论
26. 4 VEXP:虚拟机经验
26. 4. 1 级别与工作量乘数
26. 4. 2 与项目结果相比较
26. 4. 3 讨论
26. 5 LEXP:编程语言经验
26. 5. 1 级别与工作量乘数
26. 5. 2 与项目结果相比较
26. 5. 3 讨论
26. 6 人员属性的总的讨论
26. 6. 1 属性等级:人员能力
26. 6. 2 属性级别:人员经验
26. 6. 3 对软件人员属性的相关研究
26. 6. 4 数据收集与分析要考虑的因素
26. 7 问题
26. 8 进一步研究的主题
第27章 详细COCOMO成本驱动因子:项目属性
27. 1 MODP:现代编程规范的应用
27. 1. 1 级别与工作量乘数
27. 1. 2 与项目结果相比较
27. 1. 3 讨论
27. 1. 4 MPP使用的GUIDE调查
27. 1. 5 MPP与软件工作程序化
27. 2 TOOL:软件工具的使用
27. 2. 1 级别与工作量乘数
27. 2. 2 与项目结果的比较
27. 2. 3 讨论
27. 2. 4 软件工具生产函数
27. 2. 5 未来的软件工具类别
27. 3 SCED:开发进度约束
27. 3. 1 级别与工作量乘数
27. 3. 2 与项目结果的比较
27. 3. 3 讨论
27. 3. 4 相关的数据和研究
27. 4 问题
27. 5 进一步研究的主题
第28章 COCOMO模型中没有包含的因素
28. 1 应用类型
28. 2 语言级别
28. 3 其他规模度量:复杂性. 实体和说明
28. 3. 1 复杂性度量
28. 3. 2 程序实体的数量:例行程序. 报表. 输入. 输出. 文件
28. 3. 3 说明书元素的数量
28. 3. 4 用源指令计算规模:RADC数据库
28. 4 需求的易变性
28. 5 人员连续性
28. 6 管理质量
28. 7 用户接口质量
28. 8 文档的数量
28. 9 硬件配置
28. 10 安全性和保密性约束
28. 11 进一步研究的主题
第29章 COCOMO模型评价
29. 1 引言
29. 1. 1 COCOMO模型校准/评价过程
29. 1. 2 统计分析
29. 1. 3 本章预览
29. 2 COCOMO模型项目数据库
29. 3 COCOMO模型估算与实际:开发工作量
29. 4 COCOMO模型估算与实际相比较:开发进度
29. 5 COCOMO模型估算与实际相比较:阶段分布
29. 6 COCOMO模型估算与实际相比较:活动分布
29. 7 其他软件成本估算模型
29. 7. 1 1965 SDC模型[Nelson, 1966]
29. 7. 2 TRW Wolverton模型[Wolverton, 1974]
29. 7. 3 Putnam SLIM模型[Putnam, 1978, Putnam-Fitzsimmons, 1979]
29. 7. 4 Doty模型[Herd and others, 1977]
29. 7. 5 RCA PRICE S模型[Freiman-Park, 1979]
29. 7. 6 IBM-FSD模型[Walston-Felix, 1977]
29. 7. 7 1977 Boeing模型[Black and others, 1977]
29. 7. 8 1979 GRC模型[Carriere-Thibodeau, 1979]
29. 7. 9 Bailey-Basili Meta模型[Bailey-Basili, 1981]
29. 8 按模型标准对COCOMO模型的评价
29. 9 根据特定配置环境裁剪COCOMO模型
29. 9. 1 校准COCOMO模型的标称工作量等式
29. 9. 2 校准常量
29. 9. 3 校准软件开发模式
29. 9. 4 重新校准软件开发模式时的注意事项
29. 9. 5 合并. 排除或增加成本驱动因子属性
29. 10 进一步研究的主题
第四部分C 软件成本估算与生命周期维护
第30章 软件维护成本估算
30. 1 引言
30. 2 COCOMO软件维护模型
30. 2. 1 定义
30. 2. 2 软件维护工作量估算
30. 2. 3 修改过的工作量乘数
30. 3 与项目结果相比较
30. 4 其他软件维护成本估算模型
30. 4. 1 维护/开发成本比率
30. 4. 2 人均维护卡片比率
30. 4. 3 维护生产率比率
30. 4. 4 与COCOMO数据相比较
30. 5 软件维护现象学 Phenomenology
30. 5. 1 软件维护生产函数
30. 5. 2 软件维护动力学
30. 5. 3 软件维护工作量按活动的分布
30. 6 软件维护项目数据
30. 7 问题
30. 8 进一步研究的主题
第31章 软件生命周期成本估算
31. 1 引言
31. 2 软件移植成本估算关系
31. 2. 1 定义
31. 2. 2 移植成本估算关系
31. 3 软件移植估算与实际
31. 4 软件安装与培训成本估算
31. 4. 1 定义
31. 4. 2 安装与培训成本数据与模型
31. 4. 3 推荐的估算过程
31. 5 软件开发的计算机成本估算
31. 5. 1 现有数据与估算关系
31. 5. 2 在COCOMO数据库中的计算机时间数据
31. 5. 3 推荐的估算过程
31. 5. 4 计算机时间分布
31. 6 软件文档数量
31. 6. 1 文档等级
31. 6. 2 文档工作量
31. 7 其他软件相关生命周期成本
31. 8 软件生命周期成本效益分析的一个示例
31. 8. 1 PPI公司, 设备管理系统
31. 8. 2 现有软件系统的问题
31. 8. 3 取代现有系统:可行性研究
31. 8. 4 建议的中央设备管理与存货控制系统 CEMICS
31. 8. 5 CEMICS生命周期成本分析
31. 8. 6 CEMICS生命周期成本效益分析
31. 8. 7 CEMICS有形收益
31. 8. 8 CEMICS无形收益
31. 8. 9 CEMICS成本收益比较与风险分析
31. 9 进一步研究的主题
第32章 软件项目计划与控制
32. 1 引言
32. 1. 1 软件成本估算作为自我实现的预言
32. 1. 2 软件成本估算与软件项目管理之间的优势互补
32. 1. 3 本章预览
32. 2 软件项目计划与控制框架结构
32. 3 项目进度安排技术
32. 3. 1 PERT图
32. 3. 2 构造PERT图
32. 3. 3 关键路径分析
32. 3. 4 确定关键路径
32. 3. 5 确定延迟开始与闲散时间
32. 3. 6 涉及计划与控制的问题
32. 3. 7 PERT图:变化与扩展
32. 3. 8 甘特图
32. 3. 9 甘特图与PERT图的比较
32. 4 详细的软件计划与控制:单元开发文件夹
32. 4. 1 90%综合症
32. 4. 2 单元开发文件夹 UDF
32. 4. 3 UDF封面
32. 5 监控项目花费与进展:挣值系统
32. 5. 1 在整体项目状态监督与控制中的问题
32. 5. 2 挣值概念与汇总任务计划表
32. 5. 3 挣值汇总报告
32. 5. 4 讨论
32. 6 软件项目计划与控制示例
32. 7 构造软件成本数据库
32. 8 软件计划与控制总结性的讨论
32. 9 问题
第33章 提高软件生产率
33. 1 引言
33. 1. 1 提高软件生产率的重要性
33. 1. 2 与软件成本估算的关系
33. 1. 3 开发生产率与生命周期生产率的关系
33. 1. 4 软件生产率与人类经济学
33. 1. 5 软件生产率中的主要可控因素
33. 2 非编程选项:软件包
33. 2. 1 软件包特征
33. 2. 2 软件包成本收益考虑
33. 2. 3 软件包的优点
33. 2. 4 商业软件包的特点
33. 2. 5 软件包:做购买还是开发的决策时, 需要考虑的特殊事项
33. 2. 6 关于软件包的信息资源
33. 2. 7 现有内部软件的改编
33. 3 非编程选项:程序生成器
33. 3. 1 程序生成器的生产率优势
33. 3. 2 快速原型与改良设计
33. 3. 3 RP/ED方法的优点
33. 3. 4 RP/ED方法的不足
33. 3. 5 作为生产率度量的DSI/MM的应用
33. 4 软件生产率可控性:产品属性
33. 4. 1 要求的可靠性
33. 4. 2 数据库规模
33. 4. 3 软件产品复杂性
33. 4. 4 编程语言
33. 4. 5 产品规模
33. 5 软件生产率可控性:计算机属性
33. 5. 1 执行时间与主存储约束
33. 5. 2 示例:一个过程控制系统
33. 5. 3 资源控制
33. 5. 4
放宽的性能要求
33. 5. 5 虚拟机的易变性
33. 5. 6 计算机周转时间
33. 6 软件生产率可控性:人员属性
33. 6. 1 人员安置
33. 6. 2 安置原则
33. 6. 3 激励
33. 6. 4 激励因素:一般原则
33. 6. 5 激励因素:软件人员
33. 6. 6 管理
33. 6. 7 软件人员与生产率:总结
33. 7 软件生产率可控性:项目属性
33. 7. 1 现代编程规范 MPP
33. 7. 2 MPP实现指南
33. 7. 3 软件工具的使用
33. 7. 4 期限约束
33. 7. 5 需求易变性
33. 7. 6 工作环境
33. 8 建立起软件生产率提高过程
33. 9 结论
第五部分 附 录
附录A 软件成本数据收集表格与步骤
附录B 软件工作目标结构
附录C 缩写词表
参考书目
作者索引
主题词索引