结合实例论述什么是需求工程
发布网友
发布时间:2022-04-24 09:05
我来回答
共1个回答
热心网友
时间:2022-06-18 09:12
目前,我国各行业亟需各种应用软件系统,但传统的SE开发模式显然不能充分满足用户的需求。进入90年代以来,一种新的被称为“用户主导,面向领域的需求分析方法”被提了出来,即如何从各种各样的应用专业领域中特别是直接从最终用户处捕获需求,并完整、准确地予以描述与分析,需求工程成为研究的热点之一。
随着信息时代的发展,计算机软件的需求愈来愈复杂,规模愈来愈大,而且随着企业的发展,工作过程重组,需求变更已愈来愈成为必然。软件危机持续了30年之久,至今仍无法得以很好地解决。究其原因,软件本身具有的特点固然有关,但长期以来,缺乏软件开发和维护的正确方法以及忽视软件开发过程的质量控制乃是最为关键的原因。其中软件开发和维护方法的不正确性主要体现在:忽视软件开发前期的需求分析;开发过程缺乏统一的、规范化的方*的指导;文档资料不齐全或不准确;忽视与用户之间、开发组员之间的交流;忽视测试的重要性;不重视维护或由于上述原因造成维护工作的困难。
这样,就经常出现用户对“已完成”系统不满意,软件产品的质量经常出现漏洞,补丁一大堆。因此人们意识到以工程化的原则和方法组织软件开发工作是解决软件危机的一个主要出路。
需求分析作为软件生命周期的第一个阶段,并贯穿于整个软件生命周期,其重要性越来越突出,到80年代中期,逐步形成了软件工程的子领域——需求工程。进入90年代后,需求工程成为软件界研究的重点之一。从1993年起,每两年举办一次需求工程国际研讨会(ISRE),1994年起,每两年举办一次需求工程国际会议(ICRE)。一些关于需求工程的工作小组相继成立。
内 容
需求工程的目的是通过与用户广泛地交流确定应用系统的目标。需求活动以“工程化”的方法被提出、分析和组织,它鼓励用户以一种积极的方式参与需求分析活动中,并在整个软件生命周期强调用户参与和领域专家的指导作用,促使目标系统最大地满足用户需求。
需求工程是一个不断反复的需求定义、记录和演进的过程,并在最终达到需求的冻结。我们可以把需求工程的活动划分为五个阶段:
1. 需求获取:积极与用户交流,捕捉、分析和修订用户对目标系统的需求,并提炼出符合问题解决领域的用户需求。2. 需求建模:根据需求分析,对已获取的需求进行抽象描述,为目标系统建立一个概念模型。3. 需求规格说明:对需求模型进行精确地、形式化的描述,为计算机系统的实现提供基础。4. 需求验证:以需求规格说明为基础输入,通过符号执行、模拟或快速原型等方法,分析和验证需求规格说明的正确性和可行性。5. 需求管理:跟踪和管理需求变化,支持系统的需求演进。
发 展
1. 需求工程的方法学
需求工程的方法学发展很快,对需求工程方法学不同侧面的研究和一些经典论述为需求工程的发展奠定了基础。其中典型的有:
* Lano提出的操作概念规格,于需求产生前由开发人员写成,它既满足精确的规格说明要求,同时易读、易理解,便于用户了解是否真正体现了其要求。
* Sutcliffe、Maiden等人提出从领域知识的角度定义在需求工程环境中通用的领域语义模型和组合模型。
* Alford 提出任务分割的概念,大大减低了需求分析的问题复杂度。
* Chou 和Eckert 讨论了面向对象的需求工程方法学的概念和模型。
* Drake提出用于确定系统需求边界的限定过程。
* Gotel 对需求跟踪性问题进行了研究。
还有其他许多人对需求工程方法学的其他方面进行了研究和论述。
综合看来,需求工程方法大致分为四类:面向过程、面向数据、面向控制、面向对象。
* 面向过程的分析方法主要研究系统输入输出的转化方式,对数据本身及控制方面并不很重视。传统的结构分析方法SA(structure analysis)、SADT(structure analysis and design technique)和可执行/可操作模型PAISley、Descartes以及形式方法VDM(vienna design method)、Z等都属于这一类。
* 面向数据的方法强调以数据结构的方式描述和分析系统状态,JSD和关系实体(ER)模型都属此类。
* 面向控制的方法强调同步、死锁、互斥、并发以及进程激活和挂起,数据流图就是典型的面向控制的方法,SADT是以面向控制的方法为辅的。
* 面向对象的方法把分析建立在系统对象以及对象间交互的基础上,通过对象的属性、分类结构和集合结构定义和沟通需求。从对象模型、动态模型和功能模型三个方面对问题进行描述。面向对象的方法正在成为需求分析中的一个热点,并展现出良好的应用前景。Yourdan和Coad的OOA方法、Booch的方法、Jacobson 的OOSE、Rumbaugh的OMT方法等,都是这一方法的典型流派。
2. 面向对象的需求工程方法
目前,作为解决软件危机的一个最佳对策,是采用面向对象(OO)的技术。面向对象的开发方法强调从问题域的概念到软件程序和界面的直接映射。事实上,把客观世界看成许多对象更接近人类的自然思维方式,而且对象相对稳定。软件需求的变动往往是功能的变动,而功能的执行者——对象一般不会有大的变化。这便是OO技术产生与发展的根源。另外,OO技术支持信息隐蔽、数据抽象与封装,使得软件的开发、修改和维护易于进行。
面向对象的方法已应用到软件生命周期的各个阶段,而且OO技术自然地支持快速原型法和快速应用开发。对需求工程而言,由于人类自然地趋向于用“对象”的观点或方法来认识问题和描述问题,所以用基于对象的概念模型来建立问题域模型成为需求分析员和用户交流的有效手段。面向对象的需求分析的基本步骤如下:
(1)与用户广泛接触,收集和查看相关资料,对问题域有一个大致的了解。在此基础上,提炼和标识对象。(2) 描述对象(类)的属性。(3)描述对象之间的关系,如整体关系和从属关系等。(4)描述问题域的“剧情”,即描述问题域中完成每个任务需要的对象间的协作关系。
以上四个步骤不是孤立进行,而是相互联系的。通过这四个步骤的反复执行,就可以建立一个基于对象的问题域模型。
Booch是面向方法最早的倡导者之一,他提出了面向对象的软件工程的概念。1991年,他将以前面向Ada的工作扩展到整个面向对象的设计领域,Booch的方法比较适合于系统的设计和构造。
Rumbaugh等人提出了面向对象的建模技术(OMT),采用面向对象的概念,引入各种独立于语言的表示符。这种方法用对象模型、动态模型、功能模型和实例模型共同完成对系统的建模。所定义的概念和符号可用于软件开发的分析、设计和实现的全过程。开发人员无须在开发过程的不同阶段进行概念和符号的转换。特别适用于分析和描述以数据为中心的信息系统。
Coad和Yourdon采用5个步骤来确定一个多层的OO模型,5个步骤分别对应模型的5个层次。即:(1)找出类和对象——类和对象层;(2)定义属性——属性层(3)识别结构与关系——结构层;(4)确定主题——主题层;(5)定义服务——服务层。
它是最早的面向对象的分析与设计方法之一,该方法简单易学,适合于面向对象的初学者使用,但由于该方法在处理能力方面的局限,目前已很少使用。
Jacobson于1994年提出了OOSE的方法,其最大特点是面向用例(Use-Case),并在Use Case的描述中引入了外部角色的概念。Use Case成为分析模型的基础,用交互图对Use Case进一步描述后就形成设计的模型。Use Case是精确描述需求的关键,它贯穿于整个开发过程,包括对系统的测试和验证。OOSE比较适合于支持商业工程的需求分析,Use Case同时也很好地驱动了测试阶段的测试工作。
3. 面向对象的建模
面向对象的建模是一种新的设计思想,一种关于计算和信息结构化的新思维。面向对象的建模,把系统看作是相互协作的对象,这些对象是结构和行为的封装,都属于某个类,那些类具有某种层次化的结构。系统的所有功能通过对象之间相互发送消息来获得。面向对象的建模可以视为是一个包含以下元素的概念框架:抽象、封装、模块化、层次、分类、并行、稳定、可重用和可扩展。面向对象的建模思想的出现是面向过程和严格数据驱动的软件开发方法的渐进演变结果。
(1)UML——Unified Modeling Languge
面向对象的分析与设计方法,在80年代末至90年代中发展到一个*。但是,诸多流派在思想和术语上有很多不同的提法,在术语、概念上的运用也各不相同,统一是继续发展的必然趋势。需要一种统一的符号来描述面向对象的分析和设计活动,UML应运而生。它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且有进一步的发展,最终成为大众所共同接受的标准建模语言。UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它融入了软件工程领域的新思想、新方法和新技术。不仅支持面向对象的分析与设计,还支持从需求分析开始的软件开发全过程。
UML是面向对象技术发展的重要成果。获得科技界、工业界和应用界的广泛支持,截止1996年底的统计,已有700多家公司表示支持采用UML作为建模语言,稳占面向对象技术市场的85%,成为可视化建模语言事实上的工业标准。1997年,OMG采纳UML1.1作为基于面向对象技术的标准建模语言。UML代表了面向对象方法的软件开发技术的发展方向,具有巨大的市场前景,也具有重大的经济价值和国防价值。
(2)可视化的建模工具——ROSE
ROSE是Rational 公司开发的一种CASE工具。它用UML语言支持软件开发的大部分过程的建模。在ROSE中,只要你用UML描述了软件的各个部分,也就是为软件建立了一个面向对象的模型, ROSE就可以自动生成应用系统需要的大部分源代码。而且,基于此整个系统具有OO的诸多优点——如模型稳定性、重用性等等,降低了软件维护和升级的成本。
(3)UML对用户驱动需求工程的支持
OO思想曾经遭受一些人的批评。理由是用户关心和理解的只是系统的功能,他不可能去学习OO模型,所以虽然OO建模缩小了分析设计和编码的鸿沟,但却拉大了和用户的距离。幸运的是,Use Case的出现,使这一情况得到了大大的改观。在UML中,用OO建模的第一步是Use Case 的分析,Use Case体现了系统的功能单元。系统的外部人员或其它系统通过和Use Case 交换消息来了解和使用系统的功能,弥补了OO建模和用户之间的距离。UML以对象图描述任何类型的系统,具有很宽的应用领域,可以对任何具有静态结构和动态行为的领域建模。UML还适用于从需求规格说明到系统测试的不同阶段。在需求分析阶段,用Use Case捕捉用户需求并建模,描述与系统有关的外部角色及其对系统的功能要求。分析阶段主要关心问题域中的主要概念和机制,并用UML类图来描述对象和类,用UML动态模型描述类之间的协作关系。UML模型同时还是测试阶段的依据。不同的测试小组使用不同的UML图作为测试依据:单元测试使用类图和类规格说明;集成测试使用部件图和协作图;系统测试使用Use Case图。
所以,UML适用于以面向对象的技术来描述任何类型的系统。而且适用于系统开发的不同阶段。UML的功能和UDRE的基本思想不谋而合。可以应用于任何领域,其实现机制又极大地缩短了用户的距离,易于被用户掌握和接受。UML使用户不仅可以有效地参与需求定义,还能在建模过程中参与部分的设计、实现和测试,从而有效地进行需求验证。使用户在需求的定义、决策、验证和管理,乃至整个软件开发过程中,充分发挥其主导作用。
小结:需求工程的发展,使人们认识到,只有最终用户的直接参与并发挥主导作用,才能真正解决问题空间与求解空间的一致性问题,消除计算机领域和应用领域之间的鸿沟,并自动适应系统需求的不断变化。针对传统分析方式的弊端,一种新的被称为“用户主导、面向领域的需求分析方法”被提了出来。需求工程研究现状中一个明显的不足是研究理论与实践的脱节,理论解决方案通常是在对实际问题简化的基础上得到的。要获得需求突破,改善需求工程的开发质量和效率,需要探索一条有效的解决途径,缩小理论与应用之间的距离,使开发出来的系统和模型切实满足应用领域的需要。目前我们正在尝试研制一种有实用价值的面向某一行业领域的用户主导式的应用软件辅助开发工具及原型系统,建立面向领域的用户框架,继续完善用户驱动的需求分析理论和方法,推动用户工程理论的形成。