论文部分内容阅读
软件体系结构分析利用各种数学或逻辑的分析技术,针对系统的一致性、正确性、质量属性、规划结果等不同方面,提供描述性、预测性和指令性的分析结果。随着软件体系结构的作用从设计阶段延伸到整个软件生命周期,软件体系结构分析也日益重要,并成为体系结构研究的主要热点。目前的软件系统因网络环境而变得日益开放、复杂、多变,这就要求体系结构分析更加全面、综合、灵活。然而,现有的分析方法往往应用于给定类型的系统,提供局部或者单一特征的分析结果。因此,集成多种分析方法以实现全面综合的分析,成为自然的选择。
分析方法的集成可以划分为输入、执行和输出三个部分。目前的研究大多解决其中的输入失配问题,将软件体系结构模型经过转换得到分析方法的输入模型。但是,随着分析方法的繁荣,输入失配情况日益复杂,需要考虑如何集成已有的适配方法。目前的研究对分析执行的集成较为简单,仅利用编程语言或工具特性来实现待集成分析方法的调用或激活。由于分析的目标更全、分析的频率更高,分析的执行不再只是由单个分析方法完成原子动作,而是由多个互相关联的分析方法按照一定的执行顺序来完成,不仅要处理分析方法执行之间的冲突依赖等问题,还应允许用户根据需求灵活定制分析流程。目前的研究几乎不考虑分析结果的集成,不同分析方法的分析结果由彼此独立的制品描述,甚至独立于被分析的体系结构模型,这就造成多个分析方法集成后的分析结果仍然是松散的。特别地,不同分析方法的分析结果之间大多存在互补、层次、增益、冲突等关系,并且在松散的分析结果中描述,使得分析结果不全面、难以理解。因此,需要围绕被分析的体系结构模型,整合不同分析方法的分析结果。
针对上述问题,本文系统化地研究了软件体系结构分析方法集成技术,主要特色和贡献包括:
(1)从模型内容与模型表示两个角度,建立了体系结构模型与分析方法之间输入失配的分类框架,支持适配器的选择。针对那些基于模型转换的适配器,提出了一种模型转换规约合成方法,实现适配器的集成。
(2)从数据依赖和控制依赖两个方面出发,提出了一种基于流程的分析执行集成方法,对依赖进行识别、匹配等处理。数据依赖是指一种分析方法以另一种分析方法的输出作为输入;控制依赖是指一种分析方法的执行与否由另一种分析方法的结果决定。该方法按照依赖出现的时机,分别对分析流程的设计和实现提供正确性保障。对于流程错误,该方法通过自动的依赖识别和依赖匹配,查找缺失的方法,并将其添加到流程中。对于无效分析,该方法通过归纳动态依赖引起的无效分析的特征,将动态依赖检测作为流程实现中的服务,从而减少无效分析。
(3)基于分析结果应围绕被分析体系结构模型的观点,提出了一种基于体系结构描述语言(Architecture Description Language,ADL)的分析结果集成方法。该方法基于元建模和模型转换技术,分别从元模型、模型和视图三个层次支持分析结果的集成。该方法提供了一种向上兼容性的ADL的扩展机制来描述分析结果,并利用自动代码生成技术实现对模型视图的扩展。在此基础上,该方法基于元模型之间的关系获得模型之间的转换关系,自动生成模型转换来实现模型的合成。
(4)基于北京大学自主研制的体系结构建模工具ABCTool,系统化地实现了上述集成方法,支持全面、综合、灵活的软件体系结构分析。在该工具中,每个软件体系结构分析方法作为集成的基本单元,其输入和输出的元模型都使用元对象机制(Meta-Object Faclity,MOF)描述。工具从输入适配、分析工具集成和分析结果合成三个方面,为分析方法的集成提供了基础设施,减少集成的工作量。在此基础上,设计人员可以将集成的分析方法视为可复用的资产服务,基于业务流程建模标记法(Business Process ModelinqNotatiin,BPMN)来描述分析流程。工具将分析流程模型转换为业务流程流程执行语言(Business Process Execution Language,BPEL)描述的实现,通过调用被集成的分析方法来执行分析流程。