文档介绍:软件工程
电子教案
王树林
第7章项目进度安排及跟踪
一个软件开发项目的进度为什么总是比计划晚?
这是一个被千千万万的软件开发者所重复的过程。
基本概念
虽然软件延期交付的原因很多,但多数原因如下:
一个不现实的截止期限;
对工作量或完成该工作所需的资源数量估计不足;
在项目开始时,没有将可以预测的或不可预测的风险考虑在内。
第7章项目进度安排及跟踪
事先无法预计的技术困难;
事先无法预计的人力困难;
由于项目组成员之间的交流不畅而导致的延期;
项目管理者未能发现进度拖后,也未能采取行动解决这个问题;
关于延迟的评注
拿破伦曾经说过:“任何同意一个他本人都认为是有缺陷的计划的指挥官都应该受到指责,他必须提出自己的反对理由,坚持修改这一计划,最终甚至提出辞职而不是使自己的军队遭受惨败。
第7章项目进度安排及跟踪
例如: 一个软件开发小组的任务是开发一个医疗诊断仪器的实时控制系统,该控制系统需要在9个月之内推向市场,在仔细的估算和风险分析之后,软件项目管理者得到的结论是在现有的人员条件下,需要14个月的时间才能完成。外部市场压力决定了交付日期。
怎么办呢?
第7章项目进度安排及跟踪
(1)进行详细估算
(2)使用增量模型
(3)与客户会谈并解释为什么规定的交付日期是不现实的。
(4)将增量开发策略作为可选计划提交给客户。
第7章项目进度安排及跟踪
技术性项目的特点:在实现一个大目标之前必须完成许多小目标和小任务。一些任务处在主流之外,一些任务处在关键路径上。如果关键路径上的任务被拖后,则整个项目的完成日期就会受到威胁。
项目管理者的任务就是定义所有的项目任务,识别关键任务,然后跟踪关键任务的进展,及时监控项目的进度。
第7章项目进度安排及跟踪
在项目进展的早期,首先建立一个宏观的进度表。该进度表标识所有主要的软件工程活动。随着项目的进展,宏观进度表中的每个条目都被精化为一个详细进度表。
进度安排:
(1)基于软件系统的最终发布日期。
(2)最终发布日期由自己决定。
活动安排:
第7章项目进度安排及跟踪
(1)项目划分,任务分解,对产品和过程都需要分解。
(2)相互依赖性。有些活动必须顺序发生,有些活动可以并发执行,有些活动可以独立进行。
(3)时间分配。必须为每个被调度的任务分配一定数量的工作单位,必须为每个任务指定开始和结束日期。
(4)每个项目都有预定数量的人员参与。
(5)定义责任: 每个任务都必须由一个专人负责。
第7章项目进度安排及跟踪
(6)定义结果:每个任务都必须有一个定义好的结果。
(7)定义里程碑:每个任务都必须与一个项目里程碑相连。
人员与工作量之间的关系
对于小型项目而言,一个人就可以完成需求分析、设计、编码和测试。但对于大项目来说,则往往需要花数十人年时间。进度拖后,仅靠增加更多的程序员是不足以解决这个问题的。人员之间的依赖与通信需要花费较多的时间。
第7章项目进度安排及跟踪
一个例子
一个需要4名程序员的项目。每个工程师的工作能力都是每年生产5000LOC。有6条通信途径。每条通信途径都增加了通信成本。
当然,通信也可以增加软件的质量。
一个经验关系
在完成项目的时间与投入项目中的人员的工作量之间存在着高度非线性关系。交付的代码行数L与工作量和开发时间之间的关系可以用下面的的公式表示: