用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

基于Rhapsody和VxWorks的自动取款机系统

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 23:54:36
实际的硬件和硬件封装的,并且实现了Ihardware接口能够用于连接自动柜员机封装。接口类Ihardware描述了对自动柜员机封装的所有必需的操作,实现了应用与硬件环境的隔离。

一旦在自动柜员机封装和硬件封装之间定义了接口类,每一个子系统就能同步和独立地细化为更多的子系统。每一个子系统都知道它和其它子系统之间的接口。例如,我们可以开始分析自动柜员机子系统图,而不需要知道关于硬件的更多情况。

    第四步:设计对象模型图。

对自动柜员机封装而言,我们设想有一个AtmerController类,其中包含Keypad类、Card类、LCD类和Cash类,这些类表示如图5所示。
javascript:window.open(this.src);" style="cursor:pointer;"/>
图5表明:AtmerController类作为一个聚合类,包含了其它类的实例。我们也能看出,我们能选择显示“Keypad”类的不同的操作和属性。在上面的例子中,假如一个实例被AtmerControlle类创建,那么它将创建Keypad类的一个实例theKeypad、LCD类的一个实例theLCD、Cash类的一个实例theCash以及Card类的一个实例theCard。假如AtmerController类的实例被删除,这些包含的实例也同时被删除。

Ihardware类也有一些纯虚函数,所以为了测试AtmerController类,必须忽略这些操作。图6表示:ATM包含了AtmerController类的一个实例和从Ihardware类继承并忽略了其操作的Hw类的一个实例。

    第五步:生成白匣子场景。

生成了一个新类AtmerController后,就可以开始为每一个黑匣子场景生成白匣子场景。消息序列表将用于获取以上不同场景的类的实例之间的通信行为。例如,图7消息序列描述了顾客输入支取现金数额并取出现金的场景。

消息通常对应于对象模型中操作和操作的返回值。消息值对应于类的属性或是类操作的返回值。消息可以是同步的,也可以是异步的。从图中可以看出,这些类都有动态行为:它们正在处理定时事件;调用其它类的操作;接受事件。对UML来说,这些动态行为都可以用一个状态图来表示。

    第六步:创建状态图。

以顾客输入密码过程为例,创建状态图,如图8所示。通常,当一个问题很复杂时,它往往被分解成一些简单的问题,这也正是对顾客输入密码过程要做的事情。图8所示的状态图描述了顾客输入密码过程中的行为。

图7 顾客输入支取数据并取出现金的白匣子场景

    2.3 属性、操作和事件

属性来源于需求文档中定义的数据,应该简单,不考虑设计和实现的细节。每个类都可能有定义在其上的事件和操作。事件对应于明确的瞬时发生的影响类的动态行为。操作对应于类的服务和功能。Rhapsody中有3种事件。

① 信号事件:对应于实例间的异步通信。

② 时间事件:这种事件在进入一个状态并且经过一个指定的时间后触发。

③ 触发操作:触发操作是同步的操作,通过能够迅速得到响应的事件得到执行。触发操作没有实现代码,却可以作为类的状态图转移的触发器。当调用触发操作时,同时产生响应的事件。

2.4 生成代码

一般嵌入式应用中有60%~90%的代码用于内务处理(如状态图的实现、任务间的通信等),这些代码在设计新的系统时一般都可以重用。这种重用一般是通过实时框架来实现的。Rhapsody就提供了这样一个实时框架,它提供了一套嵌入式和实时应用专门选择和优化的设计模板。嵌入式应用程序一般都运行在嵌入式操作系统的平台上,而实时框架就是一个在操作系统之上应用程序之下的中间件。应用程序的编写或自动产生都基于有统一接口的实时框架,这样就使应用软件的开发与具体的平台无关,解决了嵌入式应用软件的移植问题。

一旦画出其余的图表并创建好不同类的实例后,就能进行代码的生成和模型的测试工作。在Rhapsody中,需要进行一些配置,以告诉Rhapsody从哪些类生成代码及使用什么样的环境。首先,使用Microsoft环境(Windows操作环境和Visual C++编译器)。然后,代码在Rhapsody中生成和编译,以产生可执行程序。

    2.5 使UML模型有效

Rhapsody能使用自动生成的代码,所以,当实际的代码运行时,它能返回一些信息给调试工具,以便Rhapsody进行模型的测试。通过模型级调试、验证,可以尽早发现系统的设计错误或缺陷,从而较早地确定或降低项目的风险。

    2.6 测试模型

一旦自动柜员机封装被手工产生的事件测试通过并观察发生的情况后,就可以利用如微软的Visual C++产生一个GUI。用于创建GUI的类从Ihardware类继承而来,选中set选项,当按钮被按下时,调用ON操作。GUI也能促使模型在模型级再次被调试。

3 在VxWorks上运行

模型是系统整体的抽象。软件开发的最终形式必须生成程序代码,模型毕竟是一些漂亮的蓝图。虽然它对软件的设计有很大的作用,但用户的最终目的是希望得到可执行的程序。对于嵌入式实时系统,代码与系统要求(时间约束、资源的限制等)是紧密联系的,用最终形式的源程序验证系统的模型更准确。javascript:window.open(this.src);" style="cursor:pointer;"/>

Rhapsody可利用软件自动生成技术的成果,根据模型可以自动生成具有产品质量的代码。这种代码既可以作为系统模型验证的代码,也是系统最后提交的代码。所以产生的代码是基于某个具体平台的代码,通过编译

上一页  [1] [2] [3]  下一页

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:7,062.50000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号