软件项目管理(第二版)
上QQ阅读APP看书,第一时间看更新

1.5 软件项目管理过程

软件是一个特殊行业,其规范性远远不如建筑等行业,经验在项目管理中占有重要作用,理论和标准还在发展中。为了实现项目目标,使软件项目获得成功,需要对软件项目的范围、风险、资源、任务、成本、时间进度等做到心中有数。而项目管理可以提供这些信息,大致可分为4个阶段:项目初始、项目计划、项目执行控制、项目结束。每个阶段有更细小的过程。

1.项目初始

项目管理的第一个阶段是确定项目的目标范围,包括开发和被开发双方的合同,软件要完成的主要功能、性能、稳定性,项目的开发周期,软件的限制条件及客户其他需求等。

初始过程的第一个挑战就是“项目目标含糊、充满冲突”。项目干系人,如项目发起人、成果使用者、负责单位等之间对需求理解不一致,对项目的目标设定不一致。初始过程的第二个挑战就是“交流语言不规范,缺乏沟通技巧和工具”。以上两方面的挑战会引起项目目标难以清晰定义或理解不一致。

2.项目计划

项目计划是建立项目行动指南的基准,包括软件项目的估算、风险分析、进度规划、人员配备、产品质量规划等,它指导项目的进程发展,是项目跟踪控制的依据。软件项目计划是一个用来协调所有其他计划,以指导项目执行和控制的可操作的文件。它体现了对客户需求的理解,是开展项目活动的基础。

项目计划过程面临的最大挑战是计划的准确性差。

3.项目执行控制

一旦建立了基准计划就必须按照计划执行,使项目在预算内按进度完成并使用户满意。在这个阶段,项目管理过程包括测量实际的进程,并与计划相比较,发现计划的不当之处。如果实际进程与计划进程相比落后、成本超出预算或者没有达到技术要求,就须采取纠正措施,使项目恢复到正常轨道,或者更正计划的不合理之处。

项目执行过程面临的挑战是由于计划不准确、关键路径不能锁定,从而导致里程碑目标不能保证项目目标实现,项目实施的时间压力增大,也可能导致资源调配不合理及成本增加。在时间和成本的双重压力下,公司的质量管理很容易流于形式。

4.项目结束

项目管理的最后环节是结束过程,项目的特征之一是它的一次性,有起点也有终点,主要工作是适当地做出项目终止的决策,确认项目实施的各项成果,进行项目的交接和清算等,可对项目进行最后评审及项目总结。在项目的结束过程中,时间、质量、成本、项目范围的冲突在这个过程集中暴露出来。这些冲突主要表现在三方面:一是客户与项目团队之间,项目团队可能认为已经完成了预定任务,达到了客户要求,但客户认为没达到;二是项目团队与公司之间,项目组认为已经付出了努力,但公司却由于成本过高或客户满意度不高并没有盈利;三是在项目组成员之间,成绩和责任的归属方面可能产生意见不一致。

本章案例二:

XS信息技术有限公司原本是一家专注于企业信息化的公司,在电子政务如火如荼的时候,开始进军电子政务行业。在电子政务的市场中,接到的第一个项目是开发一套工商审批系统。由于电子政务保密要求,该系统涉及两个互不连通的子网:政务内网和政务外网。政务内网中存储着全部信息,其中包括部分机密信息;政务外网可以对公众开放,开放的信息必须得到授权。系统要求在这两个子网中的合法用户都可以访问到被授权的信息,访问的信息必须一致可靠,政务内网的信息可以发布到政务外网,政务外网的信息在经过审批后可以进入政务内网系统。

张工是该项目的项目经理,在捕获到这个需求后认为电子政务建设与企业信息化有很大的不同,有其自身的特殊性,若照搬企业信息化原有的经验和方案必定会遭到惨败。因此,他采用了严格瀑布模型,并专门招聘了熟悉网络互联的技术人员设计了解决方案,在经过严格评审后实施。在项目交付时,虽然系统完全满足了保密性的要求,但用户对系统用户界面提出了较大的异议,认为不符合政务信息系统的风格,操作也不够便捷,要求彻底更换。由于最初设计的缺陷,系统表现层和逻辑层紧密耦合,导致70%的代码重写,而第二版的用户界面仍不能满足最终用户的要求,最终又重写部分代码才通过验收。由于系统反复变更,项目组成员产生了强烈的挫折感,士气低落,项目工期也超出原计划的100%。

【问题1】请对张工的行为进行点评。

【问题2】请从项目范围管理的角度找出该项目实施过程中的主要管理问题。

【问题3】请结合本人实际项目经验,指出应如何避免类似问题。

参考答案:

【问题1】

(1)张工注意到了系统运行环境的特殊性,在进行设计和实现的情况下满足了用户的要求。

(2)张工忽略了系统用户的潜在要求,在用户界面和操作的风格上范围定义不清晰,导致系统交付时的重大变更。

(3)张工在第一次问题发生后仍没有对范围进行有效的管理,造成了系统第二次的变更。

(4)张工没有对用户界面是否能够满足要求的风险进行有效的评估,而是采用了对风险适应性较差的瀑布模型组织开发。

(5)张工没有对设计质量进行有效的控制,造成表现层中耦合了业务逻辑,增加了修改的代价。

【问题2】

(1)张工没有挖掘到系统的全部隐性需求,缺乏精确的范围定义。

(2)在发生第一次变更时,张工仍没有有效地进行范围管理,从而造成系统的二次变更。

(3)重复地进行系统变更说明张工对系统范围控制不足,导致一而再再而三地返工。

【问题3】

有效的范围管理包括从范围定义到范围控制等多方面的工作,每一项工作都是重要的。对于本案例,要结合行业特点进行需求分析,挖掘系统潜在的需求,同时通过原型等方法来辅助需求的定义,避免出现范围定义不清晰的问题。

在发生需求变更时需要进行有效的需求控制,尽量在满足用户需求的前提下缩小需求范围,坚决避免需求的再次变更。