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