一种工业级系统交互建模工具的应用--EventStudio System Designer
一种工业级系统交互建模工具的应用
【摘要】
本文以探索如何维护大规模复杂系统交互设计模型为目的,以EventHelix公司的商业付费软件EventStudio System Designer为建模工具,对大规模复杂系统的交互设计进行了应用,认为类ESSD的设计工具能大幅降低系统设计建模的开发和维护复杂度。
【关键词】
系统交互建模 建模语言 EventStudio System Designer
一、问题的提出
软件开发人员日常工作中经常需要绘制系统交互流程图,比如顺序图和活动图等,以描述系统设计行为供研发内部使用或用于外部客户交流。如果是单一简单的流程图,问题不大,传统的UML建模工具能轻松应对;但如果是规模庞大场景复杂且有相互关联的一系列流程图(长达数百页),通过传统的建模工具开发可能会导致共享片段重复/格式不一致/不易于变更等诸多问题。以上问题,有没有更好的建模方法和工具能解决?
分析目前传统的UML建模工具,对于规模庞大场景复杂的一系列系统交互流程图的绘制,在开发和维护上有如下问题:
l 传统的建模工具通过UI界面操作,不支持通过提供建模语言的方式“编译”生成流程图;
l 流程图的描述成为建模工具所特有的二进制文件,不能所见即所得,比如类似makedown的技术;
l 多个场景下相同的流程片段无法做到共享或引用,只能通过硬拷贝实现;
l 数量巨大的顺序图,如何维护统一的格式也是问题;
l 同一场景不同粒度下的呈现只能拆分成不同的流程图,无法按照detail粒度自适应生成;
l 通常情况下,不能对格式进行定制;
二、解决思路
通过以上的分析可以看到,导致目前传统UML建模工具对支持“规模庞大场景复杂的一系列系统交互流程图”效率底下的原因,主要是缺乏对领域建模语言的支持。即,是否支持通过领域建模语言的方式对流程图进行描述,并通过编辑器对建模语言所描述的流程图提供UI展现。
通过对现有开源和商业建模软件的比较分析,找到一个无限接近笔者要求的建模应用,即本文要重点介绍的EventStudio System Designer(以下简称ESSD),由EventHelix出品,目前商用发布版本已经更新到v6版本。
ESSD作为一种全新的系统工程建模方式,支持以下特性:
l 强大而简单的建模语言
提供了Feature Description Language(FDL)作为建模语言,能定义系统架构边界,描述消息交互流程,支持定时器等语言特性

l 更关注System Engineering而不是diagram layout
l 在生命周期早期发现错误
l 支持对不同的抽象层次进行自适应呈现

l 支持对多种场景建模
多个场景间相同的部分可以只定义一份,自动生成一大堆成功和失败的场景
l 丰富多余的应用程序
l 对模型进行切割和分析
l 支持定制化diagram
详细的说明,请参见ESSD用户手册。
三、实践情况
LTE控制面对UE基本流程和移动性流程的系统交互建模进行了应用试点,分别从以下几方面阐述ESSD在项目中的应用情况:
l FDL的基本语言特性
l ESSD的实践结果
3.1 FDL的基本语言特性
1. 如何定义系统模块与组件
FDL中通过“module”定义模块,“component”定义组件,“xx_component in xx_module”的方式定义组件与模块的关系,如下图所示:

通过上面的定义,FDL生成流程图时就可以生成以下流程图的表头,用于标识UML中的系统交互对象:

最多支持5层架构,

2. 如何描述消息交互
FDL中通过“->”描述消息的发送,发送方在前,接收方在后。同时可以对消息名字和补充说明进行描述。

FDL生成的流程文档如下所示:

3. 如何使用注释(C-Type Comments,Remarks和Block Remarks)
FDL中以/* comment*/的方式支持FDL代码中的注释,以(* remark*)的方式支持消息的简短说明,以[*block remark*]的方式支持消息流程交互的补充说明。

FDL生成的流程图如下图所示,分别为“remark”和“block remark”方式:

4. 如何进行分支定义(Case,IF-ELSE-ENDIF)
FDL中以case-endcase的方式支持流程的局部细节差异化,case-endcase区间内以leg标识不同的分支场景,也可以对leg标识进行if的判定。

每个分支场景作为一个独立的branch,在单个FDL生成流程图时会弹出编辑框,让用户选择以确定每一种确定场景下拥有的所有分支(leg)。

5. 如何进行流程片段共享(include)
对公共的流程片段,可以在独立的FDL中进行定义,通过include的方式进行引用。

3.2 ESSD的实践结果
以下为ESSD在项目中的实践结果,
|
场景类型 |
FDL文件数 |
FDL代码总行数 |
生成流程图文档页数 |
流程图个数 |
备注 |
|||
|
UE基本流程 |
4 |
391 |
25 |
17 |
包含2个的高度复用片段,54行 |
|||
|
UE移动性流程 |
2 |
371 |
18 |
15 |
包含2个的高度复用片段,54行 |
|||
|
|
||||||||
总体来讲,通过ESSD在项目中的应用,发现以下比较明显的优势:
Ø 通过include FDL文件的方式支持片段共享
Ø 支持局部分支场景的差异化,进而自动演变成多个独立的流程
Ø 自动调整格式并输出
Ø 流程文档规范专业,适合与客户交流时使用
同时也发现了以下不足:
Ø 不支持Unicode,即不支持中文,一大硬伤
Ø 比较遗憾,目前商用版本只提供45天的free trial,需要按license付费,最便宜的单个license版本也要299刀
四、效果评价
通过在项目中对ESSD的应用,对于规模庞大场景复杂的一系列流程图的设计,确实能尽极大的消除重复,让设计人员集中精力关注建模本身。
五、推广建议
本次ESSD在项目中的应用实践在笔者看来可以分为两个层次,一方面是应用程序本身,另一方面是方法论。
首先,ESSD的设计优势确实能有效降低对流程图的设计和维护复杂度。对于“规模庞大场景复杂的一系列流程图的设计”(反复强调这个应用场景是因为笔者觉得单一简单的设计用这个应用所带来的增益不明显),强烈推荐ESSD。
其次,ESSD通过FDL的思路解决建模问题能给我们哪些启迪。领域建模语言(Domain Modeling Language)的应用日趋火热,问题域的复杂度与日俱增越来越让大家倾向于通过DSL来描述特性领域的特定问题,而让大部分的复杂度隐藏在DSL背后。除了ESSD对FDL的应用,近来流行的markdown对文档编辑的革新,也是类似的思路。笔者是在接触DSL之前先使用的ESSD,后来才发觉两者有共通之处,同时个人也坚信DSL是未来大规模复杂软件和问题域解决的重要方向。
所以ESSD软件和ESSD对建模设计问题的解决思路,都值得大家去尝试和使用,相信一定会有所收获。
参考资料
1. EventStudio_System_Designer_Manual.pdf
2. getting-started-eventstudio.pdf
3. sequence-diagram-tutorial.pdf
一种工业级系统交互建模工具的应用--EventStudio System Designer的更多相关文章
- 三大UML建模工具Visio、Rational Rose、PowerDesign的区别
本文源自http://developer.51cto.com/art/201006/207993.htm UML建模工具Visio .Rational Rose.PowerDesign的比较 RO ...
- 【转】三大UML建模工具Visio、Rational Rose、PowerDesign的区别
本文转自http://developer.51cto.com/art/201006/207993.htm UML建模工具相信大家有所了解,那么你对UML建模工具Visio .Rational Rose ...
- UML建模工具Visio 、Rational Rose、PowerDesign的比较
UML建模工具Visio .Rational Rose.PowerDesign的比较 ROSE是直接从UML发展而诞生的设计工具,它的出现就是为了对UML建模的支持,ROSE一开始没有对数据库端建 ...
- 三大UML建模工具Visio、Rational Rose、PowerDesign
UML建模工具Visio .Rational Rose.PowerDesign的比较 应用最广的由两种种1. Rational Rose,它是ibm的 .2.Microsoft的 Microsoft ...
- KsUML 免费的类图建模工具
最近基于SharpDevelop和NClass两个开源软件,开发了一个免费的类图建模工具,详情请访问 www.TimeGIS.com KsUML类图建模工具是一个用来给软件开发人员使用的一种UML类图 ...
- uml建模工具介绍
应用最广的由两种种1. Rational Rose,它是ibm的 .2.Microsoft的 Microsoft Office Visio® 2003 3.Enterprise Architect.还 ...
- Cognos两种建模工具对于复杂日期维度的处理比较(下)
本文继Cognos两种建模工具对于复杂日期维度的处理比较(上)之后将介绍一下Cognos中建模工具Transform对复杂日期维度的处理. 二:Transform建模对于复杂日期维度的处理 为了书写效 ...
- linux 和windows系统下同时可用的UML建模工具(umbrello),超强
原文地址:linux 和windows系统下同时可用的UML建模工具(umbrello),超强 作者:zhangjiakouzf OPEN SOURCE 的 UML建模工具 -- umbrello ...
- Cognos两种建模工具对于复杂日期维度的处理比较(上)
众所周知,在数据仓库中,日期维度是相当重要的.对数据分析的过程中可以从不同的角度去分析,比如按照下面的日期层次去分析数据. 年-季度-月-日 年-月-日 年-周-日 本示例将利用简单的商品销售分析的d ...
随机推荐
- [SDN] mininet walkthrough
本次学习使用的是mininet的VM-image,所以安装过程就先忽略掉了,主要学习使用方法. 同时完成了在虚拟机上配置minient和Wireshark, 可以直接在虚拟机上操作. 1. Every ...
- Linux命令帮助中尖括号<>和方括号[]以及省略号...的含义
在方括号内的表达式("[" 和 "]"之间的字符)是可选的(写命令时要去掉括号). 在尖括号内的表达式("[" 和 "]" ...
- python文件和目录操作方法大全(含实例)
一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目 ...
- CSS基础介绍
CSS介绍 CSS是指层叠样式表,CSS样式表极大的提高了工作效率 CSS基础语法 1. 首先选择一个属性 2. 选择了属性以后,用大括号括起来 3. 括号里面是对应的属性和属性值,如: select ...
- .NET IL学习笔记(一)
参考资料: 1. <.NET IL Assembler> 2. NGEN代码产生器 3. NGEN的使用 4. IL编辑器下载 5. IL编辑器的使用 知识点: ● Common Lang ...
- Hibernate关联映射之延迟加载
什么事延迟加载? 当真正需要数据时才执行SQL语句,其本意是减少不必要的性能开销! 之前提到过一个延迟加载的例子: load();结果集不能为空 当真正去打印对象属性时,sql语句才执行! hib ...
- HDU-4534 郑厂长系列故事——新闻净化 AC自动机+DP
题意:给定一些单词,这些单词必须要是一个目标串的子串,同时给定一些串,这些串不能够出现在目标串中,其余一些串只会带来不同附加值.现在问满足前两者的情况下,要求附加值最大.数据给定一个原始串,现在要求在 ...
- MyBatis中#,$的用法区别
#可以防止SQL注入 $用在一些特殊的SQL语句例如 order by ${...} , desc/asc PS:大部分用#,一些特殊情况用$
- 带事物处理的DBHelp和sql语句
DBHelp语句 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- c#网络通信框架networkcomms内核解析之十 支持优先级的自定义线程池
NetworkComms网络通信框架序言 本例基于networkcomms2.3.1开源版本 gplv3协议 如果networkcomms是一顶皇冠,那么CommsThreadPool(自定义线程池 ...