目录
DDS 模型和建模工具
1.DDS 简介
1.1 DDS 有什么
1.1.1 全局数据空间 (Global Data Space )
1.1.2 域(Domain )
1.1.3 主题(Topic )
1.1.4 发布者和订阅者(Publisher 和Suscriber )
1.1.5 数据读取器、数据写入器和数据样本(DataReaders, DataWriters, and Data Samples)
1.1.6 服务质量 (QoS)
1.2 DDS 的工作过程
1.3 DDS 的 实现
2. DDS 建模工具
2.1 The DDS Technology 插件的菜单
2.2 DDS 插件的General Options 选项
2.3 DDS 插件的Toolboxes
3. DDS 模型样例
3.1 DDS Example Models
3.1.1 模型示例1 :HelloWorld
3.1.2 模型示例2 :Net Chat
3.2 PSM – OSPLDDS
3.3 PSM – RTIDDS
3.4 «qosPolicyLibrary» QoS Policies
4. 后记
1、DDS简介
DDS (Data Distribution Service ,数据分发服务 ) 是一种基于数据的通信中间件标准,目的是建立分布式系统的高质量的数据通信.目前广泛应用于航空航天、汽车自动驾驶以及机器人、物联网等领域. DDS 的本质是一个数据总线,通过在提供一个共享数据空间,实现各个系统之间的通信。
DDS 使用发布 - 订阅通信模式来创建去中心化、架构独立、可扩展的异步网络. DDS 的标准框架中, 系统之间可以通过对一个 Topic 的发布和订阅进行通信.在 Topic 上可以指定 QoS 以保证服务质量。
DDS 有什么
DDS 首先定义了通信的基础,也就是一个共享数据空间,有如下构成: 全局数据空间( Global Data Space ) 域 (Domain) 主题( Topic )
全局数据空间 ( Global Data Space )
在 DDS 中, DDS 网络被称为全局数据空间( Global Data Space )。
域( Domain )
在全局数据空间内,您可以创建称为域( Domain )的网络的一部分.域( Domain )由域名( Domain Name )和数字域 ID ( Domain ID. ) 标识.全局数据空间( Global Data Space )内可以有一个或多个域( Domain )。
主题( Topic )
在域( Domain )中有主题 ( Topic ) .主题 ( Topic ) 描述网络上传输的数据的类型.例如,如果您有一个应用程序希望使用 DDS 接收有关天气的信息,那么主题 ( Topic ) 可以是温度.域( Domain )可以有一个或多个主题 ( Topic ) .如果您在不同的域( Domain )中有相同的主题 ( Topic ) ,则它们被视为不同的主题 ( Topic )。
DDS 标准模型然后定义了 基于数据的操作对象和服务质量参数,包括: 发布者和订阅者 ( Publisher 和 Suscriber ) 数据读取器、数据写入器和数据样本 (DataReaders, DataWriters, and Data Samples) 服务质量 (QoS)
发布者和订阅者( Publisher 和 Suscriber )
使用 DDS 的应用程序被称为域参与者( Domain Participant ),因为它们参与了域( Domain ).发送数据的应用程序称为发布者 (Publisher) ,接收数据的应用程序称为订阅者 (Suscriber) .域参与者 (Domain Participant) 可以是发布者 (Publisher) 、订阅者 (Suscriber) 或两者兼而有之。
数据读取器、数据写入器和数据样本 (DataReaders, DataWriters, and Data Samples)
数据作为数据样本 (Data Sample) 在 DDS 网络上发送和接收,由 DDS 数据类型指定.一个主题 (Topic) 注册一个 DDS 数据类型,然后称为注册类型 (Registered Type) ,以指定必须用于就该主题 (Topic) 进行通信的数据类型. Publisher 使用 DataWriter 在 DDS 网络上发送数据.一个发布者 (Publisher ) 可以有一个或多个 DataWriters , 一个 DataWriter 可以发布一个或多个 Topic . Subscriber 使用 DataReader 从 DDS 网络接收数据. Subscriber 可以有一个或多个 DataReader ,一个 DataReader 可以订阅一个或多个 Topic。
服务质量 (QoS)
除了能够发送和接收数据之外,还可以为 Publisher 、 Subscriber, 或者 DataReaders 、 DataWriters 指定描述数据传输质量的服务质量 (QoS) .众所周知, DDS 有几个 QoS 策略来帮助确保对数据传输的精确控制.您可以为这些实体分配单独的 QoS 策略,也可以分配一组称为 QoS 配置文件的 QoS 策略。
为了更好的理解 DSS 的各种对象的逻辑关系, DSS 规范还提供了元模型,如下是 DSS DCPS 的元模型的简化图:
DDS 的工作过程
DDS 在各个系统之间的通信过程如下:
Publisher 通过 DataWriter 写入数据到 Topic
Subscriber 获得通知 Subscriber 通过 DataReader 从 Topic 读取数据.
为了保证实时性和性能要求,可以在 Topic 上面定义能够满足性能需求的 QoS (服务质量参数),这样,订阅和通知就可以基于 QoS 参数确定交互的时机,进而保证实时性。
如下的 UML 顺序图说明了 DDS 的订阅通知场景中各个对象的交互过程。
DDS 的数据发布过程如下:
DDS 的数据接收过程如下:
DDS 的 实现
DDS 的标准 由对象管理组 (OMG) 标准指定.该标准提供了说明如何配置 DDS 网络以及应用程序应如何使用 DDS 网络的规范. DDS 标准由几个不同的 DDS 供应商实施.每个供应商都可以使用自己选择的编程语言来实施 DDS 标准.尽管有各种低级实现,各个 DDS 供应商的应用程序是可互操作的(使用一个供应商的应用程序可以与不同供应商的应用程序通信),因为它的供应商是按照 DDS 标准进行实现的. DDS 应用程序,由前面描述的定义组成(例如, Domain, Topic, Data Sample, Publisher, Subscriber )可以通过使用 XML 或 IDL 规格以与编程语言无关的方式定义.这些 XML 和 IDL 规格提供了在具有不同编程语言实现的不同供应商之间移植 DDS 应用程序的能力。
DDS 建模工具
DDS 本质上是一个基于数据总线的通信规范,定义了相关的对象、属性和交互模型.在 DDS 规范中采用 UML 定义了相关的对象模型、交互模型和状态规则.要完整而透彻的理解 DDS ,就需要能够阅读 DDS 的规范模型,并对 DDS 的应用建模。
作为 UML 和 Sys ML 的主流建模工具 EA 提供了 DDS 建模插件,在 UML 的基础上提供了 DDS 的 Profile。
建模工具 EA 的 DDS 插件支持: DDS 的 PIM 建模 PIM 模型到 PSM 模型的转换
从 PSM 模型到代码的生成
下面就对 EA 的 DDS 扩展插件的功能和操作进行介绍。
The DDS Technology 插件的菜单
The DDS Technology 插件子菜单如下所示:
菜单项 |
说明 |
New Application Diagram |
在当前的包中 创建一个 DDS Application diagram. 这个图扩展来自于 UML Deployment diagram。 |
New Domain Diagram |
创建一个 DDS Domain diagram. 这个图扩展自 UML Component diagram。 |
New Qos Policy Library |
创建一个 DDS Qos policy library 包.里面有 QoS 的可以使用的策略元素。 |
New Type Diagram |
创建一个 DDS Type diagram . 这个图扩展自 UML Class diagram。 |
New DLRL Diagram |
创建一个 DDS DLRL diagram. 这个图扩展自 UML Class diagram。 |
New DLRL Mapping Diagram |
创建一个 DDS DLRL Mapping diagram . 这个图扩展自 UML Class diagram。 |
Generate Code... |
打开 Generate Executable Class 对话框。 |
Open DDS Example Project |
打开 DDS 示例模型。 |
Options |
打开 DDS Options 对话框。 |
DDS 插件的 General Options 选项
General options 标签中的选项用于指定 MDG 技术用于 DDS 的一般行为和 Qos 属性。
Field/Button |
说明 |
Ignore validation warnings |
选择这个选项后可以在模型验证过程中忽略 DDS 警告信息。 |
Show as Entity Compartments |
选中复选框,使 Qos 策略使用分隔符号显示在 DDS 实体上。 |
Create Automatically for new Entities |
选中复选框,使 Qos Policy 属性在模型中创建新的 DDS 实体时自动创建. 启用此选项需要使用 Qos Policy Specifications dialog 定义 Qos 策略规格。 |
Set Specifications... |
打开 Qos Policy Specifications dialog。 |
Qos Policy Specifications Dialog
QoS 策略规格:
这个对话框用来指定当创建新的 DDS 实体时,哪个 Qos Policy Specifications 将被用作 QosProperty 元素的默认分类器. 每个策略都可以由为该策略定义的任何一个 Qos 策略规范指定。
可以使用 Defaults 按钮自动启用 MDG Technology 以便为这个项目分配规范。
MDG Technology for DDS AddIn 需要在同一台计算机上安装 RTIDDS 或 OpenSplice DDS Middleware 产品,否则无法根据特定的 DDS Middleware 生成完全可执行的项目。
配置 RTIDDS :
在将 RTIDDS 中间件安装到系统之后,它将创建一个环境变量 NDDSHOME ,该变量将是安装 RTIDDS 软件的目录. DDS AddIn 会在 RTIDDS 选项中检查此环境变量。
还需要在 RTIDDS 选项中指定一个项目根文件夹. 这是所有生成的基于 RTIDDS 的源代码的位置。 |
配置 OpenSplice DDS
OpenSplice DDS 中间件安装到系统后,它将创建一个环境变量 OSPL_HOME ,它是安装 OpenSplice DDS 软件的主目录. 外接插件会在 OSPLDDS 选项中检查这个环境变量.
还需要在 OSPLDDS 选项中指定一个项目根文件夹. 这是所有生成的基于 OpenSplice DDS 的源代码的位置。 |
RTIDDS Options
RTIDDS option 标签中的选项用于指定 RTIDDS 实现的 PIM 到 PSM 转换的行为。
注意 : 使用的 RTIDDS 版本是由 %NDDSHOME% 环境变量指定的.
界面项 |
说明 |
Project Root |
创建所有 PSM 输出的根目录。 |
Enable RTIDDS PSM |
启用或者禁用 transformer。 |
Autoname Source Files |
使 RTIDDS transformer 能够自动将文件名分配给生成的源代码 ( 推荐 )。 |
Autogenerate Source |
使 RTIDDS 转换器能够在成功生成 PSM 后自动调用代码生成过程。 |
Generate Listener for DDS Reader |
使 RTIDDS transformer 能够为每个 DDS Reader 自动生成一个 Listener 。 |
Autogenerate IDL |
使 DDS Topic Type 元素在转换过程中自动生成为 IDL 代码。 |
Run NDDSGen on completion |
使 RTIDDS 转换器能够自动调用 NDDSGEN 命令到生成的 IDL ,从而自动为实现生成特定类型的 DDS 代码。 |
Generate Listener for DDS Writer |
使 RTIDDS transformer 能够自动为 DDS Writer 生成一个 Listener 。 |
Project Files Choice |
选择 RTIDDS 转换器要生成的项目文件类型. 对于 Visual Studio . net ,工作区文件是 Solution 文件。 |
Workspace Name |
工作区的名称, 对于 Visual Studio . net ,这是解决方案的名称 。 |
Generate Shared Files in Folder: |
使 RTIDDS 转换器能够将公共共享文件生成到特定的文件夹中. 特定的文件夹是项目根文件夹的相对路径.
此选项只适用于从 “Generate Executable Class” 对话框 ( 通过选择菜单 "Addin | DDS Technology | Generate Code..." 打开对话框 ) 中生成代码时。 |
OSPLDDS Options
OSPLDDS options 标签中的选项用于指定 OpenSplice DDS 实现的 PIM 到 PSM 转换的行为. 注意 : 使用的 OpenSplice DDS 的版本是由 %OSPL_HOME% 环境变量指定的。
界面项 |
说明 |
Project Root: |
建所有 PSM 输出的根目录。 |
Enable OSPLDDS PSM |
启用或者禁用 transformer 。 |
Autoname Source Files |
使 OSPLDDS 转换器能够自动将文件名分配给生成的源代码 ( 推荐 ) 。 |
Autogenerate Source |
使 OSPLDDS 转换器能够在成功生成 PSM 后自动调用代码生成过程。 |
Generate Listener for DDS Reader |
使 OSPLDDS 转换器能够为每个 DDS Reader 自动生成一个 Listener。 |
Autogenerate IDL |
使 DDS Topic Type 元素在转换过程中自动生成为 IDL 代码。 |
Generate DLRL Source |
以启用在转换过程中自动生成的 DLRL 专用接口和类的代码。 |
Generate Listener for DDS Writer |
使 OSPLDDS 转换器能够自动为 DDS Writer 生成一个 Listener 。 |
Project Files Choice |
选择要生成 OSPLDDS 转换器的项目文件类型. 对于 Visual Studio . net ,工作区文件是 Solution 文件。 |
Workspace Name |
工作区的名称. 对于 Visual Studio . net ,这是解决方案的名称。 |
Generate Shared Files as Library: |
使 OSPLDDS 转换器能够将公共共享文件生成到特定的文件夹中. 特定的文件夹是项目根文件夹的相对路径。
此选项只适用于从 “Generate Executable Class” 对话框 ( 通过选择菜单 "Addin | DDS Technology | Generate Code..." 打开对话框 ) 中生成代码时。 |
DDS 插件的 Toolboxes
下面介绍用于 DDS 的 MDG 技术所提供的工具箱. Domain Local Reconstruction Types QoS Application Target
Domain
Domain 工具箱提供了用于设计以数据为中心的发布订阅 (DCPS) 服务的元素和连接器(为 DDS 系统)。
Toolbox |
Element |
Description |
|
Package |
一种包元素,用于包含和组织其他 DDS 元素。 |
Domain |
表示 DDS DCPS Domain 的构造型的 Part 元素。 |
Domain Participant |
一个构造的组件元素,它代表一个 DDS DCPS Domain Participant . 它应用以下标记值 : domain: 这个 DomainParticipant 参与的 DDS DCPS Domain。 |
Subscriber |
表示 DDS DCPS Subscriber 的构造型 Part 元素. 它被建模为 DomainParticipant 的子元素,并且可以包含一个或多个 DataReader 元素作为其子元素。 |
Data Reader |
一个构造的 Port 元素,它代表一个 DDS DCPS DataReader . 它被建模为 Subscriber 的子元素,并且可以连接到它所读取的 DDSTopic 。 |
Publisher |
表示 DDS DCPS Publisher 的构造 Part 元素. 它被建模为 DomainParticipant 的子元素,并且可以包含一个或多个 DataWriter 元素作为其子元素。 |
Data Writer |
一个构造的 Port 元素,它代表一个 DDS DCPS DataWriter . 它被建模为 Publisher 的子元素,并且可以连接到它写入的 DDS Topic 。 |
Qos Property |
一个构造的 Part 元素,它代表一个 DDS DCPS Entity 的 DDS Qos Policy . 它被建模为以下 DCPS 实体的子元素 : DomainParticipant Subscriber Publisher DataReader DataWriter Topic
属性的名称指定由属性定义的 Qos Policy . 它还由 Qos 策略规范指定类型,该规范定义了该策略的特定属性。
提示: Qos 属性必须由 Qos 策略规格来定义,这样才能为 Qos 策略提供正确的标记值 . 有关 Qos 策略规格的更多信息,请参见 DDS Qos Policies。 |
Topic |
表示 DDS DCPS Topic 的构造的 Part 元素. DDS Topic 连接到一个或多个 DataReader 和 DataWriter 元素,这些元素执行向该 Topic 读取或写入数据的角色. 它应用以下标记值 : expression: 字符串表达式,用作应用于该 Topic 的过滤器 (CONTENT_FILTERED) ,或用作应用于该 Topic 的订阅查询 (MULTI_TOPIC) kind: 一个代表 Topic 类型的枚举 ——STANDARD, MULTI_TOPIC, CONTENT_FILTERED type: type 元素是一个 IDL 类. |
Connector |
连接 DataReader/DataWriter 和 Topic 的连接器 |
Local Reconstruction
DLRL 工具箱提供了用于设计数据本地重建层( Data Local Reconstruction Layer , DLRL )服务的元素和连接器(为 DDS 系统).
Toolbox |
Element |
Description |
|
|
Class |
代表 DDS DLRL 类的构造的 Class 元素. 它应用以下标记值 :
mappedTopic: 这个 DLRL Class 映射到的 DDS Topic。 |
Attribute |
一个 Attribute 的构造型,它代表了一个 DLRL Class 中的一个 Attribute . 它应用以下标记值 : mappedField: 该属性为 DLRL 读写操作映射到的 DDSTopic 类型的字段。 |
Cache |
一个 Component 的构造型,表示一个 DDS DLRL 缓存. 它可以包含一个或多个 ObjectHome 元素作为其子元素,并与它处理的 DLRL Class 相关联。 |
Object Home |
一个 part 的构造型,它代表一个 DDS DLRL ObjectHome. . 它被建模为 Cache 元素的子元素,并且可以与一组 DCPSTopic 相关。 |
Topic Manager |
一个 Port 的构造型,代表一个 DDS DLRL TopicManager . 它被建模为 ObjectHome 元素的 port ,并且可以代表其相关的 ObjectHome 连接到特定的 DCPS Topic 。 |
Filter Criterion |
一个 Class 元素的构造型,它表示一个 DDS DLRL FilterCriterion . 它应用以下标记值 :
filterClass: 实现 filterCriterion "check_object" 操作的 DLRL Class 。 |
Relationship |
Description |
Key |
一个 Attribute Topic 字段的构造型,这个字段表示相应的 Topic 示例的标识. 有些 Topic 可能有多个关键字段来确定它们的身份。 |
Foreign Key |
一个 Attribute Topic field 的构造型,它表示对另一个 Topic 的关键字段的引用. 它用来形成 Topic 之间的关系。 |
Shared Key |
一个 Attribute Topic field 的构造型,它同时是主键和外键。 |
Relation |
代表两个 DLRL Class 之间 Association 的关系的构造型。 |
Types
DDS Types 工具箱提供了用于 DDS Types diagram 的 type 和 feature .
|
元素 |
说明 |
Module |
代表 IDL Module , Class 的构造型。 |
Struct |
代表 IDL Struct , Class 的构造型。 |
Valuetype |
代表 IDL Valuetype , Class 的构造型。 |
Array |
代表 IDL Array , Class 的构造型。 |
Enumeration |
代表 IDL Enumeration , Class 的构造型。 |
Interface |
代表 IDL Interface , Class 的构造型。 |
Sequence |
代表 IDL Sequence , Class 的构造型。 |
Typedef |
代表 IDL TypeDef , Class 的构造型。 |
Union |
代表 IDL Union , Class 的构造型。 |
Features |
Description |
Field |
代表 IDL field , Attribute 的构造型。 |
Key |
代表作为唯一标识(或者一部分)的 IDL field , Attribute 的构造型。 |
Foreign Key |
代表是另一个 IDL Element 的关键字段的 IDL field , Attribute 的构造型。 |
Constant |
代表 IDL Constant , Attribute 的构造型。 |
Method |
代表 IDL Method , Operation 的构造型。 |
QoS
DDS Qos Policies 工具箱提供了在 DDS Qos Policies Library diagram 上使用的元素.
toolbox |
元素 |
说明 |
|
Deadline |
一个 Class 元素的构造型,它指定了 Deadline Qos Policy . 它应用以下标记值 : period: 持续时间以纳秒为单位 ( 默认为 -1) . |
Destination Order |
A stereotyped Class element that specifies the Destination Order Qos Policy. It applies the following Tagged Values:
指定 Destination Order Qos Policy ,是 Clas 的构造型 . 它应用以下标记值 : kind : Enumeration: BY_RECEPTION_TIMESTAMP (default), BY_SOURCE_TIMESTAMP. |
Durability Service |
指定 Durability Service Qos Policy, 是 Class 的构造型. 它应用以下标记值 : history_depth: Integer depth value (default 1) history_kind: Enumeration: KEEP_LAST (default), KEEP_ALL max_instances: Integer maximum value (default -1 to keep all instances) max_samples: Integer maximum samples (default -1 to keep all samples) max_samples_per_instance: Integer maximum samples per instance (default -1 to keep all samples per instance) service_cleanup_delay: duration in nanoseconds (default 0). |
Durability |
A stereotyped Class element that specifies the Durability Qos Policy. It applies the following Tagged Values: kind : Enumeration: TRANSIENT, TRANSIENT_LOCAL, VOLATILE (default), PERSISTENT. |
Entity Factory |
A stereotyped Class element that specifies the EntityFactory Qos Policy. It applies the following Tagged Values: autoenable_created_entities : Boolean (default true). |
Group Data |
A stereotyped Class element that specifies the Groupdata Qos Policy. It applies the following Tagged Values: datavalue : String. |
History |
A stereotyped Class element that specifies the History Qos Policy. It applies the following Tagged Values: depth : Integer (default 1) kind : Enumeration: KEEP_LAST (default), KEEP_ALL. |
Latency Budget |
A stereotyped Class element that specifies the LatencyBudget Qos Policy. It applies the following Tagged Values: duration : duration in nanoseconds (default 0). |
Lifespan |
A stereotyped Class element that specifies the Liveliness Qos Policy. It applies the following Tagged Values: duration : duration in nanoseconds (default 0). |
Liveliness |
A stereotyped Class element that specifies the Deadline Qos Policy. It applies the following Tagged Values: kind : Enumeration: AUTOMATIC (default), MANUAL_BY_PARTICIPANT, MANUAL_BY_TOPIC lease_duration : duration in nanoseconds (default -1). |
Ownership Strength |
A stereotyped Class element that specifies the Ownership Strength Qos Policy. It applies the following Tagged Values: value : Integer (default 0). |
Ownership |
A stereotyped Class element that specifies the Ownership Qos Policy. It applies the following Tagged Values: kind : Enumeration: SHARED (default), EXCLUSIVE. |
Partition |
A stereotyped Class element that specifies the Partition Qos Policy. It applies the following Tagged Values: name : String. |
Presentation |
A stereotyped Class element that specifies the Presentation Qos Policy. It applies the following Tagged Values: access_scope : Enumeration: INSTANCE (default), TOPIC, GROUP coherent_access : Boolean (default false) ordered_access : Boolean (default false). |
Reader Data Lifecycle |
A stereotyped Class element that specifies the ReaderData Lifecycle Qos Policy. It applies the following Tagged Values: autopurge_nowriter_samples_delay : duration in nanoseconds (default -1). |
Reliability |
A stereotyped Class element that specifies the Reliability Qos Policy. It applies the following Tagged Values: kind : Enumeration: BEST_EFFORT (default), RELIABLE. max_blocking_time : Integer (default -1). |
Resource Limits |
A stereotyped Class element that specifies the Resource Limits Qos Policy. It applies the following Tagged Values: max_instances : Integer maximum value (default -1 to keep all instances) max_samples : Integer maximum samples (default -1 to keep all samples) max_samples_per_instance : Integer maximum samples per instance (default -1 to keep all samples per instance). |
Time Based Filter |
A stereotyped Class element that specifies the Time Based Filter Qos Policy. It applies the following Tagged Values: minimum_separation : duration in nanoseconds (default 0). |
Topic Data |
A stereotyped Class element that specifies the Topic Data Qos Policy. It applies the following Tagged Values: value : String. |
Transport Priority |
A stereotyped Class element that specifies the Transport Priority Qos Policy. It applies the following Tagged Values: value : Integer (default 0). |
User Data |
A stereotyped Class element that specifies the User Data Qos Policy. It applies the following Tagged Values: value : String. |
WriterData Lifecycle |
A stereotyped Class element that specifies the WriterData Lifecycle Qos Policy. It applies the following Tagged Values: autodispose_unregistered_instances : Boolean (default true). |
Application Target
DDS Application 工具箱提供了在 DDS Application diagram 上使用的元素和连接器.
Toolbox |
元素 |
说明 |
|
DDS Application |
表 示 DDS application, 是 Component 的构造型. 它被用来表示单个 DomainParticipant 的可编译软件工件 ( 使用 Use 关系 ) .
Application Component 是 DDS 应用程序,它被转换过程用来指定 DDS 实现的 PSM . 它应用以下标记值 :
language: An enumeration representing the target software language for this application implementation - C, C++, Java and C#。
platform: An enumeration representing the target implementation platform for this application implementation - i86Win32, i86JDK13。 |
连接关系 |
说明 |
Domain Participant / Cache Use |
Dependency 关系的构造型,表示 Application 对 DDS DomainParticipant 或者 Cache 的使用. 许多应用程序可以根据需要使用相同的 DomainParticipant/Cache 来创建异构的 DDS 设计。 |
Association |
一个 association 关系. 需要一个 DLRL 缓存来关联一个相关的 DCPS DomainParticipant 。 |
提示 :
• 目前只有 RTIDDS 转换支持 c# 。
DDS 模型样例
为了让读者更好的理解和使用 DDS ,我们建立了 DDS 的模型样例,内容如下:
DDS 模型样例提供如下内容: DDS Example Models :提供 2 个模型示例的 PIM (平台无关的模型) 模型示例 1 : HelloWorld 模型示例 2 : Net Chat PSM – OSPLDDS :面向 OSPLDDS 的平台相关模型的映射 PSM – RTIDDS :面向 RTIDDS 的平台相关模型的映射 «qosPolicyLibrary» QoS Policies : QoS 策略库
下面逐一介绍.
DDS Example Models
这个 DDS 示例模型举例说明了 有效的使用 DDS 的 UML Profile 进行 DDS 应用的建模。
也举例说明了使用 UML 对数据为中心的发布订阅( DCPS )层和数据本地重建层 r (DLRL) 进行建模以便产生可执行的源代码模型,以便更好地集成。
模型示例 1 : HelloWorld
领域图: Hello World DCPS
如下是 Hello World DCPS 领域图:
这个图包含数据为中心发布订阅元素,这些元素用于 Hello World DDS 应用。
这个图定义 2 个参与者,分别负责发布和订阅主题数据,这些主题数据被 Hello World 主题所定义。
类型图: Hello World
这个图包含 Hello World DDS 应用的 DCPS 主题和 IDL 类型元素,它定义了 DDS 主题和它的 相应的数据结构.而这些数据结构被 Hello World Type 定义。
应用图: Hello World
这个图包含了领域参与者和应用目标元素(这些元素定义了这 Hello World 应用的每个实现) 。
每个应用目标定义了一个领域参与者的实现的“用法“.而这个领域参与者是为了定义软件语言和平台。
模型示例 2 : Net Chat
DCPS
领域图: Net Chat DCPS Domain Diagram
这个图包含以数据为中心的发布和订阅元素.这些元素是为 Net Chat DDS 应用定义的。
这个图定义了 2 个参与者,它们可以发布和订阅 主题数据,而这些主题数据被用户和消息主题所定义。
类型图: Net Chat
这个图包含 Net Chat DDS Application 的 DCPS 和 IDL 类型的元素,它定义了 DDS 的主题和他们的对应的数据结构(这些数据结构被定义为消息和用户类型)。
DLRL
Net Chat Local Reconstruction Diagram
这个图包含 Net Chat Application 的 DLRL 类和缓存元素(这些类和缓存元素定义了本地重建的内容),每个 DLRL 类定义了一个 DCPS 主题数据的本地重建,它们由 NetChat 的缓存元素提供服务,这些缓存元素为 ChatRoom 领域的参与者提供重建服务。
Mapping 图
这个图包含 Net Chat Application 的 DLRL 类和 IDL 类型元素.它们定义了在 DLRL 类和主题数据之间的映射.每个 DLRL 类定义了属性以便映射到特定的字段,这些字段被定义在对应的 IDL 主题类型.它们也定义了互相之间的“关系“,这些关系建立了在 2 各类之间的数据依赖。
Application
Net Chat Application 图
这个图包含领域参与者( Domain Participant )和应用目标 ( Application Target ) 元素.它们定义了 Net Chat Application 的每个实现. 每个应用目标( Application Target )为特定的软件编程语言和平台定义了一个领域参与者( Domain Participant )的实现的“ usage “。
PSM – OSPLDDS
特定平台的模型 ( Platform Specific Models,PSM )- OpenSplice DDS。
这个图包含为每个示例应用自动生成的模型集合.每个包包含软件类的集合.这些软件类为 Open Splice DDS 平台实现了每个应用。
PSM – RTIDDS
特定平台的模型 (Platform Specific Models,PSM)- RTI DDS 。
这个图包含为每个示例应用自动生成的模型集合.每个包包含软件类的集合.这些软件类为 RTI DDS 平台实现了每个应用。
«qosPolicyLibrary» QoS Policies
QoS Policy Library (服务质量 策略库)。
这个图包含 DoSe 策略元素,为一个 DDS 设计提供了一个 QoS 策略数值的“库“ 。
通过定义由这些元素类型化的 qosProperty 项,每个 DCPS 元素都可以使用这些元素。
DDS 模型样例详细信息,请浏览模型库: DDS 模型样例
4、后记
希望您读了此文后有所受益.
如果您有经验乐于分享,欢迎投稿给我们,如果您对我们的培训、咨询和工具感兴趣,欢迎了解:
建模工具: EA
MBSE 平台: iSpace
模型 web 浏览工具: WebEA
课程: 基于SysML和EA进行系统设计与建模
课程: 基于UML和EA进行系统分析设计
咨询方案: MBSE( 基于模型的系统工程 )
咨询方案: 基于 UML 的模型驱动的开发
所有建模有关的课程: http://www.modeler.org.cn/course/index.asp
咨询方案: 基于模型的工程管理
如果您希望了解更多信息:
作者简介:
俎涛,火龙果软件工程创始人, 2001 年创立了火龙果软件工程, 2004 年创立了 IBM Rational 用户组. 1998 年,曾作为骨干参与国家重点研究课题《面向特定领域基于组件的软件复用》,有幸比较深入的学习和使用的 UML 进行领域建模、提炼可复用组件和架构.在后来的研发项目中,一直采用模型进行分析设计,积累了一些心得和经验.在以往的经历中,最大的感触是汇聚了很多精英人才的软件工程和系统工程领域居然几十年都是一种凌乱迷蒙的状态,从自己的经历所得,觉得清晰的模型,才是拨开工程迷雾的关键所在,所以不断研究和应用各种建模技术,并从自己的工程实践中提炼经验,形成对于自己可持续的方法论,例如《 Nature Model Language- 自然建模语言》《基于模型的三维研发管理》《 iProcess 过程改进方法》《基于模型的需求管理》《模型驱动的架构设计》《基于模型的质量管理》《基于模型的人员能力管理》,目前正在作为产品经理和架构师,进行 MBSE (基于模型的系统工程)平台的研发,希望建立要给基于模型的工程解决方案,后续会不断写些文章,希望能给同行一些借鉴. |
|