软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,通过计划、组织、控制等一系列活动,合理地配置和使用各种资源,而对成本、人员、进度、质量、风险等进行分析和管理,以达到既定目标的过程。项目管理更强调项目负责人的作用和团队的协作精神,其组织形式灵活,更加关注人的因素,关注客户和服务客户,着重于提升软件项目研发的效率和质量。在本文中,对软件项目管理中的需求管理、员工之间的沟通与协作、软件项目风险管理等方面进行了阐述。本文最后介绍了软件项目管理的几项经典技术。
一、需求管理
软件需求是每个软件开发的开端与基础。在软件项目管理的需求分析阶段,双方必须全面地尽可能细致地讨论项目的应用背景、功能要求、性能要求、操作界面要求、与其他软件的接口要求,以及对项目进行评估的各种评价标准。在进行需求分析时,可以首先分析客户原有系统的建设情况,对客户的原有产品进行分析,明确建设目标等。
需求管理对软件项目能否最终实现产生至关重要的影响。任何的软件项目都必须进行合理的、细致的、一致的需求管理,只有这样才能制定正确合理的软件开发计划,软件项目才能顺利地开发完成。
二、沟通与协作
软件项目管理中的沟通与协作是指信息的交流,是使信息发挥积极作用和达到目标的手段;协作是指和谐地在一起工作的活动。沟通技术可分分四类:
(1)正式书面沟通,包括项目文档和备忘录、项目里程碑和交货时间表、需求变更和错误跟踪规程、数据字典、系统分析模型(用例图等);
(2)正式口头沟通,包括状态审查会、需求评审会、设计评审会、代码评审会、用户测试,项目定期例会等;
(3)非正式口头沟通,包括小组碰头会、同行讨论、与直属业务领导讨论等;
(4)电子沟通,包括电子邮件、内部BBS等。协作技术包括资源合理配置、开发步骤有序化、工作目标一致化、提升关心程度、信息共享等。
三、风险管理
软件项目风险管理是指对在软件开发过程中所遇到的预算和进度等方面的问题进行分析,寻求风险应对方法,做好风险管理计划。
针对软件项目中的风险管理问题,不少专家、组织提出了自己的风险管理模型。常见的主要风险管理模型如下。
1.SEI的连续风险管理模型(CRM)。SEICRM模型的风险管理原则是不断地评估可能造成恶劣后果的因素;决定最迫切需要处理的风险;实现控制风险的策略;评测并确保风险策略实施的有效性。CRM模型要求在项目生命期的所有阶段都关注风险识别和管理,它将风险管理划分为五个步骤:风险识别、分析、计划、跟踪、控制。
2.BarryBoehm模型。Boehm模型的思想核心是:10大风险因素列表。针对每个风险因素,都给出了一系列的风险管理策略。在实际操作时,Boehm以10大风险列表为依据,总结当前项目具体的风险因素,评估后进行计划和实施,在下一次定期召开的会议上再对这10大风险因素的解决情况进行总结,产生新的10大风险因素表,依此类推。Boehm模型的基本形式可描述为:RE=P(UO)3L(UO),其中RE表示风险或者风险所造成的影响;P(UO)表示令人不满意的结果所发生的概率;L(UO)表示糟糕的结果会产生的破坏性的程度。
3.软件工程风险模型(SERIM).SERIM模型要求从技术和商业两个角度对软件风险管理进行剖析,考虑的问题涉及开销、进度、技术性能等。它还提供了一些指标和模型来估量和预测风险,由于这些数据来源于大量的实际经验,因此具有很强的说服力。
四、软件项目管理技术
1.CMM。CMM是美国卡纳基梅隆大学软件工程研究所(CMU/SEI)提出的软件项目管理的一系列方法,它基于组织对关键过程域的支持,定义了软件过程成熟度的五个级别。级别1(初始级)描述了不成熟,或者说是未定义过程的组织。级别2(可重复级),级别3(已定义级),级别4(已管理级)和级别5(优化级)分别描述了软件过程成熟度级别递增的组织。和这些级别相关的KPA是:级别2:需求管理,软件项目计划,软件项目跟踪和监控,软件子合同管理,软件质量保证,软件配置管理。级别3:组织级过程焦点,组织级过程定义,培训大纲,集成软件管理,软件产品工程,组间协调,同行评审。级别4:定量过程管理,软件质量管理。级别5:缺陷预防,技术更新管理,过程更改管理。
2.CMMI。CMMI被看作是把各种CMM集成为一个系列的模型中。CMMI的基础源模型包括:软件CMM2.0版(草稿C),EIA-731系统工程,以及IPDCMM(IPD)0.98a版。CMMI也描述了5个不同的成熟度级别:级别1(初始级)代表了以不可预测结果为特征的过程成熟度。过程包括了一些特别的方法、符号、工作和反应管理,成功主要取决于团队的技能。级别2(已管理级)代表了以可重复项目执行为特征的过程成熟度。组织使用基本纪律进行需求管理、项目计划、项目监督和控制、供应商协议管理、产品和过程质量保证、配置管理、以及度量和分析。
3.PSP。PSP(PersonalSoftwareProcess,个体软件过程)是由CMU/SEI开发出来的,它的推出在软件工程界引起了极大的轰动,可以说是由定向软件工程走向定量软件工程的一个标志。PSP为基于个体和小型群组软件过程的优化提供了具体而有效的途径,例如如何制订计划,如何控制质量,如何与其他人相互协作等等。在软件设计阶段,PSP的着眼点在于软件缺陷的预防,其具体办法是强化设计约束准则,而不是设计方法的选择。因此,PSP保障软件产品质量的一个重要途径是提升设计质量。
我们相信随着软件工程的发展和进一步成熟,软件项目管理技术的发展会取得更大的进步。在实际项目中,我们要坚持改善软件工程的管理,并在实践中总结适合自身的经验,这样才有利于管理技术的进步和软件项目的顺利完成,创造出更高的品质、更大的效益。