一种软件体系结构描述语言分类和比较方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一种软件体系结构描述语言分类和比较方法[摘要] 软件架构转变了开发者从通信线路到粗粒度的体系结构元素和整
体互连结构的代码的开发重点。架构描述语言(ADLs)已被提议作为支持基于发展的软件体系建模符号。但是,对什么是ADL、什么样的架构方面应以ADL 来建模和有哪几种可能的情形为最适合某个特定问题,很少达成研究界的共识。此外,很少有对ADLs在某一方面或针对某一正式的规范就模块的连接,仿真、编程语言与其他方面做出区别。本文提出了对ADLs定义和分类的框架,通过定义可以把ADLs与其他建模符号区别开来,通过框架可以区分和比较几种现有的ADLs并在这一过程中确定ADLs的关键特性。
[关键词] 软件体系结构;体系结构描述语言;构件;连接件;体系结构配置;定义;分类;比较
1 引言
软件体系结构的研究都是针对降低其发展的应用成本而增加有关产品族不同成员之间潜在的共性[1]。基于公共体系结构风格的软件开发的焦点从代码转移到粗粒度的体系结构元素(软件构件和连接件)和它们的互连结构。为了支持基于体系结构的开发,对体系结构的规格说明起作用的建模概念符号和分析开发工具是非常必要的。架构描述语言(ADLs)及其工具集已经被提出。ADLs最近已成为软件体系结构团体中的热门研究领域[2]。
针对体系建模已经提出了许多ADLs[3],它们都是在特定的领域中作为通用的体系结构建模语言,本文特别考虑通过以下语言作为ADLs的普遍参考:Aesop、ArTek、C2、Darwin、LILEANNA、MetaH、Rapide、SADL、UniCon、Weaves和Wright。最近,针对体系结构交换语言ACME已做了大量的初始化工作,它旨在支持体系架构规格从一种ADL到另一种的映像,并因此使围绕ADLs 的一些支持工具的集成成为可能。严格地说,ACME并不是一种ADL,但它包含了许多类似于ADL的特征。此外,它对于比较和区别于其他的ADLs来突出ADL和交换语言之间的差异是非常有用的。
2 软件体系结构描述语言分类和比较框架
客观地说,目前并没有人能够具体地回答ADL是什么。相反,他们能够从各自不同的观点阐述ADL包括什么或者能够做什么。然而,最贴切的一个特征和需求的研究表明这些所有的观点都有一个共同的主题,那就是使用它来作为一种框架来指导制定ADL的分类和对比。为了完成这个框架,讨论和总结ADLs 的特点,在3家国际软件架构[4]的基础上进行了研究。在很大程度上反映了分类都是以所有的软件架构为依托来反映特点,其中最多的是通过现有的ADLs。在某些情况下,典型特征不能被现行的ADLs支持,它们既对基于结构框架的开发很重要,又会在软件结构中利用到之前的研究项目当中的知识,例如C2。最终,使得学习它们并且相应地学习运用语言,将拓展知识应用到建立软件模型框
架当中。
ADL与其他系统的实现不同,它是一个为软件系统的概念性架构建模提供的一门语言。ADLs为特征框架提供一个具体的语法和一个概念框架。这个特征的概念框架典型地反映了ADL中的与/或的框架风格的范围特征。该框架典型地包含了ADL的潜在语义理论(例如,CSP、实验室网,有限状态机)。
2.1 框架类
在这个部分介绍ADL分类和比较框架的顶层分类和比较的范畴。一个ADL 框架描述的组成模块包括构件、连接件和体系结构配置的配置。ADL必须为它们能够明确地说明提供必要的手段,使能够确定某一个特殊符号是否是ADL。
2.2 ADLs框架体系结构
ADLs框架体系结构由构件、连接件和体系结构配置3个部分组成[5],下面将对这3个概念进行分别介绍。
2.2.1 构件
构件是一个计算单元或数据存储。也就是说,构件时计算与状态存在的场所。在体系结构中,一个构件可能小到只有一个过程或大到整个应用程序。每个构件可能需要它自己的数据或执行空间,也可以与其他构件共享这些空间。正如已经初步探讨的,明确的构件接口是ADLs的一个特征。另外还有的比较属性是建模的构件类型、语义学、约束、进化及非功能性属性,将在下面进行讨论。
(1)接口:构件的接口是与外部环境交流的一组交互点。接口说明了构件提供的那些服务(消息、操作和变量)。为了能够充分地推断构件及包含它的体系结构,ADL提供了能够说明构件需要的工具,例如提供体系结构中的需要的其他构件的服务。因而一个接口定义了在其应用上进行计算和约束的方法。
(2)类型:构件类型都是抽象的概念,可封装成重复使用的功能块。一个构件类型能够多次在单一的体系结构中实现或被重用。构件类型可以参数化,进一步促进可重复使用。显式模型的类型使得所有实例共享的属性类型易于理解和分析。
(3)语义:定义构件模型的语义作为一个高级构件的行为。这样一个模型是需要做分析,加强体系结构的约束使其能够从一个阶段的抽象到另一个抽象一致映射。注意一个构件的接口也允许某种有限的程度上对其语义的推理。然而,语义概念应用于本文是严格指构件建模的行为。
(4)约束:一个约束是关于一个系统或它的一个部分一种属性或断言,破坏约束将会使得系统不被接受或者不能正常使用。为了确保执行预期构件的使用,强行使用边界条件,并建立内部相互之间的依赖和指定一个构件的限制。
(5)演化:作为组成模块,构件将不断进化。构件演变可以定义为一种非正式的一个子集修改(一个构件的属性),例如,界面、行为或实施。ADLs可以通过运用构件类型和具体构件特点中的典型子集技术确保进化发生按照的是系统化的方式。(6)非功能性属性:一个构件的非功能性属性(例如,安全、性能、可移植性)通常不能直接来源于它的行为规范。这些特性的早期的规格(在体系结构设计层面)需要模拟过程,分析,加强约束条件,地图构件处理器的实现和项目管理的帮助。
2.2.2 连接件
连接件是用来建立构件间的交互以及支配这些交互规则的体系结构构造模块。与构件不同,连接件可以不与实现系统中的编译单元对应。它们可能以兼容消息路由设备实现(如C2),也可以共享变量、表入口、缓冲区、对连接器的指令、动态数据结构、内嵌在代码中的过程调用序列、初始化参数、客户服务协议、管道、数据库、应用程序之间的SQL语句等形式出现。它有以下几种属性定义。
(1)接口:一个连接件是一个连接件和构件及与之相连的链接器相互之间作用的交互点。因为连接件不履行任何特定应用的计算,作为其接口提供这些相关构件的期望服务的输出。连接件接口使构件适当地建立连接并且使它们在体系结构中的交互成为可能,也因而推理出体系结构的配置。
(2)类型:连接件类型是封装构件的沟通、协调、调解的决策的抽象的概念。结构层次交互由复杂的协议描述。让这些协议不仅在整个需要ADLs模型连接件类型的体系中可重用而且可以跨越体系重用。有两种典型的方式:为完成可扩展的类型系统,定义交互协议,或者是基于特定的实现机制相互作用的内部构造,枚举类型。
(3)语义:类似于构件,连接件被定义为一种高层次语义模型的连接件的行为。不像部件,其语义表达了应用程序的功能,连接件语义蕴涵的相互作用协议(计算上的独立)。ADLs可以支持连接件语义的建模,实现构件的交互分析,整体抽象结构层次精确一致和加强相互连接约束。
(4)约束:确保约束交互协议,建立内部交互连接件机制,并且强化边界条件的使用。一个简单的例子和容易的强调性约束就是一个在一定数量的构件上建立的约束,它通过连接件进行交互。建立更多复杂的连接件约束将需要已有的连接件能够取得外部消息。
(5)演化:相较之下对构件演化,一个连接件的演化是修改(定义为其属性的一个子集),例如,界面、语义学、或共同限制这两个。结构体系构件的相互作用是受复杂并具有改变和扩大能力的协议控制的。然后,两个独立的构件及其配置进行演化。ADLs可以适应这种演化,通过改变或是用增加消息过滤器的技术和手段完善现有的连接件。