文/刘国展
嵌入式软件分层架构的本质与优缺点
文/刘国展
在软件开发设计过程中,分层架构的应用可以提升软件的效率和质量。本文首先对嵌入式软件分层架构的本质进行了分析,然后对分层架构的优缺点进行了研究,最后对分层架构的设计进行了探讨。
嵌入式软件 分层架构本质 开发模型
在嵌入式软件开发过程中,硬件底层、操作系统、应用程序等都是共同设计开发的,但如今软件越来越复杂,已经不适应当前形势,因为每次开发项目都需要重新设计出一套新软件。对软件的重复使用造成了比较大的限制,给日常生活工作带来不便,增加了消费成本,而且也浪费人力资源。本文重点对嵌入式软件分层的本质与优缺点进行分析。
社会的不断发展,带来了工业革命,也给传统的劳动生产力进行了优化和改良,每一个人都有自己的岗位和工作,发挥自身的潜能。此外由于单一的劳动大大提高了人员的操作熟练度,减少了在劳动过程中的损失,从而有效的提高生产力,带动经济效益,由此也衍生出了分工的概念。随着社会的快速发展,劳动人员的分工也在不断的强化和细化,一些特殊形式的分工可以有效的提高工作效率,而且还有其他的特点:
(1)像金字塔一样,最底层的并不知道还有存在顶尖层次;
(2)相邻两个层次可以相互联系。因此来讲,满足以上两点内容就可以将其称之为分层架构,也是分层架构思想的启发。
将分层技术融入到软件开发过程中,其实就是为了更加有效的对用户提出的所有需求进行分析和梳理,将软件系统中各个功能领域进行抽象化,科学合理的确定系统内部各个层次之间的关系,从而简化模块的开发过程,将系统开发问题转变为内简单的软件设计问题,并且其支持系统所涵盖的所有功能。在进行软件系统开发过程中,系统的场景越复杂,为了更好的解决问题就需要更加精细的进行分层,并且各个层次之间的关系、接口对接的关系就更加难以进行设计。虽然分层的方式多种多样,但是在软件开发过程中并没有制定出标准。以实现计算机软件所有功能为基础,需要对各个层次之间的问题进行解决,简化软件实现过程,并且能够有效的对上层提供所需的服务;一旦某一层次出现问题,则只会对其上下层次产生影响,不会对系统的整体产生影响;每个层次内部在进行分层,最大限度的实现软件的所有功能。
一般来讲,采用嵌入式应用系统可以将计算机软件开发从技术层面分为四大方面:硬件平台、BSP和设备驱动层、调动系统层和应用层。
主要包含计算机软件的核心部分,比如嵌入式微处理器。微处理器具有大量的外接端口,便于进行对接。还有一些周边的功能电路部分,如液晶显示屏、键盘、开关等。
设备驱动层不仅仅可以实现微处理器内部硬件和外部硬件的API,而且还能够有效的为底部算法提供API,其中主要包含定时器、CAN、SPI等微处理器片内部和外部的驱动以及API功能的实现,还包含微处理器片外外设的水平测试仪、温度传感器等驱动和API功能的实现。一般来讲,设备驱动层属于独立的部分,以操作平台底层的硬件语言为基础来进行硬件抽象层的建立,并且有效的为上层应用提供对接端口。
调动系统层在进行编写过程中可以使用嵌入式操作系统为基础来进行编写。一般来讲,主要分为两大部分:嵌入式操作系统和基础应用的裁剪。或者也可以以现有的调度器为基础来进行内如管理和电源管理等专用系统的编写。
应用层主要是一些开发类工作,其中包含人机接口的开发、算法的开发、数据库的开发等工作。
图1:交互分层关系图
图2:电机监控系统组成及交联
采用嵌入式软件开发方式对软件的功能、精准度和可靠性有效极其严格的要求。随着社会的不断发展,嵌入式应用系统也变得更加的复杂,将分层技术引入到嵌入式应用软件系统开发过程中,不仅仅能够确保软件开发逻辑的合理性,而且还能大大提高计算机软件开发的效率。在软件开发过程中,严格按照“高内聚、低耦合”的标准,对嵌入式应用软件系统的各项功能区域进行划分,大大降低软件各个层次之间的耦合度,并且可以将其分为四大层次:应用管理层、算法协议层、功能开发层和硬件驱动层。
采用分层架构的只要目的在于对“关注面”进行有效的隔离。软件在进行开发过程中,存在大量复杂的问题,这也严重影响了软件开发工作的进度,因此必须将复杂抽象的问题进行分解,单独进行解决。
能够更好地发挥开发人员的特长,有利于加快开发进程;层次之间可以隔离,更方便开发过程中的随时纠误;各个层次之间的关系弱化便于分层标准的确定,也就更能保障软件质量。
系统的稳定性会受到影响,因为无法封装系统的所有功能,如果使用过程产生异变,系统可能会整体受损;层次之间的调用关系一旦打破,也就意味着效率的降低。
垂直划分原则普遍应用于分层架构的逻辑层面,物理层面一般采用水平划分原则。本文正是从逻辑层面和物理层面进行划分的,称逻辑层面为构建分层,物理层面为交互分层。
如果是交互分层,各个层次之间的关系如图1。界面主要负责人机数据;控制层主要传达系统命令,协调各方工作;实体层主要是运算逻辑和数据信息;接口层的作用就是与外部系统对接。
构建分层中,驱动层的作用是封装硬件逻辑;其硬件主要交付基础层应用;中间层的作用则是隔离应用层与基础层,同时向上层应用层提供所需服务;应用层为软件中具象的应用单元提供服务。
在使用层次正交分析之前,需要对两个不同维度中,层次的划分、层次的内容进行确定,这样才能有效的确定好各个层次之间的对应关系。
将正交分层作为参考标准;将关注点相同的内容划分为一类;复用内容划为一层;变化内容划为一层;与外部接口有关的可以划为一层。
以电机监控系统为例来进行分层架构的解释说明,图2为电机监控系统组成图和交联图。操作人员使用操作界面中的Keypad实现对电机的控制,经过MCD处理之后,借助AD转化器来对实体进行控制;与此同时,实体Motor将状态传送给Contactor,再将其传送给MCU,最终在显示界面的LCD上进行展示;MCU可以借助网络与电脑进行连接,借助电脑PC可以对其进行监控。
综上所述,本文首先对分层架构的概念进行了分析介绍,然后对分层架构的本质和优缺点进行了探讨,并对分层架构的设计进行了探讨。通过在嵌入式软件开发过程中应用分层架构具有良好的可扩展性,可以对成熟的软件功能模块进行积累,减少后期的维护难度,保证项目的开发效率和开发质量。
[1]陈翌.嵌入式软件开发技术[M].北京:国防工业出版社,2003.
[2]王湘文,陈建伦,陈纪铭.分层软件架构设计及其应用研究[J].福建电脑,2011(06):55-56+93.
[3]高焕堂.架构设计的How-to[J].程序员,2009(04):160-160.
作者单位 广东九联科技股份有限公司 广东省惠州市516000
刘国展(1986-),男,广东省陆丰市人。大学本科学历。助理工程师,从事数字电视开发工作。