徐莹
[摘要] 过去几十年的研究表明,在组件和连接器方面对软件进行模块化构建是用途广泛的,这导致了大量模块标记的产生。每种标记专注于系统模块化的不同方面,一般来说这些标记致力于利用已有的标记来发展新的标记而忽略了重用和扩展。为了解决这一问题,本文研究了一种新的办法——允许快速地构建新的描述性语言(ADLs),该语言利用XML和XML的扩展机制来完成。本文定义了一组类别,重用ADL模块称作XADL 2.0,它可以作为ADL单独使用,也可以扩展支持新的应用和领域,实验验证了本文方法的有效性、可扩展性和灵活性。
[关键词] 软件架构; 模块化; ADL; XADL; XML
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2012 . 05. 029
[中图分类号]TP311.5[文獻标识码]A[文章编号]1673 - 0194(2012)05- 0054- 02
1引言
与对象或代码行相比,软件体系是对软件的更高层的抽象。在最低限度上,软件体系处理包含组件(计算点)、连接器(交流点)和配置(组件和连接器安排,性能的安排)的软件系统。在这个抽象层,可以对一个软件系统的许多方面进行建模,如拓扑、行为、使用情境、部署属性等。这些方面中每一个也可能在不同细节层以不同的方法进行建模。各个方式的建模都有其自身的优势,可能提供一个新方法去分析、模拟系统或向其他开发人员解释系统结构。
虽然有这些优点,但软件体系结构的研究仍没有在实践中对软件工程有重大影响。要使软件架构性价比合理需要符号、工具和在适当的细节层模拟系统重要方面的技术。十几年研究的结果已经形成许多标记软件体系的的符号,通常的形式是体系结构描述语言(ADLs)。一般来说,那些相互标记的的符号支持单一的研究目标。然而,要想在现实生活的语境中有效,软件架构的研究必须超出单个目标符号,架构必须同时获得软件系统的多个方面。此外,对模块化足够重要的各个方面的范围相互区别。例如,由于时耗和功耗需要,嵌入式系统项目可能需要更广泛更详细的建模能力,而分布式系统则可能在建模容错和带宽方面有所要求。例如,嵌入式和分布式系统的建构师都会通过发布产品来跟踪和管理他们的体系结构的进展;同一个领域内的项目通常会有许多共同关心的方面。
各领域建模优先考虑的事情和需求巨大的差异说明,一个令人满意的“适用于所有情况的”ADL是不太可能出现的。然而,即便是在截然不同的领域里也依然存在的重要共性表明,为每个域(或项目)开发新标记意味着始终如一地去做重复性的工作。因此,允许建构师从软件系统的共同架构层选择那些他们想的方面并很容易添加一些他们自己感兴趣的东西是十分必要的。
本文假定一个中间层以基础架构形式存在,这样ADLs可以很快地构造,兼容建模特点并允许集成一些必要的新特点。这些ADLs将模块化,而不是单一的,建模特点会在模块中封装,各单元组成ADLs。
本文为建立和使用模块化ADLs创建了一个基础架构,这个基础架构提供如下功能:
(1) 一种定义ADLs的基于XML的模块化的扩展机制。
(2) 一个在ADL发展中可重用的特点集,支持设计时间和运行时间的建模、实施映射和生产线。
(3) 一个支持ADL发展和使用的灵活的工具集。
2软件架构、描述语言和XML
本节介绍软件架构、体系结构描述语言和XML等方面的基础知识。
2.1软件架构
由于抽象化和模块化在软件工程方面的发展,抽象化模块在许多软件系统中起着越来越重要的作用。软件架构(Software Architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。
软件架构至少包含3部分:组件(软件架构中的计算点)、连接器(软件架构中的交换点)、配置(描述如何安排组件和连接器)。
2.2体系结构描述语言ADLs
除了组件、连接器、配置之外,对软件系统在架构层上的描述可以包含各种类型的信息。架构描述中的各种信息受软件的应用领域和架构描述使用方法的影响。这种支持构件、连接和配置的描述语言就是体系结构描述语言。
ADLs语言最基本的要求:
(1) 适合架构表达给所有有关方面。
(2) 支持架构创建,完善和验证任务。
(3) 提供一个进一步实现的基础,因此它必须能够给ADLs规范添加信息,使最终的系统规范衍生自ADLs。
(4) 提供表现通用类型架构的能力。
(5) 支持分析能力或提供快速生成原型的实现。
2.3XML
为软件系统创建一个可扩展建模语言,要求一种方法去使用这种语言去定义适当的架构,并且使用该语言去增加或调整特征以扩展架构,于是XML应运而生。XML(eXtensible Markup Language,可扩展标记语言),它可以创建个性化的标记语言,可以称之为元语言,XML的标记语言可以自定义,这样可以提供更多的数据操作。
3方法
现有的结构描述语言不是过于专用就是过于通用,并且改变一个标记或一个工具来支持一个新的特征花费是巨大的。为改善变种情况,本文开发了一个基础结构来支持模块化扩展。本文构建基础结构的目标如下:
(1) 它必须在架构层表达上具有尽可能少的限制。
(2) 它应当允许新的模块化待征的增加和已有特征的修改。
(3) 它应当允许新特征和其他特征结合并进行实验。
(4) 它应对各领域提供一个通用的模块。
(5) 它应提供即使潜在标记改变也能够支持创建和处理架构模型的创建工具。
基础结构的核心元素在图1中显示。
4XADL 2.0: 一个通用基础特征集
本文使用XML模式来定义一组在许多领域构造软件体系结构有用的通用结构。这些结构都可以使用或者扩展到新增的模型特征中而无需在一个大的、完全统一的XML模式中定义所有的通用建构,可以根据它们的目标在模式中进行分组。结果是一系列重用模块组成一个通用ASL,称为XADL 2.0。
XADL 2.0的核心特点是:
(1) 一个软件系统的运行时间和设计时间模型分离。
(2) 实施映射,将一个架构的ADL规格映射到执行代码。
(3) 架构评估和生产线架构的建模方面的能力。
5总结
自20世纪90年代后期以来,软件体系结构的研究成为一个热点。广大软件工作者已经认识到软件体系结构研究的重大意义及其对软件系统设计开发的重要性,开展了很多研究和实践工作。这导致了大量表示软件架构标记的产生,每种标记基于系统模块化的不同方面。一般来说,这些标记致力于发展新的标记来改进现在的标记,忽略了可重用性和可扩展性。为解决这个问题,本文提出了一个新的方法:允许快速地构造新的体系结构描述语言(ADLs)。该方法利用XML和XML模式的扩展机制来完成。本文定义了一组类型,重用ADL模块称作XADL 2.0,它可以作为一个ADL自己使用,也可以扩展支持新的应用和领域。为支持这种扩展,开发了一系列自动适应语言改变的基于句法的工具和提供XADL 2.0先进特征支持的语义工具。实验证明了所提方法的有效性、可扩展性和灵活性。