随着信息技术的飞速发展,软件应用范围越来越广,软件产品的规模也日益庞大,软件复杂度越来越高。传统“作坊式”开发模式已经不能适应大型软件的开发需要,大型软件项目必须按软件工程的开发模式,由团队共同协作完成。如果软件开发过程中缺乏统一有效的项目管理,将造成软件成本日益增长,开发进度难以控制以及软件质量差、软件维护困难等情况。因此,为了使软件项目能够按照预定的成本、进度、质量顺利完成,必须对软件开发过程实施项目管理,规范软件开发的过程。
一、 软件项目管理概述
项目管理起源于美国,四、五十年代主要应用于国防和军工项目,后来被广泛应用于工商、金融、信息等产业以及行政管理领域。目前,项目管理已经成为综合多门学科的新兴研究领域,它包括项目综合管理、项目范围管理、项目时间管理、项目费用管理、项目质量管理、项目人力资源管理、项目沟通管理、项目风险管理和项目采购管理等九大知识领域,其理论来自于管理项目的工作实践。
所谓项目管理就是指把各种系统、方法和人员结合在一起,在规定的时间、预算和质量目标范围内完成项目的各项工作。
软件项目管理和其它的项目管理相比有相当的特殊性。首先,软件是纯知识产品,其开发进度和质量很难估计和度量,生产效率也难以预测和保证。其次,软件系统的复杂性也导致了开发过程中各种风险的难以预见和控制。
软件项目管理的提出是在2O世纪7O年代中期的美国,当时美国国防部对软件开发不能按时完成、预算超支以及质量达不到用户要求的原因进行了研究分析,结果发现70%的项目不是技术原因造成的,其主要原因在于软件开发过程中的管理不善。
因此,软件开发者开始逐渐意识到项目管理在软件开发过程中的重要性,但是到20世纪9O年代中期,软件开发项目管理不善的问题仍然存在,虽然建立了一些软件开发管理规范,但并没有从根本上解决 软件开发的质量控制问题。据美国软件工程实施现状的调查,软件开发的情况仍然很难预测,大约只有10%的项目能够按照预定的费用和进度完成。而实施软件项目管理的根本目的就是通过对成本、人员、进度、质量、风险等进行分析和管理,使软件项目的整个生命周期都能在有效的控制下,按照预定的成本、进度、质量顺利完成。
二、软件项目管理的内容
软件项目管理的对象是软件工程项目,它所涉及的范围覆盖了整个软件工程的过程,它贯穿于软件开发的整个过程 需求分析阶段、设计阶段(概要设计和详细设计)、编码阶段、测试阶段以及运行维护阶段。软件项目管理的内容主要包括软件项目需求管理、软件项目估算与进度管理、软件项目配置管理、软件项目风险管理、软件项目质量管理、软件项目资源管理。
2.1软件项目需求管理
许多软件项目失败的根本原因在于开发人员没有正确理解客户的真正需求。我们经常会遇到这样的状况:一方面用户最初自己也不清楚要具体开发成什么样的系统,所以无法清楚地描述自己的需求,用户会在系统开发过程中不断地提出或变更需求;另一方面,开发人员对用户的业务流程不熟悉,不能完全理解用户的需求说明,最后导致整个项目的进度和质量都难以控制,甚至使整个系统失败。因此,必须加强软件项目需求管理来解决需求不断变化的问题。
需求管理是一种获取、组织并记录系统需求的系统化方案,它使用户和实现用户需求的软件项目之间达成共识。需求管理的目标是:控制系统软件需求,为软件工程和管理建立基准线,使软件计划、产品和活动与软件需求保持一致。需求管理包括需求评审、需求变更控制和需求跟踪等内容,需求管理中最基本的任务是明确需求,使开发人员和用户双方达成共识,同时建立需求跟踪能力联系链,确保所有用户需求被正确地应用,并且在需求发生变更时,能够完全地控制其影响范围,始终保持产品与需求的一致性。因此,需求变更控制管理,是软件项目管理的核心和关键。实现变更管理的目标是从流程及管理上控制变更风险,做到有序变更,同时尽可能快速、顺利地进行变更,实现灵活性需求和稳定性需求之间的平衡。
2.2软件项目估算与进度管理
软件项目计划是开展软件项目活动的基础,是跟踪、监督、评审执行情况的依据。软件项目计划的目标是提供一个能使项目管理人员对资源、成本和进度做出合理估算的框架。软件项目计划主要包括:
●软件开发计划:对任务、进度、人力、环境、项目组织结构、职责描述与说明。
●软件质量保证计划:从质量保证的角度描述项目中所执行的质量保证活动。
●软件测试计划:规定测试活动的任务、方法、进度、职责。
●软件配置管理计划:配置项标识、命名规范、变更流程等。
●软件培训技术:规定对用户培训的目标、要求、进度、职责等。
软件项目计划主要涉及项目范围和目标的确定、估算项目、估算资源。
2.2.1确定项目范围和目标
确定项目范围和目标是制订软件开发计划的根据,它包括对功能、性能、接口和可靠性的确定。
通过项目范围管理,明确项目管理的目标与边界,它是对项目范围的定义与控制过程。这个过程确保了项目组和项目关系人对作为项目结果的软件产品以及软件开发过程有一个共同的理解。
2.2.2软件项目的估算
软件项目管理过程开始于项目的计划,估算是完成项目计划的基础,它主要包括对完成该软件项目所需的资源、成本和进度的估算。估算具有风险性,它需要一定的经验、有用的历史信息、足够的定量数据等来完成。估算的精确程度取决于项目的复杂度、项目的规模、项目的结构化程度以及历史信息的有效性等的影响。
估算的依据是软件的范围,包括功能、性能、限制、接口和可靠性。软件项目估算一般采用分解技术、经验估算模型和自动估算工具进行估算。在估算开始之前,应对软件的功能进行评价,并对其进行适当的细化以便提供更详细的细节。由于成本和进度的估算都与功能有关,因此常常采用功能分解的办法。性能主要考虑包括处理和响应时间的需求。约束条件则标识外部硬件、可用存储和其它现有系统对软件的限制。