第三章 软件项目管理
软件项目管理有利用将软件开发人员的个人开发能力转化成企业开发能力,并使企业的软件开发能力不断提高和成熟。
一.软件项目管理概述
概念:软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动
1.软件项目的特征
①软件产品的不可见性。(复杂性,抽象性)
②项目的高度不确定性。
③软件过程的多变化性。(复杂性、多样性,不稳定性)
④软件人员的高流动性。
2.软件项目管理的“4P”
人员(People)、产品(Product)、过程(Process)和项目(Project)。
3.软件项目管理活动
软件项目的生命周期包括项目启动、项目规划、项目实施和项目收尾4个阶段。
项目启动:确定项目范围;组建项目团队;建立项目环境。
项目规划:确定项目活动;预算项目成本;制定进度计划。
项目实施:监控项目执行;管理项目风险;控制项目变更。
项目收尾:客户验收项目;安装培训软件;总结项目经验。
二.人员组织与管理
优秀的软件人才和高效的组织管理是软件项目成功的关键所在。
1.软件项目组织
在大多数软件项目中,民主式、主程序员式和技术管理试是三种典型的开发组织方式。
2.软件团队的建设
一个高效的软件开发团队应该具有以下特征:
①明确的目标与共同分享的项目前景。
②清晰的角色分工与紧密的团队协作。
③融洽的关系与通畅的沟通。
④高昂的士气与高效的生产力。
建设高效的项目团队涉及企业环境、人员激励和日常管理等因素,下面的基本原则有益于项目团队的建设:
①项目成员集中办公。
②人人参与产品设计。
③关注最终产品发布。
④注重项目人员培训。
⑤建立良好的企业文化。
三.项目沟通管理
软件开发是一种团队协作活动,彼此之间开发工作的相关性使得项目沟通显得尤为重要。
项目沟通是软件工程中最关键而且最耗时的活动。
1.项目沟通复杂性
对于一个有n个成员的项目团队来说,彼此之间的沟通渠道数量是n(n-1)/2,当项目成员数量超过3个人时,其沟通渠道的数量就会快速增长。
软件团队成员的数量应该保持在3~7人之间。
2.项目沟通方式
①直接交谈。(不适于多人沟通)
②电话交谈。
③电子邮件。
④会议。(资源消耗大、集中时间长、联系安排困难。)
⑤项目网站。
⑥书面报告。
3.项目沟通活动
项目沟通应确保整个软件开发过程中所有信息的准确、及时、完整和有效,项目管理者需要规划信息沟通的内容,方式和渠道等,建立项目沟通的基础设施。
①规划项目沟通。
⑴项目组内部的信息交流活动。
⑵项目组之间的信息交流活动。
②建立基础设施。
③实施阶段性评审。
④每周组织小组会议。
四.软件项目规划
软件项目规划是项目管理的核心工作。
1.软件规模估算
①代码行技术
期望值:L=(a+4m+b)/6
a(最佳的),b(悲观的),m(可能的)。
生产率:P=L/PM
L是代码行数,其单位是千行代码kLOC;PM是软件开发的工作量,其单位是人月;P是软件开发的生产率,其单位是每人月完成的代码行数。
单位成本:C=S/L
S是软件开发的总成本,其单位是人民币或美元等货币单位;C是每行代码的平均成本。
代码出错率:EQR=N/L
N是软件的错误总数;EQR是每千行代码的平均错误数。
②功能点技术
2.软件成本估算
目前的软件成本估算一般包括专家判断、类比估算和经验模型等三种技术。
3.软件项目计划
软件项目管理计划(Software Project Management Plan,SPMP)是一个用来协调所有其他计划,以及指导项目实施和控制的文件。
具体格式如下:
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.风险分析
可划分为可忽略的、轻微的、严重的、灾难性的等4个级别
六.软件配置管理
1.基本概念
软件配置项(Software Configuration Item,SCI)
是为了配置管理而作为单独实体处理的一个工作产品或软件。
基线(Baseline)
是已经通过了正式复审的规格说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变。
版本(Version)
版本是确定在明确定义的时间点上某个配置项的状态。
软件配置库
软件配置管理就是对软件配置库中的所有信息项进行控制和管理。
2.配置管理活动
配置项标识;版本管理;系统构建;变更控制。