软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定、持续发展。
软件项目管理的特殊性表现在:
①软件产品是无形的。软件项目经理人不能像其他项目经理人那样,能从被开发的产品上看到进度、已经完工的部分是否与设计相符等,他们只能从其他人所提交的文档中来掌握相关的情况。
②没有标准的软件过程。对软件过程的理解虽然已经取得了长足的进步,但是软件项目管理者还是不能确切地预见某一软件过程何时有可能出现问题。
③大型软件项目常常是“一次性的”。由于软件项目是与一个国家、地区的经济政策相联系,与用户的发展战略、经济实力、管理水平相适应,软件项目的开发过程中所采用的技术和管理方式与当时计算机和通信技术有关,因此大型软件项目一般都不同于早先的项目,软件项目管理者纵使有在计划中降低不确定性的经验,也很难较准确地预见问题的出现,早前的经验教训也较难在新项目中发挥大的作用。
从目前国内外的软件企业来看,“软件危机”的阴影仍然存在,软件行业的项目实施情况一直很不乐观。研究表明,软件项目失败的原因主要有两个:一是应用项目的复杂性;二是缺乏合格的软件项目管理人才。实践证明缺乏有效的软件项目管理是导致软件项目失控的直接原因。
一、软件项目管理的方法研究
从软件项目管理角度来看,项目的直接责任人是软件项目经理。也就是说,项目经理是项目整体管理的责任人。要在规定的时间范围内,在不超过经费的情况下,能够达到或超过项目干系人的愿望。项目整体管理围绕项目计划进行,主要过程有:计划制定、计划执行和计划变更控制。项目经理在以下几个方面对软件项目进行全面地管理:
1、制定项目计划:
软件项目计划是一个用来协调所有其他计划,以指导项目执行和控制的可操作的文件。它体现了对客户需求的理解,是开展项目活动的基础,是软件项目跟踪与监控的依据。项目计划主要由全局计划和下级计划两大部分组成。
在上级主管签发项目任务书后,项目经理立即和核心成员组成一个项目规划小组,对项目进行规划,得到项目的全局计划,主要内容有:项目的目标与范围、人力资源计划、软件资源和硬件资源计划、财务计划、整体任务进度计划。这一部分计划要上一级机构领导审批。下级计划一般包括:配置管理计划、质量管理计划、阶段开发计划和测试计划等,因为项目计划与项目执行应该是相互渗透的,因此在下级计划制定时项目经理必须把握的原则是:某一部分的工作由谁负责,则该部分的计划就由谁来制定;下级计划部分一般由项目经理审批即可。
2、制定开发过程:
软件开发的风险之所以大,是由于软件过程能力低,其中关键的问题在于软件开发组织不能很好地管理其软件过程,为此必须强调和加强软件开发过程的控制和管理。软件项目的开发过程主要有:系统调研、需求分析、概要设计、详细设计、编码、测试、实施与维护等,但对于不同的软件项目,虽然大体上过程相同,但不同的项目其每一个过程所包含一系列的具体的开发活动(子过程)千差万别,而且不同的项目组采用不同的开发技术、使用不同的技术路线,其开发过程的侧重点亦不一样。因此项目经理在软件项目开发前,根据所开发的软件项目和项目组的实际情况,建立起一个稳定、可控的软件开发过程模型,并按照该过程来进行软件开发是项目成功的基本保证。
软件开发过程要做到稳定、可控,真正对项目起到规范和约束作用,关键在于这几个方面:
①整个开发过程以流程的形式表示,过程简单、清楚;
②重要的过程以子流程表示,对总体流程进行细化和补充;
③定义总体流程和各子流程进入的必备条件和结束条件;
④明确流程结束时需要考核的内容;
⑤所有前面4项通过评审和批准。
3、加强过程控制:
软件项目的开发和实施往往都是在“变化”中进行的。可以毫不夸张地说,软件项目的变化是持续的、永恒的,找不到不会变化的软件项目。需求会变,技术会变,系统架构会变,代码会变,甚至连环境都会变;项目经理在完成相应的项目计划和准备后,其主要任务就是进行过程控制。软件项目的过程控制包括过程管理和变更控制。
过程管理主要是依据项目计划对软件项目进行监控,能顺利进行过程管理的关键是软件项目管理制度化,制度化的主要内容有:
①对项目组成员的工作定期检查;
②要求所有的开发过程以文档形式表示;
③制定各种文档的模板,并要求在项目的整体开发过程中,以统一的模板来撰写文档;
④项目组成员在开发过程中严格按照规定的流程进行,若更改过程,必须按变更管理的规程进行。
如何在受控的方式下引入变更、监控变更的执行、检验变更的结果、最终确认并固化变更,并使变更具有追溯性,这一系列问题直接影响项目的成败。为此,变更的控制关键要从以下两点入手:
①制定适合于本项目的变更处理流程,并严格按流程来处理所有变更;
②做好配置管理,保证软件项目的工作产品在整个项目周期中的“完整性”。
配置管理则是软件项目能顺利进行的基础。一个软件项目开发过程中,会有大量的“中间产品”产生,典型的如代码、技术文档、产品文档、管理文档、数据、脚本、执行文件、安装文件、配置文件、甚至一些参数等,这些中间成果都是项目的产品。而且,不断变化的软件项目还会使这些产品产生多个不同的版本,可以想象,一旦配置管理失控,项目组成员就会陷入配置项的“泥潭”。很显然,制定配置管理计划、建立配置管理系统、确定配置管理的流程和规程、严格按照配置管理流程来处理所有配置项,是确保配置管理顺利实现的方法和必要的手段。
二、软件项目管理方法的实现
1、项目背景
某局通信建设工程项目管理系统(以下简称DX-PMS)主要针对该电信局每年建设的各种通信建设项目进行全过程全方位的管理,主要包括的内容有工程项目管理、工程结算管理、工程合同管理、工程档案与统计查询管理四个主要子系统,并要求与现在已经使用的某省局工程项目管理系统共同使用,各行其职,但数据不需要用户重复录入,系统能自动进行数据无缝连接;另外DX-PMS还要与该局现在正在使用的OA系统、ERP系统等进行集成,其软件开发非常复杂。
2、DX-PMS开发过程的管理
1)制定DX-PMS项目计划
项目经理接受项目任务书后,组成一个项目规划小组,结合项目任务书和实际开发经验,确定项目所采用的技术路线;估计项目的工作量、成本及相关资源,依据软件项目管理规范,制定项目计划书,评审后纳入配置管理。
2)制定DX-PMS的开发过程
总流程的制定:项目经理与核心组成员,根据项目任务书和项目的实际情况,确定软件开发过程,得到如图1所示的开发过程流程图。
确定流程进入的必备条件:
①具有已签署的《DX-PMS合同书》;
②上级签发的《DX-PMS任务书》;
③与用户协商后得到的《DX-PMS执行计划》和《DX-PMS实施计划》。
确定流程结束的条件和考核内容。具体检查下列工作任务是否完成:
①软件开发项目组完成《DX-PMS功能说明书》、《DX-PMS需求分析》、《DX-PMS开发计划》、《DX-PMS配置管理计划》、《DX-PMS概要设计说明书》、《DX-PMS详细设计说明书》、《DX-PMS单元测试总结报告》等文档的编写及文档所规定的工作任务、可交付的源代码、可执行代码。
②测试组完成《DX-PMS测试计划》、《DX-PMS测试方案与测试用例》的编写和文档所规定的工作任务。
③质量保证组完成《DX-PMS质量保证计划》的编写和相应的质量保证工作。
DX-PMS具体的开发流程为:上级部门任命项目经理,协助项目经理组建项目开发组和软件测试组、质量保证组;项目经理负责组织项目开发组对客户需求进行调研,完成《DX-PMS系统需求说明书》及《DX-PMS用户需求调查报告》;部门经理负责对系统需求进行分析,确定其核心或可产品化的程度,可重用的构件等;项目组对软件需求进行分析,形成《DX-PMS软件需求分析说明书》,并通过评审;项目组制定《DX-PMS项目开发计划》,《DX-PMS软件配置管理计划》;测试组制定《DX-PMS软件测试计划》;质量保证组制定《DX-PMS软件质量保证计划》,并通过评审;软件开发项目组进行系统的《DX-PMS概要设计》并通过评审;测试组进行系统的《DX-PMS测试设计》并通过评审;软件开发组进行系统的《DX-PMS详细设计》并通过评审;所有源代码需要按照编码规范进行开发并由项目经理负责审查;软件开发项目组进行《DX-PMS单元测试用例》设计;在软件开发项目组的详细设计和编码阶段,测试项目组同步进行《DX-PMS测试方案与用例》的设计并进行评审;软件开发组进行单元测试,并提交《DX-PMS单元测试总结报告》;项目经理负责产品的完整性和正确性检查。
3)过程控制
过程控制的主要工作包括过程管理、变更控制和配置管理。
过程管理是项目能顺利进行的基础,过程的质量决定软件项目所开发的产品的质量。项目经理依据《DX-PMS详细设计说明书》和《DX-PMS开发计划》将软件开发阶段的考核分为系统需求调研、需求分析、软件设计、编码与单元测试四个考核点。考核方式与要求包括:
①项目经理对每个阶段所花费的有效工作量的确认;
②项目经理检查每个阶段的软件工作产品完成情况,将阶段工作产品纳入配置管理库并形成基线,并交资源管理部归档;
③部门经理负责签署阶段报告,总经理对软件工作产品进行确认。
④在测试过程中,统计软件工作产品的缺陷率;
⑤分析软件工作产品评审的数据的有效性。
项目经理具体的过程管理工作有:
①检查项目组成员的周报;
②制定相应的文档模板;
③检查项目组成员的文档;
④定期召开小组例会,交流开发经验和体会,解决突出的问题;
⑤负责与项目双方人员之间的沟通,特别是与双方领导的沟通。
变更控制的基础是变更控制流程的确定,在项目开发前项目经理根据相关规范制定变更控制流程,通过项目成员评审,并报上级产管理批准,形成项目组的一个规范,作为项目变更的执行标准,对项目的所有变更,必须按照变更控制流程进行。
配置管理则是变更控制能顺利进行的基础和保证,为避免陷入配置项的泥潭,项目经理在项目开始之前编写配置管理计划,《DX-PMS配置管理计划》和《DX-PMS开发计划》将同时产生,并制定配置管理流程,以保证项目的所有配置项目均纳入到配置管理库,进行配置管理。
通过采用软件项目管理方法,明确了项目管理流程和控制项目开发过程,项目经理严格按照流程进行控制,严格变更控制和配置管理;项目组严格按照项目计划进行开发;主管部门严格进行考核和评审。在整个开发过程中,项目小组人员清楚自己的工作,明白其他人的任务,了解项目的实际进程,明确下一步的工作重点,整个开发过程有条不紊地进行,圆满的完成了开发任务。
软件项目管理的方法研究及在DX-PMS项目中的成功应用,为如何进行软件项目的开发与控制提供了借鉴。实践证明,制订适合的软件项目管理规范、过程、流程、模板,并借助于适当的管理工具进行管理对软件项目的成功是非常有效的。