论文部分内容阅读
摘要:文中从需求工程的基本概念和研究内容出发,简单介绍了需求工程生命周期和需求规范等概念;比较全面地总结了现有的有代表性的需求工程开发方法和工具,对其中一些重要的方法及工具作了分类和评述。
关键词:需求工程;需求规格;需求分析
中图分类号:TP311.56文献标识码:A 文章编号:1009-3044(2007)17-31339-02
Software Requirement Engineering:about Methods and Tools
ZHANG Yi-jie
(Department of Computer Science and Technology, Soochow University,Suzhou 215006,China)
Abstract:Based on the basic concept and research contents of requirements engineering (RE),some concepts of the life cycle of RE and requirements specification are introduced in the present paper。There center present ative RE methods and tools are summarized。Some important tools and methods are classified and reviewed。
Key words:RE (Requirement Engineering); SRS (Softwere Requirement Specification);RA (Requirement Analysis)
1 引言
需求工程是随着计算机的发展而发展的。在计算机发展的初期,软件规模不大,软件开发所关注的是代码编写,需求分析很少受到重视。后来软件开发引入了生命周期的概念,需求分析成为其第一阶段。随着软件系统规模的扩大,需求分析与定义在整个软件开发与维护过程中越来越重要,直接关系到软件的成功与否。人们逐渐认识到需求分析活动不再仅限于软件开发的最初阶段,它贯穿于系统开发的整个生命周期。80年代中期,形成了软件工程的子领域——需求工程(requirement engineering,RE)。
进入90年代以来,需求工程成为研究的热点之一。从1993年起每两年举办一次需求工程国际研讨会(ISRE),自1994年起每两年举办一次需求工程国际会议(ICRE),在1996年Springer-Verlag发行了一新的刊物——《RequirementsEngineering》。一些关于需求工程的工作小组也相继成立,如欧洲的RENOIR(Requirements Engineering Network of International Cooperating Research Groups),并开始开展工作。
2 需求工程基本内容
需求工程是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科;它通过合适的工具和记号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。RE可分为系统需求工程(如果是针对由软硬件共同组成的整个系统)和软件需求工程(如果仅是专门针对纯软件部分)。软件需求工程是一门分析并记录软件需求的学科,它把系统需求分解成一些主要的子系统和任务,把这些子系统或任务分配给软件,并通过一系列重复的分析、设计、比较研究、原型开发过程把这些系统需求转换成软件的需求描述和一些性能参数。本文以下如无特别说明,需求工程主要是指软件需求工程。
2.1 需求工程的阶段
需求工程是一个不断反复的需求定义、文档记录、需求演进的过程,并最终在验证的基础上冻结需求。80年代,HerbKrasner定义了需求工程的五阶段生命周期:需求定义和分析;需求决策;形成需求规格;需求实现与验证;需求演进管理。近来,MatthiasJarke和KlausPohl提出了三阶段周期的说法:获取、表示和验证。综合了几种观点,我们把需求工程的活动划分为以下5个独立的阶段:
(1)需求获取:通过与用户的交流,对现有系统的观察及对任务进行分析,从而开发、捕获和修订用户的需求;
(2)需求建模:为最终用户所看到的系统建立一个概念模型,作为对需求的抽象描述,并尽可能多的捕获现实世界的语义;
(3)形成需求规格:生成需求模型构件的精确的形式化的描述,作为用户和开发者之间的一个协约;
(4)需求验证:以需求规格说明为输入,通过符号执行、模拟或快速原型等途径,分析需求规格的正确性和可行性;
(5)需求管理:支持系统的需求演进,如需求变化和可跟踪性问题。
2.2 需求规格
IEEE为需求作如下定义:
(1)用户解决问题或达到系统目标所需要的条件;
(2)为满足一个协约、标准、规格或其他正式制定的文档,系统或系统构件所需要满足和具有的条件或能力;
(3)对上述条件的文档化的描述。
规格就是一个预期的或已存在的计算机系统的表示。它可以作为开发者和用户之间协议的基础,来产生预期的系统。规格定义系统所有必须具备的特性,同时留下很多特性不做限制。通常,我们要求规格比组成特定系统的实际的软件和硬件更简洁、更全面、更易于修改。
需求工程的主要结果是软件需求规格(SRS,Softwere Requirement Specification), SRS是对外部行为和系统环境(软件、硬件、通信端口和人)接口的简洁完整的描述性文档。项目管理者用它来对项目进行计划和管理,在许多情况下,它也被作为是用户的使用手册或帮助用户理解系统的文档。它广泛地适用于对各类应用领域中的客户问题进行理解与描述,实现用户、分析员和设计人员之间的通信,为软件设计提供基础,并支持系统的需求验证和演进。
3 需求工程活动
需求工程的活动可分为3个层次:方法学——即整体的、全面的、指导性的方法;方法——具体的、详细的实现途径和策略;工具——指一步步形成的手工或自动的辅助过程。下面我们将讨论这3个层次的应用及发展。
3.1 需求分析方法分类
需求分析方法可大致分为4类,如图1所示。
3.2 需求工程代表性方法
需求工程方法和上述的生命周期及方法学模型是一致的。新的需求工程的方法层出不穷,我们不可能覆盖所有的方法,在这里仅讨论一些成熟的、有代表性的、广泛应用在需求工程或软件工程领域中的一些重要的方法。
图1需求分析方法分类图
(1)JAD方法——Joint Application Developmen
这一方法由IBM于1977年开发出来,在80年代初首先投入使用。这一技术的核心在于一高度结构化的工作研讨会,研讨组由行政人员、项目管理者、用户、系统专家、技术人员、JAD辅助人员及文档记录人员组成。用户得到系统人员的帮助及经验丰富、客观的项目的辅助者的指导。这个辅助者与项目管理者和用户会谈一起定义项目的范围和目标。JAD方法能够加速持不同观点的用户之间的协商,加深对软件需求的理解,并生成供用户参考的模型或原型。JAD成功之处在于它对群体需求获取的协调,同类方法还有NCOSE和CRC。
(2)AMORE——Advanced Multimedia Organizer for Requirements Elicitation
这一方法是卡内基?梅隆大学软件工程研究所开发的,提出用多媒体的方法进行需求捕获和建模。AMORE采用层次或网状结构,如分层的数据流图、控制流图,对象层次图、任务分解图等形式来组织大量的需求。并提供浏览和导引工具来促进需求的捕获。需求分析人员把AMORE作为最接近其需求产生自然形式的需求存储平台,以获得最大限度的可跟踪性及促进对用户最初的需求意图的理解。而且填补了需求产生的最初形式和被一些需求规格方法和CASE工具所采用的形式化表示法之间的距离。
3.3 基于操作方法需求工程工具
STATEMATE 这一工具是由I-logic公司在1980年于曼彻斯特开发,是为了获得一个被Harel称为状态流图(statechart)的有限状态机的扩充。状态流图有助于需求量分析人员对复杂实时系统行为无二义性的建模。使用STATEMATE,需求分析能从功能、行为及结构3方面描述系统。这一工具最强大功能之一是它的仿真能力,这3个视图任一方在屏幕上出现,通过一个描述系统功能和行为的可执行的模型,系统就能观察其在仿真的实时环境下的行为。典型的操作方法的工具还有JSD,软件所在80年代末开发的RSL/RSA等。上述工具的共同特点即它们最终结果是严格的形式化需求规格,对快速原型提供支持,需求能得到及时的验证和反馈。可执行规格和原型技术无疑为RE提供了很好的实现途径。上述几种方法又各有侧重,如STATEMATE主要适于嵌入式实时系统,GIST在AI和数据库系统的应用比较广泛。
3.4 基于知识的需求工程工具
(1)RA——Requirement Apprentice
RA是由MIT研究人员开发的基于知识的系统,为需求的开发提供了一个智能助手。RA建立在特定需求领域的知识库基础上,帮助分析人员建立和修订需求规格。其核心是缩小非形式化和形式化需求规格的距离,实现前者到后者的转化。RA进程是对需求的产生一个机器可操纵的需求表示。它能回答询问和为需求分析人员、用户和系统设计者生成各种文档。这一需求分析方法的一个优点在于它能产生不同的信息表示,并根据最终用户、分析员、设计者的不同需要作相应改动。从AI的角度来看,RA所面临的主要问题是知识获取。RA是要从起初杂乱无章且欠精确的声明中导出一内部协调的需求声明。为此,RA要依靠一些技术,如相关定向推理,混合知识表示和通用构件的重用。
(2)TMMRP——Technology to Manage Multiple Requirement Perspective
TMMRP是德国USU公司基于元模型(metamodel)对各种不同需求进行管理的工具。需求模块是对现实世界或理想世界的抽象表示,元模型则是对已存在或目标需求模块及其相互关系的抽象表示。概念库(ConceptBase)在知识表示机制方面对这种多级抽象的管理提供了很好的支持。它是一个客户机/服务器式的元数据管理器,服务器存储、查询、更新元模型,客户端通常是一建模工具。概念库及先进的询问功能软件的支持,使得简单且可定制的元模型方法能在很短的时间内产生高质量的需求文档。
3.5 需求跟踪工具
(1)ARTS——The Automated Requirement Traceability System
ARTS是LMSC公司为软件工程师开发的需求跟踪性系统。它以“需求树”的形式链接用户定义的需求,并以这种分层结构提供对可跟踪性的支持。其首要解决的问题是选择一个数据库管理系统并加入可跟踪性构件。ART是一个数据库管理系统,在这个系统中需求是作为数据库中的记录被定义的,这些记录是由包含和需求对象有关的信息的域和属性组成,数据库系统能对需求进行选择、存储和操作。ART的开发方法是建立在快速原型和渐增模型二者结合的基础之上的。
(2)TOOR——Traceability of Object-Oriented Requirement
TOOR是牛津大学Francisco等人开发的需求跟踪工具。TOOR对面向对象的形式化规格说明语言FOOPS(for functional and object-oriented programming system)的结合使得它适于面向对象的系统开发。它使用类FOOPS模型来声明需求并在项目演进的过程中自动生成新的需求链。TOOR还提供超媒体工具以更近似的反映分析人员的直观想法和活动。它由以下3部分组成:操作管理器:用于控制和执行所有对象并对操作进行建模;数据库管理器:用于控制对TOOR数据库的访问;通信管理器:用于控制和其它系统及通信用户间的交互。
4 结束语
从需求工程的过程各阶段的作用来看,日后研究的重点还应放在需求分析、建模和可跟踪性问题的研究。当前软件开发中的一些热点技术,如面向对象技术、自动化工具、构件技术,以及传统的形式化技术、领域建模技术的发展,仍将继续为需求工程的研究提供有力的支持。RE研究现状中另一明显的不足是理论解决方案通常是在对实际问题简化的基础上得到的,理论研究和实践脱节。要获取需求突破,改善需求工程的开发效率和质量,很重要一点是探索有效的解决途径,缩小理论和应用之间的正在增长的差距,使开发出的系统和模型切实满足应用领域的需要。我们期待着在需求工程领域的研究在与丰富的计算机科学实践经验结合的过程中,提炼出更多成熟、完善的方法和工具,从而推动整个需求工程的进程。
参考文献:
[1]杨一平.现代软件工程技术与CMM的融台[M].北京:人民邮电出版社,2002.
[2]Wiegers KE.软件需求[M]。陆丽娜译.北京:机械工业出版社,2000.
[3]刘积仁,康晓东,饶友玲.软件开发项目管理.北京:人民邮电出版社,2002.
[4]计算机软件工程规范国家标准汇编2000.北京:中国标准出版社,2002.
[5]葛乃康,罗四维.信息工程建设监理[M].北京:电子工业出版社,2002.
[6]北京信息安全测评中心.信息系统工程监理[M].北京:中国标准出版社,2003.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:需求工程;需求规格;需求分析
中图分类号:TP311.56文献标识码:A 文章编号:1009-3044(2007)17-31339-02
Software Requirement Engineering:about Methods and Tools
ZHANG Yi-jie
(Department of Computer Science and Technology, Soochow University,Suzhou 215006,China)
Abstract:Based on the basic concept and research contents of requirements engineering (RE),some concepts of the life cycle of RE and requirements specification are introduced in the present paper。There center present ative RE methods and tools are summarized。Some important tools and methods are classified and reviewed。
Key words:RE (Requirement Engineering); SRS (Softwere Requirement Specification);RA (Requirement Analysis)
1 引言
需求工程是随着计算机的发展而发展的。在计算机发展的初期,软件规模不大,软件开发所关注的是代码编写,需求分析很少受到重视。后来软件开发引入了生命周期的概念,需求分析成为其第一阶段。随着软件系统规模的扩大,需求分析与定义在整个软件开发与维护过程中越来越重要,直接关系到软件的成功与否。人们逐渐认识到需求分析活动不再仅限于软件开发的最初阶段,它贯穿于系统开发的整个生命周期。80年代中期,形成了软件工程的子领域——需求工程(requirement engineering,RE)。
进入90年代以来,需求工程成为研究的热点之一。从1993年起每两年举办一次需求工程国际研讨会(ISRE),自1994年起每两年举办一次需求工程国际会议(ICRE),在1996年Springer-Verlag发行了一新的刊物——《RequirementsEngineering》。一些关于需求工程的工作小组也相继成立,如欧洲的RENOIR(Requirements Engineering Network of International Cooperating Research Groups),并开始开展工作。
2 需求工程基本内容
需求工程是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科;它通过合适的工具和记号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。RE可分为系统需求工程(如果是针对由软硬件共同组成的整个系统)和软件需求工程(如果仅是专门针对纯软件部分)。软件需求工程是一门分析并记录软件需求的学科,它把系统需求分解成一些主要的子系统和任务,把这些子系统或任务分配给软件,并通过一系列重复的分析、设计、比较研究、原型开发过程把这些系统需求转换成软件的需求描述和一些性能参数。本文以下如无特别说明,需求工程主要是指软件需求工程。
2.1 需求工程的阶段
需求工程是一个不断反复的需求定义、文档记录、需求演进的过程,并最终在验证的基础上冻结需求。80年代,HerbKrasner定义了需求工程的五阶段生命周期:需求定义和分析;需求决策;形成需求规格;需求实现与验证;需求演进管理。近来,MatthiasJarke和KlausPohl提出了三阶段周期的说法:获取、表示和验证。综合了几种观点,我们把需求工程的活动划分为以下5个独立的阶段:
(1)需求获取:通过与用户的交流,对现有系统的观察及对任务进行分析,从而开发、捕获和修订用户的需求;
(2)需求建模:为最终用户所看到的系统建立一个概念模型,作为对需求的抽象描述,并尽可能多的捕获现实世界的语义;
(3)形成需求规格:生成需求模型构件的精确的形式化的描述,作为用户和开发者之间的一个协约;
(4)需求验证:以需求规格说明为输入,通过符号执行、模拟或快速原型等途径,分析需求规格的正确性和可行性;
(5)需求管理:支持系统的需求演进,如需求变化和可跟踪性问题。
2.2 需求规格
IEEE为需求作如下定义:
(1)用户解决问题或达到系统目标所需要的条件;
(2)为满足一个协约、标准、规格或其他正式制定的文档,系统或系统构件所需要满足和具有的条件或能力;
(3)对上述条件的文档化的描述。
规格就是一个预期的或已存在的计算机系统的表示。它可以作为开发者和用户之间协议的基础,来产生预期的系统。规格定义系统所有必须具备的特性,同时留下很多特性不做限制。通常,我们要求规格比组成特定系统的实际的软件和硬件更简洁、更全面、更易于修改。
需求工程的主要结果是软件需求规格(SRS,Softwere Requirement Specification), SRS是对外部行为和系统环境(软件、硬件、通信端口和人)接口的简洁完整的描述性文档。项目管理者用它来对项目进行计划和管理,在许多情况下,它也被作为是用户的使用手册或帮助用户理解系统的文档。它广泛地适用于对各类应用领域中的客户问题进行理解与描述,实现用户、分析员和设计人员之间的通信,为软件设计提供基础,并支持系统的需求验证和演进。
3 需求工程活动
需求工程的活动可分为3个层次:方法学——即整体的、全面的、指导性的方法;方法——具体的、详细的实现途径和策略;工具——指一步步形成的手工或自动的辅助过程。下面我们将讨论这3个层次的应用及发展。
3.1 需求分析方法分类
需求分析方法可大致分为4类,如图1所示。
3.2 需求工程代表性方法
需求工程方法和上述的生命周期及方法学模型是一致的。新的需求工程的方法层出不穷,我们不可能覆盖所有的方法,在这里仅讨论一些成熟的、有代表性的、广泛应用在需求工程或软件工程领域中的一些重要的方法。
图1需求分析方法分类图
(1)JAD方法——Joint Application Developmen
这一方法由IBM于1977年开发出来,在80年代初首先投入使用。这一技术的核心在于一高度结构化的工作研讨会,研讨组由行政人员、项目管理者、用户、系统专家、技术人员、JAD辅助人员及文档记录人员组成。用户得到系统人员的帮助及经验丰富、客观的项目的辅助者的指导。这个辅助者与项目管理者和用户会谈一起定义项目的范围和目标。JAD方法能够加速持不同观点的用户之间的协商,加深对软件需求的理解,并生成供用户参考的模型或原型。JAD成功之处在于它对群体需求获取的协调,同类方法还有NCOSE和CRC。
(2)AMORE——Advanced Multimedia Organizer for Requirements Elicitation
这一方法是卡内基?梅隆大学软件工程研究所开发的,提出用多媒体的方法进行需求捕获和建模。AMORE采用层次或网状结构,如分层的数据流图、控制流图,对象层次图、任务分解图等形式来组织大量的需求。并提供浏览和导引工具来促进需求的捕获。需求分析人员把AMORE作为最接近其需求产生自然形式的需求存储平台,以获得最大限度的可跟踪性及促进对用户最初的需求意图的理解。而且填补了需求产生的最初形式和被一些需求规格方法和CASE工具所采用的形式化表示法之间的距离。
3.3 基于操作方法需求工程工具
STATEMATE 这一工具是由I-logic公司在1980年于曼彻斯特开发,是为了获得一个被Harel称为状态流图(statechart)的有限状态机的扩充。状态流图有助于需求量分析人员对复杂实时系统行为无二义性的建模。使用STATEMATE,需求分析能从功能、行为及结构3方面描述系统。这一工具最强大功能之一是它的仿真能力,这3个视图任一方在屏幕上出现,通过一个描述系统功能和行为的可执行的模型,系统就能观察其在仿真的实时环境下的行为。典型的操作方法的工具还有JSD,软件所在80年代末开发的RSL/RSA等。上述工具的共同特点即它们最终结果是严格的形式化需求规格,对快速原型提供支持,需求能得到及时的验证和反馈。可执行规格和原型技术无疑为RE提供了很好的实现途径。上述几种方法又各有侧重,如STATEMATE主要适于嵌入式实时系统,GIST在AI和数据库系统的应用比较广泛。
3.4 基于知识的需求工程工具
(1)RA——Requirement Apprentice
RA是由MIT研究人员开发的基于知识的系统,为需求的开发提供了一个智能助手。RA建立在特定需求领域的知识库基础上,帮助分析人员建立和修订需求规格。其核心是缩小非形式化和形式化需求规格的距离,实现前者到后者的转化。RA进程是对需求的产生一个机器可操纵的需求表示。它能回答询问和为需求分析人员、用户和系统设计者生成各种文档。这一需求分析方法的一个优点在于它能产生不同的信息表示,并根据最终用户、分析员、设计者的不同需要作相应改动。从AI的角度来看,RA所面临的主要问题是知识获取。RA是要从起初杂乱无章且欠精确的声明中导出一内部协调的需求声明。为此,RA要依靠一些技术,如相关定向推理,混合知识表示和通用构件的重用。
(2)TMMRP——Technology to Manage Multiple Requirement Perspective
TMMRP是德国USU公司基于元模型(metamodel)对各种不同需求进行管理的工具。需求模块是对现实世界或理想世界的抽象表示,元模型则是对已存在或目标需求模块及其相互关系的抽象表示。概念库(ConceptBase)在知识表示机制方面对这种多级抽象的管理提供了很好的支持。它是一个客户机/服务器式的元数据管理器,服务器存储、查询、更新元模型,客户端通常是一建模工具。概念库及先进的询问功能软件的支持,使得简单且可定制的元模型方法能在很短的时间内产生高质量的需求文档。
3.5 需求跟踪工具
(1)ARTS——The Automated Requirement Traceability System
ARTS是LMSC公司为软件工程师开发的需求跟踪性系统。它以“需求树”的形式链接用户定义的需求,并以这种分层结构提供对可跟踪性的支持。其首要解决的问题是选择一个数据库管理系统并加入可跟踪性构件。ART是一个数据库管理系统,在这个系统中需求是作为数据库中的记录被定义的,这些记录是由包含和需求对象有关的信息的域和属性组成,数据库系统能对需求进行选择、存储和操作。ART的开发方法是建立在快速原型和渐增模型二者结合的基础之上的。
(2)TOOR——Traceability of Object-Oriented Requirement
TOOR是牛津大学Francisco等人开发的需求跟踪工具。TOOR对面向对象的形式化规格说明语言FOOPS(for functional and object-oriented programming system)的结合使得它适于面向对象的系统开发。它使用类FOOPS模型来声明需求并在项目演进的过程中自动生成新的需求链。TOOR还提供超媒体工具以更近似的反映分析人员的直观想法和活动。它由以下3部分组成:操作管理器:用于控制和执行所有对象并对操作进行建模;数据库管理器:用于控制对TOOR数据库的访问;通信管理器:用于控制和其它系统及通信用户间的交互。
4 结束语
从需求工程的过程各阶段的作用来看,日后研究的重点还应放在需求分析、建模和可跟踪性问题的研究。当前软件开发中的一些热点技术,如面向对象技术、自动化工具、构件技术,以及传统的形式化技术、领域建模技术的发展,仍将继续为需求工程的研究提供有力的支持。RE研究现状中另一明显的不足是理论解决方案通常是在对实际问题简化的基础上得到的,理论研究和实践脱节。要获取需求突破,改善需求工程的开发效率和质量,很重要一点是探索有效的解决途径,缩小理论和应用之间的正在增长的差距,使开发出的系统和模型切实满足应用领域的需要。我们期待着在需求工程领域的研究在与丰富的计算机科学实践经验结合的过程中,提炼出更多成熟、完善的方法和工具,从而推动整个需求工程的进程。
参考文献:
[1]杨一平.现代软件工程技术与CMM的融台[M].北京:人民邮电出版社,2002.
[2]Wiegers KE.软件需求[M]。陆丽娜译.北京:机械工业出版社,2000.
[3]刘积仁,康晓东,饶友玲.软件开发项目管理.北京:人民邮电出版社,2002.
[4]计算机软件工程规范国家标准汇编2000.北京:中国标准出版社,2002.
[5]葛乃康,罗四维.信息工程建设监理[M].北京:电子工业出版社,2002.
[6]北京信息安全测评中心.信息系统工程监理[M].北京:中国标准出版社,2003.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。