基于体系结构的软件产品线演化方法

文档序号:6469670阅读:250来源:国知局
专利名称:基于体系结构的软件产品线演化方法
技术领域
本发明属于软件开发技术领域,具体涉及基于体系结构的软件产品线演化。
背景技术
软件产品线是共享一组受控的公共特征并且在一系列预定义的公共核心资产基 础上开发而成的一系列软件应用系统。这一系列相似的软件应用系统被称为领域,例如电 子商务、电子政务等典型的业务领域。软件产品线是一种针对特定领域、以体系结构为核心 的系统、全面的基于复用的软件开发方法。软件产品线开发主要包括领域工程和应用系统 工程两个层面。领域工程活动包括领域分析和建模、领域参考体系结构设计、领域构件开发 等,其主要目标就是为领域范围内的应用产品开发提供可复用的核心资产(包括体系结构 和构件等)。而应用系统工程则通过复用产品线核心资产实现具体应用产品的开发,主要活 动包括应用需求分析、参考体系结构定制和剪裁、领域构件的实例化、定制以及应用系统组 装等。 在软件产品线中,领域工程和应用系统工程两个层面都可能发生演化。对于应用 系统工程而言,必须根据客户的需求变更或所发现的bug对应用产品进行维护。对领域工 程而言,必须在考虑领域范围内所有应用系统的基础上,实现核心资产的有序演化,例如为 了适应新的应用产品而增加新的可变性、对参考体系结构设计及领域构件进行优化和缺陷 的修正等。领域工程是应用系统工程的基础,但是为了在实现软件产品线增量构建及完善 的同时允许应用系统快速响应变更请求(例如客户的需求变更以及所发现的bug等),必须 允许领域工程和应用系统工程同时进行演化,即允许领域工程和应用系统工程相对独立地 进行演化。而这两个层面上的演化活动必须进行统一的管理和协调,从而在支持应用产品 开发的同时维护软件产品线的完整性和一致性。

