随着信息技术的飞速发展,软件应用范围越来越广,软件产品的规模也日益庞大,软件复杂度越来越高。传统“作坊式”开发模式已经不能适应大型软件的开发需要,大型软件项目必须按软件工程的开发模式,由团队共同协作完成。如果软件开发过程中缺乏统一有效的项目管理,将造成软件成本日益增长,开发进度难以控制以及软件质量差、软件维护困难等情况。因此,为了使软件项目能够按照预定的成本、进度、质量顺利完成,必须对软件开发过程实施项目管理,规范软件开发的过程。
一, 软件项目管理概述
项目管理起源于美国,四、五十年代主要应用于国防和军工项目,后来被广泛应用于工商、金融、信息等产业以及行政管理领域。目前,项目管理已经成为综合多门学科的新兴研究领域,它包括项目综合管理、项目范围管理、项目时间管理、项目费用管理、项目质量管理、项目人力资源管理、项目沟通管理、项目风险管理和项目采购管理等九大知识领域,其理论来自于管理项目的工作实践。
所谓项目管理就是指把各种系统、方法和人员结合在一起,在规定的时间、预算和质量目标范围内完成项目的各项工作。
软件项目管理和其它的项目管理相比有相当的特殊性。首先,软件是纯知识产品,其开发进度和质量很难估计和度量,生产效率也难以预测和保证。其次,软件系统的复杂性也导致了开发过程中各种风险的难以预见和控制。
软件项目管理的提出是在2O世纪7O年代中期的美国,当时美国国防部对软件开发不能按时完成、预算超支以及质量达不到用户要求的原因进行了研究分析,结果发现70%的项目不是技术原因造成的,其主要原因在于软件开发过程中的管理不善。
因此,软件开发者开始逐渐意识到项目管理在软件开发过程中的重要性,但是到20世纪9O年代中期,软件开发项目管理不善的问题仍然存在,虽然建立了一些软件开发管理规范,但并没有从根本上解决。
软件开发的质量控制问题。据美国软件工程实施现状的调查,软件开发的情况仍然很难预测,大约只有10%的项目能够按照预定的费用和进度完成。而实施软件项目管理的根本目的就是通过对成本、人员、进度、质量、风险等进行分析和管理,使软件项目的整个生命周期都能在有效的控制下,按照预定的成本、进度、质量顺利完成。
二、软件项目管理的内容
软件项目管理的对象是软件工程项目,它所涉及的范围覆盖了整个软件工程的过程,它贯穿于软件开发的整个过程
需求分析阶段、设计阶段(概要设计和详细设计)、编码阶段、测试阶段以及运行维护阶段。软件项目管理的内容主要包括软件项目需求管理、软件项目估算与进度管理、软件项目配置管理、软件项目风险管理、软件项目质量管理、软件项目资源管理。
2.1软件项目需求管理
许多软件项目失败的根本原因在于开发人员没有正确理解客户的真正需求。我们经常会遇到这样的状况:一方面用户最初自己也不清楚要具体开发成什么样的系统,所以无法清楚地描述自己的需求,用户会在系统开发过程中不断地提出或变更需求;另一方面,开发人员对用户的业务流程不熟悉,不能完全理解用户的需求说明,最后导致整个项目的进度和质量都难以控制,甚至使整个系统失败。因此,必须加强软件项目需求管理来解决需求不断变化的问题。
需求管理是一种获取、组织并记录系统需求的系统化方案,它使用户和实现用户需求的软件项目之间达成共识。需求管理的目标是:控制系统软件需求,为软件工程和管理建立基准线,使软件计划、产品和活动与软件需求保持一致。需求管理包括需求评审、需求变更控制和需求跟踪等内容,需求管理中最基本的任务是明确需求,使开发人员和用户双方达成共识,同时建立需求跟踪能力联系链,确保所有用户需求被正确地应用,并且在需求发生变更时,能够完全地控制其影响范围,始终保持产品与需求的一致性。因此,需求变更控制管理,是软件项目管理的核心和关键。实现变更管理的目标是从流程及管理上控制变更风险,做到有序变更,同时尽可能快速、顺利地进行变更,实现灵活性需求和稳定性需求之间的平衡。
2.2软件项目估算与进度管理
软件项目计划是开展软件项目活动的基础,是跟踪、监督、评审执行情况的依据。软件项目计划的目标是提供一个能使项目管理人员对资源、成本和进度做出合理估算的框架。软件项目计划主要包括:
- 软件开发计划:对任务、进度、人力、环境、项目组织结构、职责描述与说明。
- 软件质量保证计划:从质量保证的角度描述项目中所执行的质量保证活动。
- 软件测试计划:规定测试活动的任务、方法、进度、职责。
- 软件配置管理计划:配置项标识、命名规范、变更流程等。
- 软件培训技术:规定对用户培训的目标、要求、进度、职责等。
软件项目计划主要涉及项目范围和目标的确定、估算项目、估算资源。
2.2.1确定项目范围和目标
确定项目范围和目标是制订软件开发计划的根据,它包括对功能、性能、接口和可靠性的确定。
通过项目范围管理,明确项目管理的目标与边界,它是对项目范围的定义与控制过程。这个过程确保了项目组和项目关系人对作为项目结果的软件产品以及软件开发过程有一个共同的理解。
2.2.2软件项目的估算
软件项目管理过程开始于项目的计划,估算是完成项目计划的基础,它主要包括对完成该软件项目所需的资源、成本和进度的估算。估算具有风险性,它需要一定的经验、有用的历史信息、足够的定量数据等来完成。估算的精确程度取决于项目的复杂度、项目的规模、项目的结构化程度以及历史信息的有效性等的影响。
估算的依据是软件的范围,包括功能、性能、限制、接口和可靠性。软件项目估算一般采用分解技术、经验估算模型和自动估算工具进行估算。在估算开始之前,应对软件的功能进行评价,并对其进行适当的细化以便提供更详细的细节。由于成本和进度的估算都与功能有关,因此常常采用功能分解的办法。性能主要考虑包括处理和响应时间的需求。约束条件则标识外部硬件、可用存储和其它现有系统对软件的限制。
估算内容包括:
- 项目规模
- 项目工作量和成本
- 人力资源、硬件资源和软件资源
可以采用项目工作结构分解(麟),制定wBs(Work Breakdown Structure,工作分解)计划是制定项目计划的主要活动。通过工作分解的方式,将工作范围细分为活动,然后对每项活动分配时间和资源。
- 分解工作任务。将一个总的工作范围逐渐细分到合适的粒度,以便对任务计划、执行和控制。
- 定义活动依赖关系。活动依赖关系是确定项目关键路径和活动浮动时间的必要条件,定义活动间依赖关系的目的是确定每一项活动所需的输入、输出关系。
- 分配时间和资源。
2.2.3软件项目进度计划编制
软件项目的进度安排主要是考虑软件开发具体工期的安排,进度安排必须根据软件项目估算的实际情况,制定切实可行的进度计划。在软件开发的各个阶段设置里程碑,以便实现对项目进度的有效控制与检测。进度安排通常采用甘特图或网络图描述。
制定计划的过程不仅是一个对项目逐渐了解掌握的过程,也是在进度、资源、范围之间寻求平衡的过程。好的计划有助于在项目过程中防范各种问题的出现,保障项目顺利完成。
2.3软件项目配置管理
软件配置管理SCM(Software ConfigurationManagement),是在团队开发中,标识、控制和管理软件变更的一种管理。配置管理的使用取决于项目规模和复杂性以及风险水平。软件配置管理是一套规范、高效的软件开发管理方法,同时也是提高软件质量的重要手段,它帮助开发团队对软件开发过程进行有效的变更控制,高效地开发高质量的软件。
配置管理并不是一个新的概念,早在二十世纪7O年代,加州大学的教授就已经提出变更和配置控制的理论,它随着软件产业的逐渐壮大,在国外成熟的软件企业中逐渐得到重视和普及。
软件配置管理的功能:唯一地标识每个软件项的版本;标识共同构成一完整产品的特定版本的每一软件项的版本;控制由两个或多个独立工作的人员同时对一给定软件项的更新;按要求在一个或多个位置对复杂产品的更新进行协调;标识并跟踪所有的措施和更改;这些措施和更改是在从开始直到放行期间,由于更改请求或问题引起的。
软件配置管理包含了用于所有软件项目的良好工程实践方法,它通过下面几种方式强化软件的可靠性和质量:
- 提供用于识别和控制文档、代码、接口、数据库的结构框架,适用于软件开发整个生命周期;
- 全面支撑某一特定开发及维护工作方法,能够适应各种类型的需求、标准、政策、组织机构以及相关的管理策略;
- 针对特定的基线状态、变更控制、测试、发布版本或审计活动,生成相应的管理信息和产品信息。
实施配置管理系统,要从以下几方面考虑:
- 规划、调整网络开发环境,这是实施配置管理系统的前提;
- 根据项目开发的要求,设计开发资源的存储模式,良好的存储模式有利于减轻管理上的负担,增强配置管理库的访问性能,同时便于控制访问权限,保护软件资产;
- 定义配置管理系统的角色;
- 制定配置管理流程:这是配置管理实施的一个重要阶段,其主要目的是根据项目开发的需要,制定相应的配置管理流程,更好地支持开发;
- 相关人员的培训。
2.4软件项目风险管理
软件风险是指软件开发过程中及软件产品本身可能造成的伤害或损失。风险关注未来的事情,这意味着风险涉及选择及选择本身包含的不确定性。
风险主要指项目风险、技术风险和商业风险。
- 项目风险是指潜在的预算、进度、人力(工作人员和组织)、资源、客户、需求等方面的问题以及它们对软件项目的影响。项目风险威胁项目计划,如果风险变成现实,有可能会拖延项目的进度,增加项目的成本。项目风险的因素还包括项目的复杂性、规模
结构的不确定性。
- 技术风险:是指潜在的设计、实现、接口、验证和维护等方面的问题。此外规定的二义性、技术的不确定性等也是风险因素。技术风险会威胁到开发软件的质量及交付时间。如果技术风险变成现实,则开发工作可能变得很困难或者不可能。
- 商业风险:商业风险威胁到要开发软件的生存能力。商业风险常常会危害项目或产品。风险管理在项目管理中有非常重要的地位。有效的风险管理可以提高项目的成功率。
2.5软件项目质量管理
根据软件项目计划和进度,定期控制软件项目的实际进度是软件项目控制的关键。软件项目管理的目的是控制工作、资源、成本和时间,确保项目达到全部质量标准,符合各种要求和规范,真正满足用户需求。
2.6软件项目资源管理
软件项目资源管理包括:人力资源、硬件资源和软件资源的管理。项目人力资源管理是保证参加项目人员能够被最有效使用所需要的过程。软件开发中的开发人员是最大的资源。对人员的配置、调度安排贯穿整个软件过程,人员的组织管理是否得当,是影响软件项目质量的决定性因素。因此,必须充分重视软件项目资源管理。
三、结束语
软件项目管理是一门很大的学问,它贯穿于项目启动、计划、执行、控制、收尾的五个阶段,它不仅需要项目管理相关的基础理论知识作为指导,也需要我们在实践中不断学习、摸索。因此,总结项目经验是非常重要的,它有利于组织内部或行业内部经验与数据的积累,以及项目过程的改进和技术与管理经验积累,对于今后的项目有非常重要的指导意义,必须引起足够的重视。
|