2.3 大型嵌入式系统中的组件原则
随着嵌入式技术的不断发展,许多功能复杂的大型嵌入式系统也随之出现。对于这些系统硬件资源和实时性已经不是首要的考虑因素,如何有效控制系统复杂性和降低高昂的开发成本已成为最主要的问题。所以对于这样的大型嵌入式系统,通用组件几乎可以毫无障碍地在系统中发挥作用,极大地简化了开发难度,减少了开发工作量和开发周期。如微软的嵌入式系统Windows CE就是这项技术的成功应用,系统功能和应用功能完全以组件方式列出,开发人员只需要简单地添加和删除就能将一项复杂功能加入或移除系统镜像,并且支持功能强大的COM组件库,为应用程序的开发提供了非常便利的工具。当然,那些要求强实时的大型嵌入式系统也不应该使用通用组件技术,应该根据具体的系统特性使用精简版本来进行系统开发。
3.面向嵌入式组件的系统开发过程
由以上分析可以看出,由于嵌入式系统的功能和性能要求,以及硬件资源限制和复杂性控制需求,适用于嵌入式软件系统的组件体现了接口定义约束、静态绑定和抽象语言的发布形式等特性。那么正是由于这些特性的存在,适用于通用组件的软件开发方法就不能直接应用于嵌入式软件开发过程,而需要一种适合于嵌入式组件特性的系统开发方法。下面介绍面向嵌入式组件的开发过程,它能够有效地利用和体现嵌入式组件的特性。
根据组成与分解、抽象与具体的两个基本开发思想建立一个二维坐标系,横坐标为抽象与具体;纵坐标为分解与组合。两个坐标轴将整个开发空间分成了4部分,即建模过程的4个基本步骤:分解、实体化、组合、确认。
分解 整个开发过程从图1的左上角开始。黑色方框代表了最初的待实现系统,即开发人员经过需求分析所建立的系统模型。通过系统功能域的划分,将系统进行分解,在每一个功能域都包含了与该功能相关的所有逻辑组件。每一个逻辑组件再作为一个子系统递归地进行分解,直到组件达到了可重用组件的粒度。分解过程只是从抽象和逻辑角度决定组件的功能形式。
实体化 将具有最小粒度的不能再分解的逻辑组件进行实体化。由于这些逻辑组件已经具有了明确的功能或者直接就是已有的组件,所以可以很容易地将这些逻辑组件转化为实际组件,如图1中右下角的黑粗线方框所示。
组合 将重用的或者是将实现的实际组件,根据抽象模型,通过组件接口组合起来,该过程完全是分解的逆过程。
验证 对实体化以后再构建起来的系统与最初的待实现系统进行对比,利用组件的功能和约束特性预测整个系统的功能和性能,从而验证系统设计的正确性。