项目进度安排

        软件项目的进度安排与任何其他多任务工程工作的进度安排几乎没有差别。因此,通用的项目进度安排工具和技术不必做太多修改就可以应用于软件项目。
        进度计划评估及评审技术(Program Evaluation and Review Technique, PERT)和关键路径方法(Critical Path Method,CPM)就是两种可以用于软件开发的项目进度安排方法。这两种技术都是由早期项目计划活动中已经产生的信息来驱动的,早期的项目计划活动包括:工作量的估算、产品功能的分解、适当过程模型和任务集的选择,以及所选择的任务的分解。
        任务之间的依赖关系可以通过任务网络来确定。任务有时也称为项目的工作分解结构(Work Breakdown Structure,WBS),可以是针对整个产品,也可以是针对单个功能来进行定义。

引述
        唯一要我们做出决定的就是怎样分配所给定的时间。

                                                                        ——  Gandalf,《指环王:护戒使者》

        PERT和CPM两种方法都是定量划分的工具,可以使软件计划者完成:(1)确定关键路径-一决定项目工期的任务链;(2)基于统计模型为单个任务进行“最有可能”的时间估算;(3)为特定任务的时间“窗口”计算“边界时间”。

软件工具        项目进度安排

[目标]  项目进度安排工具的目标是使项目管理者能够确定工作任务,建立工作任务之间的依赖关系,为工作任务分配人员,并能够形成各种图表,以辅助对软件项目进行跟踪和控制。
[机制]  通常,项目进度安排工具要求完成各任务的工作分解结构的规格说明,或者创建任务网络。一旦确定了工作分解结构(大纲形式)或任务网络,就可以为每一个任务指定开始和结束日期、分配人员、确定交付日期以及其他内容。然后,项目进度安排工具可以生成多种时序图及其他表
格,使项目管理者能够对项目的任务流程进行评估。随着项目的进展,这些信息可以不断地进行更新。
[代表性工具]θ【这里提到的工具只是此类工具的例子,并不代表本书支持采用这些工具。在大多数情况下,工具名称被各自的开发者注册为商标】

  • AMS Realtime。由Advanced Management Systems(www.amsusa.com)开发,可以对各种规模和类型的项目做进度安排。
  • Microsoft Project。由Microsoft (www.microsoft.com)开发,是一个使用最广泛的PC项目进度安排工具。
  • 4C。由4CSystems(www.4csys.com)开发,支持项目计划的各个方面,包括进度安排。

        项目管理软件厂商及其产品的详细清单见www.infogoal.com/pmc/pmcswr.htm.

1  时序图
        在创建软件项目进度表时,计划者可以从一组任务(工作分解结构)入手。如果使用自动工具,就可以采用任务网络或者任务大纲的形式输入工作分解结构,然后再为每一项任务输入工作量、工期和开始日期。此外,还可以将某些任务分配给特定的人员。

        输入信息之后,就可以生成时序图(timelinechart),也叫作甘特图(Gantt chart)。可以为整个项目建立一个时序图,也可以为各个项目功能或各个项目参与者分别建立各自的时序图。
        图给出了时序图的格式,该图描述了字处理(Word-Processing,WP)软件产品中确定概念范围这一任务的软件项目进度安排。所有的项目任务(针对“确定概念范围”)都在左边栏中列出。水平条表示各个任务的工期,当同一时段中存在多个水平条时,就代表任务之间的并发性,菱形表示里程碑。

关键点
        通过时序图可以确定在特定时间点将进行什么任务。

        输入了生成时序图所需的信息之后,大多数软件项目进度安排工具都能生成项目表(project table)-列出所有项目任务的表格,项目表中列出了各个任务计划的开始与结束日期、实际开始日期与结束日期以及各种相关信息。通过项目表与时序图,项目管理者就可以跟踪项目的进展情况。

2  跟踪进度
        如果制定正确,项目进度表应该成为一个能够确定在项目进展过程中跟踪和控制任务及里程碑的线路图。项目跟踪可以通过以下方式实现:

引述
        软件状态报告的基本规则可以归纳为一句话:一点都不奇怪。
                                                                                ——  Capers Jones

  • 定期举行项目状态会议,由项目团队中的各成员分别报告进度和存在的问题。
  • 评估在软件工程过程中所进行的所有评审的结果。
  • 判断正式的项目里程碑(图25-3中的菱形)是否在预定日期内完成。
  • 比较项目表中列出的各项任务的实际开始日期与计划开始日期。
  • 与开发人员进行非正式会谈,获取他们对项目进展及可能出现的问题的客观评估。
  • 通过挣值分析来定量地评估项目进展。

        实际上,有经验的项目管理者会使用所有这些跟踪技术。
        软件项目管理者通过施加控制来管理项目资源、处理问题和指导项目参与者。如果一切顺利(即项目在预算范围内按进度进行,评审结果表明的确取得了实际进展,达到了各个里程碑),则几乎不必施加控制。但是如果出现问题,项目管理者就必须施加控制,以便尽快解决问题。当诊断出
问题之后,可能需要增加额外的资源来解决问题:雇用新员工或者重新安排项目进度。

        建议
                项目进展的最佳指标就是所定义的软件工作产品的实现和成功评审。

        在面对交付期限的巨大压力时,有经验的项目管理者有时会使用一种称为时间盒(time-boxing) [Jal04]的项目进度安排与控制技术。时间盒方法认为完整的产品可能难以在预定时间内交付,因此,应该选择增量软件开发范型(第4章),并为每个增量的交付制定各自的进度表。
        接着,对与每个增量相关的任务实行时间盒技术。也就是按该增量的交付日期向后进行推算来调整各个任务的进度。将各个任务放入相应的“盒子”中,当一个任务触及其时间盒边界时(±10%的范围内),则该项任务停止,下一任务开始。
        对时间盒方法的最初反应通常是消极的:“如果工作尚未完成,我们该如何继续?”这个问题的答案在于完成工作的方式。当遇到时间盒的边界时,很可能已经完成了任务的90%【爱冷嘲热讽的人也许会想起一句谚语:“完成系统的前90%需要90%的时间,完成剩下的10%也要用90%的时间。”】,余下10%的工作尽管重要,但是可以:(1)推迟到下一个增量中;或(2)在以后需要时再完成。项目朝着交付日期推进,而不是“卡”在某项任务上。

3  跟踪面向对象项目的进展
        虽然迭代模型是最好的面向对象项目框架,但是,任务的并行性使得面向对象项目很难跟踪。困难在于项目管理者很难为面向对象项目建立有意义的里程碑,因为很多不同事物都是同时发生的。通常,有相应的准则来衡量下列主要的里程碑是否已经“完成”。
        技术里程碑: 面向对象分析完成

  •         已经定义和评审了所有的类和类层次。
  •         已经定义和评审了与每一个类相关的属性和操作。
  •         已经建立和评审了各类之间的关系(第9章)。
  •         已经建立和评审了行为模型(第10章)。
  •         已经确定了可复用的类。

        技术里程碑:面向对象设计完成        

  •         已经确定和评审了子系统集合。
  •         各类已经分配给相应的子系统,并且已经通过评审。
  •         已经建立和评审了任务分配。
  •         已经明确责任和协作。
  •         已经设计和评审了属性和操作。
  •         已经创建和评审了通信模型。

        技术里程碑:  面向对象程序设计完成

  •         按照设计模型,每一个新类都已经编码实现。
  •         (从可复用库中)提取的类已经实现。
  •         已经构建了原型或增量。

        技术里程碑: 面向对象测试

  •         已经评审了面向对象分析和设计模型的正确性和完整性。
  •         已经建立和评审了类-职责-协作者网络。
  •         已经设计了测试用例,并且已经对每个类进行了类级测试。
  •         已经设计了测试用例,并且已经完成簇测试(第19章),已经完成类的集成。
  •         已经完成系统级测试。

建议
        调试和测试是相辅相成的,通常可以通过考察“公开的”错误(缺陷)类型和数量来判断调试的状态。

        就像前面介绍的,建立面向对象过程模型是以迭代方式进行的,在交付不同的增量给用
户时,上述的每一个里程碑都可以进行修订。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值