ABC:基于体系结构、面向构件的软件开发方法(上)(2)
时间:2016-03-23 11:26 文章来源:http://www.lunwenbuluo.com 作者:梅宏,陈锋,冯耀东, 点击次数:
自20世纪90年代初期开始,软件体系结构(softwarearchitecture)的研究受到了广泛的关注和重视,并被认为将会在软件开发中发挥十分重要的作用.它将大型软件系统的总体结构作为研究的对象,认为系统中的计算元素和它们之间交互的高层组织是系统设计的一个关键方面。其研究和实践旨在将一个系统的体系结构显式化,以在高抽象层次处理诸如全局组织和控制结构、功能到计算元素的分配、计算元素间的高层交互等设计问题[6]。作为其最重要的一个贡献,SA的研究将构件之间的交互显式地表现为连接子(connector),并将连接子视为系统中与构件同等重要的一阶实体.这样,SA提供了一种在较高抽象层次观察、设计系统并推理系统行为和性质的方式,也提供了设计和实现可复用性更好的构件、甚至复用连接子的途径。
SA研究的主要成果表现为体系结构描述语言(architecturedescriptionlanguage,简称ADL)。从构件组装的角度来看,ADL可以视为对构件描述语言(CDL)的进一步扩展.构件描述语言的基本思想是将构件看成是一个黑盒,通过描述构件接口的语法和语义,使得复用者不必过多地涉及构件代码细节,就可以在构件描述这一抽象层次之上进行构件组装.而ADL除了描述构件接口的语法和语义之外,还负责描述:系统中包括的构件和连接子以及它们之间的交互关系、构件的非功能类性质以及构件间协议,从而为构件组装提供了更为有力的支持。
经过10多年的研究,SA在理论上已经较为成熟.MarryShaw在文献[7]中提出,软件体系结构的研究已经度过了开始的发展时期,开始进入完善和应用的阶段.近年来也有一些将SA实用化的尝试.例如,Bass等人对体系结构的风格进行分类整理,试图给出在实际系统开发中应用软件体系结构的指导方法[8];MaryShaw在Unicon中,通过预定义构件和连接子的种类,可以利用工具在一定程度上自动生成系统(代码)[9]但是这些尝试都不是很成功,其原因首先在于大多数SA的研究都还集中在对体系结构的描述和高层性质验证上,对体系结构的求精和实现的支持能力明显不足[10],例如对于如何在系统开发中选择适当的体系结构风格现在还缺乏行之有效的指导方法.就像文献[11]中所指出的,SA的研究现在还主要是对已有的软件系统进行整理、描述,而不是如何去指导软件的开发.另一个重要原因是,从SA模型到实际系统实现之间存在着较大的距离.由于目前主流的设计和实现语言都是面向对象的,如何从高层抽象的SA模型转换到具体的底层实现一直都没有一个比较好的解决方法.对于这个问题,现在也有一些将构件、连接约束等体系结构概念引入编程语言的努力,例如Washington大学的ArchJava[12]和Utah大学的Jiazzi[13]。
SA也是一种基于构件的思想。它从系统的总体结构入手,将系统分解为构件和构件之间的交互关系,可以在高层抽象上指导和验证构件组装过程,提供了一种自顶向下、基于构件的复用途径.而已被业界广泛接受的CBSD技术,其相关技术和主要的构件规范已经相当成熟.它不仅定义了构件如何在运行时刻进行交互,而且还提供了使用对象来构造构件的手段,这就在高层的SA模型和详细的OO设计模型以及具体的OO语言实现之间提供了—个现实可行的桥梁.因此,我们在文献[10]中提出了ABC(architecturebasedcomponentcomposition)方法,即将SA与CBSD相结合,以SA模型作为系统蓝图指导系统的开发全过程,把分布式构件技术作为构件组装的实现框架和运行时的支撑,使用工具支持的映射规则缩小设计和实现间的距离,自动地组装、验证所需要的系统。
本文第1节从基本思想、建模语言和工具支持等方面介绍ABC方法.第2节用一个实例说明如何使用ABC方法开发软件系统.第3节总结全文,并对未来的工作进行展望。
1ABC方法概述
ABC方法的根本思想是在构件组装的基础上,使用SA的理论与概念来指导软件开发,以提高系统生成的效率和可靠性。
1.1基本思想
·软件体系结构是软件生命周期中的重要产物,它影响到软件开发的各个阶段.首先,SA为系统的不同参与者(客户、开发人员、用户等)提供了交流的基础,也是系统理解和演化的基础.其次,SA体现了系统最早的一组设计决策,对系统的整体特性、后续开发和组织进行了约定.此外,使用SA方法不仅可以对软件构件进行复用,还可以实现更高层次上的复用,例如对SA模型本身的复用。
进一步来说,SA应该不仅仅局限在高层设计的描述中,而是要扩展到软件开发的全过程中,充分地发挥SA模型在软件开发中的指导作用,并在软件生命周期的各阶段间保持良好的可追踪性.因此,我们提出了基于软件体系结构的软件开发过程。
在这个开发过程中,首先是基于SA的需求获取和分析,将SA的概念引入需求空间,从而为分析阶段到设计阶段的过渡提供了更好的支持.在得到需求分析结果的基础上进行体系结构的设计,考虑系统的总体结构以及系统的构成成分,根据构成成分的语法和语义要求在构件库中寻找匹配的构件.当不存在符合要求的构件时,则需根据具体情况或者根据CBSD的原则和方法开发新的构件,或者将某些已有构件进行组装而得到满足需求的构件.在组装阶段,每一个系统构件都具有了实现体,在经过语法和语义检查以后,这些构件将会通过胶合代码组装到一起,最后,被部署到相应的中间件平台上.在实践中,整个开发过程将呈现多次迭代性。
目前,ABC方法关注的主要还是从SA建模到系统的组装、部署阶段的工作。
·应该在不同的抽象层次上实现构件复用与组装.基于构件的软件复用没有理由局限在实现层次上,而应该在不同的层次上,针对不同的对象来进行.ABC方法复用的构件包含有多个层次、多个生命周期阶段的产品,例如需求分析文档、SA规约、OOD设计到源代码和二进制代码等.在实现层,利用现有的二进制构件规范(EJB,CORBA,COM),可以对运行级的构件进行复用和组装.在设计层上,一是复用基于OO范型的详细设计,也就是说,在构造系统时,不但要组装可运行的构件,也要能够在一定程度上将构件的OOD模型组装成系统的总体模型;二是对于使用ADL描述的系统的高层设计,也应该能够进行复用和组装。这就要求在构件的开发和系统的组装过程中,统一使用ABC方法来指导并遵循一定的规范。
·从SA描述到OOD和具体实现的映射是必须的.软件工程研究的最终目标是为了提高软件的质量和生产率,若SA仅仅局限于对系统的描述和验证,则其作用是有限的。由于当前软件开发的主流是OO范型,要想在软件开发中真正发挥SA的指导作用,实现一套有自动工具支持的从SA到OOD和具体实现的映射机制是非常必要的。
- 论文部落提供核心期刊、国家级期刊、省级期刊、SCI期刊和EI期刊等咨询服务。
- 论文部落拥有一支经验丰富、高端专业的编辑团队,可帮助您指导各领域学术文章,您只需提出详细的论文写作要求和相关资料。
-
- 论文投稿客服QQ:
2863358778、
2316118108
-
- 论文投稿电话:15380085870
-
- 论文投稿邮箱:lunwenbuluo@126.com