基于UML的嵌入式软件开发

时间:2022-06-13 05:49:05

基于UML的嵌入式软件开发

在3C融合趋势下,中国嵌入式软件市场快速发展,并受到政府的高度重视。2006年中国嵌入式软件市场规模达到1461.6亿元,2006~2010年复合增长率将达27.6%。

嵌入式市场巨大,但嵌入式的开发中存在很多问题,于是出现了模型驱动开发(Model DriyenDevelopment,MDD)方案。

本文笔者将主要阐述UML为什么适用于嵌入式开发的软件建模,最后提供一种可参考的基于模型的嵌入式软件开发环境。希望能够为嵌入式开发人员带来一些指导。

UML,统一建模语言

UML是用来对软件密集系统进行可视化,建模的一种语言。UML是为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。

UML是非专利的第三代建模和规约语言,展现了一系列最佳工程实践,这些最佳实践在对规模较大而且复杂的系统进行建模时,尤其是在软件架构层次已被验证有效。

UML适用于数据建模、业务建模、对象建模、组件建模等。作为一种模型语言,UML使开发人员专注于建立产品的模型和结构,而不必花费很大精力在选用程序语言和算法实现上。当模型建立之后,模型可以被UML工具转化成指定的程序语言代码。

嵌入式开发

当前,嵌入式系统已在国防、航空航天、工业控制及信息家电等领域得到广。泛的应用。然而,由于嵌入式系统的硬件、软件、应用环境的千差万别,当前有限的嵌入式技术人员的时间和精力主要花在熟悉不同的硬件、软件及其代码的开发上。

这样不但造成嵌入式系统开发效率和质量得不到保证,而且严重束缚了嵌入式技术人员进行更高层次的研究与开发。这些都成为日益复杂的嵌入式系统迅速发展的瓶颈。

为何选用UML?

当前,嵌入式软件开发多采用文档形式。文档形式嵌入式系统的局限在于,文档本身在传递过程中不可被测试,因此各阶段间形成了沟通障碍。由于不可测试,需求的错误被逐层积累,只有系统测试时才能发现。这就产生了矛盾:大部分错误已积累形成,但只能在后面发现。因此,在纠正错误时,文档架构代价高昂。

这对矛盾给开发工作带来了较大障碍,极大地浪费了人力资源,据调查显示,近37%的文档形式嵌入式系统项目会选择增加开发人员,56%的开发项目会取消部分功能以降低系统复杂度,甚至有近18%的项目可能被直接撤消。

为了解决该矛盾,需要改进开发流程、提高团队的开发效率,因此Telelogic推出MDD方案。MDD的特点在于各阶段都存在具体的模型与之相对应。

比如,在需求阶段,提供领域模型(概念模型),可以把需求以模型的方式表达出来;在架构阶段,提供系统模型,它关注系统的划分,包括大的系统怎么样划分为子系统及系统间的接口;在编程阶段,提供软件模型,它以抽象或建模的方式表达系统功能,为后续编程人员带来方便。

建模不等于直接提供完整模型,它要求分阶段的层次感,即要求后来的模型是在前面模型基础上叠加,从而保证模型与模型间、阶段与阶段间具有一致性。

相对于文档驱动开发,基于模型的开发是可验证的,它包括静态及动态检查。

静态检查是指在通讯出现故障时,系统会自动报错;动态检查是指检测系统早期行为,通过发送激励并根据需求文档去模拟功能,在动态基础上检测系统是否能完成需求规定的要素。动态检查可在系统早期去除逻辑缺陷。

基于模型的开发可定义为MDD,即在开发的各个阶段形成涵盖大部分系统活动的模型,保证阶段和阶段间的一致性。而UML非常适合用于嵌入式软件建模。

UML是极好的建模语言,UML具有很详细的语法语义,可以构建完善的系统并最终打印成文档。UML语言提供了多视角,可用于描述系统中被关注的不同事物及实现的不同行为(视角在UML语言中被称之为图)。

