(软件工程复习核心重点)第十二章软件项目管理-第二节:进度计划

(56) 2024-02-28 09:01:01

文章目录

  • 一:相关概念
    • (1)任务集合
    • (2)项目管理者的工作
      • A:目标
      • B:方法
    • (3)进度安排
      • A:定义
      • B:流程
  • 二:估算开发时间
    • (1)利用成本估算模型估算开发时间
    • (2)特殊情况
      • A:描述
      • B:原因
    • (3)项目组规模与项目组总生产率的关系
      • A:通信路径
      • B:平均生产力
      • C:总生产率
  • 三:甘特图(Gantt)
    • (1)例子
    • (2)甘特图的优缺点
  • 四:工程网络
    • (1)定义
    • (2)表示
  • 五:估算工程进度
    • (1)完善工程网络
    • (2)最早时刻EET
    • (3)最迟时刻LET
  • 六:关键路径
    • (1)定义
    • (2)特点
  • 七:机动时间
    • (1)定义
    • (2)计算
    • (3)表示

一:相关概念

(1)任务集合

一个有效的软件过程应该定义一个适用于当前项目的任务集合。一个任务集合包括一组软件工程工作任务、里程碑和可交付的产品。为一个项目所定义的任务集合,必须包括为获得高质量的软件产品而应该完成的所有任务,但是同时又不能让项目组承担不必要的工作

(2)项目管理者的工作

A:目标

定义全部项目任务,识别出关键任务,跟踪关键任务的进展状况,保证及时发现拖延进度的情况

B:方法

管理者必须制定一个足够详细的进度表,以便监督项目进度并控制整个项目

(3)进度安排

A:定义

软件项目的进度安排通过把工作量分配给特定的软件工程任务并规定完成各项任务的起止日期,从而将估算出的项目工作量分布于计划好的项目持续期内。进度计划将随着时间的流逝而不断演化

B:流程

  • 在项目计划的早期,制定一个宏观的进度安排表,标识出主要的软件工程活动和这些活动影响到的产品功能
  • 随着项目的进展,把宏观进度表中的每个条目都精化成一个详细进度表,标识出完成一个活动所必须实现的一组特定任务,并安排好实现这些任务的进度

二:估算开发时间

(1)利用成本估算模型估算开发时间

  • Walston_Feilix模型: T = 2.5 E 0.35 T=2.5E^{0.35} T=2.5E0.35
  • 原始的COCOMO模型: T = 2.5 E 0.38 T=2.5E^{0.38} T=2.5E0.38
  • COCOMO2模型: T = 3.0 E 0.33 + 0.2 × ( b − 1.01 ) T=3.0E^{0.33+0.2×(b-1.01)} T=3.0E0.33+0.2×(b1.01)
  • Putnam模型: T = 2.4 E 1 3 T=2.4E^{\frac{1}{3}} T=2.4E31

其中E是以人月为单位的开发工作量,T是以月为单位的开发时间

(2)特殊情况

A:描述

随着开发小组规模的扩大,个人生产率将下降,以致开发时间与从事开发工作的人数并不成反比关系

B:原因

  • 小组变得更大时,每个人需要用更多时间与组内其他成员讨论问题、协调工作,因此增加了通信开销
  • 如果在开发过程中增加小组人员,最初一段时间内项目组总生产率不仅不会提高反而会下降。因为新成员在开始时不是生产力,且在他们学习期间需花费小组其他成员的时间
  • Brooks规律:向一个已经延期的项目增加人力,只会使得它更加延期

(3)项目组规模与项目组总生产率的关系

A:通信路径

项目组成员之间的通信路径数,由项目组人数和项目组结构决定。通信路径数大约在 P P P~ P 2 2 \frac{P^{2}}{2} 2P2的范围内变化

B:平均生产力

某一个组员与其他组员通信的路径数在1~( P P P-1)的范围内变化。如果不与任何人通信时个人生产率为 L L L,而且每条通信路径导致生产率减少1,则组员个人平均生产率为

L r = L − 1 ( P − 1 ) r L_{r}=L-1(P-1)^{r} Lr=L1(P1)r

  • 取中,r(0<r ≤ \leq 1)是对通信路径数的度量

C:总生产率

对于一个规模为 P P P的项目组,项目组的生产率为

L t o t = P ( L − 1 ( P − 1 ) r ) L_{tot}=P(L-1(P-1)^{r}) Ltot=P(L1(P1)r)

三:甘特图(Gantt)

甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。其通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况

(1)例子

假设有一座陈旧的矩形木板房需要重新油漆。这项工作必须分3步完成:首先刮掉旧漆,然后刷上新漆,最后清除溅在窗户上的油漆。假设一共分配了15 名工人去完成这项工作,然而工具却很有限:只有5把刮旧漆用的刮板,5把刷漆用的刷子,5把清除溅在窗户上的油漆用的小刮刀。怎样安排才能使工作进行得更有效呢?
每道工序需要的时间如下表所示
(软件工程复习核心重点)第十二章软件项目管理-第二节:进度计划 (https://mushiming.com/)  第1张

甘特图如下

  • 在时间为零时开始刮第1面墙上的旧漆;
  • 两小时后刮旧漆的工人转去刮第2面墙,同时另5名工人开始给第1面墙刷新漆;
  • 当给一面墙刷完新漆之后,第3组的5名工人立即清除溅在这面墙窗户上的漆。

(软件工程复习核心重点)第十二章软件项目管理-第二节:进度计划 (https://mushiming.com/)  第2张
从上图可以看出,12小时后刮完所有旧漆,20小时后完成所有墙壁的刷漆工作,再过2小时后清理工作结束。因此全部工程在22小时后结束

(2)甘特图的优缺点

优点

  • 很形象地描绘任务分解情况,以及每个子任务(作业)的开始时间和结束时间
  • 容易掌握、绘制

缺点

  • 不能显式地描绘各项作业彼此间的依赖关系
  • 进度计划的关键部分不明确,难于判定哪些部分应当是主攻和主控的对象
  • 计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费

四:工程网络

(1)定义

工程网络可以描绘任务分解情况以及每项作业的开始时间和结束时间,它还显式地描绘各个作业彼此间的依赖关系

(2)表示

  • 用箭头表示作业,作业通常既消耗资源又需要持续一定时间
  • 用圆圈表示事件(开始或结束),事件是明确定义的时间点,并不消耗时间和资源
  • 用虚线箭头表示虛拟作业,虚拟作业是为了显式地表示作业之间的依赖关系

(软件工程复习核心重点)第十二章软件项目管理-第二节:进度计划 (https://mushiming.com/)  第3张

五:估算工程进度

(1)完善工程网络

  • 把每个作业估计需要使用的时间写在表示该项作业的箭头上方。
  • 为每个事件计算最早时刻EET和最迟时刻LET,分别写在表示事件的圆圈的右上角和右下角

(软件工程复习核心重点)第十二章软件项目管理-第二节:进度计划 (https://mushiming.com/)  第4张

(2)最早时刻EET

事件的最早时刻是该事件可以发生的最早时间。通常工程网络中第一个事件的最早时刻定义为零,其他事件的最早时刻在工程网络上从左至右按事件发生顺序计算

  • 考虑进入该事件的所有作业
  • 对于每个作业都计算它的持续时间与起始事件的EET之和
  • 选取上述和数中的最大值作为该事件的最早时刻EET

(3)最迟时刻LET

事件的最迟时刻是在不影响工程竣工时间的前提下,该事件最晚可以发生的时刻。最后一个事件的最迟时刻就是它的最早时刻。其他事件的最迟时刻在工程网络上从右至左按逆作业流的方向计算

  • 考虑离开该事件的所有作业
  • 从每个作业的结束事件的最迟时刻中减去该作业的持续时间
  • 选取上述差数中的最小值作为该事件的最迟时刻LET

六:关键路径

(1)定义

由最早时刻和最迟时刻相同的事件定义了关键路径。关键事件必须准时发生,组成关键作业的实际持续时间不能超过估计的持续时间,否则工程就不能准时结束

(2)特点

  • 处于关键路径之外的任务进度拖后,不会影响整个项目的完成时间
  • 处于关键路径之中的任务进度拖后,则整个项目的完成日期就会拖后

七:机动时间

(1)定义

不在关键路径上的作业有一定程度的机动余地:实际开始时间可以比预定时间晚一些,或者实际持续时间可以比预定的持续时间长一 些,而并不影响工程的结束时间

(2)计算

(软件工程复习核心重点)第十二章软件项目管理-第二节:进度计划 (https://mushiming.com/)  第5张

(3)表示

工程网络中每个作业的机动时间写在该项作业的箭头下面的括号里。在制定进度计划时仔细考虑和利用工程网络中的机动时间,往往能够安排出既节省资源又不影响最终竣工时间的进度表

THE END

发表回复