
当关注CMMI时,人们就会发现软件计划的管理和软件项目的追踪监控是CMMI的两个关键过程域,可见软件计划及其实施有着重要的地位。软件计划的制定和追踪也一直是软件工程研究人员的关注重点,目前国内外也有一些研究机构和软件公司开发出工具和平台,支持软件项目计划的制定和追踪。人们比较熟悉的MS Project,它是制定计划工具中最具代表性的一个。但是它也存在不足,一方面它缺少对项目任务的输入和输出产品的定义和描述;另一方面,它只能追踪计划的执行结果,对计划的执行过程不能进行控制,而且当计划在执行过程中发生部分调整和修改时,也没有给出变化对后继任务和相关人员所带来的影响。
异地协同开发
计划制定后必须按照定义的过程对其进行追踪和监控。由于软件开发过程通常都涉及很多人员和角色,而且存在多任务的并发执行,这就要求项目负责人及时收集计划的执行进度情况,以控制项目的预算,尽可能早地发现在制定过程中没有考虑到的问题,从而及时调整计划,以适应新的情况。随着互联网的发展,软件的异地协同开发成为可能,这种形势更迫切地要求建立虚拟的协同工作环境。
协同工作环境必然涉及多用户。在计划中所涉及的人力资源就是协同工作环境所面向的用户。在协同工作环境中,用户将看到计划中分配给自己的任务列表,每一个任务包括计划开始日期、计划完成日期以及任务开始的条件(输入产品)和任务完成条件(输出产品)。如果用户接受计划的安排,则只需按照任务列表的要求,提交每一天的工作完成情况(任务完成百分比),然后项目负责人把数据导入一些支持计划的分析工具,如MS Project2000,就可以监控计划的执行情况。如果一切顺利,那么项目就可以按计划有条不紊地进行下去。但实际上,总是存在很多不确定的因素使得计划在执行过程中需要进行调整,而当计划的调整带来的影响比较大时,如果没有相应的辅助措施,如影响结果清单、影响人员通知等等,就很容易导致负责人难以驾驭调整的后果,甚至陷入频繁的调整中。
在项目计划的初期,应以图形或表格的形式对所开发产品的整体与部分之间的关系进行尽可能清晰的描述,这将有利于小组成员明确相关任务所处整体的部分与层次,有效保证项目计划中的过程阶段或涉及系统数据的一致性。所有项目小组成员共同参与小组任务列表的建立,并严格按计划步骤制定项目计划。这样,不仅任务的分配明确、落实准确,而且计划中的内容也能保证完成。
为了对项目进行更加详细、准确的项目追踪,可将原先的任务完成与未完成情况进一步细分为三种不同的状态,即按计划完成、做了未完成和没做。对于第一种任务,填写实际完成的周次即可。对后两种任务,使用不同的标记以示区别,相应任务完成后再将标记改为实际完成的周次。
计划调整方法
计划调整的基本行为有以下几种:1)任务的增加,增加的任务可以是一个简单任务,也可以是一个包含多个任务的子项目。2)删除任务,尚未进行的任务可以删除。3)任务的时间调整,增加和减少任务的工期,任务开始和结束时间的提前和延后。4)人员的增加,给指定任务增加人员的安排。5)人员的删除,从指定任务中抽走原来安排的人员。
在实际的计划执行过程中,调整行为可以认为是这几种基本行为的某一种排列组合执行的结果。因此,如果分析出每一种调整基本行为的影响结果,那么调整的影响结果可以通过按先后顺序叠加它涉及的每个基本调整行为的影响结果而得出。假设有一个计划的部分关键任务的先后关系是串行的,如图1所示,而且每一任务的工期都是一个人员一天的投入工作量,并假设一个人员一天的投入工作量为一个时间单位,针对某个过程,项目负责人就可以分别执行上面给出的基本调整行为,然后给出每个基本操作的影响结果的分析以及相应的通知措施。
任务的增加:假设有一个工期为一个时间单位的任务F要加入到计划中,则可分为以下情况:
(1)F是孤立任务或者不存在后继任务,或者存在后继任务但它的加入不改变关键路经,如图2所示。这时只需考虑在与F相关人员的任务列表中添加该任务,并发送新增任务的消息。
(2)F的加入改变计划的关键路径,使自己成为关键任务,如图3所示,则由F开始沿依赖关系可以到达的关键任务的工期都要往后拖延一个工期。在图3中,受影响的活动为D、E。获得影响任务列表后,除了要发送新增任务消息外,还要向参与被影响任务的人员发送任务延迟消息,提醒相关人员的关注。
计划之外的临时任务的出现往往无法预料,它们虽然占用了时间资源,但完成之后却不能使累计获得价值增加。如果临时任务耗时不多,就没有必要重新调整项目计划。处理该情况的一种有效方法是在制定计划时留出一小段机动时间。
删除任务:假设要删除任务C,则要向C的相关任务发送任务取消的消息。而C的后继任务是否发生变化,要分如下两种情况:
(1)删除任务后,没有改变关键路径,D将提前开始。因此,向D的相关人员发送任务提前消息。 (2)删除任务后,关键路径发生变化,则C的后继任务D存在一个工期的时差。这时,如果任务D被设置为“尽早开始”,那么D将提前一个工期开始,因此要向D的相关人员发送任务提前消息;否则,将不会触发任务D的时间调整行为。 任务的时间调整:与被调整的任务相关的人员将会收到任务时间的变化通知,而后继任务是否应进行调整,则可以分为以下几种情况: (1)如果是非关键任务的开始时间提前,且后继任务被设置为“尽早开始”,则后继任务也相应提前。 (2)如果是非关键任务的开始时间延后,且后继任务被设置为尽早开始,则后继任务相应延后;否则就要判断该任务与后继任务存在的延迟是否大于该任务的延迟量,如果小于,将触发后继任务的调整行为,否则后继任务保持不变。 (3)任务工期的延长或缩短,这种调整分别相当于在计划中增加或删除一个任务,其工期为延长量或缩短量。
人员的增加和删除:当某个任务增加人员时,该任务的工期将缩短,这时,可以看作对任务时间进行缩短调整;相对而言,从某个任务中删除原来的人员分配,就相当于进行任务的工时延长调整。
在协同环境中,只要按顺序捕获项目负责人对计划的基本调整操作,然后分别应用上面的规则,就可以获得调整行为的影响清单,这将极大地帮助项目负责人进行计划的调整,而相应的通知机制将加快计划调整结果的实施,从而提高效率。
对于实施中遇到的问题要找出原因所在,进而采取措施加以解决。总之,软件过程管理和改进工作及其成效依赖于个人、项目组和组织多方位的重视与配合。 |