软件项目管理从策划到验收的五项修炼
 

2009-12-30 来源:网络

 

每个程序员都希望向前发展,在软件开发领域有两条道路:执着于技术的架构师和转向项目管理的Team leader,这里介绍如何进行有效的软件项目管理,希望转向项目管理的读者可以看看软件项目管理的五项修炼。

目前,我国软件企业尽管在国际竞争中存在技术、人才等方面的不足,但管理能力,特别是项目管理能力的不足是我国软件企业面临的典型性成长障碍。对于软件企业来说,大多数附加价值的产生是由项目产生的,没有足够的项目管理能力,企业的新产品研发、承揽海外软件开发业务、扩大软件企业规模等均缺乏基础保证。

我国软件从业人员有50多万人,在6000多家软件企业中有60%是50人以下的小企业,1000人以上的企业仅10余家,软件出口额不到印度的10%。在印度的优秀软件企业如Wipro、Infosys、Tata中,软件开发项目的按时完成率高达95%以上,可以说是项目管理能力促进了印度软件企业承揽外包业务和规模化的发展。据统计,目前我国软件企业项目的按时完成率平均为20%左右。可见,我国软件企业在项目管理能力方面与印度软件企业相比还存在很大差距。

一、面向利益相关者的项目策划

软件项目策划的目的主要在于明晰定义项目的价值和项目目标,它是软件项目正式启动的基础是明确项目需求的基础,也是控制项目范围的基础。据统计,超过50%的软件项目都遭受过不充分的需求管理的问题,平均有25%的软件项目需求会发生变化。对有缺陷的需求、设计、代码进行返工的花费占整个项目费用的40%—50%。项目策划的要点包含以下四个方面。

1.识别和定义项目的利益相关者

现代项目管理的核心理念是项目必须让其利益相关者满意,要理解和定义项目的价值,进而在此基础上定义项目的目标,必须从识别项目的利益相关者入手。然而,实践表明,识别清楚软件项目的利益相关者并不是一件容易的事。有时一个项目进行了很长时间,但项目组未必知道项目的真正客户是谁,最常犯的错误是仅将项目成果的使用者作为客户。例如,电子政务系统的真正用户是该机关的决策层,而不是具体负责这个电子政务项目的某个部门。如果需求仅仅来自负责这个项目的某个部门,那么即使这个系统建好了,也极有可能没有真正达到目的。但是由于各种原因,决策层人员往往没有足够的精力来关心这件事,这时如果项目组不去想方设法解决这个问题的话,那么,这个项目从一开始就埋下了“陷入泥潭”的阴影。此外,必须识别出具体的项目发起人并充分发挥其作用。实践过程中易犯的错误是误将一个部门、一个机构作为项目的发起人,这样的结果是决策时有很多人,但真正需要项目发起人提供资源、予以协调时却找不到人。

2.促成利益相关者的参与

不仅是在策划活动中,在整个软件项目的生命周期内都必须强调项目利益相关者的参与,必须要与利益相关者一起启动项目。由于软件项目的成果将改变人们的生活或工作方式。因此,客户必须在项目策划阶段就了解项目成果对其生活或工作方式的影响,他们必须开发相应的政策、流程等以准备接受项目成果。目前众多的ERP项目之所以失败,重要的一个原因是人们误认为ERP项目仅是一个信息系统项目,该项目带来的仅仅是一个信息产品。其实,ERP项目带来的是一新的运营方式,如果企业在没有做相应调整的情况下强行引入ERP,将会使企业运行的混乱速度加快而不是更好。事实表明,促使软件项目成功的最重要的要素莫过于利益相关者的全过程参与。

3.培育/运用行业专家

