本节书摘来自华章出版社《系统架构:复杂系统的产品设计与开发》一书中的第3章,第3.6节架构展示工具:SysML与OPM,作者[美]布鲁斯·卡梅隆,更多章节内容可以访问云栖社区“华章计算机”公众号查看
3.6架构展示工具:SysML与OPM
3.6.1视图与投射
对复杂系统的架构所做的描述,包含着巨量的信息,其信息量远远超过了人的理解能力。那么,这些信息应该如何展示才好呢?主要办法有两种。一种是维护一个集成模型,并根据需要对其进行投射。另一种是在模型中维护多个视图。
这两种方法在传统的民用建筑中都有所体现。3D计算机渲染工具尚未发明之前,建筑师会绘制许多视图(view,例如建筑物某一层的平面图、外立面及各个剖面等),这些视图可以用作盖楼时的指导文档。但是这些视图之间未必能够保证彼此一致,而且也不能保证楼房盖好之后,所有的部分都正确地连在一起。
3D渲染技术发明之后,建筑师就可以构建集成的3D模型了。当建筑师需要某个特定的视图时,软件会把模型投射(project)到2D平面上,以展示我们想要突出的那一部分,例如某个楼层、某个外立面或某个剖面。由于这些投射都是从同一个3D模型中做出来的,因此它们必然能够保持彼此一致。
这两种办法也用在系统架构中。我们可以构建一个比较大的集成模型,然后在必要时对其进行投射,以获取视图。也可以先构建视图,然后看看它们能不能形成协调一致的整体。这两种做法都是较为常见的。
在当前的各种架构展示工具中,对象过程方法(Object Process Methodology,OPM)采用集成模型[4],也就是把与形式、功能、实体及关系有关的信息全都融入同一个模型中。另外一种架构展示方式是采用不同的视图来表示这些信息。系统建模语言(Systems Modeling Language,SysML)[5]及美国国防部架构框架(Department of Defense Architecture Framework,DoDAF)[6]采用的都是这种方式。
下面将要讲述SysML与OPM这两种工具。它们几乎同时出现在21世纪第1个十年的早期,并且都是广为使用的工具。本书只会概述这两种工具,而不会详细描述各种视图及图表。若想了解详情,请查阅参考文档。本书第二部分将深入讲解这两种架构展示方式。
3.6.2SysML
SysML是在2003年由对象管理组织(Object Management Group,OMG)和系统工程国际委员会(International Council on Systems Engineering,INCOSE)联合开发的,它对软件工程中的统一建模语言(Unified Modeling Language,UML)[7]进行了改编,使其能够适应系统工程师的需求。SysML使用UML的一个子集,并添加了一些有助于对系统需求及系统效能进行建模的新特性。
原版的UML包含13种图或视图。其中,有6种用来描述软件的结构(类图、包图、对象图、组件图、复合结构图及部署图)。其他7种用来描述软件的行为(状态机图、活动图、用例图、时序图、通信图、时间图、交互概述图)。
如图3.5所示,最新版的SysML(2009年)含有9种视图。其中7种直接取自UML,它们是:类图(改名为框定义图)、包图、复合结构图(改名为内部框图)、活动图、状态机图、用例图及序列图。新加入的两种图是参数图和需求图。
有关这9种图的详细讨论,请查阅Holt和Perry在2008年所写的《SysML for Systems Engineering》一书[8]。图3.5中的框定义图和内部框图,所表现的是系统的形式。框定义图展示系统中的元素,而内部框图则展示这些元素的结构。第4章会深入阐述这些概念。
需求图用来撰写与需求有关的文字,同时还用来表示各项需求之间的关系。(这与第11章对利益相关者及目标的讨论有些相似。)参数图用来表示属性的值及属性所受的约束,它所包含的细节,一般要比架构分析中遇到的细节更多一些。包图用来对模型中的各个元素进行规整。
四种行为图用来描绘功能领域及相关行为。用例图所描述的内容就是对外体现的功能及价值,这将在第5章中谈到。而其他三种图则用来从多个方面展示与功能或时间有关的行为,这两种行为将在第5章和第6章中分别讲述。
3.6.3OPM
OPM是由以色列理工学院(Technion)的Dov Dori教授研发的,它旨在将面向对象的图表与面向过程的图表合并到同一套方法中,以便对系统进行描述。
图3.5 SysML图
![c0d76acc46a0225cc3d2a8b13158e3e76e90d21e](https://yqfile.alicdn.com/c0d76acc46a0225cc3d2a8b13158e3e76e90d21e.png?x-oss-process=image/resize,w_1400/format,webp)
在OPM中,对象用方框表示(在SysML中,对象出现在结构性的图表中),过程用椭圆表示(在SysML中,过程出现在行为图中),第4章和第5章会分别讨论对象与过程。与SysML不同,OPM会把对象及过程合起来放在同一张图中,并且用不同类型的关系对其进行连接。有些对象充当某种过程的工具,而另一些对象则是过程所要改变的物体(参见图3.6)。这些关系将在第6章中讨论。
OPM的一个重要特点,就是它并不会针对系统创建多个不同的视图,或多种不同类型的图表,而是只会为系统创建一个集成模型。多张SysML图所表示的信息可以融合到一张含有对象、过程及关系的OPM图中。
图3.6OPM图用同一张视图来展示对象、过程及其关系。该图由OPM的发明者、系统架构师Dov Dori所绘制
![91409f80c6d4a459df00328de3ae960e90681d51](https://yqfile.alicdn.com/91409f80c6d4a459df00328de3ae960e90681d51.png?x-oss-process=image/resize,w_1400/format,webp)
SysML与OPM都可以很好地展示系统架构,而且它们之间有很多共同之处。比如,表3.2中就列出了如何用这两种图来展示同一种系统分解方式,或展示实体之间的同一种逻辑关系。若想把整个系统的SysML图都转换成OPM图,或把整个系统的OPM图都转换成SysML图,那将会比较复杂。可以查阅本章的参考资料[9],以了解如何从OPM模型中生成SysML视图。笔者在书中主要使用OPM图来表示系统架构,在必要时,也会给出相应的SysML图。
表3.2 用SysML和OPM来表示实体的体系及实体间的逻辑关系
![4400808ae27ba64d307df136266c5b2c2df10692](https://yqfile.alicdn.com/4400808ae27ba64d307df136266c5b2c2df10692.png?x-oss-process=image/resize,w_1400/format,webp)