UML软件工程组织

一种基于UML的嵌入式实时应用软件开发环境

尚利宏 刘建峰 熊运鸿* 金惠华

    嵌入式软件的应用与开发是当今计算机软件发展的一个热点。本文首先对传统嵌入式软件的开发方法和环境进行了阐述,分析指出了他们的优缺点。接着介绍了迭代式软件开发方法以及通用建模语言UML,在此基础上提出了基于UML的嵌入式软件开发环境,并对它的组成与结构进行了分析。最后简单介绍了I-Logix公司新推出的基于UML的面向嵌入式应用的软件开发环境——Rhapsody。

关键词 UML,嵌入式系统,实时系统,迭代增量式开发方法

1引言

在过去的十多年里,嵌入式技术得到很大发展,尤其是嵌入式软件开发环境的发展,使一直“深埋”于系统的嵌入式应用软件变得开放而易于开发。从而促进了嵌入式技术的广泛应用。嵌入式软件开发环境始终是研究的热点之一。

伴随着嵌入式应用的不断的增长,嵌入式系统的需求的复杂性、不确定性也在不断地提高,系统规模也在逐步地扩大,而产品的研发周期又在不停的缩短,这给嵌入式应用软件的开发带来了新的挑战。同时,嵌入式软件的开发者必须面对由于芯片性能的增长、嵌入式操作系统平台等技术方面不断变化所带来的各种压力。根据近期的资料统计,在欧洲有34% 的嵌入式软件项目在开发过程中被迫取消,72.7% 的软件在产品开发完成时已超出预算的50%。传统的嵌入式软件的开发方式将面临新的挑战。

2 传统的嵌入式软件开发方法及环境

嵌入式软件的开发过程和一般软件的开发一样,必须经过软件开发的分析、设计、编码、测试所有阶段。分析过程定义了软件要解决的问题的空间,设计过程定义了问题的就决办法,编码是对设计的具体实现,测试过程可以验证系统是否满足需求、实现是否满足设计。图1所示的为传统嵌入式软件开发的一般的过程。

 

 

 

 

 

 

1  传统的嵌入式软件开发过程

图中上面部分就是软件的分析和设计过程,下面部分是软件的实现和测试过程。可以看出,在设计与实现之间存在着一堵墙,它反应了软件开发过程中的需求分析和设计与具体的实现之间脱节。这是由嵌入式产品的开发特点所决定的。嵌入式产品的更新很快,这就要求研发周期尽可能的短,同时在开发过程中能动态地调整需求。所以这种静态的开发方式不能适应研发的要求。另外,这种开发方法对需求和设计的验证是在开发过程的最后阶段进行的,这种软件完全实现后的验证往往会带来有很大风险和开支,甚至由于分析或设计的错误或缺陷而影响产品的上市。

在嵌入式软件的开发过程中需要环境和工具的支持。传统的嵌入式软件开发环境主要是对开发过程中的实现及测试阶段的支持,为开发人员提供了基于嵌入式操作系统的高级语言编程环境以及基于源程序调试的各种界面和手段。在软件开发过程中的其它阶段也可以采用相应的CASE工具(如需求分析工具等)以提高了软件开发的效率,但总的来看,传统的嵌入式软件开发环境的最大特点就是以源程序的开发和测试为核心。

3迭代增量式软件开发方法

从七十年代末,面向对象技术逐步兴起,到现在已占据了软件开发过程的主导地位。在面向对象软件开发一般都采用迭代增量式的开发过程,这种方法不是在项目结束时一次性提交软件,而是分块逐次开发和提交。每一次迭代都包含了软件生命周期的所有阶段,即:分析、设计、实现和测试阶段,如图2所示。由于迭代式软件开发方法可以尽早发现项目的风险,并在软件开发过程中对这些风险进行有效的控制,迭代式软件开发方法已得到肯定,几乎所有面向对象的资料都认为应当采用这种开发方法。

 

 

2 迭代式软件开发方法

在嵌入式软件开发过程中,采用传统的顺序开发方法,往往造成软件开发过程中的需求分析和设计与具体的实现之间脱节。开发初期所做的需求分析及设计,在后期的实现和测试中往往要做变动,甚至是抛弃了前期的这些工作。嵌入式产品的开发涉及多个环节,软件的需求很难很快的确定下来,常常是不断变化的,而嵌入式产品的开发的周期一般都很短,所以嵌入式软件开发采用迭代递增的开发模式更合适。在开发初期,并不是所有的需求都确定,这时可以将那些已经确定的需求进行分析、设计、实现、测试和验证。这部分工作结束时,又有新的需求了,可以按上面的步骤进行,经过反复迭代,系统就逐步设计完成了。

4 基于UML的嵌入式实时软件开发环境

4.1 UML概述

UML是面向对象的标准建模语言,是面向对象技术领域中的重要成果。UML的定义包括UML语义和UML表示法两个部分。UML为对象的结构模型和行为模型定义了语义,结构模型强调系统中对象的结构,它包括类、接口、属性和关系,行为模型强调系统中对象的行为,它包括它们的交互作用、合作性和状态历史。UML表示法是UML语义的可视化表示,是用来为系统建模的工具。

