1.4 MBSE关键技术
1.4.1 建模语言
1.发展初期阶段
公认的面向对象建模语言出现于20世纪70年代中期。1989—1994年,其数量从不到十种增加到了五十多种。20世纪90年代,一批新方法出现了,其中最引人注目的是Booch 1993、OOSE和OMT-2等。Booch是面向对象方法最早的倡导者之一,他提出了面向对象软件工程的概念。1991年,Booch将以前面向Ada的工作扩展到整个面向对象设计领域。Booch 1993比较适合系统的设计和构造。Rumbaugh等人提出了面向对象的建模技术(Object Modeling Technique,OMT)方法,采用了面向对象的概念,并引入各种独立于语言的表示符。这种方法用对象模型、动态模型、功能模型和用例模型,共同完成对整个系统的建模,所定义的概念和符号可用于软件开发的分析、设计和实现的全过程,软件开发人员不必在开发过程的不同阶段进行概念和符号的转换。OMT-2特别适用于分析和描述以数据为中心的信息系统。
Jacobson于1994年提出了面向对象的软件工程(Object-Oriented Software Engineering,OOSE)方法,其最大特点是面向用例(Use-Case),并在用例的描述中引入了外部角色的概念。用例的概念是精确描述需求的重要武器,但用例贯穿于整个开发过程,包括对系统的测试和验证。OOSE方法比较适合支持商业工程和需求分析。
1994年10月,Booch和Rumbaugh开始致力于这一工作。他们首先将Booch 1993和OMT-2统一起来,并于1995年10月发布了第一个公开版本,称之为统一方法UM 0.8(Unified Method)。1995年秋,OOSE的创始人Jacobson加盟到这一工作中。经过Booch、Rumbaugh和Jacobson三人的共同努力,于1996年6月和10月分别发布了两个新的版本,即UML 0.9和UML 0.91,并将UM重新命名为UML(Unified Modeling Language)。
1996年,一些机构将UML作为其商业策略已日趋明显。UML的开发者得到了来自公众的正面反应,并倡议成立了UML成员协会,以完善、加强和促进UML的定义工作。该协会当时的成员有DEC、HP、I-Logix、Itellicorp、IBM、ICON Computing、MCI Systemhouse、Microsoft、Oracle、Rational Software、TI和Unisys。这一协会对UML 1.0(1997年1月)及UML 1.1(1997年11月17日)的定义和发布起了重要的促进作用。
2.统一建模语言形成
UML作为一种统一的软件建模语言具有广泛的建模能力。UML是在消化、吸收、提炼至今存在的所有软件建模语言的基础上提出的,集百家之所长,它是软件建模语言的集大成者。UML还突破了软件的限制,广泛吸收了其他领域的建模方法,并根据建模的一般原理,结合了软件的特点,因此具有坚实的理论基础和广泛性。UML不仅可以用于软件建模,还可以用于其他领域的建模工作。
系统建模语言规定了若干种除自然语言外的符号,包括框图、线条和箭头等。框图就是封闭的线条,可以在框图内分隔出若干个区域,用自然语言填写不同的信息。而且不同的区域也由系统建模语言的抽象语法及计算机支撑工具赋予不同的含义,为数据之间的关联奠定基础;线条包括直线和折线等,也区分实线和虚线;箭头是线条和框图的结合点,表示不同的含义,如泛化、包含等,端口也可以算作箭头的一种。自然语言是非形式化的,由人来处理。框图、线条、箭头是形式化的,由计算机来处理,人可以在计算机及网络上很容易地编辑。
框图、线条、箭头构成了系统建模语言的“骨架”,然后在表示系统的相关信息时,就用自然语言来在规定好的位置填写。例如,在框图中,可以填写块的名字、块的属性和块的动作等,在线条上填写泛化、包含等关系。系统建模语言的“骨架”,把系统工程中的概念“可视化”了,如“导弹包含弹头、发动机和控制等分系统”这句话,用线条和箭头把表示导弹的块和表示弹头、发动机、控制等分系统的块连接起来,就是把它们的关系“可视化”了,一目了然,很容易理解。同理,在活动图中,可以把电源分系统与弹头、控制分系统之间的电流流动表示出来。系统建模语言把传统系统工程下进行功能分析的FFBD图、状态机图和表格等表示法规范化、统一化了,纳入整个大体系中。
系统建模语言在知识的表示和处理方面有若干优点:一是相当于在现有的各个学科之间、各类人员之间建立了一门新的通用语言,各个学科的知识都可以“翻译”转换成系统建模语言的形式;二是可以对知识进行图形化、可视化的表示,便于读者理解;三是便于计算机处理(由于系统建模语言形式化、关联化的特点)。因此,系统建模语言便于型号系统研制中知识的理解、继承、重用和集成,便于各方的技术沟通。
当前,系统工程师使用的建模语言、工具和技术种类很多,如行为图、IDEF0、N2图等,这些建模方法使用的符号和语义不同,彼此之间不能互操作和重用。系统工程正是由于缺乏一种强壮的“标准的”建模语言,从而限制了系统工程师和其他学科关于系统需求和设计的有效通信,影响了系统工程过程的质量和效率。因此,MBSE在实践落地时,首要问题为建立一套符合行业的建模规范,称之为建模语言。
统一建模语言是面向对象的标准化建模语言[1],其主要是为了解决软件工程中暴露出的诸多问题而设计出来的,现已被各大标准组织及软件开发商接受。UML具有很多优点,如简单性、易读性等。
SysML是一种可视化建模语言[2],它由一个提供了在“基于模型”的背景环境下多种复杂系统描述方法的工具箱组成。它可以支持包含硬件、软件、信息、制造等多领域系统的描述、设计、分析、验证等。SysML并不是一个全新的建模语言,而是建立在统一建模语言(UML)的基础之上。
SysML直接重用UML的部分元素,即UML4SysML部分;采用构造类型(stereotype)机制对UML的部分元素进行扩展,形成SysML Profile。如图1-2所示,SysML共包含9 种图,其中用例图(Use Case Diagram)、序列图(Sequence Diagram)、状态机图(State Machine Diagram,STM)及包图(Package Diagram)与UML保持一致;需求图(Requirement Diagram)和参数图(Parametric Diagram,PAR)是SysML定义的全新的图;模块定义图(Block Definition Diagram,BDD)、内部模块图(Internal Block Diagram,IBD)及活动图(Activity Diagram)是在UML的类图(Class Diagram)、组合结构图(Composite Structure Diagram)、活动图基础上分别进行扩展所得的。SysML的9种图可划分为三大类,分别描述系统的需求、结构和行为三个方面。在需求方面,需求图描述系统应满足的需求及需求之间的关系。在结构方面,模块定义图用于定义模块及其属性等,内部模块图用于表示模块内部子模块之间的连接关系,参数图用于详细描述模块属性应满足的参数约束关系,包图用于对模块进行分组从而方便模块的管理。在行为方面,活动图表示系统行为的流程,序列图表示在实现行为过程中模块间的交互,状态机图表示系统的状态转换,用例图表示系统需要完成的功能。
图1-2 SysML图的分类
3.统一建模语言的意义
MBSE实践者可以通过SysML来构建系统需求、行为、结构和参数,使其可视化,以帮助解决日益增长的系统复杂性问题。SysML相对于以前的描述方式(如IDEF0)是一种更复杂的语言,通过提供描述复杂数据结构的能力支持与分析模型的有效集成。SysML中建立了一些规范来确保模型的一致性。例如,兼容性规范支持类型检查,用于确定接口是否兼容或单元的不同属性是否一致。
有效的MBSE的实施不仅需要如SysML一样能够表示系统的建模语言,而且需要有一种定义活动和制品的方法,如实现建模语言和方法的工具。