随着参与项目的人越来越多,产生的图也越来越多,当它们叠加在一起时即可说明一个模型。UML可在系统开发的不同阶段使用,因此UML覆盖了系统开发的全过程,从设计描述、开发到测试,均有不同的图与之对应。

不同于一般性软件开发,嵌入式软件开发有其特别之处。首先,嵌入式系统大部分属于反应式系统。只有当受到激励,系统才会产生响应。UML内含的状态机可以对该行为进行精确描述;其次,嵌入式软件往往对实时性要求苛刻,因此时序对于嵌入式系统非常重要。UML提供了众多描述时序的机制,很多图都包含时序的概念,因此可用于描述实时性要求。

另外,嵌入式软件有时要求运行在多任务环境下,而UML本身也包含多任务环境,当任务问需要交互消息时,也可通过UML发送。最后,嵌入式还要求良好的可移植性,因此要求应用的语言能对硬件进行描述,硬件描述相当于一个接口,UML语言包含各个图接口,可满足嵌入式需求。

Rhapsody:基于模型的嵌入式软件开发环境

Telelogic提供了一款基于模型的嵌入式软件开发环境Rhapsody(中文名:狂想曲)。它的设计思想是用一个平台概括或近乎概括设计的各个环节。如它可用于建模的前期分析、验证、测试或生成文档等。在该环境中客户可加入自己的C或C++代码。

Rhapsody是市场领先的嵌入式OMG系统建模语言(SysML)/UML 2.1 MDD的环境。Rhapsody是唯一既满足系统工程师又满足软件开发人员需求的工具。

Rhapsody为系统工程师和软件开发人员提供遵守UML/SysML标准的产品,此产品可以为领域定义建模进行扩展,从而提供真正的协作性开发环境(大型团队和小型团队都可以高效地沟通)。

集成管理需求和跟踪需求的功能将确保设计始终满足需求。可测试性设计(DFT)功能可以在流程早期减少缺陷,并始终可以根据需求进行验证。Rhapsody通过生成完整的应用程序(而非仅仅生成代码框架)加快开发。这些技术被整合在一起且易于使用,使Rhapsody成为软件和系统工程师的理想解决方案。

与传统的文档驱动的方法相比,模型驱动开发将确保提高生产率,因为它使得用户可以使用图形来描述系统的设计和架构,并可以模拟和自动验证正在构建的系统。

通过MDD,工程师和开发人员可以生成完整、正确、明确的系统规范。通过Rhapsody对模型驱动架构(MDA)的支持,用户可以快速地将平台无关模型(PIM)定向到实时、嵌入式操作系统。

Rhapsody改进了设计方法:用户可在主机环境上重复执行和验证软件,然后直接将其转移到嵌入式目标机上进行测试。

Rhapsody的功能包括:

自动生成代码,在系统中输入状态机、模型架构或软件架构,系统即可生成C语言代码;

验证模型,可对完成的模型,一步步跟踪调试。特别之处在于:Rhapsody可令开发人员直接在图形界面进行调试,消除逻辑错误及功能性需求错误;

代码和模型的自动相关,嵌入式设计大部分用于军工、通信乃至医疗领域,因此希望能实时看到模型各部分对应的代码。

Rhapsody系统中的代码可读、可修改,修改后的代码还可进行自动更新,这对嵌入式系统非常重要。此外,Rhapsody独有的动态模型/代码关联(DMCA)功能使开发人员既可在模型层又可在代码层上进行开发。

Rhapsody允许用户生成完整的应用程序,所以在模型环境中可以构建整个应用程序。

不难看出,基于模型的嵌入式软件开发模式是当今业界的最佳实践,已经得到非常成功的应用。而且模型可以覆盖开发活动的整个生命周期,构建一个同一的平台。

上一篇:主动式防御导安全大局 下一篇:将FPGA熔入嵌入式系统设计