- 相关推荐
使用Rhapsody软件框架和UML的实时系统开发
摘要:UML已成为复杂系统建模的工业标准,并可借助代码自动生成工具实现从分析到编码的开发过程自动化。而实时系统的行为特征可以很好地用UML的状态机表示,从而成为自动代码生成、测试、分析和校验的最佳选择。Ilogix公司的Rhapsody是一个基于UML支持模型驱动开发的CASE工具,它使用一套为实时系统量身打造的软件框架实现实时系统软件的开发自动化。引言
面向对象的软件设计方法推崇抽象、可重用且易维护的设计模式。其中,一个普遍采用的做法是使用预定义的框架构建复杂的软件系统。在面向对象领域中,框架是指为某一具体应用领域提供解决方案的类集。程序员使用继承、聚合等技术定制框架并将其用于具体的应用程序设计。基于框架的软件开发具有如下优点:
*由于重用了框架提供的代码,目标系统不必从头写起;
*规范的框架结构能够指导目标系统的设计;
*框架的设计是开放的,因此可以通过子类化等技术定制和扩展。
本文介绍Rhapsody的实时代码生成策略。Ilogix公司提供的Rhapsody是一个基于UML支持实时嵌入式系统全过程面向对象开发的CASE工具。Rhapsody基于一个内置的实时系统软件框架—OXF生成C/C 代码。
1 Rhapsody的软件框架
Rhapsody的OXF框架专为实时嵌入式系统而设计,它由一系列UML类组成。这些类相互协作,组成了一个结构严整、跨实时操作系统平台的实时嵌入式软件架构。
(1)活动类
活动对象(Active Object)在UML中被定义为“拥有一个线程并能够发起控制活动的对象”。Rhapsody给这个一般定义赋予了具体含义,如图1所示。
活动类(Active Classes)在框架中以OXFActive表示,它拥有一个执行线程和一个事件队列,并提供事件调度功能。用户活动类从OXFActive继承。
该活动类包装了实时系统中的事件调度器。Execute方法是一个无限循环。在循环中,事件被不断地从队列中提取出来,发往对应的目标对象。QueueEvent和schedTimeout方法向队列注入新的事件。
(2)响应类
响应类(Reactive Classes)是能够对事件做出反应的框架类,即事件消费者。它在Rhapsody的框架中以OXFReactive表示,用户响应类从OXFReactive继承,如图2所示。
图2 响应类及相关框架元素
每个响应类都和一个事件管理器关联(通过调用setEventManager方法),事件管理器由活动类充当。一个事件管理器可以服务于多个响应类。响应类的gen方法向其事件管理器注入一个新的事件(通过调用活动类的queueEvent方法)。事件管理器在收到事件之后会调用相应的响应对象(由事件的属性指出)的takeEvent方法。
用户响应类有主动(active)、被动(passive)和从属(subordinate)响应类之分:
*主动用户响应类利用了多重继承技术,它集事件管理器和响应类双得功能于一身;
*被动用户响应类由框架的缺省事件管理器—OXFDefaultEventManager管理,且所有被动用户响应类都共享该缺省事件管理器;
*从属用户响应类由用户定义的活动类充当事件管理器。从属响应类以聚合方式存在于用户活动类内,或者独立于活动类,而通过调用setEventManager方法与一个用户活动关联。
(3)事件和操作
类可以定义自己的事件和操作(Events and Operations)方法。事件代表一种突发的激励信号,可以影响对象的行为及状态。在Rhapsody中,活动类负责事件调度。事件既可以异步(活动类将事件投递给目标对象之后立即返回,目标对象使用自己的线程完成对事件的响应),也可以是同步的(活动类投递事件之后必须等待目标对象处理完成才能返回)。操作代表类本身提供的服务和功能。操作调用总是同步的,即操作总是运行在调用者线程之内。Rhapsody的框架定义了两种事件:
①信号事件。
信号事件(Signal Events)是最常用的事件,它代表对象之间传递的一种异步激励信号。在Rhapsody的框架中,它以OXFEvent表示,所有的用户事件类都从OXFEvent继承。
信号事件有自己的参数(以其属性表示),并且和一个响应对象关联。事件管理器依据事件的响应对象判断事件的接收者。
②定时事件
定时事件(Timeout Events)在Rhapsody中以OXFTimeOut表示。它在OXF框架中的位置如图3所示。
事件管理器(活动对象)的schedTimeout方法负责定时事件的构造和调度。其执行过程如图4所示。
图3 定时事件及相关框架元素
事件管理器创建一个OXFTimeout对象并将其交由一个定时管理器管理。定时管理器可以管理多个定时事件,它运行于自己的独立线程内且聚合了一个定时器对象。定时器对象每卫固定的时间片会向定时管理器发通知信号,这时定时管理器检查它管理的定时事件集合中是否有定时事件到时,并将到时的定时事件添加到事件管理器(活动对象)的事件队列中(通过调用queueEvent),之后事件管理器再将这些定时事件投递给对应的响应对象。定时事件本身是被动的,它不包含定时器。
(4)状态机
Rhapsody支持UML状态机(State Machines),包括层次状态分解、带参事件、定时事件、伪状态、完成转移、入口和出口动作等功能。Rhapsody也包含了UML中定义的异步事件处理模型:带有状态图的类都是响应类,因此都与一个事件管理器(活动类)关联。事件管理器使用一个队列缓冲收到的事件,然后将事件投递给响应对象。响应对象按
【使用Rhapsody软件框架和UML的实时系统开发】相关文章:
运用UML分析设计占先式实时内核03-18
基于Rhapsody和VxWorks的自动取款机系统03-18
基于PCI图像卡的图像实时处理系统开发03-07
浅议软件开发框架技术12-02
Word软件的几个使用技巧03-13
品牌学的理论框架和研究思路03-23
用制度和流程搭建企业框架03-24
实时混音的实现03-18