所在位置:UML新闻 - 内容 论坛精华    
Quantum Leaps发布免费状态机建模工具QM

[2011/1/15]

Quantum Leaps发布了一款免费的状态机建模工具QM(QP Modeler),用于设计嵌入式实时应用并无缝地在QP(Quantum Platform,量子平台)实现。

QP是一套状态机的实现框架,支持的RTOS和处理器非常广泛,已经在消费电子、医疗、工业、无线、网络、国防、机器人,汽车等许多领域的实时嵌入式开发中使用。QP的作者Miro Samek的著作《Practical UML Statecharts in C/C++》更是学习状态机建模和实现状态机不可不看的深度教材,第一版2004年由国内出版社引进,第二版中译本也即将在国内出版。

Miro Samek长期从事嵌入式软件开发,曾就职于GE Healthcare、Novariant、Global Locate。多年来,他一直专注于状态机建模和实现的研究,花了很多精力来打磨QP框架,打通状态机和下层RTOS的通路,这是非常难得的。这次Miro Samek决定开发QM这样的图形建模工具,可以看作是QP向上走,打通和UML建模工具的通道。Miro Samek想走一条和之前的状态机工具有所不同的道路,用他的话说就是“不需要和工具作战”。QM是先有QP这个实现框架,再有图形建模工具,图形工具建立在代码框架的基础上。其他状态图工具如IAR VisualState(最新版本6.3.2),还有IBM Rational Rhapsody(最新版本7.5.3)走的是自上而下的路线,也支持状态图的验证和测试,生成的代码和RTOS整合。

现在使用的状态图是由David Harel在1980年代发明提出的,增加了层次、并行等元素,改进了之前常规FSM(有限状态机)复杂性很快增加的缺陷。状态图是面向对象建模中非常重要的要素。对象身上发生的行为导致对象属性值的变化,属性值的变化又导致行为的变化,这种不同行为之间精妙的互动关系,通过状态图展现出来。可以这样说,如果没有把核心的逻辑封装到关键类的状态机中,只能说这样的面向对象建模是“假面向对象”。通过状态图可以帮助开发人员确定一个类合适的责任到底是哪些,往往可以起到缩窄类和外界的接口,加强封装的作用。

遗憾的是,状态图在实践中经常被误用,误用频率恐怕和用例有一比。常见的误用例子是:不理解状态图的本意,为不存在状态的类画状态图,导致把状态图当成活动图使用――其实状态图和活动图相比,顶点和边所代表的意思是相反的。

移动开发和智能设备将是未来几年的开发热点。客户对移动设备和智能设备上的应用的质量要求更高,有必要通过状态机来对每个类作精细的建模,生成能直接使用的代码,尽量减少人工编码引入的偶发错误。而且,这也是有可能的,毕竟移动设备和智能设备上的应用中,类的个数并不多。

Peter Mueller也发布了状态机建模工具sinelaboreRT的2.24版本,新版本除了继续支持原有的商业工具如Cadifra、UModel、Magic Draw、EA等,还增加了对开源UML工具ArgoUML的支持,这样,开发人员可以利用开源工具来建模,通过sinelaboreRT生成代码。这款工具的特点是支持从状态图生成Objective-C和nesC代码。

资源

http://www.state-machine.com/downloads/index.php#QM
QM下载

http://www.wisdom.weizmann.ac.il/~harel/papers/Statecharts.pdf
1984年David Harel发表的关于状态图的文献:Statecharts: A visual formalism for complex systems

http://www.youtube.com/watch?v=KJ9WaUa_4m0
2010年David Harel在Federated Logic Conference (FLoC)上缅怀图灵奖获得者Amir Pnueli的演讲视频。

(UMLChina,不得转载用于商业用途)