[摘要] 软件需求开发作为软件项目管理的前期工作,贯穿项目过程的始终,能够实现软件开发最终产品同需求的最佳结合。本文应用项目管理理论,将软件需求开发过程划分为需求获取、需求分析、编写软件需求规格和需求验证四个阶段,并设计了软件需求开发管理模型。该模型能够提高软件需求开发管理效率,确保软件开发能够按进度,低成本,高质量地完成。
[关键词] 项目管理 软件需求开发 进度 成本 质量 管理模型
一、引言
软件需求开发是软件工程的一个重要环节,在软件生命周期中的需求、设计、编码、测试和维护等各个阶段中,需求开发处于软件工程的开始部分,它提供构建软件项目的根基,决定软件开发成果满足客户需求的匹配程度。软件需求开发环节的失误会随着开发进度的扩大而蔓延,资料表明,软件项目中由于需求开发管理混乱而造成的返工开销几乎占了总开发的50%。本文应用项目管理理论分析软件需求开发阶段的系统构成,并设计管理模型来提高软件需求开发的管理效率。
二、软件需求开发管理过程
由于计算机技术的迅速发展,使得软件需求具有模糊性、不确定性、变化性、主观性等特点,并带来软件需求开发管理的复杂性。软件需求开发是一定的组织利用有限的资源在规定的时间内完成,可以作为项目来进行管理,其管理过程由需求获取、需求分析、编写软件需求规格和需求验证四个阶段构成。
1.需求获取
需求获取是在问题和最终解决方案之间架设桥梁,其主要任务是和用户方的领导层、业务层人员进行沟通,获取用户的具体需求,并了解用户的组织架构、业务流程、硬件环境、软件环境、现有的运行系统等具体情况,同用户建立起良好的沟通渠道和方式。WwW.133229.cOm软件需求获取的方法有:与用户交谈,向用户提问题;参观用户的工作流程,观察用户的操作;用户工作的情景分析;现有系统的问题报告和改进要求,事件和响应;市场调查和向用户群体发调查问卷;与同行、专家交谈,听取他们的意见;分析已经存在的同类软件产品,提取需求;从现有产品或竞争产品的文档中提取需求;从行业标准、规则中提取需求;从 internet上搜查相关资料等。
2.需求分析
需求分析主要通过建立业务模型的方式来描述用户的功能需求,为客户、用户、开发方等不同参与者提供一个交流的渠道。业务模型可以映射出软件产品的核心需求,即功能需求。功能需求应描述软件提供的功能和服务、对输入的响应,并描述特定条件下的系统构成等。软件产品本身可能还存在与业务无直接关系的非功能需求,具体与系统的总体特性有关,如可靠性、响应时间、存储空间等。非功能需求定义系统提供服务或功能的约束,包括时间约束、空间约束、开发过程约束及应遵循的标准等。通常这两类需求构成软件需求的总集。
3.编制软件需求规格
软件需求规格的编制是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解,使之成为整个开发工作的基础,需求分析完成的标志就是提交一份完整的软件需求规格说明书。软件需求规格说明书以一种开发人员可用的技术形式阐述软件必须提供的功能和具备的性能,以及必须考虑的限制条件。软件项目客户通过软件需求规格了解软件项目能够提供的软件产品,检查软件需求是否满足需要;项目管理人员根据软件需求规格制定项目的开发计划和管理过程;软件开发人员通过软件需求规格理解要开发的产品及具体要开发的内容;软件测试人员通过软件需求规格验证软件。
4.需求评审
编写的软件需求规格说明书还应当进行需求评审,确保需求确定的科学性。可采用下列指标进行评审:(1)正确性:每条需求都正确代表构建软件系统所要完成的事情。(2)无歧义:每条需求只有一种解释。(3)完备性:需求不能发生遗漏,应全面考虑相关问题。(4)一致性:用户需求必须和业务需求一致,功能需求必须和用户需求一致。(5)重要性和稳定性分级:现有资源不足以实现所有需求时,可以根据级别的高低决定实现的先后,舍弃一些级别低的需求以保证项目的按期交付。(6)可验证性:需求分析是可测试的,只有系统的所有需求都是可以被测试的,才能够保证软件始终围绕着用户的需要,保证软件系统是成功的。(7)可修改性:每一条需求都易于完整一致的进行变更,且不改变需求集的结构和风格。(8)可跟踪性:每条需求都是可溯源的,且存在一种机制使得在以后的工作中引用需求是可行的。(9)可理解性:用户和开发人员都完全理解需求集的整体行为、所提供的功能及其中的每条需求的含义。
三、软件需求开发管理模型
1.软件需求开发管理模型构建原则
软件需求开发是一项复杂的系统工程,管理模型的构建应遵循下列原则:(1)程序性原则: 软件需求开发管理应遵循固定的业务流程,可将其划分为需求获取、需求分析、编写软件需求规格和需求验证四个阶段,前一阶段的工作完成后才能进入下一阶段。(2)系统性原则:软件需求开发要在限定的时间、成本条件约束下达到一定的质量,实现软件系统的最优,要求管理遵循系统管理原则,实现目标最优。(3)简化性原则:化繁为简,将模糊的、潜在的复杂问题明确化,以图表的形式表示出,并以简化的解决方案解决问题,便于项目管理。(4)平衡性原则:管理软件需求开发的具体事务要有一定的侧重。对于需求开发过程事项,应根据影响大小分清主次,关键的事项或者事项里的某个多发问题点,着重管理,达到在管理上的主次平衡。(5)高效性原则:模型的设计必须以促进需求开发目标的实现为前提,提供给相关人员一个展示需求开发管理和有效解决方案的平台。(6)时时控制性原则:及时控制需求开发过程中影响进度、成本、质量等问题,及时发现解决冲突事件,做到事前、事中、事后控制,保证项目按时保质保量完成。(7)动态性原则:开发中应关注信息技术的发展,将先进的技术应用到软件需求开发中,并学习借鉴相关软件需求开发的成果。
2.软件需求开发管理模型
基于以上分析,本文构建了软件需求开发管理模型,见下图:
该模型遵循了软件需求开发的管理流程。启动阶段,软件开发进行了可行性研究,软件项目已立项,项目正式启动。软件需求开发管理阶段是模型的主要部分,按照项目流程,依次划分为需求获取、需求分析、编写软件需求规格和需求验证四个阶段。总结阶段,对软件需求开发管理进行总结,并进入到软件程序设计阶段。模型的核心部分是应用项目管理的进度管理、成本管理、质量管理,对软件需求开发进行动态管理。进度管理就是制定出经济合理的进度计划,然后在计划执行过程中,检查实际进度与计划进度之间的差异,并及时找出出现差异的原因,采取有效的补救措施,以确保项目按时按质完成。进度管理应加强沟通,掌握可能延误进度的环节,并严格控制进度变更。成本管理就是对项目所需的成本情况进行详细地分析和估算,编制资源需求计划,并编制项目所需的成本估算和预算,在执行过程中,采取相应的措施对项目成本进行控制。成本管理应严格控制加班、浪费等额外支出。质量管理是为了保证项目的可交付成果能够满足客户的需求,围绕项目质量而进行的计划、协调和控制等活动,其具体内容涉及质量规划、实施质量保证和质量控制。通过进度管理、成本管理和质量管理,使软件需求开发成为进度快、成本低和质量合格的有机统一体。
该模型规范了软件需求开发的业务流程,并在整个软件需求开发的不同环节之间建立联系,明确需求开发过程与自身各任务项之间以及项目其余环节所存在的各种联系。模型各环节间的相关性、可追溯性保证了软件项目需求开发过程,可以遵循统一的管理模式。该模型具备可配置性。每个软件项目,都具有个性化管理需求,在进度管理、成本管理、质量管理等方面有不同的要求,可以针对具体的开发团队,项目要求,管理侧重点,扩增相应的管理模块,将此模型推广到任何一个软件需求开发项目。
3.模型应用