软件项目的价值是为了实现某些商业目的,它们一般是由行业专家而不是由软件开发人员挖掘出来的。许多软件企业被投标价格所困扰,其原因有来自市场竞争方面的,更多的则是软件企业没有能够挖掘项目的价值所致。目前,许多软件企业的弱点在于缺乏行业专家,它们没有意识到行业专家也是专业人员,而只是将软件开发人员作为专业人员对待。在项目定义活动中,软件开发人员常犯的错误有三点:需求镀金、需求过滤和需求包办。所谓镀金,是指软件开发人员不顾客户的实际需求,片面强调和夸大技术先进性;所谓需求过滤,是指软件开发人员根据自己的技术偏好对客户的需求进行了主观筛选;所谓需求包办,是指客户将需求分析委托给“专业的”软件开发人员,而他们也乐得如此。实践证明,缺乏行业专家的项目策划所产生出来的东西一般是能力过剩的、不适用的,甚至是完全不能用的。如果软件企业没有自己的行业专家,必须善于利用外部的行业专家。

4.不可忽视项目的验收标准

对项目目标一致性重视程度不够,是项目启动过程中普遍存在的一个问题。很多项目管理者低估了达成项目目标一致性的难度,在这方面投入的精力不够,往往简单地认为目标已经达成一致。很多项目其实是在目标没有定义清楚的情况下匆忙启动的。因此,软件项目策划的结果必须使利益相关者对项目目标的理解达成一致。要做到这一点,最有效的办法是设定项目的验收标准。可以以项目的客户为例说明这一点。客户的需求包含多个方面,其中既有对项目成果特性的要求,又有客户在感情等方面的需求。简单说来,客户的需求可以分为三类:

第一类是“Musts”,即如果缺少了就不能实现项目基本目的的成果特性;

第二类是“Wants”,即客户希望得到的能够丰富项目成果的东西。

第三类是“Nice-to-haves”,即对客户和项目而言多多益善的东西。从对客户的重要性而言,这三类需求是递减的。然而,在项目的运行过程中,客户向项目承担方表达的频率却常常是递增的。这是导致项目管理范围蔓延最终失控而使项目失败的重要原因。

二、基于统计数据的项目计划

软件项目计划过程面临的最大挑战就是计划的准确性差。据统计,在对软件项目进度与成本估算时,开发者的估算比现实要乐观,大约低20%到30%;大多数项目实际完成时间超过估算进度的25%到100%,少数的进度估算精确度达到了10%,能控制在5%之内的项目十分罕见。要提高软件项目计划的准确性,需要把握以下三点:

1.加强基础数据的统计与分析

软件项目都是具有独特性的,不能照搬其他项目的经验作为制定本项目计划的依据。因此,在企业范围内加强对项目基础数据的统计分析以得出规律是十分必要的。项目管理既是科学又是艺术,由于文化的差异,西方发达国家强调的是管理中的科学性,而我国的绝大多数企业强调的是管理中的艺术性。由于不重视基础数据的收集和统计,软件项目的计划常常是凭经验或“拍脑袋”而定的,企业并没有足够的统计数据来支持计划的制定。科学管理尽管是在上个世纪初,对制造业和体力工人提出的,但其中提出的“不能度量就不能控制”的理念依然值得软件企业在管理项目时采纳。

2.以面向学习和改善系统的评价原则促进数据统计

评价方式将决定人们的行为,要想改变人们的习惯,仅靠讲道理是难以见效的,还必须辅之以相应的评价体系。软件企业在项目管理评价进程的一个误区是将评价的重点放在人的方面,而忽视了很多项目问题在于管理系统本身这个事实。据统计,人员的敬业精神和能力不够只占项目失败原因的10%左右,在大约90%的原因来自于项目管理系统的架构与流程等方面。

3.谨防里程碑陷阱

