提到Rational Rose,大家第一个想到的词语应该是“建模”,建模的确是Rational Rose 的精髓之所在,通过可视化的建模手段,将抽象事物和客观世界联系了起来,这样我们对问题的有了更加清晰的认识和了解,对问题的解决方法的设计有了更加明了的结构和思路,以及能对问题解决的研发过程中遇到的错误有了更好的定位、查找和解决的方法。当然其特点、优点不是一时半会能说的完,说的清的,而本文目的也不在此,故就不再说下去了,感兴趣的话,可以找些相关的资料看看。
Rational Rose 跟 Rational Rose Realtime 有什么区别和联系呢?
从字面上来看除了多了一个Realtime——实时,嵌入式这个或许更加普及一点,其他基本没区别。那么我们先看看它们的联系:
说到建模,需要提及一下UML(Unified Modeling Language),我想很多初学者和我一样,只知其名,不知其实。不过因为时间的关系,我们还是先任这个状态继续下去。因为UML并非是为一个专门的领域设计的,它所要面向的范围很广,比如说,建筑领域如果有需要也是可以拿来用的,正是因为这个特点,当初设计的时候,就将它设计成了一个open-ended型(这个open-ended,我一时想不出来怎么翻译,欢迎指教)以便扩展。那么Rational Rose就是在UML的基础上,增加了软件开发的一些术语、规则的一个建模软件。了解了这个,应该就知道加上Realtime之后对Rational Rose所做的改变了——就是增加了Realtime system的术语、规则(Real-Time Modeling Library),当然这是在UML上做的一些改进,并不是全部。
为了支持Realtime System,Rational RoseRT 增加了很多重要的东西,两个相当重要分别是:Capsule 和 Port.
Capsule 封装体——新概念,这是模型的一个非常基础单元,built-in light weight concurrent objects,这是其定义,内置轻量级的并发对象。按照我不成熟的理解,一个就是一个特殊的类,特殊在什么地方,通过对Capsule中的 Statement Diagram 和 Structure Diagram 做定义,它封装了系统中一些独立的控制流,由若干个封装体及其子封装体就组成了一个Realtime System的整体活动。
Port,因为封装体的方法和成员是私有的,对外交互就依靠Port了,这也是封装体的特殊之处。
RoseRT也提供了很多Realtime System 开发的库包、测试工具及部署工具,等等,这样只要添加一个编译器,那么整个软件的开发就可以只在RoseRT上运行了,极大的方便了团队合作开发。
最先接触Rose的时候,很抵触,对我这种小手工作坊式的软件开发,使用这个工具多数画蛇添足,就想建筑一样,你想把某个墙面刷的平滑跟这栋楼的整体结构关系关系并不大。在进入公司之后,发现在大的项目上使用了ClearCase + RoseRT,可以非常很短的时间里熟悉需求和系统的结构设计,这样为团队开发就提供了很好的平台。