基本概念:
问:软件项目延期的原因
(1) 不切实际的项目结束时间,由软件团队意外的人制定,并强加于开发团队的
(2) 客户需求发生变更,而这种变更没有在项目变更进度表中预先安排
(3) 对工作量和资源估算不足
(4) 在项目开始的时,没有考虑到可预测的和(或)不可预测的风险
(5) 出现了事先无法预计的技术难题
(6) 出现了事先无法预计的人员问题
(7) 团队成员之间的交流不畅
(8) 项目的管理者发现了问题,未采取合理的措施
问:加入你是项目经理,你发现在现有结束时间的约束下,最为乐观的估算都表明该项目的结束期限不现实,你改怎么办。
(1) 按照以往项目的历史数据进行详细的估算,确定估算工作量和工期。
(2) 采用增量模型制定软件工程策略,保证在规定的时期提供主要功能,而将其他功能的实现推到以后,然后将这一计划做成文档。
(3) 与客户交流,并(用详细的估算结果)说明为什么规定的交付时间不现实,并指出这一分析是基于以往经验的。
(4) 将增量开发策略作为可选计划提交给客户(增加成本/增量策略/尽力开发,是否可用不能保证)
进度安排
(1)技术性项目:由数以百计的小的任务组成:
主流之外:不影响整个项目的进度。
关键任务:威胁真个项目的完成日期:
(2)管理者建立相当详细的进度表(工作量分配到软件任务中去),以监督进度,并控制整个项目:
确定项目的所有任务-》建立相应的网络来描述任务之间的依赖关系-》确定网络中的关键的任务—》跟踪关键任务的进度,确保能够在“某天某时”发现进度延迟情况
(3)进度随时间不断的演化:
早期宏观的进度表:–》按照软件过程中的活动进行安排
随之项目的进行,逐步细化,每个框架活动的每一个任务。
(4)两种不同角度:
最终的日期已经确定/已经大致时间界定,最终时间由软件工程团队自行决定
基本原则
(1)划分:将项目划分成多个可以管理的活动和任务
(2)相互依赖性:划分后的活动和任务之间的相互依赖关系必须明确:有些任务顺序出现,有些可以并行,有些在其他任务完成之后才能开始,有些可以独立。
(3)时间分配:每个要进行进度安排的任务必须分配一定数量的工作单元,并指定开始日期和结束日期
(4)工作量确定:确保字在任意时间段分配的人员数量不会超过项目团队中的总人数
(5)确定责任:进度计划中每个任务都应该制定团队成员来负责
(6)明确输出结果:进度计划中每个任务都应该有一明确的输出结果。
(7)确定历程碑:每个任务或者任务组都应该与一个项目的里程碑建立起关联。