您的位置:首页 > 其它

ABC方法

2009-10-12 20:20 211 查看
本文摘自:http://sei.pku.edu.cn/belljointlab-copy/abc.htm

ABC方法的提出:
基于构件的软件复用作为一种提高软件生产率和软件质量的有效途径,是近几年软件工程界研究的重点之一,被认为是继面向对象方法之后,一个新的技术热潮。一般来说,基于构件的复用包括三个相关的过程:构件的开发、构件的管理和基于构件组装的系统开发。 “在基于构件的软件开发中,系统开发的重点从程序设计变成构件组装”。
一方面,近年来,在中间件技术的基础上,结合软件复用思想和面向对象方法,基于构件的软件开发(Component Based Software Development)技术受到高度重视。通过标准化运行级构件的规约,依靠构件运行平台(中间件平台)提供的基础设施,CBSD提供了一种自底向上的,使用标准软件构件构造系统的有效途径,并得到了广泛的应用。
CBSD主要是关注运行级构件和它们之间的互操作,提供了一种自底向上的、基于预先定制包装好的类属元素(构件)来构造应用系统的途径。不过,当前CBSD关注的重点都局限在二进制构件的规范上,例如CORBA、EJB和DCOM,仅仅提供了在实现层次上支持构件交互的基础机制,缺少指导开发过程的系统化的方法学,对高抽象层次的构件组装无能为力。实际上,我们没有理由仅仅局限在运行层次上来看待构件,也不应该只是对代码进行复用,构件复用应该涵盖软件生命周期的各个阶段。
另一方面,自上世纪90年代初期开始,软件体系结构(Software Architecture)的研究受到了广泛的关注和重视,并被认为将会在软件开发中发挥十分重要的作用。它将大型软件系统的总体结构作为研究的对象,认为系统中的计算元素和它们之间交互的高层组织是系统设计的一个关键方面。其研究和实践旨在将一个系统的体系结构显式化,以在高抽象层次处理诸如全局组织和控制结构、功能到计算元素的分配、计算元素间的高层交互等设计问题。作为其最重要的一个贡献,SA的研究将构件之间的交互显式地表现为连接子(Connector),并将连接子视为系统中与构件同等重要的一阶实体。这样,SA提供了一种在较高抽象层次观察、设计系统并推理系统行为和性质的方式,也提供了设计和实现可复用性更好的构件、甚至复用连接子的途径。
经过10多年的研究,SA在理论上已经较为成熟。近年来也有一些将SA实用化的尝试,可是这些尝试都不是很成功,其原因首先在于大多数SA的研究都还集中在对体系结构的描述和高层性质验证上,对体系结构的求精和实现的支持能力明显不足,例如对于如何在系统开发中选择适当的体系结构风格现在还缺乏行之有效的指导方法。SA的研究现在还主要是对已有的软件系统进行整理、描述,而不是如何去指导软件的开发。而另一个重要原因是,从SA模型到实际系统实现之间存在着较大的距离。由于目前主流的设计和实现语言都是面向对象的,如何从高层抽象的SA模型转换到具体的底层实现一直都没有一个比较好的解决方法。
SA也是一种基于构件的思想,它从系统的总体结构入手,将系统分解为构件和构件间的交互关系,可以在高层抽象上指导和验证构件组装过程,提供了一种自顶向下,基于构件的复用途径。而已被业界广泛接受的CBSD技术,其相关技术和主要的构件规范已经相当的成熟,它不仅定义了构件如何在运行时刻进行交互,而且还提供了使用对象来构造构件的手段,这就在高层的SA模型和详细的OO设计模型以及具体OO语言实现之间提供了一个现实可行的桥梁。
为更好地实现基于构件的软件复用,我们将SA和CBSD相结合,提出了ABC(Architecture Based Component Composition)方法,其主要思路是:

将软件体系结构描述作为构件开发的框架和组装系统的蓝图;

将中间件技术作为构件组装所得系统的运行时支撑;

使用一系列的映射规则和工具来缩短设计和实现间的距离,自动进行从设计到实现的转换;

软件体系结构将用作贯穿整个软件生命周期的重要制品,软件系统的构造将围绕软件体系结构来进行。

ABC方法的主要思想

ABC方法的根本思想是在构件组装的基础上,使用SA的理论与概念来指导软件开发,提高系统生成的效率和可靠性。

软件体系结构是软件生命周期中的重要产物,它影响到软件开发的各个阶段。SA作为一个高层设计的概念,它的重要性已经得到了广泛的承认。首先,SA为系统的不同参与者(客户、开发人员、用户等)提供了交流的基础,也是系统理解和演化的基础。其次,SA体现了系统最早的一组设计决策,对系统的整体特性、后续开发和组织进行了约定。此外,使用SA方法不仅可以对软件构件进行复用,还可以实现更高层次上的复用,例如对SA模型本身的复用。
进一步,SA应该不仅仅局限在高层设计的描述中,而是要扩展到软件开发的全过程中,充分的发挥SA模型在软件开发中的指导作用,并在软件生命周期的各阶段间保持良好的可追踪性,因此我们提出了基于软件体系结构的软件开发过程,如图一所示:



