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