软件项目需求开发与管理过程方法研究
2015-06-27贾超
贾 超
(天津市科技统计与发展研究中心 天津300051)
软件项目需求开发与管理过程方法研究
贾 超
(天津市科技统计与发展研究中心 天津300051)
软件需求是软件开发项目的基础,与传统项目相比,软件开发项目具有抽象性和复杂性等特点,因此软件开发项目的需求开发和管理显得尤为重要。根据研究表明,项目需求的开发和管理不到位是目前大部分软件项目失败的主要原因。就软件开发项目的需求开发和管理过程的方法和工具进行研究,将需求开发和管理过程分解细化,并对各过程组的活动进行研究和分析,建立可用于指导软件开发项目的工作方法。
需求开发 需求管理 需求变更控制 过程方法 管理工具
0 引 言
随着科学技术水平的不断提高,有关软件开发的知识和技术也不断丰富,可利用的工具也越来越多,但仍然存在大量软件开发项目失败的现象。研究发现,诸多项目失败的最重要原因与项目需求有关。用户的需求是整个软件开发项目的重中之重,是软件设计的基础,决定了项目方向的正确与否。需求开发的不充分和需求管理的不完善,都会造成后期开发的不断修改和变更,造成成本的超值和进度的滞后,最终有可能导致项目失败。
从目前软件开发项目的趋势来看,软件开发组织机构和项目经理更加重视软件项目的开发和管理。规范化的过程和管理方法成为软件开发生命周期的重要组成部分。
1 项目需求开发和管理过程组
按照现代软件开发项目的流程,所有与需求直接相关的活动,统称为需求工程。需求工程分为需求开发和需求管理两个部分,如图1所示。
1.1 需求开发过程组
需求开发是CMMI①中一个重要的过程域,需求开发过程的质量决定了软件开发产品的方向,如果需求开发不充分,有可能导致需求理解偏差,需求的任何细小偏差,都会导致后期无法想象的代价。
图1 需求工程架构图Fig.1 Structure of Requirement Engineering
需求开发的主要目的是对尚未形成统一意见的需求进行一系列的过程活动,需求开发的过程是从需求获取到需求分析,需求规约和需求验证的过程,根据CMMI的观点,需求开发过程是一个循序渐进的过程。
1.1.1 需求获取
需求获取是项目需求阶段的主要工作,也是需求工程中最复杂的工作。需求获取是一个确定和理解不同用户类需要和限制的过程。包括需求来源和需求获取的技术,是软件设计的第一阶段,其本质就是人的活动,要建立开发人员和用户之间的有效沟通机制,采用专业的需求获取技术来尽可能收集用户的需求。
1.1.2 需求分析
需求分析是建立在需求获取基础上的,是对需求获取成果的技术分析。需求分析的任务就是定义系统的目的、范围和功能的过程。需求分析的具体内容可以归纳为6个方面:软件的功能需求、软件与硬件或其他外部系统接口、软件的非功能性需求、软件的反向需求、软件设计和实现上的限制、阅读支持信息。
1.1.3 需求规格说明
软件需求规约是需求分析任务的产物,通过建立完整的信息描述、详细的功能和行为描述、性能需求和设计约束的说明、合适的验收标准,给出目标软件的所有功能需求。按照IEEE/ANSI 830—1993①IEEE/ANSI830—1993:中文标准名称为:软件要求规范推荐实施规程。标准要求,需求规约框架包括:引言、信息描述、功能描述、行为描述、检验标准、参考书目和附录。技术人员必须通过与用户交流提炼需求,经双方确认后,正式发布需求规约。
1.1.4 需求验证
软件需求验证是为了确保软件需求规约准确、完整地表达需要的质量特点。需求验证过程的主要内容包括审查需求规约、需求文档,并以需求规约为依据编写软件测试用例和用户手册,核实验收标准。
1.2 需求管理过程组
需求管理是完整项目管理模式的一环,完整的需求管理应当是对已知的系统需求的约束和管理。
项目需求是渐进明晰的,随着软件项目开发的不断深入,用户和开发者对于变更的理解也会产生变化,需求的定义也会逐渐清晰。需求管理是动态的管理过程,需要根据软件开发的进展,实时对开发过程中的项目需求进行管理,支持系统的需求演进。项目需求管理内容包括需求确认、需求变更、需求评审和需求跟踪。
1.2.1 需求确认
系统需求得到顾客和开发人员的共同认可后,定义需求基线。
1.2.2 需求变更管理
软件项目需求永远处于不停的改变状态,应对软件开发项目过程中所提出的需求变更,建立正式的需求变更流程加以严格控制,防止项目无限制变更所导致的项目范围蔓延。
1.2.3 需求的评审
对项目干系人提出的需求变更进行评审,评估每一项变更的可能影响从而决定是否实施。
1.2.4 需求跟踪
对需求变更情况和需求状态进行验证。将每项需求与其对应的设计、源代码和测试用例等联系起来,对项目变更后的执行效果进行评价,并对潜在的变更进行预估。
2 需求开发和管理的过程方法
任何管理的方法和思想都是依托专业的工具、方法来实现的。需求开发和管理都是极其复杂的工作,使用的方法也很多,要根据不同项目的特点选择最合适的方法来实施项目需求工程。
2.1 需求开发的过程方法
需求开发过程不是一个简单的重复工作,而是建立在上一次分析基础上的不断细化和精化,在不断的循环过程中,最大限度地理解和分析用户需求,确保需求开发的成果最大化。
需求开发的过程方法包括但不限于以下内容,如表1所示。
表1 需求开发过程方法Tab.1 Approaches for the requirement development process
2.2 需求管理的过程方法
需求管理的目的就是要控制和维持需求事先约定,保证项目开发过程的一致性。在软件开发过程中,不可避免地还会遇到需求变更等情况。应加强变更管理,建立有效的需求变更管理制度,采用专业、正式的项目管理方法。对变更带来的潜在影响及可能的成本费用进行评估、审批和跟踪。
2.2.1 需求确认
建立需求基线。需求基线是需求变更的依据。在开发过程中,需求确定并经过评审后,可以建立第一个需求基线和项目范围。此后的每次变更经评审后,都要重新确定新的需求基线。建立需求基准版本和需求控制版本文档:确定一个需求基准,这是一致性需求在特定时刻的快照。之后的需求变更遵循变更控制过程即可。每个版本的需求规格说明都必须是独立说明,以避免将底稿和基准或新旧版本相混淆。最好的办法是使用合适的配置管理工具在版本控制下为需求文档定位。
2.2.2 需求变更管理
建立简单有效的需求变更控制流程,并形成正式的发布文档。在确定需求基线后提出的所有变更都必须遵循这个控制流程进行控制。同时这个流程应适合组织结构,具有通用性,适用于以后的项目开发和其他项目的借鉴;建立变更控制委员会(CCB)或类似的职能组织。由该组织审定接受哪些变更和如何执行变更。变更控制委员会由项目组各方共同组成,应包含对项目具有影响力的决策者。
2.2.3 需求评审
需求变更一定要进行正式的评估,对需求变更的影响进行分析,并根据影响程度的大小组织同等级别的变更评审。
2.2.4 需求跟踪,应跟踪影响工作产品的每项变更
需求变更是一个系统性工作。当进行某项需求变更时,参照需求跟踪能力矩阵找到相关的其他需求、设计模板、源代码和测试用例,这些相关部分可能也需要修改。这样能减少因疏忽而不得不变更产品的机会,这种变更在变更需求的情况下是必须进行的。维护需求变更的历史记录:记录变更需求文档版本的日期以及所做的变更、原因,还包括由谁负责更新和更新的新版本号等。建立数据库,记录保存每一项功能需求,记录包括功能需求的重要属性和状态(如已通过、已实施、已验证等)。衡量需求稳定性:记录基准需求的数量和每周或每月的变更(添加、修改、删除)数量。
2.2.5 衡量需求稳定性
定期对需求变更数量和原始需求数量进行比较。过多的需求变更“是一个报警信号”,意味着需求开发不完整,问题没有真正清楚,应重新审定项目需求或者取消项目。
2.3 需求管理的常用工具
在需求管理过程中,利用需求管理工具,可使需求管理工作更加高效。商业化的需求管理工具能帮助在数据库中存储不同类型的需求,为每项需求确定属性,可跟踪其状态,并在需求与其他软件开发工作中建立跟踪能力联系链。目前市场上比较常用的需求管理工具有Rational Requisite Pro①Requisite Pro是一个强大、易用、集成的需求管理产品。通过与Rational系列软件产品的广泛集成,大大扩展了Requisite Pro及其他产品的功能。、IBM Rational DOORS②IBM Rational DOORS前身是Telelogic Doors,被IBM收购后更名为IBM Rational DOORS。、青铜器RDM③青铜器RDM是IPD+CMMI+Scrum一体化研发管理解决方案,针对需求管理,涵盖需求的全生命周期管理。等。
3 当前需求开发和管理存在的问题
由于软件开发项目的专业性、复杂性,与一些传统项目相比,软件开发项目更模糊、不确定。软件开发项目的需求开发和管理仍存在很多问题。需求开发和管理的知识和方法存在缺少实践,管理方法的执行不彻底。
3.1 沟通问题
由于软件项目属于专业行为,在需求收集阶段,一般用户很难清晰地理解开发人员的理念,所以在描述需求时,很难清晰地表达需求。此外,用户对系统并不了解,往往在项目开发深入、功能雏形展现的时候,才真正的清楚自己所需的功能。这就需要项目管理人员和开发人员在项目需求开发阶段,尽可能深入地挖掘用户需求,在项目开发过程中,建立正式的沟通机制和平台,保持与客户的沟通协调。
3.2 需求基线的控制力不足
缺少需求基线的控制,变更执行不是在需求基线基础上进行的,或者在需求变更后,基线调整没有跟上。
3.3 需求管理中对需求的跟踪和管理的变更不力
目前,国内很多项目都缺少对项目需求的跟踪和效果分析,对于变更的作用如何缺少评价机制,这样就导致目前很多项目的需求变更控制不力,项目变更失控。
4 总 结
在软件研发项目的生命周期的任何阶段,需求的开发和管理都扮演着极其重要的角色,在很大程度上直接决定着项目的最终成败。因此,在软件开发项目研发过程中,项目管理者要重视需求的管理,根据所在组织的开发环境因素,结合不断的管理实践,摸索出适合各自不同开发环境需求管理的实施办法和方式。
[1] 贲可荣,何智勇. 软件工程:基于项目的面向对象研究方法[M]. 北京:机械工业出版社,2009.
[2] 覃征,杨利英,高勇民,等. 软件项目管理[M]. 北京:清华大学出版社,2004.
[3] 周之英. 现代软件工程[M]. 北京:科学出版社,2000.
[4] 刘霞,李怀璋,王青,等. 基于ISO9000和CMMs的需求开发和需求管理平台框架的研究[J]. 微电子学与计算机,2002(2):50-54.
On Process Approaches for Requirement Development and Management of Software Projects
JIA Chao
(Tianjin Science and Technology Statistics and Development Research Center,Tianjin 300051,China)
The requirement is the basis of a software development project. Owing to the characteristics of abstractness and complexity requirement development and management are particularly important in a software development project. According to studies unqualified development and management of project requirements is the main cause of the most software project failures. This paper mainly studies methods and tools in the process of software project’s requirement development and management. Through decomposition of the development and management process the activities of each process group were studied and work assignments that can guide the requirement development and management were presented.
requirement development;requirement management;change control of requirements;process method;management tool
TP311.5
:A
:1006-8945(2015)12-0049-03
①CMMI:CMMI全称是Capability Maturity Model Integration,即软件能力成熟度模型集成。
2015-11-03