当前位置:网站首页>UML系列文章(28)体系结构建模---协作
UML系列文章(28)体系结构建模---协作
2022-06-11 03:23:00 【CoderIsArt】
- 协作、实现和交互
- 对用况的实现建模
- 对操作的实现建模
- 对机制建模
- 交互的具体化
在系统体系结构的语境中,协作允许为一个既包括静态方面也包括动态方面的概念组块命名。协作为一个由类、接口和其他元素组成的群体命名,它们共同工作,提供了比各个部分的总和更强的合作行为。
利用协作可以详细说明用况和操作的实现,并为体系结构重要的系统机制建模。
1. 入门
一个质量好的软件密集型系统不仅功能合理,而且也应该体现设计的和谐和平衡,以使得它易于修改。这种和谐与平衡经常来自这样一个事实:所有结构良好的面向对象系统都充满了模式。观察一下优质的面向对象系统,会发现一些元素以共同的方式一起工作,提供了比其所有组成部分的总和更强的合作行为。在结构良好的系统中,许多元素将以各种不同的组合参与到不同的机制中。
在UML中,用协作来对机制建模。协作为系统中的交互构造块指定一个名称,其中既包含结构元素也包含行为元素。例如,可能有一个分布式管理信息系统,它的数据库分布在几个结点上。从用户角度看,更新信息看起来像是原子动作;但从系统内部看,就不那么简单,因为这个动作要访问几台机器。为了给出简单的描述,需要设计一种事务机制,使得客户能够用它对这种甚至跨越多个数据库,但看起来像是简单的、原子的事务命名。这样一种机制可能跨越多个类,它们共同工作,以完成一个事务。其中许多类也可以被包含到其他机制中,例如使信息永久化的机制。这些类的集合(结构部分)与它们之间的交互(行为部分)一起构成了一种机制,在UML中可以用协作来表示。
协作不仅可以对系统的机制命名,也可以作为用况和操作的实现。
UML为协作提供了一种图形表示,虚框椭圆。这种表示法允许可视化系统的结构和行为构造块,特别是当这些构造块覆盖类、接口以及系统中的其他元素时。

2. 术语和概念
协作(collaboration)是一组类、接口和其他元素的群体,它们共同工作以提供比各组成部分的总和更强的合作行为。协作也是关于一个像类目(包括类、接口、构件、结点或用况)或操作那样的元素如何由一组以特定方式扮演特定角色的类目和关联来实现的规约。通常,协作的图形表示法是把它画成一个虚线椭圆。
2.1 名称
每个协作都必须有一个有别于其他协作的名称。名称(name)是一个文本串。单独一个的名称叫做简单名(simple name); 受限名(qualified name)是用作协作存在于其内的包作为前缀的协作名。
2.2 结构
协作有两个方面:一个是结构部分,它详细说明共同工作以完成协作的类、接口和其他元素;二是行为部分,它详细说明关于这些元素如何交互的动态性。
协作的结构部分是一个内部(复合)结构,它可以包括对类、接口、构件以及结点等类目的任意组合。在协作中,这些类目可以用各种常用的UML关系(包括关联、泛化和依赖关系)来组织。事实上,协作的结构方面可以使用UML的所有结构建模机制。
与结构化类不同的是,协作不能拥有自己的结构元素,而仅引用或使用在其他地方声明的类、接口、构件、结点和其他结构元素。这也是为什么把协作称作系统体系结构中的概念组块而不称作物理组块的原因。一个协作可以跨越系统的多个层次。此外,同一个元素可以出现在多个协作中。
在零售系统中可以定义一个叫做结点间消息通信的协作,它详细描述结点间安全消息通信的细节。

2.3 行为
协作的结构部分通常用组合结构图来表示,而行为部分通常用交互图来表示。交互图详述了一个交互,该交互表示一个行为,其中包括在特定语境中为达到特定目的而在一组对象之间交换的一组消息。一个交互的语境是由包括它的协作提供的,该协作确定了其实例可能参与这种交互的类、接口、构件、结点和其他结构元素。
协作的行为部分可以由一个或多个交互图描述。如果想强调消息的时间顺序,就用顺序图。如果想强调协作时对象之间的结构关系,则采用协作图。因为多少情况下它们在语义上是等价的,所以这两种图都可以采用。
展开上图的协作结点间消息可以显示如下所示的交互图。

