前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的需求变更的管理流程主题范文,仅供参考,欢迎阅读并收藏。
1软件需求分析
软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。包括业务需求、用户需求、系统需求3个不同层次。在需求获取阶段所得到的需求是杂乱的而不明确的,很多需求既重复又矛盾,而一个合格的需求描述应该具备完整性、可测试性、确定性、无歧义、可跟踪性、正确性、必要性等特性,而需求分析就是把这些杂乱的用户要求和期望转化有效而合格的需求描述的过程。首先,系统分析师通过对所获取的需求进行分类,创建出不同的业务模型:通过由领域专家(当系统分析师具有足够的领域经验时,可泛化为领域专家)途径得到业务类模型,制作出被领域广泛认可的需求模型;通过与客户/用户沟通得到业务用例模型,获得当前业务的独有特征,再将两个需求集合统一,构成业务模型。1.1需求分析的方法在软件工程的研究中,人们提出了多种需求分析的方法,其中主要有结构化分析法(StructureAnalysis,SA)、面向对象分析法(Object-OrientedAnalysis,OOA)和面向问题域的方法。另外,还有一些形式化方法,但由于实用性不强,一般只用在学术研究中。1.1.1SA方法SA方法主要关注于功能的分层和分解。这非常符合人们自上而下,逐步分解问题直到可解决的自然思考方式。但通过细分系统模块的功能来描述整个系统做法,很容易混淆需求和设计的界限,使系统分析师感到迷惑,不知道系统需求应该详细到何种程度。并且从用户的角度来看,他们并不想了解系统内部结构和设计,他们所关心的是系统所能提供的服务。SA方法模型的核心是数据字典(DataDictionary,DD),围绕这个核心分3个层次的模型,分别是:数据模型、功能模型和行为模型(也称状态模型)。1.1.2OOA方法OOA方法主要是运用面向对象的方法,对问题域进行分析和理解。OOA模型独立于具体实现,即不考虑与系统具体实现有关的因素。仅思考“做什么”的问题。OOA使用统一建模语言进行需求的分析,利用用例模型获取需求,进而由分析模型描述系统的基本逻辑结构等。统一建模语言(UnifiedModelingLanguage,UML)通过逻辑视图、进程视图、实现视图、部署视图以及用例视图来体现系统架构。其中又包含了多种不同的图来对所开发系统的某一特定方面进行分析。1.1.3PODA方法面向问题域的分析方法(ProblemOrientedDomainAnalysis,PODA)是一项很新的技术,目前还处于研究阶段,它主要关注问题域,并关注系统实现的待求行为,用一个文档对解系统的待求行为进行描述。1.2结构化分析方法实例下面以一个嵌入式接口处理软件为例,介绍结构化分析方法的实例。该软件使用串口1与控制器进行交互:要求具备串口升级功能,要求具备由控制器进行启动模式设置完成重启、保存控制器发送的重要配置数据以及将常规指令通过串口2转发至一个外部模块。下面用状态转换图(StateTransitionDiagram,STD)以及数据流图(DataFlowDiagram,DFD)举例说明结构化分析方法。根据以上需求可分析出当程序正常启动后进入就绪状态,等待串口语句指令:若接收到升级指令则进入升级状态,升级过程中等待升级数据包,升级完成程序结束等待重启;若接收到启动指令,则进入重启状态;若接收到配置及常规转发指令则完成不同状态处理后重新进入就绪状态。数据流图按照自顶向下的分解方法,首先绘制一张顶层图,将整个待开发系统表示为一个加工。系统顶层如图1所示,顶层用来描述系统有什么输入输出的数据流,与哪些外部实体直接相关。完成顶层图建模之后,在此基础上进一步分解,得到图2的1层图示例,1层图将系统细化为3个加工。继续对1层图中的加工1进行分解,并将所分解的加工命名为1.1,1.2……,可以看到在细化的2层图中引入了数据存储,看到对于配置参数、启动设置数据等需要进行存储操作。就这样在不断细化的过程中完成分析工作。1.3面向对象分析方法实例同样根据上述需求的例子,利用面向对象的分析方法进行分析,通过分析不同参与者所关注的不同需求,得到以下的用例图示例,如图4所示。在获取用例后,还需要继续深入分析,对用例间的活动关系进行研究,同时对升级用例进行了细化分析,便得到了以下的活动图示例。在后续分析中可使用该方法进行进一步的活动细化。
2软件需求管理
需求是软件项目成功的核心所在,它是后续软件工作开展的基础和基石。在软件需求工程中,需求管理贯穿于整个过程。首先,最重要的是系统分析师应充分思考客户的需求,制定计划前要有充分的沟通,若这点没有实现,继续展开下一步制作,只会使得双方的理念偏离越来越大,最终做出来的软件也很有可能不符合用户的商业用途。编写需求文档,确定需求的范围和标准,加以约束限制,然后对需求进行细化,在具体实施过程中还需进行不断地调整。有时计划赶不上变化,受许多非确定因素影响,若不能及时有效处理这些改变,将会拖延工期,面临很大的风险。系统设计师对系统自身需求、客户需求都要有深刻认识,要充分了解各个阶段的计划,预测软件开发的进程,软件生产做到有目的性、阶段性、可行性,才能保证项目开发的顺利进行。在需求管理中,应该认识到整个需求开发过程的各个阶段并不是瀑布式发展的,而是应该采用迭代方式。由这一思想去进行需求管理及控制,保证项目的顺利进行是非常有必要的。需求管理涉及3个主要问题:将需求进行标识、分类以及组织,并为需求建立文档;管理需求的变更,说明不可避免的需要变更是如何被提出、协商、确认的,并且将整个变更过程记录在案;对需求进行跟踪,保持需求和软件产品之间的一致性,及相互关联性。[参考文献][1]雷斯泽克,马克扎克.需求分析与系统设计[M].马素霞,王素琴,谢萍,译.北京:机械工业出版社,2009.[2]张友生.系统分析师教程[M].北京:清华大学出版社,2010.[3]李超,谢坤武.软件需求分析方法研究进展[J].湖北民族学院学报(自然科学版),2013(2):204-211.间的一致性,及相互关联性。图5活动图示例2.1需求变更的原因分析需求变化问题是一直存在的,也是不可避免的,需求不可能一开始就做到百分之百完善,往往都需要在后续阶段不断地改进,对于项目团队而言,必须要正确对待变更,按照既定流程管理变更,尽量降低由于变更带来的成本、进度及质量的负面影响。需求变更的原因常见有:(1)最初对用户需求缺乏认识,产生了错误,需要改变;(2)用户产业有了变化,软件开发概念也要随之改变;(3)需求了解不够全面,需求要增加;(4)系统的升级换代使软件的运行环境发生改变,软件的兼容性必须满足,安全性也必须提高。无论是哪种情况所导致的需求变更通常都意味着新需求的增加和原有需求的修改,对于较少发生的减少需求的情况,则比较容易处理。无论对何种变更,都必须采取规范的流程去管理,以保证变更后不会带来新的问题。2.2需求变更的管理控制为保证需求变更不对软件质量产生负面影响,必须规范软件开发过程,开发出标准的管理流程。近些年,软件大量生产,若没有一个规范统一的开发流程模式,软件开发过程中由于需求的变更,增加了生产工期,生产成本提高,扩大了风险,很可能导致项目失败。需求变更动机往往是为了满足用户需要,顺应市场的动态变化,但是为了能使整个工程能够如期完成,必须制定一个合理有效的变更机制,确定一个变化范围,考虑到软件制作的合理性,不能一味地听从用户的体验需求,而不思考项目组能否在不违背完整性约束的条件下开发出软件。对以往的需求变更进行收集、整理、分类,将变更方案的档案记录下来,在下次遇到需求变更时能够快速应对,迅速制作出处理方案。软件开发做到严格按照流程实施,对需求变更流程路线做到统一规范。首先是对各种需求变更的详细原因进行收集,并写成需求变更请求报告,提交评审小组进行变更评审。在需求评审过程中,对需求变更项目进行审查,将可执行的需求挑选出来,不合理的需求进行排除,还有一部分尚不确定的还需要和用户进行下一阶段的沟通处理,再次通过审核,直到通过评审才能到下一步的流程。而当变更周期完成后,还需要对变更情况进行测试及跟踪。在中途有新的变更时,需要通重新进行这一流程处理。因此看似简单的变更,实施过程中却并不简单。只有严格按照规定流程进行管理,才能得到质量保证与质量的控制。初步的需求变更完成后,为了加强需求变更后的准确性,技术人员必须对软件进行测试,检查该阶段的性能,保证与其他方面的合理衔接,预测软件的整体运行情况,做到一致和统一,而质量控制部门也必须有质量保证人员执行测试,保证得到高质量的最终产品。
3结语
论文关键词:软件工程需求 管理软件项目
论文摘要:需求管理是整个软件工程的管理的基拙,也是项目成功的关健所在。本文论述了软件项目中需求管理的重要性及存在的问题,并针对这些问题提出相关解决方法。
1背景
1. 1需求管理的概念
理解需求管理的第一步就是对什么是需求管理达成共识。Rational把需求定义为“(正在构建的)系统必须符合的条件或具备的功能”。
由于需求是正在构建的系统必须符合的事务,而且符合某些需求决定了项目的成功或失败,因此找出需求是什么,将它们记下来,进行组织,并在发生变化时对它们进行追踪,这些活动都是有意义的。换句话说,需求管理就是:一种获取,组织并记录系统需求的系统化方案,以及一个使客户与项目团队对不断变更的系统需求达成并保持一致的过程。
1.2需求管理在软件项目管理中的地位
简单地说,系统开发团队之所以管理需求,是因为他们想让项目获得成功。满足项目需求即为成功打下了基础。若无法管理需求,达到目标的几率就会降低。以下最近收集的证据很有说服力:Standish Group从1994年到2001年的CHAOS Reports证实,导致项目失败的最重要的原因与需求有关。2001年,Standish Group的CHAOS Reports报导了该公司的一项研究,该公司对多个项目作调查后发现,百分之七十四的项目是失败的,即这些项目不能按时按预算完成。其中提到最多的导致项目失败的原因就是“变更用户需求”。
在软件项目的开发过程中,需求变更贯穿了软件项目的整个生命周期,在软件项目管理中需求工程是软件开发的第一步,是关键的一步,也是最难把握的一步。需求管理做得好坏直接影响到软件的质量,甚至软件项目的成败。从软件的项目立项、研发、维护,用户的经验在增加,对使用软件的感受有变化,以及整个行业的新动态,都为软件带来不断完善功能、优化性能、提高用户友好性的要求。在项目管理过程中,项目经理经常面对用户的需求变更,如果不能有效处理这些需求变更,项目计划会一再调整,软件交付日期一再拖延,项目研发人员的士气将越来越低落,将直接导致项目成本增加、质量下降及项目交付日期推后。这决定了项目组必须拥有需求管理策略。
2需求管理现状
随着信息时代的发展,计算机软件的需求愈来愈复杂,规模愈来愈大,而且随着企业的发展,工作过程重组,需求变更已愈来愈成为必然。软件危机持续了30年之久,至今仍无法得以很好地解决。究其原因,软件本身具有的特点固然有关,但长期以来,缺乏软件开发和维护的正确方法以及忽视软件开发过程的质量控制乃是最为关键的原因。其中软件开发和维护方法的不正确性主要体现在:忽视软件开发前期的需求分析;开发过程缺乏统一的、规范化的方法论的指导;文档资料不齐全或不准确;忽视与用户之间、开发组员之间的交流;忽视测试的重要性;不重视维护或由于上述原因造成维护工作的困难。
这样,就经常出现用户对“已完成”系统不满意,软件产品的质量经常出现漏洞,补丁一大堆。因此人们意识到以工程化的原则和方法组织软件开发工作是解决软件危机的一个主要出路。
需求分析作为软件生命周期的第一个阶段,并贯穿于整个软件生命周期,其重要性越来越突出,到20世纪80年代中期,逐步形成了软件工程的子领域—需求工程。进人20世纪90年代后,需求工程成为软件界研究的重点之一。从1993年起,每两年举办一次需求工程国际研讨会(ISRE) ,1994年起,每两年举办一次需求工程国际会议(ICRE)。一些关于需求工程的工作小组相继成立。
3存在的问题
3. 1需求描述的细致性问题
在文章的开头就说明了软件需求在整个软件系统开发中的重要性,正是由于它的重要性,一般来说,需求描述越详细越好。项目的开发方与用户在各种问题上的要求都是基本轮廓达到一致即可,具体的细节可以以后再填充,这是一种非常危险的思想。不管需求分析做的多么细致,以后对需求的变更都是必然的。另一方面,在需求分析阶段,开发人员希望再多投人一些时间,但是用户却不这么认为,因为需求阶段是软件系统开发首先要进人的阶段,离最终开发出可用的系统还有很长一段距离,这导致了双方的不一致。但如果在需求阶段投人很多时间,时间越长,可能的变化就越多,对设计的限制越严格,因此在需求描述的问题上,没有统一的界定,需要开发人员学会适当的把握。
3.2需求描述的正确性
软件开发是一种专业行为,一般的业主难以理解软件开发人员的开发理念。所以在和业主交流时,他们讲述的需求在实际中利用现有的技术是实现不了的,用户以为自己很清楚自己的需求了,但实际上他们只是依据当时的工作需求提出的。随着开发工作的不断进展,用户可能想到更多的功能和特色,进而对以前的需求进行改动,导致需求的不一致。
另外一种情况就是开发人员和业主交流时,由于业主本身对需求的描述不清晰,导致开发人员误解或曲解了业主最初的要求,最后开发出来的系统不是不能满足用户,就是一个发生需求错误的系统。事实上这种错误在需求阶段也会经常发生。更可怕的是,对于需求阶段出现的错误,如果在软件项目进行到后期的时候才发现,修复费用是非常可怕的,甚至会超出项目本身的费用。因此做好需求管理、减少需求错误的出现对于降低软件项目的成本是必要的,也是至关重要的。
3. 3需求描述的完备性
系统的需求是层出不穷的,我们不可能做到把所有的需求都一一列举出来,并且随着时间的推进,用户的需求也会越来越多,要穷举需求是不可能做到的。另外,并不是用户提出的所有需求都要满足,在项目的最后,改变一个需求对整个项目的影响或损失很可能会超过需求本身给用户带来的益处。
3. 4需求的变更
需求的变化问题是每个开发人员、每个项目经理都遇到的问题,也是最头痛的问题,一旦发生了需求变化,你不得不来修改你的设计、重写你的代码、修改你的测试用例、调整你的项目计划等等,需求的变化好比是万恶之源,为项目的正常的进展带来不尽的麻烦,怎么办?管理它!使需求在受控的状态下发生变化,而不是随意变化,需求管理就是要按照标准的流程来控制需求的变化。难题随之而来,需求中的变化一般不是突发的革命性的变化,最常见的是项目需求的渐变(Project Scope Creep)问题,这种渐变很可能是客户与开发方都没有意识到的,当达到一定程度时,双方才蓦然回首,发现已经物是人非,换了一番天地。
4解决问题的策略
4. 1对需求文档版本控制
客户签收的所有过程文档都要作为基线确定下来,做好相关文档的管理工作。需求的基线是指是否容许需求变更的分界线,需求分析人员在充分与客户用户进行沟通的基础上形成第一个版本的需求文档,这个需求文档在通过需求评审后即可以建立第一个需求基线。此后每次需求变更并经过需求评审后,都要重新确定新的需求基线,以免将来用户需求发生变更时,原来的需求无法查找。为有效进行需求变更控制,必然要做的工作就是保存好各个版本的需求基线,维护需求基线文档,以备不时之需。
4. 2正确认识需求变更
在软件开发过程中有这样一条真理:需求的变化是永恒的,需求不可能是完备的。软件开发的过程实际上是一个变化的过程,需求的变更不一定是坏事,也有可能是好事。
变更的需求之所以变得难以管理,不仅是因为一个变更了的需求意味着要花费或多或少的时间来实现某一个新特性,而且也因为对某个需求的变更很可能影响到其他需求。应确保赋予需求一个有弹性的结构,使它能适应变更,并且确保使用可追踪性链接可以表达需求与开发生命周期的其他工件之间的依赖关系。管理变更包括建立基线,确定需要追踪的重要依赖关系,建立相关项之间的可追踪性,以及变更控制等活动。
需求变更贯穿了软件项目的整个生命周期,通过建立规范的变更控制流程,改进软件分析与设计,把变化纳人计划之中,在应对需求变更时可以更加的从容和有信心。
4. 3管理需求变更
变更控制不应该只是软件开发过程应该考虑的事情,随着软件产品的开发和时间的推进,用户会提出越来越多的新需求,甚至在交付软件产品的最后阶段用户还会有不同的需求,因此需求变更的管理应贯穿于整个项目生命周期的全过程。
为了使变更对项目的影响降到最小,就应当采取合适有效的变更控制策略,确定一个选择、分析和决策需求变更的过程,所有的需求变更都需遵循此流程。对需求的变更的处理应该分以下几个步骤:提出变更、变更评估、实施变更、监督变更过程。
4. 4建立需求管理模型
需求建模是表达需求的一种形式,是对需求的一种描述与阐释,它使用标准的语言,利用类似积木的概念来建模,最大的好处是大家可以直接根据需求,轻易地反复修改需求模型。并且不会产生歧义,从而可以使大多数人快速地理解。
需求建模的目的是要消除人际沟通随意性很强的弱点,所以需要致力于将沟通标准化、自动化、准确化,而且责任到人负责的具体阶段。具有可测试、可验证性的特点。建模的过程就是通过需求的特点和要求进行分析,以建模标准为基础进行准确、完备和有效的阐述,以确保客户和开发方都能够明确无误地、通用的理解。
4. 5与用户充分沟通
在需求管理过程中与用户的沟通很重要,因为它直接决定着最终软件产品是否满足客户的要求,即很大程度上决定着项目的成败。在沟通时,双方对需求的认识要一致,不能模棱两可。讨论需求及变更需求时,需求人员与客户及用户应该尽量采取协作的态度,良好的工作氛围也会提高工作效率,很难想象双方在“刁难”与“对付”的态度下是多糟糕的工作场景。确定需求基线的过程也是与客户用户交流的过程,而频繁大量的需求变更在很大程度上也是交流不充分的后果。所以,有效的充分的交流尤为重要,需求人员认真听取客户用户的要求,进行分析和整理,并最终取得用户的确认。
4. 6利用需求管理工具
需求变更控制委员会可以采取商业化的需求管理工具,以此来在数据库中存储不同类型的需求。这些工具提供了对每项需求的属性描述、状态跟踪等,并可以在需求与其它的相关工作产品间建立跟踪能力联系链。
【关键词】金融软件 需求管理 需求变更
一、引言
随着金融市场的蓬勃发展,创新模式的不断增多,金融软件的需求越来越多,开发规模也逐渐增大。如何提高软件项目的开发质量和开发效率成为首要问题。需求管理作为软件开发项目的关键,对于软件项目的质量和进度具有重要的影响。
二、需求管理的重要性
软件开发的初始输入是给定需求,在此基础上进行需求分析,然后以文档的形式将分析的结果输出。需求分析中的输出即为需求管理的输入。需求分析是软件开发的第一步,而需求管理则是对需求分析的结果进行管理和控制,保障开发活动符合分析结果。需求管理的目的是建立和维护软件项目和客户需求之间的共识,要求客户的需求合理,软件产品能满足客户的需求。需求管理作为软件开发不可或缺的组成部分,贯穿项目的整个生命周期,至关重要。
三、金融软件项目需求管理存在的问题
金融软件产品专业领域性较强,应用于金融机构内部支撑业务运转的软件产品多是由企业内部开发完成的。大多数国内金融机构,通常业务部门是产品需求提供者和最终用户,软件开发部门是产品的开发者和维护者,各个业务部门直接对口软件开发小组,因此在需求管理过程中常常存在许多问题,导致项目未能按时完成,返工,甚至失败。主要的问题如下:
表达与理解的不一致。业务部门在需求描述过程中,使用的往往是业务语言或者专业词汇,技术人员不能准确理解这些业务的做法和要求。技术人员也未就此需求同业务人员进行确认,后期的开发就产生问题。
描述不清楚。业务部门对软件系统只能提出一个大概的需求,或是一个设想,对于需求的细节,具体要包含的业务处理功能表述不清,表达方式不规范,往往口头表达,没有文档记录。
需求缺乏规划。作为内部需求,目前大多数企业并未对软件项目进行开发,维护成本的分摊,导致业务部门对需求的提出比较随意,没有经过深入的思考和可行性分析。其一,业务部门仅从各自角度考虑功能要求,未能对整体业务链梳理。其二,缺乏独立部门对需求统一管理,面对来自各个不同业务部门的需求,开发部门对需求的合理性没有足够的控制权。造成业务逻辑不清晰,甚至出现矛盾。
需求变更频繁。金融行业的特点具有发展快,创新多,为了满足市场的需求,业务也随之需要改变,导致需求变更频繁。如果提出的需求不具备前瞻性和普遍性,仅局限于当前的业务模式,导致很容易产生需求变更。
四、解决的方法
基于以上几点问题,在软件需求管理上要采用有效的方法,以促进项目的顺利进展。
(一)业务知识的预先了解和学习
在项目初期,邀请行业专家,组织开发人员进行有针对性的业务知识的培训,统一业务术语,避免出现不熟悉的业务知识而导致的需求理解上的失误。
(二)需求的有效沟通
软件开发项目的首要目的就是获取用户的需求。需求的获取有多种方式,如电话,邮件,单独沟通,小组讨论。根据软件用户,有针对性的设计和使用不同的内容及问题询问或沟通。在沟通过程中,单纯的语言交流可能不能准确表达双方意图,可通过建立原型系统,以可视化的方式与用户进一步沟通,从而有效帮助用户确认自己的需求,双方理解达成一致。
(三)需求文档化
每一次需求调研,都要做好笔录,与用户交流后,要对交流的结果进行分析,整理,形成《业务需求书》。然后,技术人员同业务人员一起对《业务需求书》进行讨论分析,最终形成《需求规格说明书》。针对《需求规格说明书》,逐一与用户进行确认,对于描述不准确的地方加以细化,对于错误的地方进行修改,并请用户方面的领导签字。签字确认后的《需求规格说明书》,将成为最终用户和开发机构之间的合同书,也是最终用户验收软件系统的依据。
(四)需求变更的管理
需求变更由于各种原因在软件开发项目的整个生命周期不可避免,但变更通常会对项目的进度、质量和成本产生很大的影响,因此在项目过程中控制好变更十分重要,可以从以下几点加以控制:
建立需求基线。需求基线是需求变更的依据。需求确定并经过评审后,可以建立第一个基线。此后每次变更并经过评审后,都要重新确定新的需求基线。
制定变更控制流程,并形成文档。在建立了需求基线后所提出的所有变更都必须遵循这个流程。
对需求变更影响进行分析与评审。要及时召集业务人员和开发人员,对项目的需求变更所带来的影响进行分析,明确变更的工作量大小,最后经过相应级别的评审确认。
需求文档的版本控制。所有发生变更的需求都需要清楚的记入文档形成新的版本,包括变更描述,原因,记录人,更新后的新版本号。并使得项目组内的每个成员都能够得到需求的最新版本。
五、结束语
软件需求管理作为项目管理的重要环节,直接关系到软件项目能否高质量的如期完成。提高金融软件项目的成功率,必须要重视需求管理工作,采用科学有效的方法,保证开发工作的顺利进行和软件产品的最终投产使用。
参考文献:
关键词:软件需求;开发方法;管理方法;评价
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)27-1960-02
The Research and Application on Software Requirements Management in Development of Software Project
JING Shen-yan
(Department of Information Technology Liaoning University of International Business and Economics, Dalian 116052, China)
Abstract: The software requirements is very important in the the entire life cycle of software products, and that has decisive significance for the follow-up of software development and maintenance. In practice, the requirements management can not get sufficient attention. This paper demand from software requirements and software engineering, and analyze the internal and external issues in the management of software requirement, and focus on the effective ways in the development and management of the requirements, and put forward some simple and feasible standards for the analysis and evaluation of software requirements.
Key words: software requirements; development method; management method; evaluation
1 引言
软件需求在软件产品的整个生命周期中占有十分重要的位置。我们应该看到,它是软件项目的依据和出发点,无论是软件的开发还是软件的维护都是以软件需求作为前提的。如果将软件需求比做是一座建筑物的地基,一点都不夸张。因此,重视需求工作,重视软件需求的质量,可以为后续的工作打下良好基础,否则可能会给开发的成本、周期以及产品的质量带来严重的影响,造成不良的后果。据调查显示,在众多失败的软件项目中,需求管理失误原因约占到45%。
在项目开发工作中,很多人对需求的认识还远远不够,有的是开发者本身不重视原因、有的是技术原因、有的是人员组织原因、有的是沟通原因、有的是机制原因,以上种种原因都表明做好软件需求开发是一项系统工作,而不是简单的技术工作,只有系统的了解和掌握需求的基本概念、方法、手段、评估标准、风险等相关知识,并在实践中加以应用,才能真正做好需求的开发和管理工作。
2 什么是软件需求和需求工程
2.1 软件需求的定义
按照IEEE-STD-610标准的定义,软件需求是用户为解决某个问题或是为实现某个目标,要求软件必须满足的能力。软件需求可能由分配给软件的需求得到,也可能由用户或最终用户提出。软件需求主要分为3个层次,如图1所示。
1) 业务需求:指客户对软件的高层次目标要求。
2) 用户需求:指用户使用软件必须达到的要求和完成的任务。
3) 功能和非功能需求:规定了开发人员必须实现的需求,它的实现满足上述业务需求和用户需求。通常以需求规格说明书的形式体现。
4) 非功能性需求包括过程需求和外部需求。过程需求包括交付需求、实现需求、遵循的标准,外部需求包括安全性、性能、机密性、互操作性等。
2.2 需求工程的定义
需求工程是系统工程或软件工程中解决需求问题的一个崭新领域。其目标在于使工程得到的产品能够准确、真实的体现客户的需求,令客户满意。需求分析的过程,也叫做需求工程和需求阶段,它包括了需求开发和需求管理两个部分。
需求开发是指从信息收集、分析和评价到编写文档、评审等一系列产生需求的活动,分为四个阶段:获取需求、分析需求、定义需求和验证需求。这四个阶段不一定是遵循线性顺序的,他们的活动是相互独立和反复的。需求管理是一种用于查找、记录、组织和跟踪系统需求变更的系统化方法。它包括:变更控制、版本控制、需求跟踪、需求状态跟踪等工作。
3 需求开发过程中存在的问题
需求开发过程中存在的任何问题,最终导致的结果都是需求变更。为了顺利的提供高质量的软件产品,按照开发人员的观点,软件需求应该是清晰、正确、稳定的。所谓稳定是指:希望用户一次提供所有需求,并且以后不再改变,但这往往是不现实的。用户在开发过程中变更先期确定的需求的现象非常普遍,也就是说需求变更是不可完全避免的。从开发人员的角度来看,可以把需求变更的原因分为两类:
3.1 内部原因
由于开发人员需求开发工作的缺陷使得需求发生了变更,主要有两种情况:
1) 需求分析、定义、评审工作不够充分,使得需求规格说明书中隐含着问题,到下一阶段才发现。例如:为了赶工期忽视了需求的质量、需求开发的方法不当。
2) 需求开发过程中,与客用户的沟通不充分或开发人员的经验缺乏,没有挖掘出用户的潜在需求。
3.2 外部原因
外部原因是指开发人员外部的原因引起的需求变更,主要是用户的原因。
1) 随着用户对需求的理解逐渐深入,可能会有新的想法,所以会要求改变原来的需求。
2) 业务变化导致软件需求发生变化。计算机运行环境发生变化,导致需求发生变更。如计算机硬件、系统软件等发生了变化。
3) 相关制度、法律法规发生了变化导致需求变更。
无论何种原因引起的需求变更,开发人员都要积极面对。因为需求绝对不变更是不可能的。好的需求开发方法和管理的方法会对降低需求变更对系统开发产生的影响。
4 需求开发与管理的一些方法
需求开发是一项复杂的工作,使用的方法也很多,不同的开发方式有不同的方法,这里简单介绍一些相关的方法。
4.1 需求开发方法
需求开发有很多最佳实践以及好的方式方法,下面根据实践经验介绍几种有效的方法。
1) RUP与UML的结合
RUP(Rational Unified Process):Rational公司推出的一种软件考法过程框架,UML(Unified Modeling Language):统一建模语言。业界已经证实,RUP与UML的结合是一种最佳实践。因为RUP过程框架,能够有效的指导我们,有条不紊的进行需求开发工作。同时UML又能直观、形象的表达出我们想要表达的意思。图形化的需求建模会让开发人员和用户对需求的理解保持一致。这对于需求质量的提高会有很大的帮助。
2) 绘制关联图
绘制系统关联图是用于定义系统与系统外部实体间的界限和接口的简单模型。
3) 可行性分析
在允许的成本、性能要求下,分析每项需求实施的可行性,提出需求实现相关风险,包括与其它需求的冲突,对外界因素的依赖和技术障碍。
4) 需求优先级
确定功能实现的优先级。根据优先级来确定每个产品版本要实现的需求。
5) 系统原型法
原型法是一个非常有用的获取需求的方法,不论系统规模的大小,都非常适用。有时用户用语言难以表达出他们的意思,所以通过真实的应用界面会更好的引导用户提出他们的潜在需求。
6) 图形分析模型
绘制图形分析模型是编制软件需求规格说明重要手段。它们能帮助分析人员理清数据、业务模式、工作流程以及他们之间的关系,找出遗漏、冗余和不一致的需求。这样的模型包括数据流图、实体关系图、状态变换图、对话框图、对象类及交互作用图。
7) 数据字典
数据字典是对系统用到的所有数据项和结构的定义,以确保开发人员和用户使用统一的数据定义。在需求阶段,数据字典至少应定义客户数据项,确保客户与开发小组是使用一致的定义和术语。
4.2 需求管理方法
需求管理主要是对需求变更、需求状态的管理。主要包括以下几个方面:
1) 确定需求变更控制过程。
制定一个选择、分析和决策需求变更的过程,所有的需求变更都需遵循此过程。
2) 进行需求变更影响分析。
评估每项需求变更,以确定它对项目计划安排和其它需求的影响,明确与变更相关的任务并评估完成这些任务需要的工作量。通过这些分析将有助于需求变更控制部门做出更好的决策。
3) 建立需求基准版本和需求控制版本文档。
确定需求基准,这是项目各方对需求达成一致认识时刻的一个快照,之后的需求变更遵循变更控制过程即可。每个版本的需求规格说明都必须是独立说明,以避免将底稿和基准或新旧版本相混淆。
4) 维护需求变更的历史记录。
将需求变更情况写成文档,记录变更日期、原因、负责人、版本号等内容,及时通知到项目开发所涉及的人员。为了尽量减少困惑、冲突、误传,应指定专人来负责更新需求。
5) 跟踪每项需求的状态。
可以把每一项需求的状态属性(如已推荐的,已通过的,已实施的,或已验证的)保存在数据库中,这样可以在任何时候得到每个状态类的需求数量。
6) 衡量需求稳定性。可以定期把需求数量和需求变更(添加、修改、删除)数量进行比较。过多的需求变更“是一个报警信号”,意味着问题并未真正弄清楚。
5 需求分析评价标准
如何判断需求规格说明的好坏,不同的软件工程规范都有自己的一套标准,这里向大家介绍一个比较常见的NASA SEL推荐方法,它是由美国国家航空和航天局软件工程实验室开发的五大常用国际软件工程规范之一,它对软件需求过程的评价标准是:清晰、完整、一致、可测试。
1) 清晰:目前大多数的需求分析采用的仍然是自然语言,自然语言对需求分析最大的弊病就是它的二义性,所以开发人员需要对需求分析中采用的语言做某些限制。例如尽量采用主语+动作的简单表达方式。需求分析中的描述一定要简单,千万不要采用疑问句、修饰这些复杂的表达方式。 除了语言的二义性之外,注意不要使用行话,就是计算机术语。需求分析最重要的是和用户沟通,可是用户多半不是计算机的专业人士,如果在需求分析中使用了行话,就会造成用户理解上的困难。
2) 完整:需求的完整性是非常重要的,如果有遗漏需求,则不得不返工,在软件开发过程中,最糟糕的事情莫过于在软件开发接近完成时发现遗漏了一项需求。但实际情况是,需求的遗漏是常发生的事情,这不仅仅是开发人员的问题,更多发生在用户那里。要做到需求的完整性是很艰难的一件事情,它涉及到需求分析过程的各个方面,贯穿整个过程,从最初的需求计划制定到最后的需求评审。
3) 一致:一致性是指用户需求必须和业务需求一致,功能需求必须和用户需求一致。在需求过程中,开发人员需要把一致性关系进行细化,比如用户需求不能超出预前指定的范围。严格的遵守不同层次间的一致性关系,就可以保证最后开发出来的软件系统不会偏离最初的实现目标。
4) 可测试:一个项目的测试从什么时候开始呢?有人说是从编码完成后开始,有人说是编码的时候同时进行单元测试,编码完成后进行系统测试,这些结论都不完全正确。实际上,测试是从需求分析过程就开始了,因为需求是测试计划的输入和参照。这就要求需求分析是可测试的,只有系统的所有需求都是可以被测试的,才能够保证软件始终围绕着用户的需要,保证软件系统是成功的。
6 结束语
需求管理是软件开发的整个生命周期中最基础、最关键的部分,随着软件开发研究与实践水平的推进,需求开发也越来越受到企业与开发管理人员的重视。本文提出的需求技术与需求管理方法意在让更多的人能够充分意识到需求管理的决定性作用,能够在长期的实践中对需求技术与需求管理方法进行不懈的探索与研究,推进软件开发水平与开发能力的飞跃和提高。
参考文献:
[1] 李明.需求管理中数据和信息的关系及应用[J].UML软件工程组织技术期刊,2008,(4).
[2] 毛明志,沈贤义,黄春贤.基于特性的软件需求管理工具的研究与应用[J].计算机技术与发展,2007(5).
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)01-0189-03
软件工程需求分析是指定义和描述软件系统的范围、目标、定义及功能时所要做的所有的工作。简言之,需求分析就是分析软件用户的需求是什么,即全面地理解用户的各项要求,并准确地表达所接受的用户需求。需求分析是软件工程中最重要也是最困难的一项工作。
1准确、有效需求分析的必要性
由于软件系统复杂性日益提高,软件规模日益庞大,上世纪六十年代末后爆发了深刻的软件危机,表现为:进度拖延,费用超支,软件不符合用户要求、可靠性差且难以维护。其最主要的原因就是缺乏准确、有效的需求分析。时至今日,软件危机问题一直没有得到很好解决。
有效需求分析的重要性和必要性体现在:第一,软件需求文档是软件工程项目验收的依据。不准确、不完备的需求必然会导致生产出来的软件无法满足客户要求,并造成项目进度推迟、项目费用超支。第二,在软件生命周期中,一个错误发现得越晚,修复错误的费用越高,甚至是指数式增长。国外
另外,软件工程项目开发过程中,很多软件错误在需求过程就已产生并潜伏,而这些错误在需求过程中是可以被检查出来的[1]。由此可见,准确、有效的需求分析,是软件项目得以正确、及时完成的前提,是人们摆脱软件危机的最有效、最重要的方法。
2有效需求分析的主要障碍
在需求分析的实践中,由于以下原因,使得需求分析往往无法有效地进行:
①系统开发需要用户、领域专家、开发小组共同参与并密切沟通;
②用户单位组织机构与业务关系及业务流程复杂,客户很难清晰完备地表述需求;
③用户与开发人员很难进行有效交流;
④用户的需求是动态变化的;
⑤缺乏有效的、系统的开发、维护大型软件项目的技术手段和管理方法;
⑥软件开发的技术人员和管理人员缺乏软件工程化的素质和要求,对工程化的开销认识不足。
正是基于这样的背景,本文在认真分析研究导致人们无法进行有效需求分析的原因的基础上,提出以下进行有效需求分析的简单易行而又行之有效的方法。
3进行有效需求分析的方法
1)为项目前景制定共同目标,并为共同目标承诺
为了达到项目的成功,需要在客户和开发公司之间达成共同目标,在共同完成项目的各个单位、小组、个人间建立一种协调合作解决问题的氛围和机制。
在项目确定后,应尽快召开一个由客户和开发公司各方人员(包括客户和开发公司有决策权的管理人员)参加的项目合作工作会。项目合作工作会要讨论和解释项目目标、各方共同利益以及实现共同利益的障碍,并在此基础上,制定项目团队的共同目标,确定解决问题与争端的指导原则及具体程序。
2)建立联合需求领导小组,并维护各小组间的沟通
在项目合作工作会就项目前景达成共同目标,并为共同目标承诺后,需要一种机制来维护项目参加人员之间的有效沟通与协作,促进问题的及时解决,并在需求方面作出决策。联合需求领导小组就是一种有效机制。
由于联合领导小组代表项目组跟踪需求过程,负责完成需求定义(包括需求的变更),并在需求方面作出决策,因此,联合需求领导小组成员必须包含客户单位和开发公司。同时,为利于小组决策,小组成员应尽量精炼,成员必须精挑细选,成员必须具有丰富的客户领域知识或需求工程知识或两者兼备、出色的沟通与协作能力和良好的合作精神。
联合需求领导小组要定期聚会,维护项目各方之间的沟通与协作,指导与协调各小组的工作,及时解决需求工作中出现的问题,控制需求变更,最终定义真实的客户需求。
过多的需求变更是导致项目超支和延迟交付的主要原因。因此,联合需求领导小组工作的重点和难点之一是跟踪和控制需求变更。为此,需要使用自动化需求工具建立需求跟踪矩阵,实现对需求变更的跟踪和控制。
3)使用熟悉的需求过程
使用需求过程是指在项目开发过程中定义完成工作的步骤、过程并形成文档,当需要在另一个机构或项目上完成相同或类似工作时,就可以复用相同的过程。
使用需求过程方法,需要定义需求过程流程图并形成文档。需求过程文档用于描述完成项目开发工作所涉及的步骤,活动流程,每个活动的工作内容、输入条件、责任人、活动成果等内容。过程流程图要包括一个宏观流程图和多个微观流程图。宏观流程图从宏观的角度描述整个开发工作的主要目标、主要工作任务、主要组成步骤及流程等。一个微观流程图是对宏观流程图中的一个步骤的细化,用于描述该工作步骤的任务、输入信息、责任人、产生的活动成果、子活动流程等信息。如果微观流程图中存在比较复杂的子活动,还可以用另一个微观流程图来说明该子活动。
当需要在另一个机构或项目上完成相同或类似工作时,通过复用需求过程可以大大加快开发进度并节省资金。这是因为复用过程有以下优点:
①使得每个项目参加人员都清楚整个项目的目标、任务以及自己的工作任务、流程、需要完成的成果等信息。简单的说,可以使每个参加人员更好地理解要干什么以及怎样干。
②通过不断改进过程,可以获得完成相同工作或类似工作的最佳方法。
使用需求过程方法需要对开发人员进行培训,使之熟悉过程,更好地理解要干什么以及怎样干。对新团队或新队员进行培训时,使用以前的相同或相似项目案例进行培训(使用项目的需求过程流程图及各步骤成果文档等),可以收到很好的效果。如果软件开发公司能够经常对员工进行培训并维持稳定的开发团队,需求过程方法将会取得非常明显的效果。
4)使用熟悉而有效的方法和技术
尽管目前已经存在很多支持需求工程的技术、方法和自动化工具,但是只有其中几个技术和手段特别有用。要根据开发公司及项目实际情况慎重选择适当的技术和手段。
美国Software Productivity Research(SPR)公司从1984年到2000年对650多个公司和机构的约9000个项目所使用的技术、方法和手段进行了研究,并得出如表2所示的评估结果:[2]
表2需求工程方法有效性与开销评估表
JAD(即联合应用系统设计)方法要求客户代表和开发公司与专家共同工作,开发双方共同认可的联合需求规范。JAD方法有助于定义真实的客户需求,有效地减少需求变更。JAD方法已在信息系统开发方面得到广泛应用。
建立快速原型的方法也是非常有效的需求方法。由于客户也常常不知道自己想要什么东西,也不知道所要的东西是否能够实现,只有当客户与软件系统交互时,很多更改要求和更详细的需求才能提出、很多软件需求中的缺陷才能发现,因此,在项目开发早期建立快速原型可以有效减少需求变更。同时,可以在原型代码的基础上进行正式编码,可以减少正式编码的时间。建立原型方法与JAD方法配合使用,可以取得更好的效果。如果开发团队曾经开发过类似系统,通过复用以前系统的部件和代码,或者运用开发人员的熟练技能,可以以很低的成本快速构建出原型。
对需求工程技术、方法和工具的选择,应根据开发团队和项目的情况进行慎重选择。最重要的是要选择开发人员熟悉的技术、方法和工具。开发机构应该努力使用同一组在自己环境证明有效的方法和工具。
5)认真执行需求检查
业界研究发现:软件系统中的绝大部分缺陷(80%以上)是在需求阶段被引入的;需求缺陷的类型主要是“不正确的事实”、“遗漏”、“不一致”,占比达到90%以上。[3]
而业界研究表明,需求错误是可以被检查出来的:通过需求检查,通常可以发现65%以上的需求错误[1]。因此,在项目开发的需求阶段必须认真执行需求检查,以有效地减少软件系统的错误。
要执行需求检查,就必须建立完备的需求文档。可以用自动化工具建立一个需求跟踪数据库,并标明每条需求及其理由,作为需求分析的成果和需求检查的依据。
6)培训员工并维持稳定的队伍
软件系统开发是一种高度智力活动,完全依赖于开发人员的智力活动,项目的成败完全取决于开发人员的熟练技能和对技能的熟练运用。开发团队是软件开发公司最为宝贵的财富。因此,必须努力维护开发队伍的文档,并不断对员工进行培训。这可以收到如下回报:
①员工有较强的归属感和较高的忠诚度,工作更尽责;
②员工对项目开发流程及自己的工作任务、流程非常熟悉,这既有利于工作效率的提高,而且有助于员工发现并提出工作方法的改进;
③员工对开发工作中所使用的技术、方法和工具非常熟悉并能熟练运用于系统开发。这有助于定义真实完备的客户需求,减少设计和编码的错误,大大加快开发进度,得到更好的系统产品;
④开发人员间能更有效地沟通和密切合作。
4总结
软件危机的爆发,使得人们认识到解决软件危机的真正有效的办法是定义完备真实的客户需求。因此,业界产生了很多用于需求分析的技术、方法和工具。尽管如此,要得到真实完备的客户需求,仍然是一件很困难的事情。业界实践表明,要进行有效的需求分析,不仅仅依赖于所采用的技术、方法和手段,更取决于对需求实践过程的管理。本文提出的进行有效需求分析实践的方法既简单易行,又具有很好的效果,具有很强的指导作用。
参考文献:
[1]周之英.现代软件工程(第2册)[M].北京:科学出版社,2002.
本文通过分析了解软件产业现状,对软件的最佳实践进行阐述,提出软件项目中需求管理对项目成败有着至关重要的作用。
本文从软件危机的产生、软件产品最佳实践开发办法、需求管理对项目的影响等几方面阐述了需求管理对项目的重要性。
关键词:软件;需求管理;基线;项目
一、前言
以计算机软件、集成电路技术为主导的信息技术革命正以迅猛之势更新着我们生存的社会,信息技术不再仅作为一项高科技技术而存在,而是广泛渗透于各个行业领域的生产、经营、管理等过程,成为它们发展的辅助手段和管理工具。
信息的采集、分析、处理、整合、是信息产业的核心内容,它们都离不开软件。软件是计算机的核心,信息社会需要众多功能灵活的软件系统。
与此蓬勃发展的软件产业前景相反的是,自20世纪60年代以后,全球软件行业落后的软件生产方式无法满足目前信息化时代飞速增长的软件需要,传统的软件开发方式与软件产品设计过程已不能满足当今对软件产品多样化的业务需要,从而导致软件开发与生命周期维护过程中出现一系列严重的问题。
作者认为在此软件产业形式之下,需要突破传统的软件开发手段,找寻新的软件项目管理方法。作者经过分析国内外最新软件著作,参与高级软件研发讨论,结合国内软件产业所涉及的行业范围,及作者本身的软件开发项目经验,提出“软件项目中的需求管理”是软件项目成败的关键,对项目成败具有决定性的作用。拟此文以阐述软件项目中需求管理的重要性。
二、软件危机
1.软件危机症状
(1)软件项目中范围、进度、成本估算准确率低。
软件项目开发的实际成本远远高出估算成本高出;同时实际进度比预期进度延后几个月甚至几年。这种现象降低了软件组织的信誉。
(2)客户对最终交付产品满意度低。
软件开发人员在对用户需求未有清晰了解的基础上,对所面对的问题领域还没有确切分析与设计的情况下,即着手进行开发、编写程序。造成实际产品与客户期望功能产生偏离,无法解决客户的真实需求而造成客户满意度降低。
(3)软件产品质量差强人意。
软件质量保证技术没有贯彻地采用到软件开发的过程中,这必会导致软件产品发生质量问题。缺乏审核、复审和全面测试的软件难免质量低下,出错率高。
(4)软件不可维护、生命周期短。
软件程序中错误难以改正,出现新的需求或者需求变更时原有架构不易于维护,不能根据用户的新需求在原有架构中进行改变。造成软件的使用年限缩短,软件成本加深。
(5)软件缺乏配套文档资料。
软件产品应具备整套文档资料。然而在进度与成本的制约下,文档的编写与更新工作也使得软件组织疲惫不堪,每个人对文档内容的深度与阐述程度不尽相同。加之企业缺乏与之配合的文档制度、文档模板,更为文档编写带来困难之处。而缺乏相关文档对软件的二次开发与维护增加许多困难和问题。
(6)系统集成项目中软件成本不断上升。
集成电路技术发展日趋成熟、生产自动化水平日益提高,使得硬件采购成本持续下降,但由于人力成本的增加,软件成本随着通货膨胀、软件规模、软件数量的不断扩大而逐年上升。
2.软件危机深层次原因
从软件危机诞生的环境与信息爆炸时代人们对软件产品的渴求可以对软件危机产生的原因窥探一二。
需求管理不善是软件危机的基本原因,这体现在以下几个方面:在软件开发最终交付之前,客户自己也不清楚自身的真实需求;加以需求人员技术有限,采集到存在遗漏、具有歧义性、误解的需求;而在软件开发过程中,需求也在不断地变更;需求管理人员没有更好的把握住需求的变化,造成后期维护成本不断增加,以致项目失败。
软件管理由于是新兴的门类学科,缺乏实践性较高的方法学和理论工具。软件开发不同于传统制造行业,软件开发过程是逻辑思维过程,软件产品的质量依赖于人员。综合性人才的缺乏也造成了现有软件开发模式无法适应现今的软件需求而造成了软件危机。
软件从业人员自身技能也对软件危机有所影响:
其一,软件产品同样是产品,由人员设计制造,因此软件产品质量最终取决于整体软件人员的经验积累;
其二,大型软件产品相对于小型软件产品失败风险度更高,这是由于参与的人数翻倍,软件开发人员之间沟通互动,在开发过程中难免发生偏差,在缺乏管理的情况下,导致后续设计、实现工作产生偏离,要解决这些问题不仅需要好的制度同样需要高素质人才;
其三,软、硬件技术发展迅速,信息爆炸、知识更新率加快,外部环境使得软件从业人员处于不断地学习过程之中,这对从业人员无论是智力或是体力上都是不小的挑战。
软件产业知识密集、人力密集的特点造成了软件危机。
3.软件发展趋势
软件开发规模持续变大,随着互联网时代的到来,软件从桌面走向网络,从小范围使用走向企业管理信息化,软件开发的规模越来越大。软件项目的开发工作不再是个人所能承担,不再是单一角色所能承担,而是需要组织一定的人力、不同的工作角色共同完成。然而多数项目管理人才不熟悉软件开发方法,而软件开发人员又缺乏管理技能。项目中信息交流延迟、理解偏差、造成对项目最终目标的误解使得软件项目偏离轨道。软件开发项目开发人员不能有效地、独立自主地处理大型软件开发的全部关系和各个分支,因此容易产生疏漏和错误。
软件产品复杂度持续加深,规模的扩大必将带来结构上更为繁多的分支情况。传统的结构式分析方法已不再适用如今信息化的软件产品需求。软件开发工作也无法在一次迭代中完成,而是根据用户需求的优先级程序,客户共同协商,定制产品阶段性的交付周期。产品使用人数、实施规模都在随着信息化的发展而不断增加。这也使得软件使用场景不断增多,软件功能复杂度加深,对需求管理的迫切性也日益提高。
三、最佳软件开发实践
在此软件危机之下,新的软件开发方法不断地被挖掘与探索,以下六点被认为是解决软件危机,为客户研发良好系统的最佳软件实践。
迭代式开发:在软件开发的早期阶段就获取完整而精准的用户的真实需求是不可能的。这是因为随着项目的进展,客户对最终产品的需求在整个软件开发阶段会持续改变。现代软件开发所倡导的迭代式开发允许在每个迭代过程中需求可以发生变化,通过不断细化来加深对问题的理解。迭代式开发既可以降低后期交付的风险,也可以支持在每个迭代过程都产生可以交付的版本,提供给客户试用,即缓解了客户的等待性又可以产生积极的反馈信息激励开发人员。
对需求进行管理:对客户业务建模的过程随着整个开发周期都是持续进行的,随着项目进入一个个迭代,新需求与变更需求都使得业务模型在不断的依据最新需求进行修改,指导着开发等后续工作。
采用组件式架构开发:组件是软件技术中重大的技术突破。组件使复用成为可能,系统的灵活性大大提高。基于高内聚、低耦合的模块化组件体系结构降低了管理复杂性,提高了代码重用率。
建立视觉模型:UML已逐渐成为软件工程师所广泛采纳的建模工具,软件从业者一致认为可视化的建模对需求管理有着重要的作用。客户和开发方都可以从中受益,尽早地获取有关软件结构和行为的信息,可以尽早地发现隐藏的风险。
对软件质量进行验证:软件质量测评不再是交付后或单独进行的活动,而是伴随着生命周期,从需求基线定义的那一刻起而持续进行的。
控制变更:对需求变更采用控制、跟踪、监控、修改的方式,在变更产生之初,判断其原因并确认涉及范围,进而采用合适的变更处理方法。积极地控制项目中所产生的变更,而不是被变更所控制。
四、需求管理的对软件项目的影响
需求管理是随着软件产业的发展而逐渐成熟的,在软件业发展的早期,软件规模不大,软件产品开发所关注的是代码编写,产品需求分析较少受到重视。在开发技术不再是软件产品的瓶颈时,客户对软件的需求日益复杂,软件产业出现生命周期这一概念,需求分析自然而然成为其初始阶段。
随着软件系统规模与信息化的发展,需求分析作为整个项目的基础,其定义的业务基准在整个软件项目中越来越重要,直接关系到项目的成功与否。
自1995年起的一项美国调查显示,通过对全美境内8000个软件项目的跟踪分析调查,与需求相关原因引起项目失败的比率高达45%,而这其中由于需求不明确,缺乏用户认可的需求基线而导致项目失败的原因占了25%。需求管理是项目范围管理的基础,只有明确的定义了用户需要哪些产品范围,才可以作为后期开发的前提。如果一开始就没有一个清晰的业务范围与业务模型,将会使后期的开发偏离轨道。
需求管理活动分为两部分,一部分属于需求开发,一部分属于需求管理。
(1)需求开发是通过对客户及其所处行业进行调查与分析,捕获用户需求,并定义系统需求的过程。
(2)需求管理是在客户与承建方之间建立对产品需求的一致认可,对需求管理方法与手段达成一致,并共同控制需求变更的过程。
需求开发又可再分为两个阶段:“业务分析”与“系统分析”。
需求管理又可再分为:需求确认、需求跟踪、需求变更控制。
需求确认是指项目甲方、乙方共同对需求文档进行审核,甲乙方对需求基线达成一致后作出纸质协议,使得需求文档具有审核验收的作用效力。需求跟踪是指通过比较需求基线与项目最终产品之间的匹配关系,持续维护“需求跟踪矩阵”,确保产品依据客户所提出的需求进行开发。需求变更控制是指根据“变更提出-范围分析-方案选择-审核确认”的流程处理需求变更,确保项目中需求变更处于可控制的流程之下,而不至于失控导致项目失败。
软件项目同样遵循项目管理的一般原则,具有项目范围管理、进度管理、成本管理、质量管理、人力管理、沟通管理、风险管理、采购管理等过程。
需求管理大致上可以被认为是范围管理,需求管理所定义的软件功能基线决定了项目产品范围,明确指出了待开发的系统具有哪些功能,不具有哪些功能。需求管理定义的基线是甲乙双方共同遵守并为后续的工作提供基石。
只有以清晰的需求基线为基础,才可以在此之上制定进度管理计划,进行逐层任务分解。实现对进度的控制,并且可以在时间结点处依据需求基线进行小范围测试工作。在此之上,软件组织中的成本管理小组可以依据进度计划制定成本-绩效管理计划,根据员工的工作完成情况统计人员的绩效信息。这一切都是基于需求管理所定义的明确的需求基准。
实现了范围、进度、成本的动态管理,质量管理、人力管理、沟通管理才具有实际意义。软件质量保证小组可以依据需求基准对已完成的系统部件进行早期的跟踪测试;人力部门也可依据成本、进度计划随时进行人力资源调整;清晰的需求基准减少了团队成员之间的矛盾,使得沟通变得简单有效。
需求管理所倡导的在早期准确的挖掘客户的需求可以使得项目人员尽早识别与发现项目中隐藏的风险,在项目早期减轻或者避免潜在风险。同时清晰的需求基线可以为组件产品采购带来判断标准。
综上所述,需求管理是有效实现项目管理各部分的基础,只有为项目打好一个坚实的基础,才可以顺利展开后续工作,实现客户与开发方的双赢。
五、需求管理的方法与技术
业务背景分析:业务背景分析可以通过了解客户的最初需要,提出概念解决方案来实现。它是为找出客户的真实需求而进行的分析、推理。在业务背景分析期间,将对“业务背景”和“项目干系人”等问题达成甲乙双方的一致。
初步需求建模:需求来自客户各个层面,比如来自客户决策层、管理层、执行层,第三方等。掌握如何准确判断需求的判断与来源,及如何接近这些来源并从中获取原始需求信息,在此之上,整合提取的原始需求,建立初始需求模型。
需求模型完善:进一步根据客户需求,整理待构建信息系统的明确的功能规格说明。在需求阶段对以下内容进行明确的定义与衡量标准:需求基线,文档种类,内容形式,需求描述程度,需求的优先级与可预计工作量,可能存在的技术及管理风险、系统的最初规模。
项目规模:为使项目工作成功地运作,需求管理者应对所有涉众的需求确定优先级,并对需求的范围进行管理,而不是早早将精力投入到大量的开发工作中。为确保尽早发现并降低项目中的风险,软件组织首选递增与迭代的方式开发系统。更加谨慎的对待需求,务求每次增加的内容都能减轻项目中的风险,要达到良好的管理效果,需要需求管理人员和客户共同协商每次迭代的范围。
需求变更:不断变更的需求之所以难以管理,不仅是因为一个新特性的需求变更需要花费额外的时间来实现,也是因为某项需求变更极有可能影响到其他已经实现的需求。基于此原因,需求管理者应建立一个有弹性的业务模型结构,使它具有灵活性,能适应变更,并且确保需求源头的可追溯性。管理变更包括建立需求基线,确定需求源关系,建立相关需求项之间的可追溯性,以及不断地开展变更控制等活动。
六、需求管理的发展与展望
综上所述,需求管理作为软件工程中的一部分,得到各软件组织越来越多的重视与认可。其重要性与必要性得到了广大计算机从业人员的认同。越来越多的软件组织建立了属于自己的需求管理小组,负责从项目初期进行业务获取与建模,并对需求进行全生命周期的管理。越来越多的软件资深开发人员亦从代码编写工作转型到需求管理与实践方式方法的探索上,深厚的技术基础使得他们更容易掌握判断需求的能力。同样地,越来越多的工程技术人员、领域专家也在不断的加强自身软件方面的知识,实际业务背景与需求管理方法的结合必将提高需求建模的准确率。在这种双向结合的前景下,相信在不久的将来,软件需求工程理论与实践的相结合将产生出更贴近实际情况运用的技术与方法,软件质量的提高亦指日可待。
参考文献:
[1]金芝,刘,金英著. 软件需求工程:原理和方法[M]. 北京:科学出版社,2008.
[2]康雁 著. 软件需求工程[M]. 北京:科学出版社,2012.
[3](美)普雷斯曼 著,郑人杰 等译. 软件工程:实践者研究方法[M]. 北京:机械工业出版社,2011.
[关键词]软件项目;需求管理;措施
doi:10.3969/j.issn.1673-0194.2015.02.064
[中图分类号]TP311.5 [文献标识码]A [文章编号]1673-0194(2015)02-0084-01
1 需求管理概念及其特点
1.1 需求管理
需求是指通过和客户协商,建立并及时更新的关于软件工作的协议,属于系统需求的重要组成部分,主要体现于系统的软件部分。需求分析在开发技术行为具有关键性作用,需求管理就是为了有效管理需求研究结果,保证软件项目开发与它同步发展。需求管理的目的是在客户和依据客户需求的软件项目中间建立共识。这种情况表明用户需求必须是合理的,项目的发展目标要与用户需求一致。需求管理活动就是积极保证这种共识的实现。
1.2 需求管理特点
1.2.1 需求描述方面
在制订正式的需求文档时耗费大量的人力物力,但真正拥有了需求文档后又会产生新问题。需求评审会上只是走过场,这是由于广大用户谁也不会去听那没完没了的需求文档。不同层次的客户感兴趣的问题不同,每一个客户都是需求专家是不可能的。
1.2.2 开发工期方面
为了保证需求的正确性和完整性,项目经理都会要求众人在需求阶段消耗大量的时间,但客户和公司的主要领导关心的却是实际应用的软件。在此情况下,项目组成员一方面,要应对公司领导的压力;另一方面,还要考虑项目经理的要求,因此,常常处于进退两难境地,都希望尽快结束这一阶段。
1.2.3 需求细致程度方面
对需求的精细度到底要求到什么程度才能结束,对于此没有统一的认识。但是需求周期越长,存在的变化因素就会越多,设计要求也会越来越严格,对需求的共性提取要求也会提高,因此,只要全体工作人员认为描述达到了一定程度,就可以着手进行设计了。
1.2.4 需求的变化方面
如果软件开发过程存在一条真理,那必然是需求存在无休无止的变化,需求不可能是完整的。因为软件系统存在一定的复杂性,要想提前说出所有的需求是不可能的。系统原来的操作环境不可能一成不变,用户的理解不可能一成不变,系统的角色不会一成不变。这些因素都会引起需求改变。所以,需求是容易发生改变。
2 需求管理策略
2.1 建立需求管理模型
根据人际沟通的随意性做出软件需求建模,只有沟通准确和预案标准化,才能解决这个缺点,要验证和测试需求的变更可行性首先要掌握需求管理模型,是表达软件需要的一种形式。建模的基本原理就像搭积木,使它能用较标准的语言诠释和表达软件的目的。能依据个人的需要进行反复的修改,这就是软件需求模型最大的优点,模型怎样经过修改都不会有问题。就能使使用者更容易掌握。在了解软件的需求特点之后进行相关讨论,之后再进行准确有效的阐述,让使用者和开发者都能准确理解,就是建模的基本过程。
2.2 对需求的变化要有正确认识
需求管理的变化包括变化的控制、基线的建立等许多内容。软件的开发过程都是根据软件的需求变化而改变的。需要建立起较规范的需求变化流程。在进行初期软件设计和分析的过程当中,就要把那些不确定的因素归纳到设计的程序当中来,也能使软件开发中需求变化把握更大成功率更高。需求变化在软件开发过程当中不好管理是因为项目的投资成本及项目开发所需要的时间会受到需求变化的直接影响。因此,要想让软件开发能跟得上需求的变化速度,就更需要建立起一个弹性的需求结构。
2.3 对需求文档版本进行有效把握
先要掌握客户需要的需求文档的基线,对文档做好管理。对需求变更得到认可的基本分界线就是基线,在和客户进行沟通之后由需求分析人员建立其需求文档,在经过评审人员对文档进行评价,达到标准后就能建立最后的需求基线。如果再次出现需求变化,只需要经过需求评审的通过,就能建立新的软件需求基线。这就使客户在想要查找原来的需求时更加简便。想对软件需求变更进行有效控制,首先要做到保存好各个版本的需求基线,保存好这些资料才能使以后的查找更方便。
2.4 和客户进行良好沟通
尽量和客户做好沟通,充分了解客户需要的产品,在进行软件开发的过程中,成功的几率是取决于怎样才能满足客户的需要。能够达到与客户之间的认同一致,是与客户交流中的重要环节。应以一种协作的态度来和客户讨论对软件的需求以及需求的变更,交流的过程中了解客户对软件的需求信息。
2.5 需求管理变化。
对需求周期的管理是需求工作的主要内容,从设计开始的提出需求,再到软件设计成功被客户接受的程度一直在不断变化。不论怎样的变更需求都需要经过分析、选择、及决策的过程。软件的开发有个比较复杂的生命周期,要先实现就需要经过客户要求、软件需要、开发、单元测试等,因客户的要求一直变化,所以要先采取策略实施变更控制,把需求软件变化对项目产生的影响降到最低。
3 结 语
软件的开发、设计及维护当中最关键的是软件的需求管理,只有做到对需求管理工作的完整、充分、认真,才能顺利完成软件的设计,做出正确的软件开发计划,使新软件开发进展更顺利。
一、企业项目管理的具体实践
项目管理在我国的发展很晚,但是其发展的速度非常快,最近几年以来,企业的项目管理在整个市场营销中地位逐渐变高。在我国有很多企业对引进外国的先进项目管理的研究理论非常重视,对外国的企业在实施项目的管理模式时候得出的经验和教训进行总结。根据自己企业发展的实际情况,将整个市场营销的角度作为基础,制定出具有自己企业特点项目管理的方案。将与企业相符的可持续化的发展项目管理形式建立好,能够提高市场营销活动中的工作效率。同时我们要将整个项目管理过程中的控制工具和计划工作利用好,将整个营销活动战略性的目标作为项目,采取专业项目的管理方法对其进行管理,给自身企业带来经济利润。为此,主要从以下方面对项目管理在市场营销活动中具体的应用进行阐述:
(一)制定好计划的方案
市场营销活动中正确的战略是帮助企业在市场竞争过程中获取成功关键的地方。企业需要用正确营销的战略作为整个企业的指导,对公司现有的资源进行组织和合理的分配,对市场与消费者的需求进行很好的把握,将市场上潜在的消费者挖掘出来,生产出适合消费者和市场上所需的产品,给整个企业带来经济和利润。同时为了能够与现在经济市场的竞争相适应,要加强对于整个营销活动的流程计划和控制:第一要从自己公司的可持续发展方面看,将营销活动目标确定好,如将具体销售的金额确定好等,按照具体目标将具体执行的计划方案制定好;第二在将具体市场营销的活动方案拟定好之前,要将具体资料收集起来,例如市场上的消费者对于产品的耐用程度、质量、外观以价格可接受的范围,市场上经济、政治和法律外界的环境对于产品销售、推广的渠道影响。
(二)制定好详细战略
对整个市场调查之后,可以对调研获取的资料进行具体的分析和统计,将目标的群体确定好,对市场进行细分。按照市场的调查报告对产品生产优势和劣势进行一定的分析,将优秀产品的组合建立好,同时对于产品组合深度和宽度以及互相之间关联程度进行有效规范处理。将市场的竞争现状充分考虑好,制定出合理产品价格,并且建立高素质、优秀销售的团队,将产品的销售渠道不断拓宽,使得产品销售额不断增加,给企业带来非常多经济的利润。分析所有市场的营销活动里面工作的任务,尤其是针对某些工作,要对其进行科学、系统的安排,将每一个工作都落实到位。在整个销售的过程中,企业里所有职能的部门都需要共同参与,确保每一个参与的员工都具备团队的协作精神,保证整个工作的流程能够正常运行。
(三)具体实施企业项目
产品的生产和研发部门需要按照市场的调研报告,重新定位和审核现有的产品,与不同产品生产的周期相结合进行适度调整。一旦现在的产品不能够满足消费者和市场的需求,需要其研发的部门按照企业里科学的技术水平开发新的产品,使得整个企业能够在竞争激烈的市场上占有一席之地。同时市场的部门要按照现有产品市场的营销策略,确定好消费者能够接受价格的范围,将新产品上市总成本估算好。并且相关的销售部门也要根据新产品的不同特点以及不同消费的人群,对产品销售的方式和销售的渠道进行认真的选择,尽量占取大量消费者的市场,将企业市场的占有率提高,给企业带来非常多经济的利益。
二、项目管理中需求的管理
(一)界定科学的需求管理范围
确定好各个阶段项目的任务目标,对整个项目的背景、实施的相关要求和目标有综合的了解,与项目现在状态、整体的实施安排以及未来的发展方向相结合之后,有效分析整个项目所涉及的内容,将项目的需求管理范围规划好。与此同时,按照各个需求的重要性以及现在企业的资源情况,将项目实施任务的清单制定好,保证与之相关的各级人员都认可该任务清单。将需求的范围制定好之后,要充分分析项目的内容,分析的时候可以运用模型和图表工具来描述分析的结果,方便相关的人员能够更好地了解需求情况,分析的时候一定要注意不能够出现遗漏、含糊或者是前后不一的情况,确保该需求分析能够给企业提供项目实施的保障基础,与相关人员沟通的时候需要综合运用各种沟通的技巧和方式。
1.注重肢体运用肢体语言。在与沟通对象进行沟通的时候,要注意倾听沟通对象的表达,观察对方所表达出的肢体动作,正确把握对方想要表达的内容,讨论到复杂内容的时候要注意双向的沟通,表达自己的意见给对方,保证双方对该内容的了解相一致。
2.充分了解沟通的对象。在与相关人员进行沟通之前需要对其情绪、爱好和性格等有所了解,选择合适的沟通方案,并且将一些容易歪曲理解的信息排除,表达沟通对象比较感兴趣的内容,最终使得沟通对象有注重想要沟通的意识。
(二)制定科学的规划方案
企业在实施项目的时候提出实施的目的,其主要原因是为了将工作的效率提高、方案控制经营的风险、对管理的模式进行优化、不断推动企业经营业务的发展以及让监管的要求得到满足,并且企业提出的各个任务一定会与企业未来的发展有一定关系。在企业提出的各个任务中,怎样针对现在企业的发展情况和资源配置的情况,对企业的需求管理进行有效的规划是非常重要的一个工作内容。为了能够确保各个任务得到合理的规划,首先要对各种因素进行综合的考虑,分析和评定各项任务,并且需要与企业制定的发展战略相结合,对企业的各个项目充分分析之后,还需要对项目进行总体统筹的规划,最后再将各种任务的需求按照企业每年的任务需求进行有效分配,按照任务的重要程度和难易程度进行分配,再细分为月度和季度甚至是每周的任务量,使得各种任务的实施能够得到合理的规划,进而推动企业的项目管理进度能够有效实施。
(三)严格控制需求的变更情况
在实施项目的时候,经常会遇到很多突然改变的情况,但是需求的改变会对项目进程、质量和成本产生很大的影响,所以需要项目管理人员有效控制需求的变更情况。首先企业需要制定规范的管理流程来控制需求变更情况,针对不同需求来制定不同处理的流程,保证需求变更的管理能够有一定的章法;其次当提出需求变更的情况之后,管理需求的人员要对变更的背景进行充分的了解,例如市场的变动、监管部门的要求或者是规则的调整等,然后再分析变更的内容,主要包括变更的内容、主题、影响范围以及可行性等相关的内容。对变更情况充分分析之后,如果只是一些比较小的变动,不会对项目的整体实施产生影响并且各个部分都认可该需求的变更,就可以不要改变方案直接按照之前的方案实施,但是假如变更的范围和内容比较大,则需要对变更内容、范围、可行性和利弊进行分析,将该情况向上级的领导汇报,方便领导进行最后方案的决策;最后将领导最终决策的方案与相关管理人员的意见进行沟通,形成各个部门都认可的变更方案,有效实施各种变更的程序,将变更之后的需求分析做好,保障项目实施的质量和进度。
【关键词】软件复用 测控软件 开发
1 引言
随着交会对接、空间实验室、探月工程、深空探测等一系列任务的全面展开,地面测控站内的测控软件的可靠性和高效性将面临空前的挑战。在软件开发的各个阶段,保证阶段产品高质高效以及缩短研发周期是保障多任务并发的重条件,二者互相影响。为使软件既能高效又能保质保量的完成,近几年来,软件开发单位采用专门的软件管理团队对软件进行规范管理,与此同时改进软件开发技术。软件规范管理从近年的9001B质量体系认证、GJB5000A软件过程改进以及软件工程化等都对软件开发的各个阶段产品进行了规范管理,地面测控软件的管理日益规范,不断改进。另一方面,为大幅度提高软件的研发效率和质量,可以采用软件复用技术。本文结合测控软件开发实践,对复用技术在测控软件中的有效应用进行初步研究。
2 软件复用理论
2.1 软件复用的概念
为避免程序开发“从零开始”以及重复相同的工作,采用已有的经验和成果,将开发的重点集中在应用系统的新研部分,提高工作效率和软件质量,这就是软件复用。复用形式包括基于构件的复用和基于过程的复用,基于构件的复用是目前主要的复用形式。
2.2 软件构件及基于构件的软件开发
软件构件是软件复用的核心和基本单位,具有独立的功能,是可复用的软件组成部分,可供第三方进行软件组装。构件可以是被封装的对象类、类树、功能模块、软件框架、软件构架( 或体系结构) 、文档、分析件、设计模式等。基于构件的软件开发与传统的软件开发相比,基于构件的软件开发强调使用软件构件对软件系统进行设计开发。基于构件的软件开发方法需要有相应的软件开发过程作为基础,否则,就不会有与该系统相符合的质量特性要求的软件构件。
2.3 软件复用的优点
(1)改善软件质量:经过测试以及经过实践的软件往往缺陷更少。
(2)降低开发风险:开发新的组件,如果测试不够充分,轻则有效性不高,重则可能是造成软件失败的原因。
(3)支持快速原型开发:快速构建实用可操作系统模型,凭借其与用户进行有效沟通,最终获得用户有效意见反馈。
(4)提高软件开发效率,缩短软件开发周期,从而降低软件开发成本。
3 软件复用在测控软件开发中的应用
近年来,随着任务数量的增多,测控软件的开发团队越来越小,软件开发周期越来越短,软件的研制要求却不断的提高;随着卫星工作模式的增加,地面接收设备也需增加相应的工作模式完成相应的接收任务。因此,测控软件不但需要完成原有工作模式的监控管理功能,还需完成新增工作模式的监控管理功能。测控软件必须有效继承原有成熟的计划管理、自动标校/测试及自动运行管理技术,同时需要开发适合新增工作模式的计划管理、自动标校/测试及自动运行管理技术,并且要为后续其它型号软件提供高效的功能继承。
基于软件复用技术的测控软件开发,使用大量的已经过验证的高效软件,对传统瀑布模型的各个研制阶段的产品(如需求分析、软件设计、软件编码、软件测试)进行优化和简化,节省了人力和时间,提高了软件的可靠性,降低了软件成本和开发周期。在软件的研制过程中,需要对软件的复用架构进行设计,对可复用的构件进行适应性修改设计以适应新的软件需求,还需对新研的部件进行软件设计。软件的研制流程参见图1。
测控软件对原有成熟的设备监控、计划管理、自动标校/测试及自动运行管理功能的继承,就成为软件的复用的内容。其中包括四个阶段的复用:需求复用、设计复用、代码复用、测试复用。
3.1 需求复用
测控软件的变更原因主要有两种:
(1)用户需求变更。
(2)软件自身技术升级。其中,用户需求变更是导致软件变更的首要因素;软件技术升级的部分工作往往也是为了更好的适应用户的需求。
首先,同类任务的需求是逐渐增加的,并且有一定的可继承性,当增加新的需求时,已验证过的任务需求即可成为后续任务需求的可复用的构件。
其次,不同的测控任务需求之间同样存在相同或相似的元素。例如,任何一个任务都有相同或相似的任务流程;根据工作计划及自动运行策略进行站前标校、任务宏配置、启动自动运行流程;监控数据的存储、显示、查询等任务需求存在一定的共性,对其通用的任务需求,是完全可以复用或部分复用的。
因此,任务需求变更与软件需求变更为因果关系,直至后续的各个阶段活动都受到任务需求变更的影响。从需求分析、软件设计、软件编码直至软件测试,都会因为任务需求的变更而必须进行相应的更动。
3.2 设计复用
多年以来,很多任务的测控软件都有相同或相似的软件结构,因此,这一有利条件,在软件结构设计时,得到了充分的利用。
从软件复用的角度来说,在进行软件结构设计时,需将软件中相对稳定的部分(如设备监控、数据库管数据库管理、计划管理、用户管理)与新增加的部分不仅从结构上分开,而且要求其接口相对单一稳定。这样,从软件设计到代码开发都可以复用。
3.3 代码复用
对程序代码的复用,以设备的监控线程为例介绍如下:
目前,测控站内设备通过局域网进行通信,各个设备与测控软件之间的通信接口都已进行了标准化,因此,对不同设备的监控线程可以进行代码复用;如果重新设计代码,不但要耗费大量的人力和时间,延长软件开发周期,而且重新设计的代码必须进行充分的软件测试,否则难以保证其正确性和健壮性。
开发者使用以往可复用的程序代码,或全部吸收或加以优化,大大避免了重复性工作,将精力集中于关键技术的攻关,如此设计更加高效可靠的软件系统。
3.4 测试用例复用
软件测试复用主要包括测试流程的复用、测试方法的复用和测试用例的复用。其中,测试用例的复用是测试复用中的关键技术。测试用例的复用对于缩短软件的开发周期和降低软件开发成本具有极其重要的意义。
4 结束语
测控软件在当前开发周期越来越短,任务量越来越大,软件质量要求越来越高的前提下,软件设计开发者如能有效的利用长期工作实践中积累的大量的软件工程经验,以及大量的经过验证的软件相关文件及代码较好的实行软件复用技术,则能够大大降低软件开发成本,提高软件开发效率,提高软件质量。
因此,软件复用技术在测控软件开发中既实用,又有效,对软件开发起着至关重要的作用。
参考文献
[1]杨芙清,梅宏,李克勤.软件复用与软件构件技术[J].电子学报,1999(2):69-71.
[2]杨芙清,王千祥,梅宏.基于复用的软件生产技术[J].计算机科学,2001,4(21):363-370.
[3]陈菲,刘克勤.计算机软件复用技术研究[J].现代电力,2002,19(6):95-101.
[4]刘述忠.软件复用-提高计算机软件质量与效率的途径[J].中国金融电脑,2002(2):20-22.
[5]刘艳艳,罗克露.基于特定领域软件体系结构的软件复用[J].计算机信息,2011(1):173-174+394.
作者简介
王德芳(1979-),河南省郑州市人。学士学位。现为中国电子科技集团公司第二十七研究所工程师。研究方向为电子工程。