引言
面向对象的软件设计方法推崇抽象、可重用且易维护的设计模式。其中,一个普遍采用的做法是使用预定义的框架构建复杂的软件系统。在面向对象领域中,框架是指为某一具体应用领域提供解决方案的类集。程序员使用继承、聚合等技术定制框架并将其用于具体的应用程序设计。基于框架的软件开发具有如下优点:
*由于重用了框架提供的代码,目标系统不必从头写起;
*规范的框架结构能够指导目标系统的设计;
*框架的设计是开放的,因此可以通过子类化等技术定制和扩展。
本文介绍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所示。