4. 组织协作
系统体系结构的核心是在它的协作中发现的,因为形成系统的那些机制体现了重要的设计决策。所有结构良好的面向对象系统都是由一组规模适当而规范的协作组成的,所以组织好协作是很重要的。有两种与协作有关的关系值得考虑
1)协作和它所实现的事物之间存在着一种关系。协作既可以实现一个类目也可以实现一个操作,这意味着协作详细地表示了该类目或操作在结构和行为上的实现。
2)协作之间也存在关系。一些协作可以精化另一些协作,可以把这种关系建模为精化关系。

3. 常用建模技术
1)对角色建模
下图展示了交换机语境中用于初始通话的一个不完整场景。

2)对用况的实现建模
下图展示了一组从信用卡验证系统中提取的用况

3)对操作的实现建模

4)对机制建模
对所有结构良好的面向对象系统中,都会发现一系列模式。一方面,可以找到一些惯用法,它们代表了实现语言的使用模式。另一方面,会发现一些刻画整个系统并形成特定风格的体系结构模式和框架。在这两者之间,会发现代表系统中通用设计模式的机制,通过这些机制,系统中的事物以共同的方式彼此交互。可以用UML将这些机制建模为协作。
4. 提示与技巧
当用UML对协作建模时,记住每个协作既可表示一个用况或操作的实现,又可作为系统的机制而单独存在。一个结构良好的协作,应满足如下要求:
- 包括结构和行为两个方面。
- 提供对系统中可识别的交互的明确抽象。
- 很少是完全独立的,而是要与其他协作的结构元素交叉。
- 是可理解的,并且是简单的。
当用UML绘制一个协作时,要遵循如下的策略:
- 仅当理解该协作与其他协作、类目、操作或整个系统之间的关系是必要的时候,才将此协作在图中显示地画出,否则仅把它保存在模型的基架中。
- 按协作所表示的类目或操作来组织协作,或者将协作组织在整个系统相关的包中。
边栏推荐
- 科技PRO实力测评:高端按摩椅市场综合PK,究竟谁才配得上机皇?
- Start QQ through the program to realize automatic login
- {dataSource-1} closing ... {dataSource-1} closed
- Hough transform of image
- three. JS cool technology background H5 animation
- Pyqt5:qlineedit control code
- Logical deletion_ Swagger2 framework integration
- JS top icon menu click to switch background color JS special effect
- sonarqube平台基础使用
- postgresql源码学习(22)—— 故障恢复③-事务日志的注册
猜你喜欢

B_ QuRT_ User_ Guide(18)

JS click the sun and moon to switch between day and night JS special effect

postgresql源码学习(二十)—— 故障恢复①-事务日志格式

ArTalk | 如何用最小投入,构建国产超融合进化底座?

Detailed explanation of unity project optimization (continuous supplement)

js点击太阳月亮切换白天黑夜js特效

Dépannage du problème de retard des données de communication du micro - ordinateur à puce unique

Free flying animation of paper plane based on SVG

WinDbg-虚拟机-双机调试-驱动文件的调试

计算机视觉(AI)面试大全
随机推荐
sonarqube平台基础使用
Mavros控制无人机在gazebo环境下进行双目SLAM
MySQL learning notes: JSON nested array query
If not, use the code generator to generate a set of addition, deletion, modification and query (2)
Hqchart nailing applet tutorial 1- create a K-line diagram
B_ QuRT_ User_ Guide(16)
WEB上传文件预览
Shell reads files by line
SSL交互过程
cv. Matchtemplate image model matching opencv
canvas旋转绘图h5动画js特效
canvas绘图——如何把图形放置画布中心
HQChart实战教程55-欧易网K线面积图
VMware virtual machine IP, gateway settings. The virtual machine cannot be pinged to the Internet
PostgreSQL source code learning (22) - fault recovery ③ - transaction log registration
canvas+svg线条粒子动画网页背景
路径计数2(dp + 组合数)
If there is no separation ----- > > log interpretation (3)
svg实现纸飞机自由的飞翔动画
Pyqt5: basic usage of label control