本章的主要内容是软件项目管理
软件项目原理概述:
软件项目的特征:
1. 软件产品的不可见性;
2. 项目的高度不确定性;
3. 软件过程的多变化性;
4. 软件人员的高流动性。
总而言之,“复杂”和“变化”给软件项目的管理带来了相当大的难度,降低复杂性和控制变化成为软件项目管理面临的关键问题。
软件项目管理的“4P”:
1. 人员;2. 产品;3. 过程;4. 项目。
软件项目管理活动:
1. 项目启动:
(1) 确定项目活动;
(2) 组建项目团队;
(3) 建立项目环境。
2. 项目规划:
(1) 确定项目活动;
(2) 预算项目成本;
(3) 制定进度计划。
3. 项目实施:
(1) 监控项目执行;
(2) 管理项目风险;
(3) 控制项目变更。
4. 项目收尾:
(1)客户验收项目;
(2)安装培训软件;
(3)总结项目经验。
人员组织与管理:
软件项目组织
1. 民主式组织结构;
2. 主程序员式组织结构;
3. 技术管理式组织结构。
软件团队的建设
1. 明确的目标;
2. 清晰的角色分工与紧密的团队协作;
3. 融洽的关系与通畅的沟通;
4. 高昂的士气与高效的生产力;
建立高效的项目团队涉及企业环境、人员激励和日常管理等因素,下面的基本原则有益于项目团队的建设:
1. 项目成员集中办公;
2. 人人参与产品设计;
3. 关注最终产品发布;
4. 注重项目人员培训;
5. 建立良好的企业文化。
项目沟通管理
项目沟通复杂性
软件团队规模是影响沟通有效性的重要因素之一,团队成员数量的增加会使项目的有效交流变得十分困难。
项目沟通方式
1. 直接交谈;2. 电话交谈;3. 电子邮件;4. 会议;5. 项目网站;6. 书面报告。项目交流是无处不在的,项目管理者应当合理地选择恰当的沟通方式,建立通畅的沟通 渠道,保证能够及时准确地交流项目信息。
项目沟通活动
1. 规划项目沟通;2. 建立基础设施;3. 实施阶段性评审;4. 每周组织小组会议。
软件项目规划
软件规模估算
1. 代码行技术:
期望值: L = (a + 4m + b) / 6; [最佳的(a)、可能的(m)、悲观的(b)]
生产率: P = L / PM [L 是软件的代码行数,其单位是千行代码 kLOC;PM 是软件开发的工作量,其单位是人月;P 是软件开发的生产率,其单位是每人月完成的代码行数。]
单位成本: C = S / L; [S 是软件开发的总成本,其单位是人民币或美元等货币单位;C 是每行代码的平均成本。]
代码出错率: EQR = N / L; [N 是软件的错误总数;EQR 是每千行代码的平均错误处]
2. 功能点技术:
1. 计算未调整功能点;2. 估计调整因子;3. 计算调整功能点。
软件成本估算
1. 专家判断;2. 类比估算;3. COCOMO模型。
软件项目计划
IEEE标准,具体规格如下:
1. 概述
1.1 项目概述
1.2 SPMP 的演化
2. 参考资料
3. 定义和缩写
4. 项目组织
4.1 外部接口
4.2 内部组织结构
4.3 角色和职责划分
5. 管理过程
5.1 项目启动计划
5.2 工作计划
5.3 控制计划
5.4 风险管理计划
5.5 项目收尾计划
6. 计划过程
6.1 过程模型
6.2 方法、工具和技术
6.3 基础设施
6.4 产品验收
7. 支持过程
7.1 配置管理计划
7.2 验收和确认计划
7.3 文档计划
7.4 质量保证计划
7.5 评审计划
7.6 问题解决
7.7 分包管理计划
7.8 过程改进计划
8. 其他计划
附录
索引
软件风险管理
风险识别
1. 软件规模风险;2. 商业影响风险;3. 客户相关风险;4. 软件过程风险;5. 开发技术风险;6. 开发环境风险;7. 开发人员风险。
风险分析
风险因素包含性能、支持、成本、进度;分别分为四个风险级别:灾难性的、严重的、轻微的、可忽略的。
风险规划
1. 与现有人员一起探讨人员流动的原因,诸如恶劣的工作条件、低报酬、竞争激烈等;2. 在项目开始之前,采取行动以缓解那些在管理控制之下的原因;3. 在项目进行过程中,有效地管理和组织软件开发过程,保证软件开发的信息交流畅通。定义软件文档的标准,建立相应的机制以确保文档的及时建立,同时对所有工作进行详细复审,使得不止一个人熟悉该项工作;4. 如果发生人员流动,则采取一些技术措施以保证人员离开时工作的连续性;5. 在关键的技术环节,对于每一个开发人员都制定一个后备人员。
风险监控
1. 项目成员对项目压力的一般态度;2. 项目组的凝聚力;3. 项目组成员彼此之间的关系;4. 与报酬和利益相关的潜在问题;5. 在公司和公司外工作的可能性。
软件配置管理
基本概念
IEEE给出如下定义:
软件配置项:软件配置项是为了配置管理而作为单独实体处理的一个工作产品或软件。
基线:基线是已经通过了正式复审的规格说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变。
版本:版本是确定在明确定义的时间点上某个配置项的状态。
软件配置库:用于记录整个软件生命周期内与配置有关的所有信息。
配置管理活动
1. 配置项标识;2. 版本管理;3. 系统构建;4. 变更控制。
配置管理工具
使用CASE工具支持软件配置是至关重要的,比如CVS。
CVS 是一种并发版本控制工具,适宜于中小型软件企业使用,也经常应用在开发源代码软件的开发工作中,Linux操作系统就是在分布式 CVS 系统上开发成功的一个典型案例。