UML的目标是以面向对象图形的方式来描述任何类型的系统,可以为任何具有静态结构和动态行为的系统进行建模。因此,使用UML可以很好地完成嵌入式实时系统的建模。

 

4.2 基于UML的嵌入式软件开发环境的组成

UML是一种语言,不是方法,它独立于任何一种开发过程,但支持过程。UML开发者提出的开发过程是用例驱动、以体系结构为中心、迭代递增的过程,这正是嵌入式实时应用软件开发的理想过程。在应用标准建模语言UML时,必须有相应的环境。

在迭代式的开发过程中如果采用传统的手工编码、基于源程序的测试手段,必将影响迭代周期,基于模型的调试就十分必要。

综上所述,有效的嵌入式软件开发环境应该支持可视化建模、支持基于模型调试、支持迭代式开发方法。这样一个环境至少应该包括可视化建模、可执行的模型、模型代码的相关性、实时框架四个部分。如图3所示:

 

 

 

 

 

3  基于UML的嵌入式软件开发环境的组成

    1)可视化建模

建模是面向对象分析和设计的核心,也是分析和设计过程中最基本和最关键的活动之一。面向对象的分析和设计应该从建模开始。开发环境应该支持可视化建模。UML适用于以面向对象技术来描述任何类型的系统,而且适用于系统开发的不同阶段。开发环境可采用标准的UML为系统建模。根据开发过程的不同阶段的具体要求,利用UML的不同的图为描述系统的各种静态结构模型和动态行为模型,如图4所示。

 

 

 

 

 

 

 

4 基于UML图的可视化建模

    2)可执行的模型

    基于模型的调试是迭代式开发方法的主要特点之一。通过模型级调试、验证,可以尽早发现系统的的设计错误或缺陷,从而较早地确定或降低项目的分险。这就要求所建的模型应该是可执行的模型。开发环境应该支持模型的运行和调试,并提供各种基于模型的调试的手段。如基于状态图的断点设置、捕捉不同对象之间的消息映射等等。

    3)模型——代码的相关

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

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

为了保证模型代码的一致性,应该支持代码到模型的逆向工程。

    4)实时框架

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

实时框架可以针对不同的嵌入式实时操作系统有不同的实现。实时框架一般都是开放的,用户可根据自己的特定的应用环境进行定制。

由于产生的原码是基于实时框架的,在编译与连接时通过选择不同平台的实时框架库就可以运行到这些不同的平台上。在软件开发的不同时期,我们可以选择不同的运行平台,例如,在硬件平台没有完成时,用户可以在宿主机的操作系统下仿真运行,也可以在嵌入式操作的开发环境所提供的虚拟环境(如Tornado环境下的VvSim)下运行。在系统集成时,就可以在目标系统上运行。

 

4.3 基于UML的嵌入式软件开发环境的结构

3所示的为一种支持基于UML的迭代式开发方法的开发环境的结构,虚框部分就为基于UML的软件开发环境。

 

 

 

 

 

 

5  基于UML嵌入式软件开发环境的结构 

系统分析和设计用UML来描述,对系统建模,实现过程利用代码自动生成技术来实现。测试过程将依赖于生成的代码,通过在代码中拆装一些用于支持模型调式的调试信息来实现。而代码的编译、连接则采用目标系统的操作系统的开发环境来完成,代码的运行与源程序级的调试仍然采用一般的嵌入式软件调试环境。

     这种结构具有以下特点:

1.它是基于传统嵌入式软件开发环境之上的高层开发环境,基于模型的设计和调试是它的侧重点,同时借助于传统的软件调试环境可以实现基于模型的调试和基于源程序的调试同步进行。

2.模型的运行和调试是基于与最终产品的源程相同或相近的程序来实现的,这种模型级的调试与其他的模型仿真本质不同。

3.程序的生成是基于实时框架的,使应用软件的开发与具体的软件平台无关,对于不同的操作系统平台只需要维护不同的实时框架即可。

5  实例介绍

目前已有许多支持UML的软件环境,在嵌入式实时领域内最有影响的是美国I-Logix 公司推出Rhapsody

Rhapsody是一个基于UML的面向嵌入式实时应用开发的集成的可视化环境。软件开发者可以在这个环境里进行分析、设计、实现及验证。Rhapsody支持基于模型的调试(如图6所示)。Rhapsody提供了专门为实时和嵌入式应用设计的可执行的框架。可以产生基于VxWorks、POS、OSE等多种操作系统的C语言、C++语言或Java语言的源程序。


6  Rhapsody 的设计级调试

现在,Rhapsody已经运用到许多嵌入式产品的开发项目中。根据Rhapsody公司的统计,即使第一次使用Rhapsody的用户也会缩短30%的开发周期。

6 结束语

随着后PC时代的到来,嵌入式应用将会迅速增长。传统的嵌入式软件开发方法及其支持环境已不能适应日益增长的嵌入式市场对产品研发的要求,与之相比,面向对象的迭代增量式软件开发方法具有明显优势。文中所讨论的已模型为核心的这种新的嵌入式实时软件开发环境可以有效地支持迭代式开发方法,使软件的开发工作主要集中在高层的建模和模型的测试及验证上,从而使软件开发工作的焦点从编码转到了设计。