新闻  |   论坛  |   博客  |   在线研讨会
模型行为:创建嵌入式软件的捷径
tongxin | 2009-03-20 14:19:12    阅读:1655   发布文章

当嵌入系统设计团队竞相向市场推出新产品时,设计者正在评估基于模型的开发工具,通常采用 UML(统一建模语言),来处理日益增加的软件复杂性。
%A   要 点
%A   嵌入系统设计者正转向基于模型的开发方式,以缩短软件开发周期,并简化功能修改或硬件升级。
%A   尽管统一建模语言很复杂,但它为开发团队提供了一种开放的标准,用于嵌入系统架构的建模。
%A   建模软件有内置的错误检查、自动化文档生成以及逆向工程,可以消除很多常见的软件错误。
%A   系统模型与仿真器可以让设计者在交付原型硬件以前测试系统的性能,并准备好最终的目标代码。
%A   过去,嵌入系统的处理资源和内存资源都有限,以尽量降低成本,而消费者则期望包含更多功能和辅助特性,如高速通信与交互式多媒体。随着这些嵌入项目软件部分越来越复杂,以及开发周期的缩短,设计者正在考虑采用图形化设计工具以及自动代码生成器,扩充自己有限的一批熟练程序员。利用对精确定义系统的先期投资,设计工具可以实现某些或整个软件开发工作的自动化。在很多情况下,这些工具可将嵌入式软件开发任务从逐行编程的工作转化为一个全自动的过程,它可以从系统的一个抽象模型直接生成运行的源码。
%A
%A 图1Telelogic最新推出的Rhapsody7.0版可直接从一个标准的UML模型中生成C、C++ 或 Java 代码
%A
%A   尽管
%A 用一台台式计算机代替一部分嵌入式软件开发人员的想法很有吸引力,但要详细地规定用于自动代码生成器的系统却不是件简单的任务。当前的开发工具都需要相当长的学习周期,可能还需要完全改变编程的观点,然后设计者才能着手准备自动代码生成所需要的数据。另外,现在的软件人员还需要改变习惯,克服偏见,接受一种不同的嵌入开发技术。对于自动代码生成,设计者有很多强烈的观点。一些开发人员根据早先的产品经验,认为代码生成器需要大量的开销,生成的代码效率不高。但现代工具供应商称他们的代码生成器可提供无错的代码,能够精确地匹配规范要求,并且比手写代码更紧凑。
%A
%A   自动代码生成是基于模型设计的一个组成部分或子集,设计者用一种正规的图形化表述来定义系统,而不是传统的手写规范。模型必须明确地定义系统的预期功能与行为。一般来说,大多数系统建模程序都可以让用户从库中选择预构的块,将它们连接起来形成一个图形化模型,从而完成一个系统表述。而要成为一个熟练的系统建模人员需要专心和经过培训周期,学习一种新的编程语言。
%A
%A   原型前的代码
%A
%A   系统建模的主要好处之一是能够在设计交付制作硬件以前,仿真嵌入系统的运行情况。仿真器可以用于测试和优化性能,验证系统是否满足要求。PC 上的仿真并不只是复制一个实时系统规定的性能,还能测试很多功能,如用户界面。大多数建模系统亦有内置的错误检查功能,可以自动检查不一致和不明确之处,以便在开发周期的早期消除潜在的错误。将图形化建模与仿真器和代码发生器相结合,就可以在原型硬件做好以前提供可运行的系统软件。这种方案在对第一款硬件原型的查错与调试时特别有效,因为它可以查到所有功能路径(参考文献 1)。
%A
%A   有些建模系统还提供逆向工程方法,当你修改库中的目标码时,就可以自动实现模型的同步与更新。这个功能连接了设计与编码工作,保证模型总能反映最新的产品状态。逆向工程还意味着可以用任何嵌入式源码直接创建一个模型,但成功与否要依赖于开发人员创建代码的方式。多数建模程序都允许用户以图形和文本格式提取所有系统数据,创建出标准或定制化的系统文档。与逆向工程类似,文档自动化可以确保纸面资料追踪硬件的变化。
%A
%A   UML(统一建模语言)是开发人员准备自动代码生成模型时最常用的标准之一。业界在1997年首先采用了UML,它是对开发人员在上世纪90年代初提出50多种建模方案的统一。OMG(对象管理小组)负责维护UML,从它的网站可以免费下载最新版的规范和教材。UML是一个非专利的图形化技术,用于面向目标软件的分析与设计。与任何其它面向目标的方法一样,UML也基于类 (class) 和目标 (object)。一个类是一组有相同数据和行为的目标。类属性定义了包封的数据,而类服务则描述对属性起作用的函数。最新 UML 规范定义了 13 个图类型,用于从行为、交互和结构等角度描述软件系统。
%A
%A   IBM 提供了第一种也是最常用的商务 UML 建模工具:Rational Rose。IBM 有专门针对标准商务开发和实时嵌入软件系统的版本。例如,Rational Rose Technical Developer 是一个 UML 模型编译器,它能生成针对 Unix、Linux、微软 Windows 和 RTOS 目标的完整 C、C++ 和 Java 代码。除了运行时模型执行、虚拟模型调试以及基于模型的测试以外,软件包还包括一个移植向导,可以为几乎任何 8位以上目标平台提供支持。软件亦提供正向和逆向工程支持,用于大多数常见的 Java 结构。Rational Rose 会在后台自动更新配置管理,以支持远程团队开发。IBM的 Rational Rose Technical Developer 软件加上 12 个月支持的起价为 5995 美元。
%A
%A Telelogic的Rhapsody Visual Programming Environment(Rhapsody虚拟编程环境)专门针对实时嵌入软件,它将开发工作集成为一个简单的过程,其中设计、编码和文档可以连续地同步进行。可以从一个UML模型直接生成C、C++ 或 Java代码,合并传统代码的设计,或者增加自己定制的代码。还可以从一个模型中提取软件成分,将其用于新设计中,而无需原始开发商的支持。图1表示 Rhapsody在C编程环境下的一个代表性的用户界面。最新推出的Rhapsody 7.0版特点具有增强的用户界面、传统代码的逆向工程,以及与开放源开发平台 Eclipse的无缝集成的特点。Telelogic根据生成的代码类型和目标操作系统提供独特的软件版本。Rhapsody 的价格从 1000多美元起,典型的捆绑式售价为1万~2万美元。
%A
%A   你也可以用一些免费软件而无需购买现成的商务软件也能尝试 UML。IBM 和 Telelogic 都提供免费、试用日期受
%A 限制的庞大建模软件,供用户评估。另一种选择是 ArgoUML,这是一个免费的 UML 建模工具,并且是发展中的开放源开发项目。ArgoUML 采用 Java 编写代码,使用了 Java 基础类,因此可以运行在几乎任何平台上。尽管 ArgoUML 还没有与 UML 2.0 实现兼容,但它支持大多数类、状态机、活动、用例、协作和顺序图。除了代码生成功能以外,ArgoUML 还可以对 Java 代码作逆向工程,生成相应的 UML 图。同样,Umbrello 的 UML 编辑器是与Linux KDE(K 桌面环境)一起提供的一个 Sourceforge 开放源项目,它支持大多数最新的 UML 标准(图 2)。Umbrello 为 C++、Java、JavaScript、Python、Perl 和其它几种语言提供代码生成支持,以及为 C++ 的逆向工程。与其它很多开放源项目不同的是,Umbrello 开发者网站上提供了一套完整的用户手册,它描述了 UML 的基础概念,以及每种图类型。
%A
%A 图2Umbrello开放源UML编辑器支持最新UML标准可为 C++、Java、JavaScript、Python、Perl和一些其它语言生成代码
%A
%A
%A   很多自动代码生成系统都是全部基于标准的UML,但也可以找到一些成功建立在专有图形建模系统上的软件开发工具。例如, MathWorks 提供的 Simulink 是一款用于建模、仿真和分析动态系统的交互式工具。你可以从一个预定义库(而不是定制的块)建立一个系统模型。还可以将模型单元划分为子系统,以简化构建工作,并且实现多个项目的重用。交互式仿真器可以用于评估系统性能,重新定义设计。Simulink 与 MathWorks 用于建模事件驱动行为的 Stateflow 和 Real-Time Workshop Embedded Coder 集成在一起,能自动生成符合 ANSI/ISO-C 的代码(图 3)。所有工具都需要 Matlab,其售价为 1900 美元,Simulink 或 Stateflow扩展工具的售价为 2800 美元,而 Real-Time Workshop Embedded Coder 为 5000 美元。
%A
%A 图3The MathWorks的Simulink可以从一个预定义块的库建立系统模型并评估系统性能
%A
%A
%A   目标优化
%A
%A   Gedae 是另一种基于模型的专有开发工具,它用于需要密集信号处理的应用场合,如雷达、声纳、成像和音频。Gedae 工具集包括一个工作站开发环境和针对目标的运行期内核,用于各种嵌入式目标,如 PowerPC 处理器、FPGA 和 DSP。Gedae 核心语言规定了与目标无关的模型功能,或自己的编程语言(图 4)。Gedae 使用内置或用户提供的实际参数,可转换模型以产生对目标最佳的性能。然后可以输出目标代码以实现应用。Gedae 还带有一系列工具,用于将应用映射到多个处理器,并虚拟执行活动。现有适用于多家电路板供应商的支持软件包以及 Gedae BSP(电路板支持包)开发套件,用户可以使自己的目标代码适合定制的硬件。带有一系列为算法、工作站和目标开发配置的 Gedae,起价为 7500 美元。
%A
%A 图4用户使用Gedae工作站开发环境可以规定模型功能而无需考虑目标或编程语言
%A
%A
%A   National Instruments 公司对有 20 年历史的图形编程语言 LabView 的最新升级为嵌入式软件设计者提供了另一种自动化嵌入代码生成的方法。除了系统建模和系统仿真功能以外,最新的 LabView 还支持面向目标的编程方法,采用类、对象、数据包封或数据隐藏(用户看不到类实现详情的方法)等面向目标的编程方法。一个新的嵌入式开发模块为多数实时操作系统和任何目标32位处理器或DSP提供C代码生成。LabView 的起价为1199美元,嵌入式开发模块价格为10995美元。National Instruments 还提供CompactRIO系统,它可以让开发者用一个可重新配置的FPGA和LabView 图形开发工具定义定制的硬件电路(图5)。CompactRIO具有一个实时的嵌入处理器,一个包含用户可编程 FPGA 的 4 槽或 8 槽机箱,以及15个热插拔工业标准I/O模块。CompactRIO 系统核心的FPGA电路是一个并行处理计算引擎,它执行嵌入式 LabView 应用程序的速率达到以前系统的100倍。设计者用LabView、LabView Real-Time Module 和 the LabView FPGA Module 对 CompactRIO硬件编程。CompactRIO嵌入系统的起价为2495美元。
%A 随着软件成为最大的嵌入项目预算,开发团队必须考虑采用软件自动化工具来减少编程负担。CMP Media 报告说,超过一半的嵌入系统项目完成时间至少落后于计划进度表三个月,而 Venture Development 公司估计,每个嵌入项目的代码行数正在以平均每年 46% 的速度增加。这些统计数字表明,传统的软件开发方法难以应对这些问题。虽然在采用一个基于模型的设计方案以前还要跨
%A 越很多早期障碍,但在代码生成、文档编制和产品升级上节省的时间将最终偿还这些过渡成本。
%A%A
%A

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
最近文章
寂寞如雪
2009-05-19 19:01:18
夜色花
2009-05-19 18:56:22
没有爱可以重来
2009-05-19 18:54:59
推荐文章
最近访客