众所周知,里程碑是项目计划与控制中的一个极为重要的概念,也正因为如此,人们也易于过于依赖里程碑,反而使项目计划落空。里程碑陷阱表现在以下几个方面:首先,人们在软件项目的里程碑被设定以后,认为“目标管理是只问结果,不计过程”,从而忽视对过程的监控而导致项目里程碑不能按期达到。大多数软件企业的从业人员属于知识工作者,他们对授权的要求较强烈,这方面的误区更易发生。第二,对里程碑控制不严。因为大部分里程碑毕竟只是一些项目的中间结果,在项目过程中人们易于放松对里程碑变更的控制,易于出现里程碑大多按期完成而项目却难以按期完成的现象。项目活动彼此是有关联的,一个里程碑的延迟会导致连锁反应,甚至可能导致项目工期的失控。第三,里程碑的设置仅仅由项目组根据项目本身的特点而定,忽视了与利益相关者的沟通并得到他们的承诺。

三、基于专业分工的项目资源动态调度

在软件项目失败的原因中,项目组织和人员的问题占到40%以上。因此,对项目资源的有效组织和调度是十分重要的。对于软件企业来说,最重要的资源莫过于人力资源,要在项目中充分组织和调度人力资源,需要做好以下两点:

1. 实现人力资源的“分类分级”管理

由于没有对人力资源做到专业分工基础上的动态调度,大量企业的人力成本难以降低,项目组织运行的效果也难以保证。由于软件行业竞争的加剧,降低项目成本成了当务之急,而降低项目所占用的人力资源成本更是重中之重。目前,许多软件企业对项目人力资源的使用可以用“5个人干3个人的活,拿5个人的钱”来概括。要想改变这一点,做到“3个人干5个人的活,拿4个人的钱”这种理想状态,有效的办法是实现人力资源的“分类分级”管理。中创软件采取的“分类分级”是指将企业员工划分为需求分析员、系统分析员、设计人员、编码人员、测试人员和QA等,并界定其不同的等级,能够做到可以测量出不同类型、不同层次的人员的小时价格。这种价格是制定项目人力资源预算和成本控制的基础。目前,很多企业强调“复合型人才”,这容易产生一个误区。在许多软件企业的项目中,有相当多的人既做设计又做编码还做测试,这不仅使项目的运行效率低、出错率高,也使项目的人力成本提高、人员还不满意。合理的方式是在专业分工、“分类分级”的基础上,通过有效的项目团队组织机制将各类人员集成起来。

2.实现人力资源的动态调度

众所周知,有多种项目的组织方式。只有既能聚集于项目目标的实现,又能充分、有效调度企业资源的项目组织方式才是合理的。项目组织是一种临时性的、动态的组织,由于它不应该有冗余人员,因此,资源调度的有效性基于资源调度的动态性,理想的状态是“需要的时候,需要的人能来;不需要的时候,不需要的人能走”。企业能做到这一点,必须要有两个条件:人员已经“分类分级”,以及企业的各职能部门成为“资源库”。实践表明,“分类分级”和动态调度将能使软件企业在项目实施过程中提高效率、降低人力资源的结构性成本和提高员工的整体满意度。

四、基于可视化工具的项目监控

项目管理的指导思想在于不仅关注项目的成果,还要关注项目的过程。调查表明,在75%的软件企业处于开发流程的混乱状态,超过50%的软件企业需要改进其配置管理,大约有60%的软件企业遭受着不同程度的质量保障体系的困扰。对项目过程控制的忽视,将导致项目范围的蔓延等项目风险的增加。要做好对项目过程的有效监控,需要做好以下两点:

1.项目过程的监控要做到可视化

项目管理是一种典型的系统管理,也是一种典型的变化管理。项目过程控制的目标在于对项目成果(包括中间成果)的可预见、项目资源的可调度、项目问题的可追溯、项目组绩效的可评价等几个方面。在一个软件项目中,有成百上千的相互关联的活动,一个活动在工期、资源和预算等方面的变化将对整个项目产生连锁反应。项目管理的定律之一是“魔鬼藏在细节中”,项目经理和高层管理人员必须在对项目各种活动的变动全面了解的基础上,才能确定工作的焦点。同样,由于项目组成员存在不同的分工,要使他们都能够明了各自的工作对项目的目标起到什么作用和影响,不能仅靠鼓励他们提高对项目的整体责任感,也不能仅靠评价机制来驱动他们共同承担项目的责任,还必须使他们能够直观地看到他们的工作与项目目标之间的动态关系。即便是一个经验丰富的项目团队,如果不能完全理解项目的每一个组成部分,不能形象、直观地了解项目的各部分之间的关联关系,也容易犯“一叶障目,不见泰山”的错误。只有将项目的运行做到可视化才能够帮助他们解决这些问题。

