论文部分内容阅读
虽然面向侧面程序设计方法(Aspect-Oriented Program, AOP)的出现较好地解决了面向对象程序设计中存在的代码缠结(tangling)和散射(scattering)问题,但由于它只是系统实现层面的技术,而现有成熟的软件分析和设计方法多数又不支持横切关注点在系统高层设计模型中的分离和表示,制约了面向侧面软件开发方法的实际应用规模和范围。本文的研究以软件体系结构(SoftwareArchitecture,SA)为切入点,分析构件粒度的系统横切关注点的属性和特征,扩展AOP相关概念和应用范围,向基于SA的构件模型中引入面向侧面的理念,在系统分析和设计阶段对SA、CBSD(基于构件的软件开发)和AO三种技术之间的联系以及它们的融合进行深入研究,并对融合后的系统高层设计模型进行形式化描述和分析,为最终面向侧面的模型驱动软件开发和维护相关研究提供模型和方法论的支持。主要研究成果包括三个方面:一、构件模型的侧面化基于SA概念框架,向传统的构件模型中引入一个新的一阶实体——“构件型侧面”,专门用以封装和表示影响多个业务构件逻辑的横切关注点,具体成果包括:1、定义了基于软件体系结构的侧面化构件模型SABACM (SoftwareArchitecture Based Aspectual Component Model)。它整合了SA、CBSD和AO的特点,使得开发者在软件分析和设计阶段就可以实现构件粒度的系统横切关注点分离,并指导后续的面向侧面代码生成及维护,同时,利用模态行为逻辑和π演算对模型进行了形式化分析。2、设计了一种面向侧面的软件体系结构描述语言A-ADL用以描述SABACM模型。A-ADL被分成两个抽象层面:类型和配置,因此,模型在类型层面所定义的元素可以被储存,并在配置层面上多次复用。3、定义了SABACM的元模型。它由一组相互关联的元类组成,这些元类为模型中的每一个概念定义了属性集和服务集,元类和元类之间的关系为描述SABACM的静态结构提供了必要的信息,同时元模型也定义了在建模过程中必须要满足的约束条件。二、侧面结构的构件化SABACM模型中的“构件型侧面”是一种构件粒度的应用系统横切关注点封装结构,作为模型中的核心概念,需要对它作进一步的研究,具体成果包括:1、作为引入软件体系结构模型的一阶实体,构件型侧面在结构上和传统构件有类似的属性,可分为原子(简单的)构件型侧面和组合的构件型侧面。由于组合的构件型侧面结构复杂,因此对它进行专门的研究,探讨和分析了其内部多个原子构件型侧面之间存在的组合(织入)关系,设计了组合的构件型侧面实现框架。2、为描述组合的构件型侧面内部多个原子构件型侧面之间的织入关系,在构件层面上定义了一种抽象的、独立于具体实现技术的通用切点描述语言(GeneralPointcut Description Language, GPDL)。3、基于组合的构件型侧面实现框架,对现实应用系统中常见横切关注点(以移动性和分布式为例)进行分析,使用GPDL定义它们内部原子构件型侧面的织入方法,验证GPDL在常见横切关注点分析设计中的描述能力。三、复杂应用系统的SABACM建模步骤和方法以一类移动分布式系统的分析和设计为例,给出SABACM建模的具体步骤和方法,以此指导分析和设计人员在软件应用系统开发过程中的行为,并为应用系统整个生命周期中各个阶段间的平滑过渡提供方法论上的支持。