《系统架构:复杂系统的产品设计与开发》——第3章,第3.6节架构展示工具:SysML与OPM

简介:

本节书摘来自华章出版社《系统架构:复杂系统的产品设计与开发》一书中的第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

在OPM中,对象用方框表示(在SysML中,对象出现在结构性的图表中),过程用椭圆表示(在SysML中,过程出现在行为图中),第4章和第5章会分别讨论对象与过程。与SysML不同,OPM会把对象及过程合起来放在同一张图中,并且用不同类型的关系对其进行连接。有些对象充当某种过程的工具,而另一些对象则是过程所要改变的物体(参见图3.6)。这些关系将在第6章中讨论。
OPM的一个重要特点,就是它并不会针对系统创建多个不同的视图,或多种不同类型的图表,而是只会为系统创建一个集成模型。多张SysML图所表示的信息可以融合到一张含有对象、过程及关系的OPM图中。
图3.6OPM图用同一张视图来展示对象、过程及其关系。该图由OPM的发明者、系统架构师Dov Dori所绘制


91409f80c6d4a459df00328de3ae960e90681d51

SysML与OPM都可以很好地展示系统架构,而且它们之间有很多共同之处。比如,表3.2中就列出了如何用这两种图来展示同一种系统分解方式,或展示实体之间的同一种逻辑关系。若想把整个系统的SysML图都转换成OPM图,或把整个系统的OPM图都转换成SysML图,那将会比较复杂。可以查阅本章的参考资料[9],以了解如何从OPM模型中生成SysML视图。笔者在书中主要使用OPM图来表示系统架构,在必要时,也会给出相应的SysML图。
表3.2 用SysML和OPM来表示实体的体系及实体间的逻辑关系


4400808ae27ba64d307df136266c5b2c2df10692
相关文章
|
9天前
|
存储 数据采集 监控
信息系统架构开发方法ADM
信息系统架构开发方法ADM
37 5
|
11天前
|
存储 SQL 网络协议
C语言C/S架构PACS影像归档和通信系统源码 医院PACS系统源码
医院影像科PACS系统,意为影像归档和通信系统。它是应用在医院影像科室的系统,主要的任务是把日常产生的各种医学影像(包括核磁、CT、超声、各种X光机、各种红外仪、显微仪等设备产生的图像)通过各种接口(模拟、DICOM、网络)以数字化的方式海量保存起来,并在需要的时候在一定授权下能够快速地调回使用。同时,PACS系统还增加了一些辅助诊断管理功能。
38 11
|
23天前
|
API 数据库 开发者
构建高效可靠的微服务架构:后端开发的新范式
【4月更文挑战第8天】 随着现代软件开发的复杂性日益增加,传统的单体应用架构面临着可扩展性、维护性和敏捷性的挑战。为了解决这些问题,微服务架构应运而生,并迅速成为后端开发领域的一股清流。本文将深入探讨微服务架构的设计原则、实施策略及其带来的优势与挑战,为后端开发者提供一种全新视角,以实现更加灵活、高效和稳定的系统构建。
23 0
|
24天前
|
传感器 存储 数据采集
04 深度解析物联网架构与技术应用于农业大棚系统
本文将深入探讨物联网架构在农业大棚系统中的应用,从设备接入、边缘网关、数据传输到云平台和应用平台,逐层解析其技术应用与通信协议,为读者全面呈现物联网在农业领域的实际运用场景。
|
9天前
|
存储 开发框架 前端开发
前端框架EXT.NET Dotnet 3.5开发的实验室信息管理系统(LIMS)成品源码 B/S架构
发展历史:实验室信息管理系统(LIMS),就是指通过计算机网络技术对实验的各种信息进行管理的计算机软、硬件系统。也就是将计算机网络技术与现代的管理思想有机结合,利用数据处理技术、海量数据存储技术、宽带传输网络技术、自动化仪器分析技术,来对实验室的信息管理和质量控制等进行全方位管理的计算机软、硬件系统,以满足实验室管理上的各种目标(计划、控制、执行)。
|
11天前
|
消息中间件 监控 持续交付
构建高效微服务架构:后端开发的进阶之路
【4月更文挑战第20天】 随着现代软件开发的复杂性日益增加,传统的单体应用已难以满足快速迭代和灵活部署的需求。微服务架构作为一种新兴的分布式系统设计方式,以其独立部署、易于扩展和维护的特点,成为解决这一问题的关键。本文将深入探讨微服务的核心概念、设计原则以及在后端开发实践中如何构建一个高效的微服务架构。我们将从服务划分、通信机制、数据一致性、服务发现与注册等方面入手,提供一系列实用的策略和建议,帮助开发者优化后端系统的性能和可维护性。
|
2月前
|
监控 Java 开发者
构建高效微服务架构:后端开发的新范式
在数字化转型的浪潮中,微服务架构以其灵活性、可扩展性和容错性成为企业技术战略的关键组成部分。本文深入探讨了微服务的核心概念,包括其设计原则、技术栈选择以及与容器化和编排技术的融合。通过实际案例分析,展示了如何利用微服务架构提升系统性能,实现快速迭代部署,并通过服务的解耦来提高整体系统的可靠性。
|
2月前
|
NoSQL Java Redis
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件(二)
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件
15 0
|
2天前
|
安全 Java 开发者
构建高效微服务架构:后端开发的新范式Java中的多线程并发编程实践
【4月更文挑战第29天】在数字化转型的浪潮中,微服务架构已成为软件开发的一大趋势。它通过解耦复杂系统、提升可伸缩性和促进敏捷开发来满足现代企业不断变化的业务需求。本文将深入探讨微服务的核心概念、设计原则以及如何利用最新的后端技术栈构建和部署高效的微服务架构。我们将分析微服务带来的挑战,包括服务治理、数据一致性和网络延迟问题,并讨论相应的解决方案。通过实际案例分析和最佳实践的分享,旨在为后端开发者提供一套实施微服务的全面指导。 【4月更文挑战第29天】在现代软件开发中,多线程技术是提高程序性能和响应能力的重要手段。本文通过介绍Java语言的多线程机制,探讨了如何有效地实现线程同步和通信,以及如
|
7天前
|
持续交付 API 开发者
构建高效微服务架构:后端开发的新范式
【4月更文挑战第24天】 随着现代软件系统的复杂性日益增加,传统的单体应用已难以满足快速迭代与灵活扩展的需求。微服务架构作为一种新兴的软件开发模式,以其服务的细粒度、独立部署和弹性伸缩等优势,正在逐渐成为后端开发的重要趋势。本文将深入探讨微服务架构的设计原则、关键技术以及在实际业务中的应用实践,旨在为后端开发者提供构建和维护高效微服务架构的参考指南。