2.要形成企业范围的数字神经系统

要做到项目过程控制的可视化,必须借助于项目管理的工具。有很多项目管理的方法和工具,如WBS、网络图、甘特图等方法以及Microsoft Project等工具有助于可视化。然而,这些方法和工具大多为单个项目服务的,要在整个企业范围内做到这一点,需要开发专门的可视化项目管理数据平台。

五、着眼于提高企业项目管理整体能力的知识管理

与国际先进的软件企业相比,我国软件企业普遍不重视对知识的管理,企业项目的成功度过多地依赖于项目经理,项目管理的水准是项目经理的水准,而不是企业的水准。软件企业属于知识型企业,其无形资产能够占到总资产的70%以上,管理无形资产的能力将成为软件企业的重要竞争力。企业的无形资产包括两大部分:一部分是企业形象,另一部分是企业能力。软件企业形象的树立靠的是成功的案例(项目),而企业能力包括属于企业的知识和属于员工的才干两方面。对于企业能力的管理是要尽可能将员工的才干转化为企业的知识,并提高这种知识水平。只有这样才能提高软件企业的项目管理成熟度。要管理好企业的项目管理整体能力需要做好以下两点:

1.建立和管理好项目事件库

由于信息技术的飞速发展,能否按期完工成了判断软件项目是否成功的极为重要的指标。控制项目工期有很多方法,其中最常用的是关键路线法(CPM)。然而,决定软件项目工期能否近期完成的因素大多是那些事件(issue),即需要被解决的障碍性问题。事件常常不是项目组成员能够独自解决的,它们需要依靠整个企业的力量,甚至需要利用外部的专业资源。为了做到这一点,中创软件着力于软件项目事件库的建设。项目尽量有其独特性,但借鉴一个企业内部,从同类型的项目之间的经验教训提炼出来的知识是十分有价值的。中创软件事件库管理的主要职能是把公司项目管理中的各种成功、失败的案例放在数字神经系统中,相关人员遇到问题时,可随时在数字神经系统根据“关键字”进行查询,参考以前类似问题是如何处理,从而提供帮助。

2.做好项目收尾的经验总结

与项目启动前的项目策划一样,项目的正式收尾是十分重要的。收尾的作用不仅对项目的利益相关者有一个正式的交代,还有一个重要职能是对项目整个过程中的经验教训予以提炼,形成企业的知识财富。知识管理的目的是为了管理变化,没有足够的知识,企业就难以知道该如何应对项目中的变化。知识管理包括知识的挖掘、整理和使用等内容。把知识挖掘出来,是一件非常艰苦的工件。企业的知识往往是隐含、散落在员工群体中,有时不是大家不想表达出来,而是可能并没有意识到。因此,需要将员工的隐性知识转化为公司的显性知识。为了管理好知识,建立项目管理办公室,专门负责对项目管理相关文档进行分类、整理和统计,负责适合本企业的项目管理工具、模板和方法的开发、研究及对员工运用的培训。

要提高软件企业项目管理的成熟度,企业需要付出艰苦的努力,在某种程度上要重塑企业文化。项目管理机制的推行必须从高层开始就坚定信念、全力以赴、勇于实践,还必须要有足够的耐心才能获得理想的成效。项目管理是一个实践课题,有时候虽然说起来非常简单,但真正实施起来有大量具体问题要做。如果企业不愿意真正地去投入、去认真地做的话,那么期望得到理想的项目管理成果只能是一句空话,是不可能成功的。

火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。

资源网站: UML软件工程组织