图一:基于软件体系结构的软件开发过程

应该在不同的抽象层次上实现构件复用与组装。基于构件的软件复用没有理由局限在实现层次上,而应该在不同的层次上、针对不同的对象进行。ABC方法复用的构件包含有多个层次、多个生命周期阶段的产品,例如需求分析文档、SA规约、OOD设计到源代码和二进制代码等。在实现层,利用现有的二进制构件规范(EJB,CORBA,COM),可以对运行级的构件进行复用和组装。在设计层上,一是复用基于OO范型的详细设计,也就是说,在构造系统时不但要组装可运行的构件,也要能够在一定程度上将构件的OOD模型组装成系统的总体模型;二是对于使用ADL描述的系统的高层设计,也应该能够进行复用和组装。这就要求在构件的开发和系统的组装过程中,统一使用ABC方法来指导并遵循一定规范。

从SA描述到OOD和具体实现的映射是必须的。软件工程研究的最终目标是为了提高软件的质量和生产率,SA若是仅仅局限于对系统的描述和验证,它的作用是有限的。由于当前软件开发的主流是OO范型,要想在软件开发中真正发挥SA的指导作用,实现一套有自动工具支持的从SA到OOD和具体实现的映射机制是非常必要的。
SA到OOD的转换现在还没有一个很好的方法,关于这方面的研究有不少,但主要还是集中在如何使用OO建模语言,如UML等,来描述SA结构。ABC方法则是希望能够用OOD来缩小SA设计到实现的距离,保持系统开发各阶段间的可追踪性。所以,从构件组装的特点出发,我们提出了一个两阶段的映射方法来解决这个问题,具体的细节后面将会进一步介绍。

有效的工具支持是必要的。作为一个完整的软件开发方法,ABC提出了自己的概念、建模语言和开发步骤;而要有效的应用到实际工作中,工具支持是不可或缺的。工具可以屏蔽技术细节,提高系统的可视化程度,减少开发人员的重复性劳动,从而提高开发的效率与质量。

ABC方法的主要研究内容

在ABC方法的整体框架下,我们的研究工作可分为三个大的部分,即领域工程、软件体系结构和运行支撑。下图是我们研究工作的一个整体示意图。



详细介绍请参看各研究方向的相关链接。

基于ABC方法的软件开发过程

采用ABC方法进行系统开发的一般步骤为:

根据需求建立SA模型。此时不需要考虑系统实现的细节,根据功能性和非功能性需求选择合适的体系结构风格,划分出组成系统的构件,根据构件间的交互关系指定连接子,建立系统的SA描述

构件的选择和开发。首选复用已存在于构件库中的构件。对于还不存在的构件,要进行构件的开发工作;对于构件库中存在但不完全满足要求的构件,可以根据情况决定是重新开发或是对其进行调整。这时,要考虑实现的技术细节和平台支持。支持工具根据构件的描述,生成该构件的OOD模型框架,用户根据这个框架进一步进行精化设计,并最终将其映射到某个运行平台上的实现。此时,特定平台的信息也已经加入SA模型中,构件都已经指定了实现体,连接子也都指定了到具体平台实现的映射

系统检验。在SA模型中的每个设计构件都有与之关联的实现级构件以后,就可以利用工具对系统进行组装。在组装之前,需要先利用工具对系统进行检验,保证系统的有效性和完备性。

系统生成。系统检验通过后,就可以根据具体的运行平台来生成应用系统。主要是生成相应平台的胶合代码和描述文件,将构件连接起来,并插入适当的服务描述。

上述开发过程根据具体应用系统所处的领域、构件库中构件的丰富程度等发生细微的变化,具体请参看体系结构研究方向的相关链接。

ABC方法的支撑工具

我们开发了一系列工具用以支持ABC方法的应用。根据研究方向,可分为:在领域工程方向,提供了面向特征的可视化需求建模工具;在体系结构方向,提供了支持体系结构可视化建模、应用的可视化组装及部署工具;运行支撑阶段,提供了基于体系结构的可视化管理工具。
目前上述工具均已完成原型开发,但各个工具之间相对独立,没有有机地结合在一起。我们下一步的一个重要工作就是将各个工具整合到一起,并进行实用化的尝试。 下面是各个工具的截图,详细介绍请参看相关链接。



特征模型可视化工具



体系结构可视化建模工具ABCTool的类型图示例



体系结构可视化建模工具ABCTool的配置图示例



PKUAS可视化管理工具
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