📄 200603282310205.html
字号:
<html>
<head><title>需求工程</title></head>
<center><h1>需求工程</h1></center>
<div><P align=right><FONT face=Verdana><FONT face=Verdana><FONT color=#f70938><FONT face=黑体><a href="200604112229525.html" tppabs="http://www.itisedu.com/phrase/200604112229525.html" target="_new">中科永联</a>高级技术培训中心(</FONT><FONT face=黑体>www.itisedu.com</FONT><FONT face=黑体>)<IMG src="2006328231013606.jpg" tppabs="http://www.itisedu.com/manage/Upload/image/2006328231013606.jpg" border=0></FONT></FONT></FONT></FONT></P>
<P><FONT face=Verdana> <a href="200603282310205.html" tppabs="http://www.itisedu.com/phrase/200603282310205.html" target="_new">需求工程</a>是指应用已证实有效的技术、方法进行<a href="200603062220345.html" tppabs="http://www.itisedu.com/phrase/200603062220345.html" target="_new">需求分析</a>,确定客户<a href="200603101518295.html" tppabs="http://www.itisedu.com/phrase/200603101518295.html" target="_new">需求</a>,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。它通过合适的工具和记号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。</FONT></P>
<P><FONT face=Verdana> <a href="200603061756235.html" tppabs="http://www.itisedu.com/phrase/200603061756235.html" target="_new">软件需求</a>是指用户对目标<a href="200602281706245.html" tppabs="http://www.itisedu.com/phrase/200602281706245.html" target="_new">软件系统</a>在功能、行为、性能、设计约束等方面的期望。通过对应问题及其环境的理解与分析,为问题涉及的信息、功能及系统行为建立模型,将用户需求精确化、完全化,最终形成需求规格说明,这一系列的活动即构成<a href="200603282233345.html" tppabs="http://www.itisedu.com/phrase/200603282233345.html" target="_new">软件开发</a>生命周期的需求分析阶段。 <BR> 需求分析是介于系统分析和<a href="200604232134205.html" tppabs="http://www.itisedu.com/phrase/200604232134205.html" target="_new">软件</a>设计阶段之间的桥梁。一方面,需求分析以系统规格说明和项目规划作为分析活动的基本出发点,并从软件角度对它们进行检查与调整;另一方面,需求规格说明又是软件设计、实现、测试直至维护的主要基础。良好的分析活动有助于避免或尽早剔除早期错误,从而提高软件生产率,降低开发成本,改进软件质量。</FONT></P>
<P><FONT face=Verdana> 需求工程是随着<a href="200603021438435.html" tppabs="http://www.itisedu.com/phrase/200603021438435.html" target="_new">计算机</a>的发展而发展的,在计算机发展的初期,软件规模不大,软件开发所关注的是代码编写,需求分析很少受到重视。后来软件开发引入了生命周期的概念,需求分析成为其第一阶段。随着软件系统规模的扩大,需求分析与定义在整个软件开发与维护过程中越来越重要,直接关系到软件的成功与否。人们逐渐认识到需求分析活动不再仅限于软件开发的最初阶段,它贯穿于系统开发的整个生命周期。80年代中期,形成了<a href="200602281725525.html" tppabs="http://www.itisedu.com/phrase/200602281725525.html" target="_new">软件工程</a>的子领域——需求工程(requirementengineering,RE)。进入90年代以来,需求工程成为研究的热点之一。从1993年起每两年举办一次需求工程国际研讨会(ISRE),自1994年起每两年举办一次需求工程国际会议(ICRE),在1996年Springer-Verlag发行了一新的刊物——《RequirementsEngineering》。一些关于需求工程的工作小组也相继成立,如欧洲的RENOIR(RequirementsEngineeringNetworkofInternationalCooperatingResearchGroups),并开始开展工作。</FONT></P>
<P><FONT face=Verdana> 需求工程是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。它通过合适的工具和记号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。RE可分为系统需求工程(如果是针对由软硬件共同组成的整个系统)和软件需求工程(如果仅是专门针对纯软件部分)。软件需求工程是一门分析并记录软件需求的学科,它把系统需求分解成一些主要的<a href="200604161433025.html" tppabs="http://www.itisedu.com/phrase/200604161433025.html" target="_new">子系统</a>和任务,把这些子系统或任务分配给软件,并通过一系列重复的分析、设计、比较研究、原型开发过程把这些系统需求转换成软件的需求描述和一些性能参数。</FONT></P>
<P><FONT face=Verdana> 需求工程是一个不断反复的需求定义、文档记录、需求演进的过程,并最终在验证的基础上冻结需求。80年代,HerbKrasner定义了需求工程的五阶段生命周期:需求定义和分析、需求决策、形成需求规格、需求实现与验证、需求演进管理。近来,MatthiasJarke和KlausPohl提出了三阶段周期的说法:获取、表示和验证。</FONT></P>
<P><FONT face=Verdana> 综合了几种观点,可以把需求工程的活动划分为以下5个独立的阶段:</FONT></P>
<P><FONT face=Verdana> (1)需求获取:通过与用户的交流,对现有系统的观察及对任务进行分析,从而开发、捕获和修订用户的需求;</FONT></P>
<P><FONT face=Verdana> (2)需求建模:为最终用户所看到的系统建立一个<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604181844195.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604181844195.html'" tppabs="http://www.itisedu.com/phrase/200604181844195.html" target="_new">概念模型</a>,作为对需求的抽象描述,并尽可能多的捕获现实世界的语义;</FONT></P>
<P><FONT face=Verdana> (3)形成需求规格:生成需求模型<a href="200604161439595.html" tppabs="http://www.itisedu.com/phrase/200604161439595.html" target="_new">构件</a>的精确的形式化的描述,作为用户和开发者之间的一个协约;</FONT></P>
<P><FONT face=Verdana> (4)需求验证:以需求规格说明为输入,通过符号执行、模拟或快速原型等途径,分析需求规格的正确性和可行性;</FONT></P>
<P><FONT face=Verdana> (5)<a href="200603282323585.html" tppabs="http://www.itisedu.com/phrase/200603282323585.html" target="_new">需求管理</a>:支持系统的需求演进,如需求变化和可跟踪性问题。</FONT></P><FONT face=Verdana><FONT face=Verdana><FONT face=Verdana><FONT face=Verdana>
<P><FONT face=Verdana><STRONG>一、需求工程的基本活动</STRONG></FONT></P>
<P><FONT face=Verdana> 需求工程无疑是当前软件工程中的关键问题,从美国于1995年开始的一项调查结果就足以看出这一点。在这项调查中,他们对全国范围内的8000个软件项目进行跟踪调查,结果表明,有1/3的项目没能完成,而在完成的2/3的项目中,又有1/2的项目没有成功实施。他们仔细分析失败的原因后发现,与需求过程相关的原因占了45%,而其中缺乏最终用户的参与以及不完整的需求又是两大首要原因,各占13%和12%。</FONT></P>
<P><FONT face=Verdana> 需求工程又是软件工程中最复杂的过程之一,其复杂性来自于客观和主观两个方面。从客观意义上说,需求工程面对的问题几乎是没有范围的。由于应用领域的广泛性,它的实施无疑与各个应用行业的特征密切相关。其客观上的难度还体现在非功能性需求及其与功能性需求的错综复杂的联系上,当前对非功能性需求分析建模技术的缺乏大大增加了需求工程的复杂性。从主观意义上说,需求工程需要方方面面人员的参与(如领域专家、领域用户、系统投资人、系统分析员、需求分析员等等),各方面人员有不同的着眼点和不同的知识背景,沟通上的困难给需求工程的实施增加了人为的难度。</FONT></P>
<P><FONT face=Verdana> 最初,需求工程仅仅是软件工程的一个组成部分,是<a href="200603061230195.html" tppabs="http://www.itisedu.com/phrase/200603061230195.html" target="_new">软件生命周期</a>的第一个阶段。虽然大家也都知道需求工程对软件整个生命周期的重要性,但对它的研究远远没有对软件工程的其他部分的研究那么深入。</FONT></P>
<P><FONT face=Verdana> 在传统软件工程生命周期中,涉及需求的阶段称作需求分析。一般来说,需求分析的作用是:<BR>●系统工程师说明软件的功能和性能,指明软件和其他系统成分的接口,并定义软件必须满足的约束;<BR>●软件工程师求精软件的配置,建立数据模型、功能模型和行为模型;<BR>●为软件设计者提供可用于转换为数据设计、<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200603122156385.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200603122156385.html'" tppabs="http://www.itisedu.com/phrase/200603122156385.html" target="_new">体系结构</a>设计、界面设计和过程设计的模型;<BR>●提供开发人员和客户需求规格说明,用于作为评估软件质量的依据。</FONT></P>
<P><FONT face=Verdana> 但从当前的研究现状来看,需求工程的内容远不止这些。需求工程是系统工程和软件工程的一个交叉分支,涉及到软件系统的目标、软件系统提供的服务、软件系统的约束和软件系统运行的环境。它还涉及这些因素和系统的精确规格说明以及系统进化之间的关系。它也提供现实需要和软件能力之间的桥梁。</FONT></P>
<P><FONT face=Verdana> 需求工程的基本活动包括:<BR>●抽取需求;<BR>●模拟和分析需求;<BR>●传递需求;<BR>●认可需求;<BR>●进化需求。</FONT></P>
<P><FONT face=Verdana> 每个活动都有它基本的动机、任务和结果,也有各自的困难所在。</FONT></P>
<P><FONT face=Verdana> 首先,开始一个项目是因为要对现行系统进行改造。要改造一个系统是因为现行系统存在需要解决的问题。如:现行系统与当前情况不符合、出现新的商机或者可能节省时间、资金和资源等,这就是抽取需求的动机。在这个阶段,需求工程师的任务是认识问题之所在,获取足够多的知识,最后成为问题领域的专家。需求工程师常采用W6H方法去认识问题领域,即6个以W打头的问题,一个以H打头的问题,如表1所示。</FONT></P>
<P><FONT face=Verdana> 需求抽取是非常困难的,其主要原因有:<BR>●缺乏领域知识,应用领域的问题常常是模糊的、不精确的;<BR>●存在默认的知识,即难以描述的日常知识(常识问题);<BR>●存在多个知识源,而且多知识源之间可能有冲突;<BR>●面对的客户可能有偏见,如不能提供你需要了解什么或不想告知你需要了解的事情。<BR>需求抽取的方法一般有问卷法、面谈法、数据采集法、用况法、情景实例法以及基于目标的方法等,还有知识工程方法,如:场记分析法、卡片分<a href="200603090857555.html" tppabs="http://www.itisedu.com/phrase/200603090857555.html" target="_new">类</a>法、分类表格技术和基于模型的知识获取等。</FONT></P>
<P><FONT face=Verdana> 需求工程的第二个阶段是模拟和分析需求,目前有许多工作都以此为目标进行。需求分析和模拟的出发点在于:<BR>●指导抽取;<BR>●帮助需求工程师了解进展;<BR>●帮助发现问题;<BR>●帮助检查对问题的理解。</FONT></P>
<P><FONT face=Verdana> 需求分析和模拟又包含三个层次的工作。首先是需求建模。需求模型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。自然语言形式具有表达能力强的特点,但它不利于捕获模型的语义,一般只用于需求抽取或标记模型。半形式化表示可以捕获结构和一定的语义,也可以实施一定的推理和一致性检查。形式化表示具有精确的语义和推理能力,但要构造一个完整的形式化模型,需要较长时间和对问题领域的深层次理解。对需求概念模型的要求包括:<BR>●实现的独立性:不模拟数据的表示和内部组织等;<BR>●足够抽象:只抽取关于问题的本质方面;<BR>●足够形式化:语法无二义性,并具有丰富的语义;<BR>●可构造性:简单的模型块,能应付不同复杂程度和规模的描述;<BR>●利于分析:能支持二义性、不完整性和不一致性分析;<BR>●可追踪性:支持横向交叉索引并能与设计或实现等建立关联;<BR>●可执行性:可以动态模拟,利于与现实相比较;<BR>●最小性:没有冗余的概念。</FONT></P>
<P><FONT face=Verdana> 需求模拟技术又分为企业模拟、功能需求模拟和非功能需求模拟等。</FONT></P>
<P><FONT face=Verdana> 企业模拟是一种软系统方法,涉及整个组织,从各个不同的视点分析问题,包括目标、组织结构、活动、过程等。有的企业模拟还建立可执行的<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604231350225.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604231350225.html'" tppabs="http://www.itisedu.com/phrase/200604231350225.html" target="_new">领域模型</a>。采用企业模拟方法产生的不仅仅是规格说明,还可以得到许多关于企业运作的状况分析。目前代表性的工作包括:信息模拟、组织模拟和目标模拟等。</FONT></P>
<P><FONT face=Verdana> 功能需求模拟从不同视点为模拟软件提供服务,包括结构视点和行为视点等,主要方法有:结构化分析、<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604231254345.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604231254345.html'" tppabs="http://www.itisedu.com/phrase/200604231254345.html" target="_new">面向对象分析</a>和形式化方法。结构化分析是一种面向数据的方法,以数据流为中心。其核心概念包括:进程、数据流、数据存储、外部实体、数据组和数据元素。有代表性的模拟工具有:数据流图、数据字典、原始进程规格说明。<a href="200603101726185.html" tppabs="http://www.itisedu.com/phrase/200603101726185.html" target="_new">面向对象</a>分析以<a href="200603090845215.html" tppabs="http://www.itisedu.com/phrase/200603090845215.html" target="_new">对象</a>及其服务作为建模标准,比较自然,对象也具有相对的稳定性。主要模拟的元素有:对象、类、属性、关系、方法、<a href="200603090938465.html" tppabs="http://www.itisedu.com/phrase/200603090938465.html" target="_new">消息</a>传递、UseCases等。其主要原理包括分类继承层次、信息隐藏、汇集关系等。形式化方法从广义上说,是应用离散数学的手段来设计、模拟和分析,得到像数学公式那样精确的表示。从狭义上说,就是使用一种形式语言进行语言公式的形式推理,用于检查语法的良构性并证明某些属性。形式化方法一般用于一致性检查、<a href="200603051002565.html" tppabs="http://www.itisedu.com/phrase/200603051002565.html" target="_new">类型</a>检查、有效性验证、行为预测以及设计求精验证。引入形式化机制的目的是:<BR>●减少二义性,提高精确性;<BR>●为验证打下基础;<BR>●允许对需求进行推理;<BR>●允许执行需求。</FONT></P>
<P><FONT face=Verdana> 但是人们常常不用形式化手段,因为:<BR>●形式化涉及太多细节,分析的级别较低;<BR>●形式化的核心问题是一致性和完整性,而不是获取需求;<BR>●没有合适的工具;<BR>●要求更多的代价。</FONT></P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -