UML
建模软件目前用的主要有3种:
商业版本:Telelogic TAU 和 Rational Rose
开源版本:StarUML
Telelogic TAU与Rational Rose的功能很强,但是需要买License。
StarUML就是希望能提供和TAU/Rose一样功能的开源版本。
目前使用起来还是不错的。
能熟练使用其中一个是软件设计人员的基本功。
1 先看Telelogic TAU:
telelogic tau
Telelogic Tau SDL Suite主要用于协议的设计、描述、验证及实现,支持图形化的SDL编辑、在线仿真和验证、代码自动生成、MSC(消息顺序图)编辑及测试用例(test case)自动生成等。SDL Suite由以下几部分组成:
SDL Editor SDL编辑器,支持图形化的SDL编辑,同时提供一个在线检查的分析器,可以立即标出编辑中的静态语法和语义错误。
SDL Simulator SDL仿真器,支持在开发环境下进行SDL系统的仿真运行,仿真结果可自动生成MSC。仿真器还可以自动穷举搜索SDL系统的所有路径,保证系统的每一个状态都是可达的。
SDL Validator SDL验证器,结合MSC验证系统行为是否与需求描述一致。
SDL Translator 代码自动生成器,支持三种代码生成:第一种是无限制的C代码生成器,支持一般的C和C++代码生成;第二种是优化的C代码生成器,支持小型嵌入式系统的优化代码生成,能满足这种系统对代码效率、最小内存和高性能的要求;第三种是CHILL代码生成器。由于在仿真和验证阶段使用的代码与最后生成的代码是相同的,这就保证了测试系统与实际运行系统的一致。
MSC Editor MSC编辑器,支持图形化的MSC编辑。
SDL Suite还支持与实际目标环境的集成。它包含一个运行库,提供SDL系统与环境打交道的源代码,支持多种操作系统,开发者可以在单任务、多任务和分布式系统之间进行选择。自动生成的代码加上指定操作系统的运行库源代码,经过合适的C编译器编译连接,即可在实际环境中运行。
Telelogic Tau TTCN Suite可以作为通信协议的测试集生成工具,支持协议一致性测试。 TTCN Suite提供给测试工程师强大的TTCN编辑器、句法分析器和编译器,可将测试方案转化为C代码,在测试设备上运行。
Telelogic Tau还提供了从SDL系统设计和MSC直接生成TTCN测试集的功能。
Telelogic Tau3.0是Telelogic的支持uml2.0的建模工具,同时提供了模型验证(Model Verifier),代码生成(code generator)。这是个欧洲公司,据说已经有14年的业内经验了。那个时候uml的版本还是负的2.0吧。
1.Uml建模
比较容易使用。
最重要的是,它对模型的要求比较严格。比如序列图中的对象或者消息,必须是已经定义的。否则会出错的。这样严格应该是为了代码生成和模型验证吧。
Tau3.0有一种特殊的图,叫做text图,一般来说是一个类的方法的实现。在text 图里面有一个action symbol,就是一个类似输入框的东西,在里面可以写代码。但是代码不是要用tau的语言来写的,不是c,也不是java。在状态机图中,也可以画action symbol。另外。还有一个图形元素叫做text symbol,也可以写代码。
为了及早检查出错误,tau有自动和手动check功能。跟ide里类似,比如函数名没定义,变量没定义等等。手动检查,可以在要检查的元素上按右键选择,或者使用快捷键f8。
好像没有timing图支持。
2.模型验证
这个应该是很多工具不具备的。
就是在uml模型上执行。要想进行模型验证和代码生成,至少需要类图和状态机图。序列图活动图,和用例图不被使用,其他图根据需要有可能被使用。需要的图和代码生成一样。
说是验证,实际上就是把模型生成可执行代码,执行。在uml模型上,能看到执行的过程等。基本的debug机能都有,step in ,step out 等,还有break point ,代码覆盖率统计的。比较不错,第一次看到时惊奇了一把。
3.代码生成
能生成c,c++,java代码。并且能编译成可执行文件。
还能生成telelogic的面向嵌入式系统的agile c。
这次我做的是生成agile c和c代码。
基本上生成的代码不可读,不可调试,里面很多宏定义,在uml建模时候的变量名,生成之后也变得乱七八糟的了。
我们设计主要集中在业务领域,通过signal和外部联系。当然内部也有signal通信了。
主函数是uml kernel提供的,不停的去检测外部环境进来的signal。默认的性能比较差,什么都不干cpu就在95%以上。
4.其他
其它也提供了一些不错的东西,比如TestingProfile,启用了这个插件,就能建立各种test case 了。而且test case 是基于序列图和状态图的,基本也不用编码,只需要画图。一组test case 建立在test context之中,这个context执行后,会生成一个xml格式的报告。
2 下面看看Rational Rose:
Rational Rose是Rational公司出品的一种面向对象的统一建模语言的可视化建模工具。用于可视化建模和公司级水平软件应用的组件构造。就像一个戏剧导演设计一个剧本一样,一个软件设计师使用Rational Rose,以演员(数字)、使用拖放式符号的程序表中的有用的案例元素(椭圆)、目标(矩形)和消息/关系(箭头)设计个种类,来创造(模型)一个应用的框架。当程序表被创建时,Rational Rose记录下这个程序表然后以设计师选择的C++, Visual Basic,Java, Oracle8,CORBA或者数据定义语言(Data Definition Language)来产生代码。Rational Rose的两个受欢迎的特征是它的提供反复式发展和来回旅程工程的能力。Rational Rose允许设计师利用反复发展(有时也叫进化式发展),因为在各个进程中新的应用能够被创建,通过把一个反复的输出变成下一个反复的输入。(这和瀑布式发展形成对比,在瀑布式发展中,在一个用户开始尝试之前整个工程被从头到尾的完成。)然后,当开发者开始理解组件之间是如何相互作用和在设计中进行调整时,Rational Rose能够通过回溯和更新模型的其余部分来保证代码的一致性,从而展现出被称为"来回旅程工程"的能力,Rational Rose是可扩展的,可以使用刻下载附加项和第三方应用软件,它支持COM/DCOM (ActiveX),JavaBeans 和 Corba组件标准.
当前市场上基于UML可视化建模的工具很多,例如有Microsoft的Visio2002,Oracle的Designer2000,还有PlayCase 、CA BPWin、CA ERWin、Sybase PowerDesigner等等。
为什么要选择Rational Rose呢?这就不能不提到UML的三位创始人了,面向对象领域的大师级人物:Booch、Rumbaugh和Jacobson。而这三位大师目前都在Rational公司担任首席工程师,既然UML是业界标准的可视化建模语言,那么选择Rational Rose的原因就不言而喻了。
而且Rose与Rational其他一系列的软件工程方面的产品的紧密集成使得Rose的可用性和扩展性更好。
需求 构架(分析/设计) 建造(编码) 测试
需求管理 - 收集、管理及传达变更的软件需求和系统需求。 Rational RequisitePro 可视化建模 - 生成一个反映软件应用程序、其构件、接口和之间关系的图形化的设计图,便于理解和交流。 Rational Rose、Rational Rose RealTime 编程环境 - Rational Apex、Rational Summit/TM、Rational TestMate、
Rational Ada Analyzer 软件质量和测试自动化 - 提供集成化编程和测试工具来简化构件的创建,并代替昂贵、冗长且容易出错的手工测试,从而在较短的时间内、在风险已降低的情况下生成更高质量的应用程序。 Rational Suite TestStudio、Rational Suite PerformanceStudio
配置管理
软件配置与变更管理-在创建、修改、构建和交付软件的过程中,控制团队的日常开发。 Rational ClearCase、Rational ClearCase MultiSite、Rational ClearQuest、Rational ClearDDTS
软件流程
软件流程自动化-为软件经理和开发人员就如何开发有商业竞争力的软件资产提供指导。 Rational Unified Process、Rational SoDA
上面从左至右是软件生命周期的四个典型环节,下面的配置管理和软件流程是贯穿整个软件生命周期的活动。
目前Rational Rose在中国的市场占有率大约是4成(CSDN的调查统计),在国外的占有率应该会更高。
一、Rationla Rose有什么用
前面已经说过了,Rational Rose是基于UML的可视化建模工具,那首先要看看UML有什么用了。UML全称叫Unfied Modeling Language,顾名思义,UML是一种语言,一种表示法,就是一种交流沟通的工具,特别适用于软件密集型系统的表示。
UML的统一性(Unified)表现为以下几点:
(1)、 UML是人类思想和计算机代码的一个连接桥梁
大家都知道,计算机能直接识别的语言就是二进制的CPU指令,早期工程师门都是直接写这些指令输入给计算机直接执行的,非常痛苦;
后来就出现了更好理解的汇编语言,之后就出现了各种各样更加容易理解和编写,更加接近人类语言的计算机高级语言,什么VB啊、DELPHI、JAVA等等。
所以从一个角度来看,其实计算机软件的发展史,可以算是一个解决计算机语言和人类语句差异性问题的历史,就是说如何让开发语言更加接近人类语言。
看看下面的一个图:
人类思想
UML
VB、DELPHI、JAVA等等。。
二进制代码
这图可以看出UML是人类思想和计算机代码的一个连接桥梁。
(2)、 UML所定义的概念和符号可用于软件开发的分析、设计和实现的全过程,软件开发人员不必在开发过程的不同阶段进行概念和符号的转换。
(3)、 UML所用的语言元素基本都是图形化的,便于理解和沟通,不但开发人员之间可以用来交流,客户和开发人员之间也可以用它作为交流的工具。
目前版本的Rational Rose可以用来做以下一些工作:
1、对业务进行建模(工作流);
2、建立对象模型(表达信息系统内有哪些对象,它们之间是如何协作完成系统功能的);
3、对数据库进行建模,并可以在对象模型和数据模型之间进行正、逆向工程,相互同步;
4、建立构件模型(表达信息系统的物理组成,如有什么文件、进程、线程、分布如何等等)
5、生成目标语言的框架代码,VB、JAVA、DELPHI
二、 rose的核心——统一建模语言uml
(1)、 uml的发展历程
? 公认的面向对象建模语言出现于70年代中期。
? 多种建模语言的出现:booch 1993 、oose 、omt _2 、ooa/ood。
? uml 建模语言的形成,成为工业界的标准(1996年)。
其发展历程可用下图形象表示:
(2)、 uml(unified modeling language) 的具体内容
客观世界是一个复杂的巨系统,需要从不同的角度来考察,才能真正理解这个系统。为了能支持从不同角度来考察系统,标准建模语言uml定义了下列5类、共9种模型图,下面图表作了基本的描述:
类型 图名 描述
用例图 用例图 从用户角度描述系统的功能,并指出各功能的操作者。
静态图 类图 用于定义系统的类,包括描述类之间的联系(如关联、依赖、聚合等)以及类的内部结构,即类的属性和操作。因此类图是描述系统中类的静态结构,即它描述的是一种静态关系,在系统的整个生命周期都是有效的。
包图 包或类组成,主要表示包与包、或包与类之间的关系。包图用于描述系统的分层结构。
行为图 状态图 描述一类对象的所有可能状态以及事件发生时状态的转移条件。通常状态图是对类图的补充。
活动图 描述为满足用例要求所要进行的活动以及活动间的约束关系。使用活动图可以很方便地表示并行活动。
交互图 序列图 用以显示对象之间的动态合作关系。它强调对象之间消息发送的顺序,同时也显示对象之间的交互过程。
协作图 同序列图是等价的,但着重描述对象间的协作关系。
实现图 构件图 描述代码部件的物理结构及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。 它包含逻辑类或实现类的有关信息。部件图有助于分析和理解部件之间的相互影响程度。
配置图 定义系统中软硬件的物理体系结构。它可以显示实际的计算机和设备(用节点表示)以及它们之间的连接关系,也可显示连接的类型及部件之间的依赖性。在节点内部,放置可执行部件和对象以显示节点跟可执行软件单元的对应关系。
1、 用例图
以订单管理系统的用例模型部分为例进行说明。
由于他们具有略微不同的特征,因此将普通客户从 Internet 客户中分离开来是非常有用的。然而,因为 Internet 客户的确显示了一个客户具有的所有特征,所以您可以说 Internet 客户是客户的一个特例,并且能够通过主角泛化关系来指示。
在本图中,具体用例分别是“电话订购”(由客户主角发出)和“Internet 订购”(由 Internet 客户发出)。这些用例都是更普通的“订购”用例的变形。在本示例中,“订购”用例是一个抽象用例。“请求目录”用例代表一个可选行为段,它不是“订购”用例主要目标的组成部分。它已经被分离出来,形成了一个抽象用例,用于简化“订购”用例。“提供客户数据”用例是一个已分离出的行为段。它之所以被分离出来,是因为它是一个独立功能,只有它的结果才能影响“订购”用例。“供给客户数据”用例还可以在其他用例中复用。“请求目录”用例和“供给客户数据”用例在本示例中都属于抽象用例。
包含用例的行为插入到基本用例中的一个位置。
执行子用例的用例实例将遵循父用例的事件流,同时插入附加行为或修改在子用例事件流中定义的行为。
泛化强调父子行为的相似性。
当执行基本用例的用例实例达到基本用例中定义扩展点的位置时,将对相应扩展关系的条件进行评估。如果条件成立,或者如果没有条件,用例实例将遵循扩展用例(或者扩展用例中与扩展点相对应的插入段)。如果扩展关系的条件不成立,就不执行扩展。
扩展表示一种可选行为
用例实例
2、 类图
3、 包图
4、 序列图
在序列图中可以有对象和主角实例,以及说明它们如何交互的消息。序列图描述了在参与交互的对象中所发生的事件(从激活的角度来说明),以及这些对象如何通过相互发送消息进行通信。您可以为用例事件流的各种不同形式制作序列图。
5、 协作图
协作图中可以有对象和主角实例,以及描述它们之间关系和交互的连接和消息。通过说明对象间如何通过互相发送消息来实现通信,协作图描述了参与对象中发生的情况。您可以为用例事件流的每一个变化形式制作一个协作图。
6、 状态图
状态机用于对模型元素的动态行为进行建模,更具体地说,就是对系统行为中受事件驱动的方面进行建模。状态机专门用于定义依赖于状态的行为(即根据模型元素所处的状态而有所变化的行为)。其行为不会随着其元素状态发生变化的模型元素不需要用状态机来描述其行为(这些元素通常是主要负载管理数据的被动类)。
状态机由状态组成,各状态由转移链接在一起。状态是对象执行某项活动或等待某个事件时的条件。转移是两个状态之间的关系,它由某个事件触发,然后执行特定的操作或评估并导致特定的结束状态。图 1 描绘了状态机的各种元素。
7、 活动图
一个活动图可能包括以下元素:
· 活动状态表示在工作流程中执行某个活动或步骤。
· 转移表示各种活动状态的先后顺序。这种转移可称为完成转移。它不同于一般的转移,因为它不需要明显的触发器事件,而是通过完成活动(用活动状态表示)来触发。
· 决策,为其定义了一组警戒条件。这些警戒条件决定在活动完成后将执行一组备选转移中的哪一个转移。您也可以使用判定图标来表示线程重新合并的位置。决策和警戒条件使您能够显示业务用例的工作流程中的备选线程。
· 同步示意条用于显示平行分支流。同步示意条使您能够显示业务用例的工作流程中的并行线程。
8、 构件图
由下图可以看出系统的源代码和运行组件。
利用该图,负责编译和部署系统的人员知道有哪些代码库,编译代码时生成哪些执行文件;开发人员知道有哪些代码库,相互间有什么关系;组件的依赖性使编译人员知道正确的编译顺序
9、 部署图
部署图考虑应用程序的实际部署,包括网络部署和组件在网络上的位置。一个系统只有一个部署图。部署图包含处理器、设备、进程和处理器与设备之间的连接。
部署图显示网络上的所有节点、节点间的连接和每个节点上运行的进程。
图 适用范围
交互图(序列图/协作图) 适合于描述单个用例中多个对象的行为
状态图 适合于描述跨越多个用例的单个对象的行为
活动图 适合于展现多个对象和多个用例的活动的总次序
构件图 适用于表示系统中各个功能部件之间的依赖关系和调用关系
用例图 捕获系统功能
三、使用Rational Rose进行数据库建模
Rose提供了一个叫“Data Modeler”的工具,利用它可用将对象模型转换成数据模型,也可以将现有的数据模型转换成对象模型,从而实现两者之间的同步。
具体来说,Data Modeler可以:
1、将对象模型转换成数据模型,即将类映射到数据库的表,构成传统的ER图;(Data Modeler | Transform to Data Model)
2、将数据模型转换成对象模型;(Data Modeler | Transform to Object Model)
3、利用数据模型生成数据库DDL,也可以直接连接到数据库里,对数据库产生结果;(Data Modeler | Forward Engineer)
4、从现有数据库或DDL文件里生成数据模型;(Data Modeler | Reverse Engineer)
5、将数据模型同DDL文件或现有数据库进行比较;(Data Modeler | Compare to。。。)
注意:一个类能被转化为一个数据库表,它的persistence属性必须是transient
四、rational rose的一些使用技巧
1、 units control
单元控制用来把一个包,在多人协作分析设计的时候特别有用。例如当一个包需要另外一个同事a进行完善的时候,可以把单元处于控制中,保存到另外一个单独的文件里,然后同事a完善这个包,同时自己也可以进行其他包的设计工作,等完善完毕后,把文件重新load进去就可以继续使用了,这样就不会影响到其他人的同步工作了。
菜单含义:
load:从一个文件里导入一个单元包,常用来作为同步刷新
save:保存对单元包所做的更改
save as:把单元包保存到另外的一个路径
unload:把单元包卸下来,在rose里就看不到单元包里面的内容了,用load可以把单元包重新导进来
write protection:写保护,在rose里就不能对这个单元包进行更改了
2、import,export
导进,导出package,对利用现成的建模成果很有用,例如我们可以导进一个现成的java模型,这样就可以直接利用java标准的对象了。
3、add-in manager
很多外部的产品都对rose发布了add-in支持,以对rose的功能做进一步的扩展,如java、oracle、delphi,有了这些add-in,rose就可以做更多的深层次的工作了。例如装了delphi link之后,rose就可以直接可以生成delphi的框架代码,也可以从delphi代码转化成rose模型,并进行两者的同步。
选中framework wizard之后,执行file | new命令时,会出现现成的框架模型,供你选择,例如你想用delphi开发系统,就可以选择“delphi framework”,它已经内置了delphi大部分标准类的支持,方便你的分析和设计工作。
4、 workspace
workspace是用来记忆当前你的工作环境,即你所打开的单元包和图,到下次打开workspace的时候,rose会根据workspace的信息,还原到上次的工作界面。
5、 常用快捷键
f1:任何时候都可以按f1获得相关帮助,把鼠标放在某条菜单上按f1可以获得这条菜单的相关帮助。
f2:刷新browser和diagram
f3:两幅图进行切换
f5:顺序图和协作图等价切换
6、autosize all
使图的内容显示得更加整齐,当发现图有些内容显示得不全时,使用这个菜单很有用。
7、options的设置
五、用Rational Rose给XML DTD造型
很多开发人员都熟悉面向对象的分析和设计工具。这些工具常常都被用来辅助数据和组件模型的开发,而这些模型要被用来搭建大型的软件系统。对于使用Rational Rose开发工具的开发人员来说,他们会惊奇地发现,你可以以给自己组件和模块同样的造型方式来给XML文档造型。
基本概念
要在Rational Rose里开始创建XML模型,你就需要了解一些基本的概念。首先,你文档里的每个节点都会成为一个类。你可以使用的XML类一共有四种类型:元素、实体、组和符号。在本文里,我们只会用到元素和组。
元素是具有某些特性的基本类,它们由你在Rational Rose所指定的类型来定义。对于元素而言,你可以选择ANY(任意)、Content Model(内容模型)、PCDATA(PC数据)或者EMPTY(空)。EMPTY元素显然是空的,而PCDATA类型是一个字符数据容器。对于模式复杂的类型,你要使用内容模型。
内容模型和组
对于包含有字符数据的简单元素,你要使用PCDATA类型。但是,你的很多元素都会包含一个或者多个子元素。对于这样的复杂元素,你必须使用内容模型类型。
为了向Rational Rose指明元素之间的关系,你还要使用组类型。从本质上讲,每个内容模型元素都会拥有一个相关联的组元素。该组元素应该被作为Rational Rose里的一个嵌套类被创建。内容模型元素的每个子元素都会通过将其与内容模型元素的组元素相关联而被定义。
快速演练
现在让我们来演练一个小例子。我们就从在Rational Rose创建一个新的Rational统一进程(Rational Unified Process,RUP)项目开始吧。你应该会在逻辑视图(Logical View)里看到欢迎类图表(Welcome Class Diagram)。你可以在这个图表内删除节点;不过这没有必要。
点击工具条上的类(Class)图标,再点击图表创建一个新的类。将这类命名为Order。双击Order类,并选择DTDElement框。在类规格(Class Specification)对话框里选择内容模型类型。
在树型视图里右击Order类,并选择新建|嵌套类(New | Nested Class)将这个新的类命名为Order_grp。点击并将Order_grp类拖放到类图表里。双击Order_grp类并选择DTDGroup框。放在一组的类应该是Sequence(顺序),其出现次数应该是One(一次)。然后,展开树型视图里的关联(Associations)项目,并将Order_grp关联拖放到类图表里。
分别创建两个新的类——Item和Customer。这两个类都应该是被定义为内容模型类型的DTDElement。创建Order_grp组元素同Item类的新关联,并对Customer类进行同样的操作。
双击Item类的新关联,并将它命名为Item。然后点击角色A的细节(Role A Detail)选项卡,并在多重下拉框里选择1.n。这一步会指明Order元素会有一个或者多个Item元素作为其子元素。
双击Customer类的关联,并将它命名为Customer。点击角色A的细节选项卡,在多重下拉框里选择1。这一步会指明Order元素只会有一个Customer元素作为其子元素。
如果有必要的话,你可以重复这一过程,以完成你的XML DTD。对于每个复杂的元素,只用简单地指定内容模型类型,然后创建同DTDGroup框相关联的嵌套类就行了。你的子元素然后就应该同组元素关联在一起了。当你完成了自己的模型之后,你就可以右击这些类,并选择XML_DTD|生成DTD(XML_DTD | Generate DTD)来生成DTD的信息。你还可以从这个菜单里浏览DTD的源代码。
逆向工程
你也可以通过选择工具|XML_DTD|逆向工程XML_DTD(Tools | XML_DTD | Reverse Engineer XML_DTD)将你的DTD逆向转换进Rational Rose里。在这个过程完成之后,你的Rational Rose模型会包含有用于你DTD类的新工具包。
3 看看StarUML:
StarUML是一个运行在Win32上快速,灵活,可扩展,功能强大的UML/MDA平台。开源项目StarUML的目的是提供一个可以用来代替知名商业UML工具比如Rational Rose,Together等的建模工具和平台。
StarUML是一款开放源码的UML开发工具,是由韩国公司主导开发出来的产品,可以直接到StarUML网站( http://www.staruml.com/)下载大约22MB的执行文件。在本书里,所使用的版本为5.0.2.1570。StarUML的载入画面如图所示。
StarUML具备下列多项特色。
● 可绘制9款UML图:用例图、类图、序列图、状态图、活动图、通信图、模块图、部署图以及复合结构图等。例如,可设计关于银行金融卡业务的Use Case图,如图1-45所示。此外,也可以设计关于可乐贩卖机的实时控制系统的Use Case图,如图所示。
● 完全免费:StarUML是一套开放源码的软件,不仅免费自由下载,连代码都免费开放。
● 多种格式影像文件:可导出JPG、JPEG、BMP、EMF和WMF等格式的影像文件。
● 语法检验:StarUML遵守UML的语法规则,不支持违反语法的动作。
● 正反向工程:StarUML可以依据类图的内容生成Java、C++、C#代码,也能够读取Java、C++、C#代码反向生成类图。反向工程有两个主要用途,其一是旧有的源码反转成图之后,可以构建UML模型的方式继续将新的设计添加上去;另一项用途是想要解析源码时,可以通过反转的类图来理解,不再需要查看一行又一行的代码,这将节省大量的时间和精力。
● 支持XMI:StarUML接受XMI 1.1、1.2和1.3版的导入导出。XMI是一种以XML为基础的交换格式,用以交换不同开发工具所生成的UML模型。
● 导入Rose文件:StarUML可以读取Rational Rose生成的文件,让原先Rose的用户可以转而使用免费的StarUML。早期,Rational Rose是市场占有率最高的UML开发工具,同时也是相当昂贵的工具。由于Rational Rose非常闻名,后来让IBM给收购了。
● 支持模式:支持23种GoF模式(Pattern),以及3种EJB模式。GoF模式出自于Erich Gamma等4人合著的Design Patterns:Elements of Reusable Object-Oriented Software一书,其内列出了23种软件模式,可解决软件设计上的特定问题。StarUML也支持3种常用的EJB模式,分别为EntityEJB、MessageDrivenEJB、SessionEJB。
StarUML也结合了模式和自动生成代码的功能,方便我们落实设计。
商业版本:Telelogic TAU 和 Rational Rose
开源版本:StarUML
Telelogic TAU与Rational Rose的功能很强,但是需要买License。
StarUML就是希望能提供和TAU/Rose一样功能的开源版本。
目前使用起来还是不错的。
能熟练使用其中一个是软件设计人员的基本功。
1 先看Telelogic TAU:
telelogic tau
Telelogic Tau SDL Suite主要用于协议的设计、描述、验证及实现,支持图形化的SDL编辑、在线仿真和验证、代码自动生成、MSC(消息顺序图)编辑及测试用例(test case)自动生成等。SDL Suite由以下几部分组成:
SDL Editor SDL编辑器,支持图形化的SDL编辑,同时提供一个在线检查的分析器,可以立即标出编辑中的静态语法和语义错误。
SDL Simulator SDL仿真器,支持在开发环境下进行SDL系统的仿真运行,仿真结果可自动生成MSC。仿真器还可以自动穷举搜索SDL系统的所有路径,保证系统的每一个状态都是可达的。
SDL Validator SDL验证器,结合MSC验证系统行为是否与需求描述一致。
SDL Translator 代码自动生成器,支持三种代码生成:第一种是无限制的C代码生成器,支持一般的C和C++代码生成;第二种是优化的C代码生成器,支持小型嵌入式系统的优化代码生成,能满足这种系统对代码效率、最小内存和高性能的要求;第三种是CHILL代码生成器。由于在仿真和验证阶段使用的代码与最后生成的代码是相同的,这就保证了测试系统与实际运行系统的一致。
MSC Editor MSC编辑器,支持图形化的MSC编辑。
SDL Suite还支持与实际目标环境的集成。它包含一个运行库,提供SDL系统与环境打交道的源代码,支持多种操作系统,开发者可以在单任务、多任务和分布式系统之间进行选择。自动生成的代码加上指定操作系统的运行库源代码,经过合适的C编译器编译连接,即可在实际环境中运行。
Telelogic Tau TTCN Suite可以作为通信协议的测试集生成工具,支持协议一致性测试。 TTCN Suite提供给测试工程师强大的TTCN编辑器、句法分析器和编译器,可将测试方案转化为C代码,在测试设备上运行。
Telelogic Tau还提供了从SDL系统设计和MSC直接生成TTCN测试集的功能。
Telelogic Tau3.0是Telelogic的支持uml2.0的建模工具,同时提供了模型验证(Model Verifier),代码生成(code generator)。这是个欧洲公司,据说已经有14年的业内经验了。那个时候uml的版本还是负的2.0吧。
1.Uml建模
比较容易使用。
最重要的是,它对模型的要求比较严格。比如序列图中的对象或者消息,必须是已经定义的。否则会出错的。这样严格应该是为了代码生成和模型验证吧。
Tau3.0有一种特殊的图,叫做text图,一般来说是一个类的方法的实现。在text 图里面有一个action symbol,就是一个类似输入框的东西,在里面可以写代码。但是代码不是要用tau的语言来写的,不是c,也不是java。在状态机图中,也可以画action symbol。另外。还有一个图形元素叫做text symbol,也可以写代码。
为了及早检查出错误,tau有自动和手动check功能。跟ide里类似,比如函数名没定义,变量没定义等等。手动检查,可以在要检查的元素上按右键选择,或者使用快捷键f8。
好像没有timing图支持。
2.模型验证
这个应该是很多工具不具备的。
就是在uml模型上执行。要想进行模型验证和代码生成,至少需要类图和状态机图。序列图活动图,和用例图不被使用,其他图根据需要有可能被使用。需要的图和代码生成一样。
说是验证,实际上就是把模型生成可执行代码,执行。在uml模型上,能看到执行的过程等。基本的debug机能都有,step in ,step out 等,还有break point ,代码覆盖率统计的。比较不错,第一次看到时惊奇了一把。
3.代码生成
能生成c,c++,java代码。并且能编译成可执行文件。
还能生成telelogic的面向嵌入式系统的agile c。
这次我做的是生成agile c和c代码。
基本上生成的代码不可读,不可调试,里面很多宏定义,在uml建模时候的变量名,生成之后也变得乱七八糟的了。
我们设计主要集中在业务领域,通过signal和外部联系。当然内部也有signal通信了。
主函数是uml kernel提供的,不停的去检测外部环境进来的signal。默认的性能比较差,什么都不干cpu就在95%以上。
4.其他
其它也提供了一些不错的东西,比如TestingProfile,启用了这个插件,就能建立各种test case 了。而且test case 是基于序列图和状态图的,基本也不用编码,只需要画图。一组test case 建立在test context之中,这个context执行后,会生成一个xml格式的报告。
2 下面看看Rational Rose:
Rational Rose是Rational公司出品的一种面向对象的统一建模语言的可视化建模工具。用于可视化建模和公司级水平软件应用的组件构造。就像一个戏剧导演设计一个剧本一样,一个软件设计师使用Rational Rose,以演员(数字)、使用拖放式符号的程序表中的有用的案例元素(椭圆)、目标(矩形)和消息/关系(箭头)设计个种类,来创造(模型)一个应用的框架。当程序表被创建时,Rational Rose记录下这个程序表然后以设计师选择的C++, Visual Basic,Java, Oracle8,CORBA或者数据定义语言(Data Definition Language)来产生代码。Rational Rose的两个受欢迎的特征是它的提供反复式发展和来回旅程工程的能力。Rational Rose允许设计师利用反复发展(有时也叫进化式发展),因为在各个进程中新的应用能够被创建,通过把一个反复的输出变成下一个反复的输入。(这和瀑布式发展形成对比,在瀑布式发展中,在一个用户开始尝试之前整个工程被从头到尾的完成。)然后,当开发者开始理解组件之间是如何相互作用和在设计中进行调整时,Rational Rose能够通过回溯和更新模型的其余部分来保证代码的一致性,从而展现出被称为"来回旅程工程"的能力,Rational Rose是可扩展的,可以使用刻下载附加项和第三方应用软件,它支持COM/DCOM (ActiveX),JavaBeans 和 Corba组件标准.
当前市场上基于UML可视化建模的工具很多,例如有Microsoft的Visio2002,Oracle的Designer2000,还有PlayCase 、CA BPWin、CA ERWin、Sybase PowerDesigner等等。
为什么要选择Rational Rose呢?这就不能不提到UML的三位创始人了,面向对象领域的大师级人物:Booch、Rumbaugh和Jacobson。而这三位大师目前都在Rational公司担任首席工程师,既然UML是业界标准的可视化建模语言,那么选择Rational Rose的原因就不言而喻了。
而且Rose与Rational其他一系列的软件工程方面的产品的紧密集成使得Rose的可用性和扩展性更好。
需求 构架(分析/设计) 建造(编码) 测试
需求管理 - 收集、管理及传达变更的软件需求和系统需求。 Rational RequisitePro 可视化建模 - 生成一个反映软件应用程序、其构件、接口和之间关系的图形化的设计图,便于理解和交流。 Rational Rose、Rational Rose RealTime 编程环境 - Rational Apex、Rational Summit/TM、Rational TestMate、
Rational Ada Analyzer 软件质量和测试自动化 - 提供集成化编程和测试工具来简化构件的创建,并代替昂贵、冗长且容易出错的手工测试,从而在较短的时间内、在风险已降低的情况下生成更高质量的应用程序。 Rational Suite TestStudio、Rational Suite PerformanceStudio
配置管理
软件配置与变更管理-在创建、修改、构建和交付软件的过程中,控制团队的日常开发。 Rational ClearCase、Rational ClearCase MultiSite、Rational ClearQuest、Rational ClearDDTS
软件流程
软件流程自动化-为软件经理和开发人员就如何开发有商业竞争力的软件资产提供指导。 Rational Unified Process、Rational SoDA
上面从左至右是软件生命周期的四个典型环节,下面的配置管理和软件流程是贯穿整个软件生命周期的活动。
目前Rational Rose在中国的市场占有率大约是4成(CSDN的调查统计),在国外的占有率应该会更高。
一、Rationla Rose有什么用
前面已经说过了,Rational Rose是基于UML的可视化建模工具,那首先要看看UML有什么用了。UML全称叫Unfied Modeling Language,顾名思义,UML是一种语言,一种表示法,就是一种交流沟通的工具,特别适用于软件密集型系统的表示。
UML的统一性(Unified)表现为以下几点:
(1)、 UML是人类思想和计算机代码的一个连接桥梁
大家都知道,计算机能直接识别的语言就是二进制的CPU指令,早期工程师门都是直接写这些指令输入给计算机直接执行的,非常痛苦;
后来就出现了更好理解的汇编语言,之后就出现了各种各样更加容易理解和编写,更加接近人类语言的计算机高级语言,什么VB啊、DELPHI、JAVA等等。
所以从一个角度来看,其实计算机软件的发展史,可以算是一个解决计算机语言和人类语句差异性问题的历史,就是说如何让开发语言更加接近人类语言。
看看下面的一个图:
人类思想
UML
VB、DELPHI、JAVA等等。。
二进制代码
这图可以看出UML是人类思想和计算机代码的一个连接桥梁。
(2)、 UML所定义的概念和符号可用于软件开发的分析、设计和实现的全过程,软件开发人员不必在开发过程的不同阶段进行概念和符号的转换。
(3)、 UML所用的语言元素基本都是图形化的,便于理解和沟通,不但开发人员之间可以用来交流,客户和开发人员之间也可以用它作为交流的工具。
目前版本的Rational Rose可以用来做以下一些工作:
1、对业务进行建模(工作流);
2、建立对象模型(表达信息系统内有哪些对象,它们之间是如何协作完成系统功能的);
3、对数据库进行建模,并可以在对象模型和数据模型之间进行正、逆向工程,相互同步;
4、建立构件模型(表达信息系统的物理组成,如有什么文件、进程、线程、分布如何等等)
5、生成目标语言的框架代码,VB、JAVA、DELPHI
二、 rose的核心——统一建模语言uml
(1)、 uml的发展历程
? 公认的面向对象建模语言出现于70年代中期。
? 多种建模语言的出现:booch 1993 、oose 、omt _2 、ooa/ood。
? uml 建模语言的形成,成为工业界的标准(1996年)。
其发展历程可用下图形象表示:
(2)、 uml(unified modeling language) 的具体内容
客观世界是一个复杂的巨系统,需要从不同的角度来考察,才能真正理解这个系统。为了能支持从不同角度来考察系统,标准建模语言uml定义了下列5类、共9种模型图,下面图表作了基本的描述:
类型 图名 描述
用例图 用例图 从用户角度描述系统的功能,并指出各功能的操作者。
静态图 类图 用于定义系统的类,包括描述类之间的联系(如关联、依赖、聚合等)以及类的内部结构,即类的属性和操作。因此类图是描述系统中类的静态结构,即它描述的是一种静态关系,在系统的整个生命周期都是有效的。
包图 包或类组成,主要表示包与包、或包与类之间的关系。包图用于描述系统的分层结构。
行为图 状态图 描述一类对象的所有可能状态以及事件发生时状态的转移条件。通常状态图是对类图的补充。
活动图 描述为满足用例要求所要进行的活动以及活动间的约束关系。使用活动图可以很方便地表示并行活动。
交互图 序列图 用以显示对象之间的动态合作关系。它强调对象之间消息发送的顺序,同时也显示对象之间的交互过程。
协作图 同序列图是等价的,但着重描述对象间的协作关系。
实现图 构件图 描述代码部件的物理结构及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。 它包含逻辑类或实现类的有关信息。部件图有助于分析和理解部件之间的相互影响程度。
配置图 定义系统中软硬件的物理体系结构。它可以显示实际的计算机和设备(用节点表示)以及它们之间的连接关系,也可显示连接的类型及部件之间的依赖性。在节点内部,放置可执行部件和对象以显示节点跟可执行软件单元的对应关系。
1、 用例图
以订单管理系统的用例模型部分为例进行说明。
由于他们具有略微不同的特征,因此将普通客户从 Internet 客户中分离开来是非常有用的。然而,因为 Internet 客户的确显示了一个客户具有的所有特征,所以您可以说 Internet 客户是客户的一个特例,并且能够通过主角泛化关系来指示。
在本图中,具体用例分别是“电话订购”(由客户主角发出)和“Internet 订购”(由 Internet 客户发出)。这些用例都是更普通的“订购”用例的变形。在本示例中,“订购”用例是一个抽象用例。“请求目录”用例代表一个可选行为段,它不是“订购”用例主要目标的组成部分。它已经被分离出来,形成了一个抽象用例,用于简化“订购”用例。“提供客户数据”用例是一个已分离出的行为段。它之所以被分离出来,是因为它是一个独立功能,只有它的结果才能影响“订购”用例。“供给客户数据”用例还可以在其他用例中复用。“请求目录”用例和“供给客户数据”用例在本示例中都属于抽象用例。
包含用例的行为插入到基本用例中的一个位置。
执行子用例的用例实例将遵循父用例的事件流,同时插入附加行为或修改在子用例事件流中定义的行为。
泛化强调父子行为的相似性。
当执行基本用例的用例实例达到基本用例中定义扩展点的位置时,将对相应扩展关系的条件进行评估。如果条件成立,或者如果没有条件,用例实例将遵循扩展用例(或者扩展用例中与扩展点相对应的插入段)。如果扩展关系的条件不成立,就不执行扩展。
扩展表示一种可选行为
用例实例
2、 类图
3、 包图
4、 序列图
在序列图中可以有对象和主角实例,以及说明它们如何交互的消息。序列图描述了在参与交互的对象中所发生的事件(从激活的角度来说明),以及这些对象如何通过相互发送消息进行通信。您可以为用例事件流的各种不同形式制作序列图。
5、 协作图
协作图中可以有对象和主角实例,以及描述它们之间关系和交互的连接和消息。通过说明对象间如何通过互相发送消息来实现通信,协作图描述了参与对象中发生的情况。您可以为用例事件流的每一个变化形式制作一个协作图。
6、 状态图
状态机用于对模型元素的动态行为进行建模,更具体地说,就是对系统行为中受事件驱动的方面进行建模。状态机专门用于定义依赖于状态的行为(即根据模型元素所处的状态而有所变化的行为)。其行为不会随着其元素状态发生变化的模型元素不需要用状态机来描述其行为(这些元素通常是主要负载管理数据的被动类)。
状态机由状态组成,各状态由转移链接在一起。状态是对象执行某项活动或等待某个事件时的条件。转移是两个状态之间的关系,它由某个事件触发,然后执行特定的操作或评估并导致特定的结束状态。图 1 描绘了状态机的各种元素。
7、 活动图
一个活动图可能包括以下元素:
· 活动状态表示在工作流程中执行某个活动或步骤。
· 转移表示各种活动状态的先后顺序。这种转移可称为完成转移。它不同于一般的转移,因为它不需要明显的触发器事件,而是通过完成活动(用活动状态表示)来触发。
· 决策,为其定义了一组警戒条件。这些警戒条件决定在活动完成后将执行一组备选转移中的哪一个转移。您也可以使用判定图标来表示线程重新合并的位置。决策和警戒条件使您能够显示业务用例的工作流程中的备选线程。
· 同步示意条用于显示平行分支流。同步示意条使您能够显示业务用例的工作流程中的并行线程。
8、 构件图
由下图可以看出系统的源代码和运行组件。
利用该图,负责编译和部署系统的人员知道有哪些代码库,编译代码时生成哪些执行文件;开发人员知道有哪些代码库,相互间有什么关系;组件的依赖性使编译人员知道正确的编译顺序
9、 部署图
部署图考虑应用程序的实际部署,包括网络部署和组件在网络上的位置。一个系统只有一个部署图。部署图包含处理器、设备、进程和处理器与设备之间的连接。
部署图显示网络上的所有节点、节点间的连接和每个节点上运行的进程。
图 适用范围
交互图(序列图/协作图) 适合于描述单个用例中多个对象的行为
状态图 适合于描述跨越多个用例的单个对象的行为
活动图 适合于展现多个对象和多个用例的活动的总次序
构件图 适用于表示系统中各个功能部件之间的依赖关系和调用关系
用例图 捕获系统功能
三、使用Rational Rose进行数据库建模
Rose提供了一个叫“Data Modeler”的工具,利用它可用将对象模型转换成数据模型,也可以将现有的数据模型转换成对象模型,从而实现两者之间的同步。
具体来说,Data Modeler可以:
1、将对象模型转换成数据模型,即将类映射到数据库的表,构成传统的ER图;(Data Modeler | Transform to Data Model)
2、将数据模型转换成对象模型;(Data Modeler | Transform to Object Model)
3、利用数据模型生成数据库DDL,也可以直接连接到数据库里,对数据库产生结果;(Data Modeler | Forward Engineer)
4、从现有数据库或DDL文件里生成数据模型;(Data Modeler | Reverse Engineer)
5、将数据模型同DDL文件或现有数据库进行比较;(Data Modeler | Compare to。。。)
注意:一个类能被转化为一个数据库表,它的persistence属性必须是transient
四、rational rose的一些使用技巧
1、 units control
单元控制用来把一个包,在多人协作分析设计的时候特别有用。例如当一个包需要另外一个同事a进行完善的时候,可以把单元处于控制中,保存到另外一个单独的文件里,然后同事a完善这个包,同时自己也可以进行其他包的设计工作,等完善完毕后,把文件重新load进去就可以继续使用了,这样就不会影响到其他人的同步工作了。
菜单含义:
load:从一个文件里导入一个单元包,常用来作为同步刷新
save:保存对单元包所做的更改
save as:把单元包保存到另外的一个路径
unload:把单元包卸下来,在rose里就看不到单元包里面的内容了,用load可以把单元包重新导进来
write protection:写保护,在rose里就不能对这个单元包进行更改了
2、import,export
导进,导出package,对利用现成的建模成果很有用,例如我们可以导进一个现成的java模型,这样就可以直接利用java标准的对象了。
3、add-in manager
很多外部的产品都对rose发布了add-in支持,以对rose的功能做进一步的扩展,如java、oracle、delphi,有了这些add-in,rose就可以做更多的深层次的工作了。例如装了delphi link之后,rose就可以直接可以生成delphi的框架代码,也可以从delphi代码转化成rose模型,并进行两者的同步。
选中framework wizard之后,执行file | new命令时,会出现现成的框架模型,供你选择,例如你想用delphi开发系统,就可以选择“delphi framework”,它已经内置了delphi大部分标准类的支持,方便你的分析和设计工作。
4、 workspace
workspace是用来记忆当前你的工作环境,即你所打开的单元包和图,到下次打开workspace的时候,rose会根据workspace的信息,还原到上次的工作界面。
5、 常用快捷键
f1:任何时候都可以按f1获得相关帮助,把鼠标放在某条菜单上按f1可以获得这条菜单的相关帮助。
f2:刷新browser和diagram
f3:两幅图进行切换
f5:顺序图和协作图等价切换
6、autosize all
使图的内容显示得更加整齐,当发现图有些内容显示得不全时,使用这个菜单很有用。
7、options的设置
五、用Rational Rose给XML DTD造型
很多开发人员都熟悉面向对象的分析和设计工具。这些工具常常都被用来辅助数据和组件模型的开发,而这些模型要被用来搭建大型的软件系统。对于使用Rational Rose开发工具的开发人员来说,他们会惊奇地发现,你可以以给自己组件和模块同样的造型方式来给XML文档造型。
基本概念
要在Rational Rose里开始创建XML模型,你就需要了解一些基本的概念。首先,你文档里的每个节点都会成为一个类。你可以使用的XML类一共有四种类型:元素、实体、组和符号。在本文里,我们只会用到元素和组。
元素是具有某些特性的基本类,它们由你在Rational Rose所指定的类型来定义。对于元素而言,你可以选择ANY(任意)、Content Model(内容模型)、PCDATA(PC数据)或者EMPTY(空)。EMPTY元素显然是空的,而PCDATA类型是一个字符数据容器。对于模式复杂的类型,你要使用内容模型。
内容模型和组
对于包含有字符数据的简单元素,你要使用PCDATA类型。但是,你的很多元素都会包含一个或者多个子元素。对于这样的复杂元素,你必须使用内容模型类型。
为了向Rational Rose指明元素之间的关系,你还要使用组类型。从本质上讲,每个内容模型元素都会拥有一个相关联的组元素。该组元素应该被作为Rational Rose里的一个嵌套类被创建。内容模型元素的每个子元素都会通过将其与内容模型元素的组元素相关联而被定义。
快速演练
现在让我们来演练一个小例子。我们就从在Rational Rose创建一个新的Rational统一进程(Rational Unified Process,RUP)项目开始吧。你应该会在逻辑视图(Logical View)里看到欢迎类图表(Welcome Class Diagram)。你可以在这个图表内删除节点;不过这没有必要。
点击工具条上的类(Class)图标,再点击图表创建一个新的类。将这类命名为Order。双击Order类,并选择DTDElement框。在类规格(Class Specification)对话框里选择内容模型类型。
在树型视图里右击Order类,并选择新建|嵌套类(New | Nested Class)将这个新的类命名为Order_grp。点击并将Order_grp类拖放到类图表里。双击Order_grp类并选择DTDGroup框。放在一组的类应该是Sequence(顺序),其出现次数应该是One(一次)。然后,展开树型视图里的关联(Associations)项目,并将Order_grp关联拖放到类图表里。
分别创建两个新的类——Item和Customer。这两个类都应该是被定义为内容模型类型的DTDElement。创建Order_grp组元素同Item类的新关联,并对Customer类进行同样的操作。
双击Item类的新关联,并将它命名为Item。然后点击角色A的细节(Role A Detail)选项卡,并在多重下拉框里选择1.n。这一步会指明Order元素会有一个或者多个Item元素作为其子元素。
双击Customer类的关联,并将它命名为Customer。点击角色A的细节选项卡,在多重下拉框里选择1。这一步会指明Order元素只会有一个Customer元素作为其子元素。
如果有必要的话,你可以重复这一过程,以完成你的XML DTD。对于每个复杂的元素,只用简单地指定内容模型类型,然后创建同DTDGroup框相关联的嵌套类就行了。你的子元素然后就应该同组元素关联在一起了。当你完成了自己的模型之后,你就可以右击这些类,并选择XML_DTD|生成DTD(XML_DTD | Generate DTD)来生成DTD的信息。你还可以从这个菜单里浏览DTD的源代码。
逆向工程
你也可以通过选择工具|XML_DTD|逆向工程XML_DTD(Tools | XML_DTD | Reverse Engineer XML_DTD)将你的DTD逆向转换进Rational Rose里。在这个过程完成之后,你的Rational Rose模型会包含有用于你DTD类的新工具包。
3 看看StarUML:
StarUML是一个运行在Win32上快速,灵活,可扩展,功能强大的UML/MDA平台。开源项目StarUML的目的是提供一个可以用来代替知名商业UML工具比如Rational Rose,Together等的建模工具和平台。
StarUML是一款开放源码的UML开发工具,是由韩国公司主导开发出来的产品,可以直接到StarUML网站( http://www.staruml.com/)下载大约22MB的执行文件。在本书里,所使用的版本为5.0.2.1570。StarUML的载入画面如图所示。
StarUML具备下列多项特色。
● 可绘制9款UML图:用例图、类图、序列图、状态图、活动图、通信图、模块图、部署图以及复合结构图等。例如,可设计关于银行金融卡业务的Use Case图,如图1-45所示。此外,也可以设计关于可乐贩卖机的实时控制系统的Use Case图,如图所示。
● 完全免费:StarUML是一套开放源码的软件,不仅免费自由下载,连代码都免费开放。
● 多种格式影像文件:可导出JPG、JPEG、BMP、EMF和WMF等格式的影像文件。
● 语法检验:StarUML遵守UML的语法规则,不支持违反语法的动作。
● 正反向工程:StarUML可以依据类图的内容生成Java、C++、C#代码,也能够读取Java、C++、C#代码反向生成类图。反向工程有两个主要用途,其一是旧有的源码反转成图之后,可以构建UML模型的方式继续将新的设计添加上去;另一项用途是想要解析源码时,可以通过反转的类图来理解,不再需要查看一行又一行的代码,这将节省大量的时间和精力。
● 支持XMI:StarUML接受XMI 1.1、1.2和1.3版的导入导出。XMI是一种以XML为基础的交换格式,用以交换不同开发工具所生成的UML模型。
● 导入Rose文件:StarUML可以读取Rational Rose生成的文件,让原先Rose的用户可以转而使用免费的StarUML。早期,Rational Rose是市场占有率最高的UML开发工具,同时也是相当昂贵的工具。由于Rational Rose非常闻名,后来让IBM给收购了。
● 支持模式:支持23种GoF模式(Pattern),以及3种EJB模式。GoF模式出自于Erich Gamma等4人合著的Design Patterns:Elements of Reusable Object-Oriented Software一书,其内列出了23种软件模式,可解决软件设计上的特定问题。StarUML也支持3种常用的EJB模式,分别为EntityEJB、MessageDrivenEJB、SessionEJB。
StarUML也结合了模式和自动生成代码的功能,方便我们落实设计。