第三章 软件项目规划
软件项目管理概述
软件项目的特征:1.软件产品的不可见性 2.项目的高度不确定性 3.软件人员的高流动性
软件项目管理的“4P”:人员(People)、产品(Product)、过程(Process)和项目(Project)。
软件项目管理的“4P”
软件项目管的生命周期包括项目启动、项目规划、项目实施和项目收尾4个阶段,其中项目启动时确定项目的目标和范围,项目规划是建立项目的基准计划,项目实施是按照技术执行和控制项目,项目收尾时交付产品以及总结经验教训。
人员组织与管理
民主式、主程序员式和技术管理式是3种典型的开发组织方式。
项目沟通管理
项目沟通复杂性
软件团队规模是影响沟通有效性的重要因素之一,团队成员数量的增加会使项目的有效交流变得十分困难。对于一个具有n个成员的项目团队来说,彼此之间的沟通渠道数量是n(n-1)/2,当项目成员数量超过3个人时,其沟通渠道的数量就会快速增长。
项目沟通方式
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是每千行代码的平均错误数。
功能点技术
功能点技术是Albrecht在1979年提出的一种比较流行的估算方法,它依据软件信息域的基本特征和对软件复杂性的估计,估算出软件规模。
信息域特征 |
估算值 |
|
加权因子 |
单项总和 |
||
简单 |
中等 |
复杂 |
||||
外部输入 |
X |
3 |
4 |
6 |
= |
|
外部输出 |
X |
4 |
5 |
7 |
= |
|
外部查询 |
X |
3 |
4 |
6 |
= |
|
内部逻辑文件 |
X |
7 |
10 |
15 |
= |
|
外部接口 |
X |
5 |
7 |
10 |
= |
|
未调整功能点总数UFP |
调整后的功能点:FP=UFP*[0.65+0.01*∑Fi]
软件成本估算
1.专家判断 2.类比估算 3.COCOMO模型
软件项目计划
软件项目管理计划是一个用来协调所有其他计划、以指导项目实施和控制的文件。它应当记录计划的假设条件以及方案选择,确定关键管理审查的内容、范围和时间,并为进度评测和项目控制提供一个基线。
软件风险管理
风险识别
1.软件规模风险 2.商业影响风险 3.客户相关风险 4.软件过程风险 5.开发技术风险 6.开发环境风险 7.开发人员风险
风险分析
风险分析的任务是对已识别的风险进行估计和评价,确定风险发生的概率与后果。
风险规划
常用的风险应对策略包括风险规避、风险缓解、风险转移、风险接受等,其中风险规避是设法降低风险出现的可能性,风险缓解是设法减少风险产生的影响,风险转移是将风险转移给第三方,风险接受是采取应急方案应对风险的发生。
风险监控
监督、检查风险事件的发生情况以及风险措施的落实情况,通过对风险事件及其来源的控制和对风险计划落实情况的监督,确保风险措施有效。
软件配置管理
基本概念
1.软件配置项
软件配置项是为了配置管理而作为单独实体处理的一个工作产品或软件。
2.基线
基线是已经通过了正式复审的规格说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变。
3.版本
版本是确定在明确定义的时间点上某个配置项的状态。
4.软件配置库
软件配置库用于记录整个软件生命周期内与配置有关的所有信息,它应该满足以下要求:
①软件配置库的内容不允许被任意修改和删除,只有合法用户才能进行存取访问;
②需要保证所有配置项在各个阶段的基线是完整的;
③软件配置库可以方便地进行备份和恢复,正常情况下需要每日或每周进行备份,当出现异常时可以方便地恢复配置信息。
配置管理活动
1.配置项标识
为了便于配置项的控制和管理,需要将配置项采用合适的方式进行命名组织。
2.版本管理
版本管理是对系统不同版本进行标识和跟踪的过程,它可以保证软件技术状态的一致性。
3.系统构建
系统构建是把软件组件编译和连接成一个特定目标配置上的运行程序的过程。
4.变更控制
对于大型软件开发项目而言,不加控制的软件变更将导致开发过程的混乱。变更控制就是建立一套组织结构和控制规程,有意识地控制软件的变更过程。