发明内容
本发明的主要目的是提供一种统一、协调的软件产品线演化方法,使得领域工程 与应用系统工程两个层面的演化能够协调一致。 在软件产品线开发中,体系结构处于核心地位。作为软件产品线基础的产品线参 考体系结构规划了主要的构件边界、构件的可变性设置,而各个应用系统体系结构都是在 产品线体系结构基础上通过定制和剪裁得到的,因此产品线参考体系结构可以作为协调、 统一领域工程与应用系统工程开发及演化的基础。 本发明的核心思想是以统一的软件产品线体系结构与构件版本模型为基础,在体 系结构(包括参考体系结构和应用系统体系结构)和构件(包括领域构件和应用系统构 件)两个层面上实现统一、协调的产品线演化支持,包括基于参考体系结构的应用系统体 系结构定制、应用系统体系结构演化反馈及合并、应用系统体系结构同步、应用构件定制及 演化反馈、文件级的构件实现体版本管理以及应用系统产品版本集成与发布等。
本发明的目的通过下述方法和步骤实现
以支持产品线体系结构描述的体系结构描述语言xADL2. 0为基础,建立软件产品
线体系结构与构件版本模型,从而为统一的产品线演化管理打下基础。该版本模型如图1 所示,其中灰色的模型单元表示xADL2. 0中的体系结构元素,其他元素则是本方法所扩展 的模型元素。xADL2.0将体系结构描述分为结构(Structure)和类型(Type)两部分。结 构部分描述体系结构的拓扑结构,包括构件(Component)、连接器(Connector)以及它们 之间的连接关系(link)。结构部分的可选构件(OptionalComponent)作为一种特殊的构 件,用于表示体系结构中的可选构件,其可选性由相应的警戒条件(Guard)控制。类型部 分用构件类型(ComponentType)等描述构件的抽象规约信息。类型部分的变体构件类型 (VariantComponentType)用于表示包含多个多选一变体(Variant)的特殊构件类型,每个 变体对应一个构件类型以及相应的警戒条件。 本发明仅采用xADL2. 0中的构件、连接器、连接、构件类型等基本概念,以及可选 构件和变体构件类型这些体系结构可变性描述元素。在此基础上,本方法针对软件产品线 体系结构和构件演化进行了扩展。在结构部分,将体系结构版本(ArchitectureVersion) 定义为一系列的构件、连接器和连接关系组成。每个体系结构可以有多个版本。参考体系 结构(RefArch)和应用系统体系结构(AppArch)都是一种体系结构,都可以拥有多个版 本。所有的应用体系结构都是在参考体系结构基础上导出(derive from)的,而每个应用 体系结构版本可能与某个参考体系结构版本具有同步关系(synchronized with)。类型部 分扩展了构件规约(ComponentSpecification)和构件实现(Componentlmplementation)。 构件规约可以有多个版本,体系结构中每个构件的构件类型都是对某个构件规约版本 (ComponentSpecVersion)的引用(reference)。每个构件实现都要声明相应的构件规约, 而每个构件实现版本(ComponentVersion)都实现某个构件规约版本。构件实现包括领域 构件(DomainComponent)和应用构件(ApplicationComponent)两种。应用构件可以从领 域构件导出,相应的应用构件实现版本(A卯licationComponentVersion)可能与某个领域 构件版本(DomainCompo體tVersion)保持同步。 本发明的基于体系结构的软件产品线演化方法,包括以下步骤 (1)设计产品线参考体系结构的初始版本,为其中每个构件的构件类型创建相应
的构件规约,将当前参考体系结构中对各个构件的接口要求描述为相应构件规约的初始版
本,并开发相应的领域构件实现版本。 (2)创建应用系统项目,在参考体系结构当前版本基础上通过对各可选和多选一 可变性对应的警戒条件变量进行赋值进行定制,创建应用系统体系结构的初始版本,并将 所有绑定的构件规约和领域构件导入到当前应用开发项目中。 (3)领域工程开发按照应用系统开发反馈以及质量改进目标对产品线参考体系结 构和领域构件进行改进。
(4)应用系统工程对于应用系统体系结构和应用构件进行相对独立地演化,根据 特定应用客户需求或所发现的bug对应用体系结构、构件规约和构件实现进行修改。
(5)经过一定时间的开发后,应用系统工程将应用系统体系结构和构件的阶段性 演化信息反馈到领域工程,并将应用开发暂时冻结。 (6)领域工程根据各个应用系统的阶段性反馈,将各个应用系统的体系结构和构 件阶段性演化与参考体系结构及各领域构件当前版本进行合并。
5
(7)领域工程将合并后的参考体系结构和领域构件反馈给各应用系统工程,同时 领域工程重新进入步骤(3)继续进行演化。 (8)各个应用系统工程根据参考体系结构及各个领域构件的最新的版本进行同 步,使得应用系统体系结构和应用构件重新与参考体系结构和各个领域构件保持一致,同 时各个应用系统工程重新进入步骤(4)继续进行演化。 本发明的基于体系结构的软件产品线演化方法如图2所示,包括领域工程和应用 系统工程两个层面,其中应用系统工程可以包括多个应用系统。上述步骤中,步骤(1) 、 (3)、 (6)、 (7)属于领域工程,而步骤(2) 、 (4) 、 (5) 、 (8)属于应用系统工程。
本发明所述的基于体系结构的软件产品线演化方法,支持体系结构、构件规约和 构件实现这三种版本实体的演化。其中,参考体系结构与应用系统体系结构的协同演化处 于核心地位。本发明的体系结构演化过程示意图如图3所示。应用系统体系结构的初始版 本总是从参考体系结构的当前最新版本导出的,此后参考体系结构和应用系统体系结构可 以相对独立地进行演化,并执行阶段性的体系结构合并(包括其他应用系统体系结构),合 并后参考体系结构的最新版本将同步给所有的应用系统体系结构。构件规约描述构件的抽 象接口信息,采用XML作为描述手段。构件实现体由一系列文件组成,因此构件实现体的合 并和同步可以基于传统的版本管理中的文件差异比较及合并方法实现。
本发明所述的基于体系结构的软件产品线演化方法,步骤(6)中参考体系结构与 各个应用系统体系结构当前版本合并的具体过程为 1)识别参考体系结构与各个应用系统体系结构中包含的构件,并对参考体系结构
的构件进行分类。在结构层面分为必选构件与可选构件,在类型层面分为普通构件类型、变
体构件类型与抽象构件类型。对于具有变体构件类型的构件,识别它所包含的变体,随后顺
序选取一个应用系统体系结构与参考体系结构进行比较,进入2)3)步骤。 2)将应用系统体系结构中的构件与参考体系结构中的构件进行比较,能够发现以
下几类差异 參新构件(NewComponent)。在应用系统体系结构中发现新的构件,并且它至少与 一个非抽象类型构件关联。 參与抽象构件关联的新构件(NewComponentLinkToAbs)。在应用系统体系结构中 发现新的构件,并且它与一个抽象类型构件关联。 參绑定可选构件(0ptionalComBound)。参考体系结构中的可选构件被包含在应用 体系结构中。 參不同的构件规约版本(DifComTypeVersion)。参考体系结构与应用体系结构的 构件引用同一个构件规约的不同版本。 參新构件规约(NewComponentType)。应用体系结构中的构件引用了新的构件规 约。 參选择变体(VariantBound)。参考体系结构中的变体类型构件在应用系统体系结 构中选择了某一个变体。 參选择的变体引用不同的构件规约版本(DifVariantComTypeVersion)。参考体系 结构中的变体类型构件在应用系统体系结构中选择了某一个变体,但此变体与参考体系结 构中的变体应用同 一个构件规约的不同版本。
6
參新变体(NewVariantComType)。参考体系结构中的变体类型构件在应用系统体系结构中选了新的变体。 參替换抽象构件(AbsComR印lace)。参考体系结构中的抽象类型构件在应用系统体系结构中被应用构件替代。 參移除构件(MandComRemoved)。应用系统体系结构中移除了参考体系结构中的必选构件。 3)对2)中的差异进行抽象,并且合并到参考体系结构中(不包括正常定制结果所产生的差异)。 參对于新构件首先决定是否为可选构件,随后加入到参考体系结构中。
參对于与抽象构件关联的新构件不予以合并。 參对于不同的构件规约版本参考体系结构的构件引用新的构件规约版本。
參对于新构件规约参考体系结构中的构件转换为变体类型构件,原先的构件规约与新构件规约均作为变体。 參对于选择的变体引用不同的构件规约版本参考体系结构中该变体引用的构件
规约版本替换为应用系统体系结构中引用的版本。 參对于新变体参考体系结构中的变体类型构件加入此新变体。
參对于移除构件参考体系结构中的必选构件转换为可选构件。 本发明所述的基于体系结构的软件产品线演化方法,步骤(8)中应用系统体系结构与参考体系结构同步的具体过程为以合并后的参考体系结构最新版本为基础,重复应用当前应用系统此前所使用的所有定制选项,并针对此次体系结构合并所新增的可变点(可选及多选一构件)进行决策,从而在与参考体系结构最新版本保持一致的基础上重新获得应用体系结构版本。参考体系结构可变点警戒条件中的决策变量都是针对特定应用的业务决策选项,与参考体系结构的具体版本无关,因此应用系统已确定的定制变量赋值都可以在体系结构同步中重新应用。 本发明所述的基于体系结构的软件产品线演化方法,可以实现软件产品线领域工程与应用系统工程的统一演化管理,支持增量、迭代的软件产品线开发过程。本方法允许各个应用系统体系结构及构件相对独立地进行演化,同时通过反馈与合并实现整个产品线范围内体系结构与构件演化的统一与协调。此外,本方法还同时支持基于抽象模型的体系结构和构件演化,以及传统的文件级的构件实现体版本和演化管理。 本发明所述的基于体系结构的软件产品线演化方法,适用于增量、迭代的软件产品线开发过程。这类产品线的形成往往开始于若干个特定的领域应用产品。在此基础上,为了适应新应用产品的要求而不断对产品线参考体系结构和领域构件进行增量改进(例如增加新的构件和可变点),而已有的应用系统将根据目标客户的要求以及所发现的bug对应用系统体系结构和应用构件进行修改。采用本发明的方法,可以在适应领域长期变化、支持产品线增量构建和完善(支持更多的应用产品并不断适应已有应用客户的新要求)的同时,保证整个产品线的完整性和一致性。


