0、引言
项目管理是伴随着项目进行而进行的,是一种为了满足甚至超越项目所有者对项目的期望而将理论知识、技能、工具和技巧应用到项目中的管理活动,是一门关于项目资金、时间、人力等资源控制的管理科学。
顾名思义,软件项目管理是项目管理在软件领域的应用,是一种为了能够按照预定的工期、质量顺利完成软件项目而对成本、人员、进度、质量、风险等进行控制管理的活动。其核心在于通过有效的管理,明确项目范围,合理调配人力资源,提高项目团队的整体开发能力,优化项目执行过程,控制项目成本,为用户提供满意的软件产品。
1、软件项目管理的特点
软件是一种特殊的产品,这种产品的特殊性之一是它的生产活动是以项目的形式进行的,因此,项目管理对软件生产具有决定性的意义。软件项目管理除了具有一般项目管理的特点外,还有其独特之处,主要表现在:
(1)软件产品缺乏硬性度量指标。
软件的大特点在于一个“软”字,它不像建筑项目,终可以有一个实物,可以用某一个标准去刚性的度量评价。而软件产品客观上具有“不可见性”,表现在它没有一个可见的实物,还表现在其度量指标也不能像度量实物那样具有明确性。有效的项目管理是要使软件及其生产过程由不可见、不可度量变成可见和可度量。
(2)重视应用领域的业务知识。
对于计算机应用软件来说,它并不单纯是计算机技术问题,更多地表现在它所服务的业务领域的知识技能。如企业ERP、SCM等应用软件项目,计算机只是它的载体,计算机技术往往并不起决定作用,而与之相关的业务知识、管理知识显得更加重要。
(3)管理比技术本身更重要。
软件项目是一项计算机技术、信息技术、管理科学等多学科交叉的系统工程。随着信息技术的发展,软件项目应用领域不断扩张、项目规模不断扩大、项目业务日趋复杂,一个软件从构想到完成,需要大量的从事不同工作的人共同努力,个人单打独斗的作坊式开发方式显然已经无法适应这种信息技术发展的需要。在一个大型信息系统工程项目里,需要系统策划人员、分析设计人员、编程人员、测试人员和用户等众多人员的共同参与和密切配合,如何将可用资源有效地结合在一起,并使之发挥大效率,如何保证项目按照预定的时间将预先约定的软件产品提交给客户是软件项目管理的核心任务。项目管理往往成为决定软件项目成败的重要因素。
(4)强调文档的重要性。
文档是软件产品的重要组成部分,软件项目管理以工程化的管理方法,强调规范文档的重要性,在软件生命周期的各个阶段,强调对里程碑文档的评审,并把文档作为阶段成果的重要体现和下阶段的基础。
(5)重视培训与服务的价值。
培训与服务是发掘软件产品价值的重要手段。一个软件产品,如果没有人使用不能形成价值,如果不会使用,可能降低软件的价值。服务的优劣已经直接影响软件的使用价值并决定软件产品的生命周期。总之,软件项目管理重视培训与服务在软件增值中的意义。
2、管理架构矩阵模型
规范化的管理体现在:有完整的基于软件开发标准(如CMM、ISO等)的开发流程;有基于这个流程的完整详细的开发计划;有基于开发计划的成本预算和成本控制方法;有明确的阶段检查措施和评价标准;有明确的质量管理体系和质量保证实施手段,保证项目在可控状态下进行。而这一切都需要有一个组织有效的管理团队和运作规范的管理架构。
在软件项目管理过程中,项目经理起着至关重要的作用。对于项目经理,目前有两种观点:一种认为软件项目经理应该是计算机某方面的应用专家,能够对项目组成员给予技术指导,如此才有能力合理安排工作。另一种观点则认为,项目经理应该是职业经理,他可以不是计算机技术专家,但应该是管理专家,具备轻松调配各部门资源的技巧和有效地组织、管理开发队伍、协调沟通的能力,他的作用主要体现在协调、管理、合理安排成员的工作,控制项目进度和费用,与用户沟通,等等。事实上,在一般意义上,不管是技术型专家还是管理型专家都无法满足现代软件项目管理的需要。在传统的垂直型管理模式中,项目经理要直接管理到具体的程序员,一般只适用于不太复杂的技术型项目,它忽视了中间层的作用,不便于发挥员工的积极性。而扁平化管理意味着要面对很多的直接下级,对管理者提出了很高的管理要求,特别对于大型项目来说,可能涉及到很多业务领域知识,他都要面面俱到,这对于一个不管是技术型还是管理型项目经理来说似乎都很难做到,即使对于所谓既懂专业又懂管理的全才专家来说,也不可能要求他在各个方面都是的。
众所周知的事实是,找一个既懂专业又有项目管理经验的专家往往比较困难,但如果找几个或懂专业或懂项目管理的专家也许并不困难。一个好的软件项目团队应该是它可以有效整合各成员的能力,使集体的能量达到大化。因此,与其找一个所谓全才的项目经理,还不如构建规范的管理架构。根据笔者多年的软件开发、项目管理的实践和经验,提出了“矩阵式”软件项目管理模型。在这个模型中,项目经理也只是其中的一个角色而已。他并不需要面面俱到,也不需要掌握项目的全部细节,他要做的全部工作是按管理规范要求完成项目经理这个角色所特有的工作。在这个架构下,更便于发挥项目团队中备人所长,使集体的智慧得以充分张扬。每个人所做的工作(包括他的知识)都已经留存下来了,即使项目经理因故离职,接任者也可以从容接手,从而降低了因为人员流动可能对项目造成的风险。
每个业务子系统有一个业务专家负责,他们一般都精通某一个方面的业务,由他们直接面对用户,可以与用户业务人员有更多的共同语言,便于交流,更容易捕获用户需求。而在软件开发的每个阶段,按软件工程生命周期,各阶段由具有技术专长的技术人员负责。所以,整体上可以充分发挥各业务负责人精通业务领域知识和阶段负责人精通相关技术的优势,使项目团队整体成为名副其实的既懂专业又懂管理的专家。
矩阵管理可以更好地发挥各专业人员的业务专长,又能更好地发挥各技术层面技术人员的特长,项目经理重要的工作是协调,重点在于如何结合众多资源控制整个开发进程。矩阵模型也有利于软件公司人才战略,有利于组织内部人才的培养,充分展现个人的发展空间。大多数软件企业也许都很难有精通所有专业的全才,但都拥有为数众多精通某一类业务的系统分析师,或精通某一类专门技术的专门人才。根据矩阵模型,公司可以培养员工向不同方向发展,有技术特长的,培养他发展技术的深度,有其他专业特长的,比如精通税务、金融、企业管理等,则培养成业务专家。这样,在人尽其才的同时,又有利于留住人才,稳定了软件开发队伍。
3、计划与过程控制
项目计划包括风险管理计划、质量管理计划、人力资源计划、环境资源计划等。软件项目计划和过程控制为消除或削弱软件的“不可见”带来的不确定性提供了很好的保障措施。基于任务分解(WBS)的工作分配和项目组织结构,明确每个项目开发人员的责任以及他们之间的连接,把整个项目周期划分为若干个小的阶段,每个阶段都有明确的目标和阶段成果及其确认准则。由于把每个阶段要完成的工作、预期的成果都清晰地描述出来了,一方面,可以使用户不断看到一个个阶段成果,而不是在项目全部完工后才看到一个大的成果,增强了用户的信心;另一方面。通过明确的阶段结果,随时收集有关项目进程数据,按计划规定进行进度管理,使开发过程和阶段成果都是可见的,也便于发现问题、控制开发过程,不至于什么问题都要到后才一次暴露,减少了项目风险。
当然,如果仅仅有好的项目计划而缺乏有效的执行机制和监督措施,项目仍然可能失去控制。成功项目的标志是在规定的时间、合理开支的条件下,完成约定的需求,实现系统的终目标。有效实施项目进度控制是项目成功的重要保障,是每一个项目经理必须非常重视的工作。实现有效项目过程控制的方法主要是通过定期和不定期的检查体现的。
(1)阶段检查。
不定期的阶段性检查,一般在关键任务或里程碑任务的计划完成时进行的,即在项目的每个阶段结束时都要经过详细的评估。检查的重点是该阶段里程碑任务是否完整地实现了,是否可以转入下阶段的工作。
(2)定期检查。
为了随时掌控项目进度执行情况,建立定期信息报告制度是一个行之有效的措施。定期的检查一般分周例会和月例会,例会检查的重点是:需求列表、风险列表、计划执行情况、质量保证情况等。通过周报月报,沟通并掌握各方信息,对存在的问题和困难进行汇总,提交例会处理解决,降低不确定性因素对项目工期的影响,保证项目顺利进行。
定期或不定期地对项目进度计划表进行检查,对于不合格的项目进度计划表或未按照项目进度计划表执行的项目给予相应处理,及时发现问题,尽早调整计划偏差,大限度地避免损失。这样,在项目进行过程中比较容易把握每个阶段项目的进展情况,方便对项目组成员的绩效进行阶段性评估,便于统一项目经理和客户的认识。增加项目风险的可控性。
4、需求管理矩阵模型
软件项目的大难点往往在于需求的不确定性,所以,有人认为好的需求是软件项目成功的一半。需求的困难主要表现在计算机技术人员与用户业务人员由于不同的语境,存在沟通困难。用户业务人员可能不清楚计算机系统实现细节,或并不知道需求人员到底需要了解什么,而计算机技术人员可能由于不熟悉业务,往往又缺乏引导用户表达需求的业务素质和技巧,所以,影响了双方沟通和交流,造成的结果可能是用户往往不能清楚地描述自己的需求或计算机人员不能准确地理解需求,从而影响了需求的终描述。另一方面,对于管理信息系统来说,需求的不确定还表现在业务流程的变化上,特别对于现阶段还处于不断变革时期的我国企业来说,情况更是如此。
一般来说,用户在看到终系统以后,通过不断地应用实践,激发了用户的联想,可能提出新的或改进的需求。所以,在项目一开始,技术人员必须对此有充分的认识,既要尽可能全面了解现有需求,也要充分预计到可能的需求变更,为系统设计留有变更或扩充的余地。另一方面,应该尽可能让用户尽早介入,直接参与阶段评审和验收,以便及时发现需求执行偏失,不至于什么都等到全部完工后才发现问题,才一并解决问题。在项目的后期改正一个错误的代价往往是在前期的数倍。所以,需求管理成为软件项目成败的另一个关键因索之一。
根据笔者的经验,建立需求矩阵跟踪表是进行需求管理很好的工具。通过跟踪表,项目涉众可以随时了解关于软件需求的实现过程。用户可以从中随时看到阶段性成果,方便用户及时测试、确认已实现的需求,便于用户积极参与,便于及时发现问题,改正问题。
5、结束语
当代信息技术正以超乎寻常的速度发展,软件项目规模不断扩大,应用日趋复杂,失败的案例屡见不鲜,人们逐渐把眼光聚焦到关于软件项目管理方法的研究,项目管理正逐渐成为当今世界解决软件危机的一种主流管理方法。矩阵模型已在大量的工程实践中被证明是行之有效的。