- UID
- 1023166
- 性别
- 男
- 来自
- 燕山大学
|
0 引 言
基于组件的开发(Component Based Development,CBD)技术在软件工程中占有举足轻重的地位,并且在许多工程应用领域已经取得了重大的成功。在通用计算机软件、电子商务、Internet和分布式计算环境中CBD技术已经得到了成熟的应用。但是,在其他一些领域,如嵌入式系统中,CBD的应用还及其有限。由于不同嵌入式系统的需求和硬件平台各异,要开发出适用于所有系统的通用组件是极其困难的,目前只能够针对特定应用领域和平台研究开发适用的组件。正是由于嵌入式系统的差异性、专门性与组件技术的通用性之间的矛盾,所以要利用组件进行嵌入式软件开发,就必须采取适用的组件技术和系统开发方法。
在此,主要介绍了面向组件软件工程的总体原则及其在嵌入式系统中的应用。通过分析嵌入式系统中对组件的要求和通用组件技术的差异,提出了嵌入式组件的设计原则,并基于嵌入式组件的特点,提出一种面向组件的嵌入式软件系统开发方法。表明尽管嵌入式系统与通用计算平台具有很大的差异,但是组件技术仍然可以成功地应用于嵌入式领域。
1嵌入式系统和组件技术
1.1嵌入式系统
嵌入式系统是满足专门需求的小型计算机系统。例如,车载控制系统、工业控制系统、移动电话或者传感控制系统。嵌入式系统的范围极其广泛,从微型计算设备到复杂的大型监控设备都属于嵌入式系统的范畴。实时性是大多数嵌入式系统的特性,是在系统设计时需要考虑的重要概念。对于实时性的要求,不同嵌入式系统可以分为软实时系统(Soft Time System)和硬实时系统(Hard Time System)。嵌入式系统一般还要求有很好的稳定性和可靠性。由于功能专一,需求多样和系统小型化,这就要求系统的成本低廉,从而限制了系统的硬件性能。由于嵌入式系统的资源限制和实时性要求,软件开发人员往往不能够利用先进的通用软件工程技术,而必须使用一些非正规的方法,利用高效的程序语言进行开发。随着系统复杂性不断增加,对系统的需求分析,模型设计,早期的错误检测,开发周期,可维护性等方面提出了新的要求。因此推动了先进的软件工程方法向嵌入式开发领域的转移。
1.2组件技术
组件技术就是一种软件工程中的先进技术。组件可以认为是能够用于构建大型系统的自包含的部件或子系统。在软件工程中,一个组件与一个微型应用程序类似,即都是已经编译链接好,并可以使用的二进制代码,应用程序由多个这样的组件打包而得到。在需要对应用程序进行修改或改进时,只需要将构成此应用程序组件中的某个用新版本替换掉即可。这样,使用组件技术的系统就具有很好的灵活性和可移植性。另外强大的组件库能够为开发人员提供功能丰富的组件支持,从而大大缩短软件的开发周期。使用组件的种种优点直接来源于可以将它们动态地插入或卸出的应用。为了实现这种功能,所有的组件必须满足两个条件:一是组件必须动态链接;二是它们必须隐藏其内部实现细节。另外,利用组件还能帮助开发人员根据所使用的组件功能预测和验证系统的功能特性。正是由于组件具有诸多优点,基于组件的开发技术才引起了软件工程领域的广泛应用,并且逐渐将它引入迅猛发展的嵌入式软件开发领域中。
2嵌入式系统组件的设计原则
2.1接口设计原则
适用于嵌入式系统中的组件遵从大部分的通用组件设计原则,特别是组件的接口和实现相分离的封装特性。组件的接口是组件功能的体现,系统中的其他部分或者组件正是通过接口使用组件提供的功能。但是对于嵌入式系统而言,有一些额外的系统特性或约束和系统功能是同样重要的(如实时性),那么接口仅包含组件本身的功能特性就不完备,它还必须包含额外的系统特性,即加入约束条件。这样在系统设计阶段,利用组件进行设计不但能够验证功能需求,而且还能预测和分析系统特性需求。
2.2组件绑定与发布原则
在通用组件的设计中,接口是以支持运行期绑定的多态对象接口方式实现的。组件完全以动态形式绑定,独立于接口的定义。这样为组件复用、系统升级提供了强大的灵活性。但是,这种灵活性在嵌入式系统中会带来性能的下降和风险的上升,影响系统的实时性和稳定性。因为所有组件都在运行期绑定,这样必然会增加冗余代码,并且让系统行为变得难以预测。因此,通用组件的动态特性在嵌入式系统中特别是小型系统中是不可行的。由于实时性和硬件资源限制,在嵌入式系统中,组件链接和组合最好在系统设计期静态而不是运行期动态地进行。进行组件的静态绑定,可以通过系统建模工具对一个基于组件的系统设计产生一个总体视图,这样能够对系统性能有更好的预测和优化。所以组件的形式不应该再使用通用组件中的二进制可执行文件形式发布,而应该采用高级语言或更为抽象的建模语言(如UML) 定义组件的形式,这样可以让组件在编译期或者在设计的早期就可以绑定链接,而不是像通用组件那样的迟绑定(Late Binding)。
2.3 大型嵌入式系统中的组件原则
随着嵌入式技术的不断发展,许多功能复杂的大型嵌入式系统也随之出现。对于这些系统硬件资源和实时性已经不是首要的考虑因素,如何有效控制系统复杂性和降低高昂的开发成本已成为最主要的问题。所以对于这样的大型嵌入式系统,通用组件几乎可以毫无障碍地在系统中发挥作用,极大地简化了开发难度,减少了开发工作量和开发周期。如微软的嵌入式系统Windows CE就是这项技术的成功应用,系统功能和应用功能完全以组件方式列出,开发人员只需要简单地添加和删除就能将一项复杂功能加入或移除系统镜像,并且支持功能强大的COM组件库,为应用程序的开发提供了非常便利的工具。当然,那些要求强实时的大型嵌入式系统也不应该使用通用组件技术,应该根据具体的系统特性使用精简版本来进行系统开发。
3面向嵌入式组件的系统开发过程
由以上分析可以看出,由于嵌入式系统的功能和性能要求,以及硬件资源限制和复杂性控制需求,适用于嵌入式软件系统的组件体现了接口定义约束、静态绑定和抽象语言的发布形式等特性。那么正是由于这些特性的存在,适用于通用组件的软件开发方法就不能直接应用于嵌入式软件开发过程,而需要一种适合于嵌入式组件特性的系统开发方法。下面介绍面向嵌入式组件的开发过程,它能够有效地利用和体现嵌入式组件的特性。 |
|