摘 要:在不断的发展的 MCU嵌入式系统领域中,软件危机所带来的危害也日渐显现。如何利用软件重用的相关方法来解决这一问题成为当今研究的热点。领域分析是识别、捕捉、组织、分析和表示软件域中相关信息 , 确定软件的体系结构、框架和构件 , 以支持软件重用的软件工程过程 , 是解决重用问题的关键技术之一。通过对领域分析的相关概念、方法、过程以及产品的研究,从而得出在 MCU嵌入式系统领域进行领域分析的相关方法以及经验。
1.前言
MCU(Micro Controller Unit),又称单片机 (Single Chip Microcomputer),是指随着大规模集成电路的出现及其发展,将计算机的 CPU、RAM、ROM、定时数器和多种 I/O接口集成在一片芯片上,形成芯片级的计算机。当前 MCU嵌入式系统之间各自封闭开发,不同系统之间的重复工作比较多,大大增加了软件开发的成本和周期,同时系统的可靠性却得不到保证,MCU嵌入式开发面临着软件规模和复杂性迅速扩大、开发时间紧张,同时又要保证开发质量的问题。因此,迫切需要新的嵌入式软件开发技术。
1968年,Mellroy在其论文“大量生产的软件构件”中首次提出软件复用的思想 1,其目的在于探索利用“为了复用目的而设计的软件成分”生产软件的过程 2,得到人们的高度关注。在各种软件重用方法中,基于构件的软件开发技术 (Component-Based Software Development CBSD)也是人们研究的热点,并且在实践中也取得了良好的效果。
构件化的软件过程可以分成领域工程(开发构件)和应用过程(使用构件开发应用程序)两个独立的子过程 3。领域工程是可复用软件资产生产的主要技术手段,它包含领域分析、领域设计和领域实现 3个阶段。在整个软件的复用过程中,领域分析是其关键,只有通过领域分析才能得到相似系统中的可复用资产(领域模型、软件体系结构、可复用构件等)从而进一步支持领域中新系统开发的复用。因此形成在 MCU嵌入式系统中的有效的领域分析方法是极为重要的。
1. MCU嵌入式系统开发模式及现状
2. 1MCU嵌入式系统开发的模式
目前 MCU嵌入式系统的软件流程基本以包含人机界面处理的主流程 (缓处理)、外部非同步中断处理(急处理)、时序输入为中心,再加上机芯控制处理 (按照一定规则处理)等各种其他控制组成。MCU每完成一种功能,其处理过程都遵循 IPO模式(Input,Process,Output),如图 1所示。
对于每个模式来说,它的输入参数,输出结果都是固定的格式,所以对于一个成熟的模式来说,它的行为是确定的,约束是明确的。因为这些特点,可以很明显地观察到 MCU嵌入式系统领域所具有的内聚性,和稳定性。
因为领域的内聚性,我们可以使用相对较少的、有限的可复用信息来反应整个领域的需求,以及应用。因为领域的稳定性,我们通过领域工程所得到的成果,可以对进行领域工程所花费的人力、物力在将来的工作中得到补偿。
2.2 MCU嵌入式系统开发的现状
MCU的应用能够深入人类生活的各个方面,关键的原因在于能够通过对软件的灵活定制以达到不同的功能从而针对不同的应用。随着功能的日益增长,MCU嵌入式系统的开发难度也随之加大。如果内藏 ROM容量在 8K字节之内,有经验的技术人员可以单独一人花费 2-3月用汇编语言进行软件开发,而超过 16K的 ROM想要单独完成会更有困难。特别在消费电子领域,产品的更新换代从以前的年为单位到现在的以月甚至以周为单位,这导致在以产品质量为生命的企业中,发生质量问题而不得不大量召回产品造成巨大损失的情况屡见不鲜。值得注意的是,在开发中,有经验的开发者通常会选择性的复用以前的工作成果(代码、软件体系、工具、文档),但这种复用一般是个人的,复用的来源也是个人以前的经验成果。在一个特定的领域中,例如一个企业中,这样的复用是经常性的,它们有着以下的特点:
一个领域内可复用的资源和复用的机遇是非常多的,但通常情况下无法对可复用资源进行管理,无法决定何时复用以及复用的方式,从而无法对产品的质量进行有效控制。
一个领域内掌握某种复用资源的往往是个体,复用资源无法共享,造成资源的浪费和生产力不能进一步的提高。
由于掌握资源的个体的离开,导致资源的损失 ;新加入的个体无法系统地取得这些资源,而导致工作效率的降低。这种复用被称为个人复用(ad-hoc reuse)。如果能够对领域内资源进行有效的整合,通过更有效的方式进行管理、复用,将能进一步提高软件产品的生产效率、降低生产成本以及提高产品的质量,这种方式被称为系统复用 (systematic reuse)。领域工程正为解决这一系列的问题提出了解决方案。
1. 领域工程与领域分析
2. 1领域的含义
领域是指一组具有相似或相近软件需求的应用系统所覆盖的功能、问题、问题解决方案或知识区域 4。领域可分为水平领域和垂直领域:水平领域是指根据应用系统内部模块的功能性分类而得到的相似问题空间,如数据库系统、工作流系统等 ;垂直领域是指具有相似业务需求的一组相似应用系统所覆盖的业务区域,而我们的 MCU嵌入式系统领域则属于垂直领域。
3.2领域工程领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程,它覆盖了建立可重用的软件构件的所有活动。领域工程对领域中的系统进行分析,识别这些应用的共同特征和可变特征,对刻画这些特征的对象和操作进行选择和抽象,形成领域模型,依据领域模型产生领域中应用共同具有的体系结构,即特定领域的软件体系结构 (Domain Specific Software Architecture DSSA),并以此为基础,识别、开发和组织可复用构件 5。
在进行领域工程的活动中,通过对领域相关知识进行系统的交叉对比,能够形成一系列的标准。这些标准对构件的选用,以及新构件的产生形成规约,从而指导和规范新产品的开发。同时,由于这些选择是经过了长期时间和实践的论证,所以这些标准也是具有科学性的。当我们要进行同一领域新系统的开发时,只需要根据领域模型,确实新的需求规约,再根据特定领域的软件体系结构形成新的系统设计,并依据相关的标准选取,构造构件,组装到新系统中。这样新系统的质量以及开发效率都将得到可靠的保障,公司也能通过对行为的规范对整个开发流程进行管理、监控。
3.3领域分析的含义及方法
在系统化的软件复用中,充分的可复用信息的存在是非常重要的。这些信息需要被显示地表示,以便在开发过程中被复用。这些可复用信息,和为方便地定位和操作它们的一些辅助信息一起构成了复用基础设施 6。领域分析的目的是为了建立这些可复用的基础设施,它的含义是指“识别、捕获和组织特定领域中一类相似系统内对象、操作等可复用信息的过程” 7。
领域分析的三个关键过程为:①领域边界确立:通过对已有技术资料,典型系统的分析上,综合领域的意见,定义出领域分析的范围和边界,同时收集开展领域分析工作的必要信息;②领域建模阶段:根据在领域边界确立阶段得到的领域边界以及收集到的领域内相关信息,利用相应的建模知识和工具建立具备描述领域内应用系统数据和能力共性与变化性特征的领域模型;③软件体系结构建模阶段:通过已经得到领域模型,以及领域内设计的相关标准建立描述领域内特定问题解决方案的软件体系结构模型(DSSA)。
4.MCU嵌入式系统领域分析方法
4.1 MCU嵌入式系统领域的领域边界确定
在这里,并不是打算选择一个适合所有 MCU系统开发的领域,而是选择一个相对狭小的领域,如家电制造行业中的空调行业。在这样的行业中,由于产品要实现的基本功能在很长一段时间内基本固定,客户的需要相对稳定,使得针对同类产品的领域中,有很多的功能是相同的,软件的体系结构是相同的。这为领域分析提供了非常有利的条件。在对这些领域进行分析的时候,资料主要来源于本领域中的典型系统、领域的建议、工程师的经验、客户需求、硬件厂商提供的开发包、控制理论、该领域的发展历史以及发展趋势等。当收集完这些资源后也就够成了领域分析的上下文环境,也就是领域的边界。
4.2 MCU嵌入式系统领域的领域建模
领域模型的意义在于对领域的信息通过组织,以一种令人更容易接受的方式所表现出来。它包括形式化的模型和非形式化的信息,前者是一种对解决方案的描述,后者是对领域知识的补充。对于我们所选择的领域来说,一个具体行业的软件体系结构本身就是相对稳定的,对于具体的每款产品,实现的功能会有一些细小的差别。常见的情况是,当一个原型机出现后,会在原型机上进行诸多的改款,以适应市场客户不同的需要。所以针对于这样的领域特点,我们对这阶段的过程有如下的建议:
形式化的模型:采取面向特征的领域模型。特征的定义一般来说是用户或客户可感知的系统特点。但各个组织也可以根据自身的特点来组织选择领域模型。
领域字典:领域字典是通过和领域的对话,以及对相关的标准进行分析而得到。领域字典的作用是为领域的参与者提供一个准确方便的交流环境。
统一的标识:利用一种标准化的,通用的符号系统对领域内的概念进行描述。
4.3 MCU嵌入式系统领域的软件体系结构
DSSA(特定领域的软件体系结构 )不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计。它包含构件以及构件互联的规则。当开发本领域的一个新系统时,可以使用这些构件,并且按照这些规则构成满足当前系统需求的特定的系统结构 8。在 DSSA中有个比较重要的概念就是参考体系结构,它的目的是实现体系结构的复用。图 2给出一种空调控制器领域的参考体系结构 (部分)。
在上图中,每一个方框代表一个构件。它的下属代表对上一个构件分解而得出的子构件。由多个子构件可以构成一个规模更大的构件,这样能够支持更高效的复用。
在 DSSA中还包括有一些的需求规约,以及对接口的描述和标准。对于 MCU嵌入式系统领域,由于诸多外设的接口是存在行业标准的,所以如何让控制这些硬件的软件也能够按照一个统一的行业标准来编写是必要而且可行的解决办法。根据标准所编写的软件可以很容易地提取成构件并使用在我们的系统之中。在实践中我们发现,从以下几个方面对这种标准进行约定是可行的:
软件的适用范围:如 MCU类型、应用方案等;
外设的硬件特性及使用方式;
外设控制流程的规范化:包括有算法和流程图;
接口参数的标准化:命名规则、类型、长度等;
一些相关的注意事项:如为适合国家法规而作的一些限制、相关安全性的要求;
5.总结
本文作者创新点: 作者通过对领域分析的概念,方法的介绍,针对 MCU嵌入式系统领域的特点,引出一种适用于 MCU嵌入式系统领域的领域分析方法。该方法已经应用到作者现阶段正在进行的项目中。通过实践已经证明这是一条可行而有着巨大潜力的道路,如何结合更多的手段去达到我们的目的将是今后工作的重点。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。