图1是本发明的软件产品线体系结构与构件版本模型。
图2是本发明的方法流程图。 图3是本发明的体系结构演化过程示意图。 图4是本发明基于开源版本管理工具Subversion的一个具体实现结构图。具体实施方案 以下结合具体的实施例,对本发明做进一步的阐述。实施例仅用于对本发明做说
明而不是对本发明的限制。
实施例 本实施例给出了一个基于开源版本管理工具Subversion的一个具体实施方式
,说明书附图4是其示意图。它采用客户机/服务器的架构在客户端提供产品线演化的各项操作;在服务器端实现传统的文件级版本管理(依托Subversion)以及体系结构/构件配置管理和软件产品线演化过程的相关数据(利用产品线配置管理数据库)。该实现结构分为三个层次最底层为基础层,包含开源版本管理工具Subversion提供文件级版本管理功能;中间层为服务层,为领域工程与应用系统工程提供体系结构的设计与演化支持,包括体系结构、构件规约、构件实现的演化管理,应用体系结构的定制,以及体系结构的反馈与合并;最上层为用户接口层,产品线开发人员通过这些接口实施产品线的演化过程。
基于该实施方式的主要使用过程为 (1)开发人员登录系统,通过构件规约、构件实现的开发接口以及图形化的体系结构设计接口 ,设计开发初始的产品线体系结构、构件规约与构件实现。 (2)按照领域演化需求,通过演化管理的接口进行产品线的各类领域核心资产的演化操作。 (3)通过应用产品体系结构生成接口 ,依照特定领域需求,对领域参考体系结构进行定制,得到应用系统体系结构。 (4)按照应用产品的演化需求,对应用产品资产进行演化操作,包括体系结构修改、应用构件规约及实现体添加、构件实现代码修改等。 (5)对应用产品体系结构的最新版本与参考体系结构的当前版本进行差异性比较,并将差异抽象,合并到参考体系结构。
(6)各个应用产品体系结 根据参考体系结构进行同步。
权利要求
一种基于体系结构的软件产品线演化方法,其特征在于通过以下步骤实现(1)设计产品线参考体系结构的初始版本,为其中每个构件的构件类型创建相应的构件规约,将当前参考体系结构中对各个构件的接口要求描述为相应构件规约的初始版本,并开发相应的领域构件实现版本;(2)创建应用系统项目,在参考体系结构当前版本基础上通过对各可选和多选一可变性对应的警戒条件变量进行赋值进行定制,创建应用系统体系结构的初始版本,并将所有绑定的构件规约和领域构件导入到当前应用开发项目中;(3)领域工程开发按照应用系统开发反馈以及质量改进目标对产品线参考体系结构和领域构件进行改进;(4)应用系统工程对于应用系统体系结构和应用构件进行相对独立地演化,根据特定应用客户需求或所发现的bug对应用体系结构、构件规约和构件实现进行修改;(5)经过一定时间的开发后,应用系统工程将应用系统体系结构和构件的阶段性演化信息反馈到领域工程,并将应用开发暂时冻结;(6)领域工程根据各个应用系统的阶段性反馈,将各个应用系统的体系结构和构件阶段性演化与参考体系结构及各领域构件当前版本进行合并;(7)领域工程将合并后的参考体系结构和领域构件反馈给各应用系统工程,同时领域工程重新进入步骤(3)继续进行演化;(8)各个应用系统工程根据参考体系结构及各个领域构件的最新的版本进行同步,使得应用系统体系结构和应用构件重新与参考体系结构和各个领域构件保持一致,同时各个应用系统工程重新进入步骤(4)继续进行演化。
2. 根据权利要求1所述的基于体系结构的软件产品线演化方法,其特征在于其所依赖 的软件产品线体系结构与构件版本模型在xADL2. 0中的构件、连接器、连接、构件类型以及 可选构件和变体构件类型等基本概念基础上,针对软件产品线体系结构和构件演化进行如 下扩展1) 在结构部分,将体系结构版本定义为一系列的构件、连接器和连接关系组成,每个体系结构可以有多个版本,参考体系结构和应用系统体系结构均为一种体系结构并拥有多个 版本,所有的应用体系结构都是在参考体系结构基础上导出的,每个应用体系结构版本可能与某个参考体系结构版本具有同步关系;2) 类型部分扩展构件规约和构件实现构件规约有多个版本,体系结构中每个构件的 构件类型都是对某个构件规约版本的引用,每个构件实现都要声明相应的构件规约,而每 个构件实现版本都实现某个构件规约版本,构件实现包括领域构件和应用构件两种,应用 构件可以从领域构件导出,相应的应用构件实现版本可与某个领域构件版本保持同步。
3. 根据权利要求1所述的基于体系结构的软件产品线演化方法,其特征在于,所述步 骤(6)利用参考体系结构与应用系统体系结构的合并以及后续的同步过程实现体系结构 级的演化协调,所使用的体系结构合并过程在相关体系结构差异比较基础上通过可变性抽 象实现合并,但不包括正常定制结果所产生的差异对于新构件,首先决定是否为可选构 件,随后加入到参考体系结构中;对于与抽象构件关联的新构件,不予以合并;对于不同的构件规约版本,参考体系结构的构件引用新的构件规约版本;对于新构件规约,参考体系 结构中的构件转换为变体类型构件,原先的构件规约与新构件规约均作为变体;对于选择的变体引用不同的构件规约版本,参考体系结构中该变体引用的构件规约版本替换为应用 系统体系结构中引用的版本;对于新变体,参考体系结构中的变体类型构件加入此新变体; 对于移除构件,参考体系结构中的必选构件转换为可选构件。
4.根据权利要求1所述的基于体系结构的软件产品线演化方法,其特征在于所述步骤 (8)中应用系统体系结构与参考体系结构同步的具体过程为以合并后的参考体系结构最 新版本为基础,重复应用当前应用系统此前所使用的所有定制选项,并针对此次体系结构 合并所新增的可变点进行决策,从而在与参考体系结构最新版本保持一致的基础上重新获 得应用体系结构版本;参考体系结构可变点警戒条件中的决策变量都是针对特定应用的业 务决策选项,与参考体系结构的具体版本无关,应用系统已确定的定制变量赋值都可以在 体系结构同步中重新应用。
全文摘要
本发明以统一的软件产品线体系结构与构件版本模型为基础,在体系结构和构件两个层面上实现统一、协调的产品线演化支持,包括基于参考体系结构的应用系统体系结构定制、应用系统体系结构演化反馈及合并、应用系统体系结构同步、应用构件定制及演化反馈、文件级的构件实现体版本管理以及应用系统产品版本集成与发布等。本发明可以实现领域工程与应用系统工程的统一演化管理,支持增量、迭代的软件产品线开发过程。
文档编号G06F9/44GK101763252SQ20081020768
公开日2010年6月30日 申请日期2008年12月24日 优先权日2008年12月24日
发明者彭鑫, 沈立炜, 赵文耘 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1