CN101763252B - 基于体系结构的软件产品线演化方法 - Google Patents
基于体系结构的软件产品线演化方法 Download PDFInfo
- Publication number
- CN101763252B CN101763252B CN 200810207687 CN200810207687A CN101763252B CN 101763252 B CN101763252 B CN 101763252B CN 200810207687 CN200810207687 CN 200810207687 CN 200810207687 A CN200810207687 A CN 200810207687A CN 101763252 B CN101763252 B CN 101763252B
- Authority
- CN
- China
- Prior art keywords
- architecture
- component
- application system
- version
- components
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明以统一的软件产品线体系结构与构件版本模型为基础,在体系结构和构件两个层面上实现统一、协调的产品线演化支持,包括基于参考体系结构的应用系统体系结构定制、应用系统体系结构演化反馈及合并、应用系统体系结构同步、应用构件定制及演化反馈、文件级的构件实现体版本管理以及应用系统产品版本集成与发布等。本发明可以实现领域工程与应用系统工程的统一演化管理,支持增量、迭代的软件产品线开发过程。
Description
技术领域
本发明属于软件开发技术领域,具体涉及基于体系结构的软件产品线演化。
背景技术
软件产品线是共享一组受控的公共特征并且在一系列预定义的公共核心资产基础上开发而成的一系列软件应用系统。这一系列相似的软件应用系统被称为领域,例如电子商务、电子政务等典型的业务领域。软件产品线是一种针对特定领域、以体系结构为核心的系统、全面的基于复用的软件开发方法。软件产品线开发主要包括领域工程和应用系统工程两个层面。领域工程活动包括领域分析和建模、领域参考体系结构设计、领域构件开发等,其主要目标就是为领域范围内的应用产品开发提供可复用的核心资产(包括体系结构和构件等)。而应用系统工程则通过复用产品线核心资产实现具体应用产品的开发,主要活动包括应用需求分析、参考体系结构定制和剪裁、领域构件的实例化、定制以及应用系统组装等。
在软件产品线中,领域工程和应用系统工程两个层面都可能发生演化。对于应用系统工程而言,必须根据客户的需求变更或所发现的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)和构件实现(ComponentImplementation)。构件规约可以有多个版本,体系结构中每个构件的构件类型都是对某个构件规约版本(ComponentSpecVersion)的引用(reference)。每个构件实现都要声明相应的构件规约,而每个构件实现版本(ComponentVersion)都实现某个构件规约版本。构件实现包括领域构件(DomainComponent)和应用构件(ApplicationComponent)两种。应用构件可以从领域构件导出,相应的应用构件实现版本(ApplicationComponentVersion)可能与某个领域构件版本(DomainComponentVersion)保持同步。
本发明的基于体系结构的软件产品线演化方法,包括以下步骤:
(1)设计产品线参考体系结构的初始版本,为其中每个构件的构件类型创建相应的构件规约,将当前参考体系结构中对各个构件的接口要求描述为相应构件规约的初始版本,并开发相应的领域构件实现版本。
(2)创建应用系统项目,在参考体系结构当前版本基础上通过对各可选和多选一可变性对应的警戒条件变量进行赋值进行定制,创建应用系统体系结构的初始版本,并将所有绑定的构件规约和领域构件导入到当前应用开发项目中。
(3)领域工程开发按照应用系统开发反馈以及质量改进目标对产品线参考体系结构和领域构件进行改进。
(4)应用系统工程对于应用系统体系结构和应用构件进行相对独立地演化,根据特定应用客户需求或所发现的bug对应用体系结构、构件规约和构件实现进行修改。
(5)经过一定时间的开发后,应用系统工程将应用系统体系结构和构件的阶段性演化信息反馈到领域工程,并将应用开发暂时冻结。
(6)领域工程根据各个应用系统的阶段性反馈,将各个应用系统的体系结构和构件阶段性演化与参考体系结构及各领域构件当前版本进行合并。
(7)领域工程将合并后的参考体系结构和领域构件反馈给各应用系统工程,同时领域工程重新进入步骤(3)继续进行演化。
(8)各个应用系统工程根据参考体系结构及各个领域构件的最新的版本进行同步,使得应用系统体系结构和应用构件重新与参考体系结构和各个领域构件保持一致,同时各个应用系统工程重新进入步骤(4)继续进行演化。
本发明的基于体系结构的软件产品线演化方法如图2所示,包括领域工程和应用系统工程两个层面,其中应用系统工程可以包括多个应用系统。上述步骤中,步骤(1)、(3)、(6)、(7)属于领域工程,而步骤(2)、(4)、(5)、(8)属于应用系统工程。
本发明所述的基于体系结构的软件产品线演化方法,支持体系结构、构件规约和构件实现这三种版本实体的演化。其中,参考体系结构与应用系统体系结构的协同演化处于核心地位。本发明的体系结构演化过程示意图如图3所示。应用系统体系结构的初始版本总是从参考体系结构的当前最新版本导出的,此后参考体系结构和应用系统体系结构可以相对独立地进行演化,并执行阶段性的体系结构合并(包括其他应用系统体系结构),合并后参考体系结构的最新版本将同步给所有的应用系统体系结构。构件规约描述构件的抽象接口信息,采用XML作为描述手段。构件实现体由一系列文件组成,因此构件实现体的合并和同步可以基于传统的版本管理中的文件差异比较及合并方法实现。
本发明所述的基于体系结构的软件产品线演化方法,步骤(6)中参考体系结构与各个应用系统体系结构当前版本合并的具体过程为:
1)识别参考体系结构与各个应用系统体系结构中包含的构件,并对参考体系结构的构件进行分类。在结构层面分为必选构件与可选构件,在类型层面分为普通构件类型、变体构件类型与抽象构件类型。对于具有变体构件类型的构件,识别它所包含的变体,随后顺序选取一个应用系统体系结构与参考体系结构进行比较,进入2)3)步骤。
2)将应用系统体系结构中的构件与参考体系结构中的构件进行比较,能够发现以下几类差异:
●新构件(NewComponent)。在应用系统体系结构中发现新的构件,并且它至少与一个非抽象类型构件关联。
●与抽象构件关联的新构件(NewComponentLinkToAbs)。在应用系统体系结构中发现新的构件,并且它与一个抽象类型构件关联。
●绑定可选构件(OptionalComBound)。参考体系结构中的可选构件被包含在应用体系结构中。
●不同的构件规约版本(DifComTypeVersion)。参考体系结构与应用体系结构的构件引用同一个构件规约的不同版本。
●新构件规约(NewComponentType)。应用体系结构中的构件引用了新的构件规约。
●选择变体(VariantBound)。参考体系结构中的变体类型构件在应用系统体系结构中选择了某一个变体。
●选择的变体引用不同的构件规约版本(DifVariantComTypeVersion)。参考体系结构中的变体类型构件在应用系统体系结构中选择了某一个变体,但此变体与参考体系结构中的变体应用同一个构件规约的不同版本。
●新变体(NewVariantComType)。参考体系结构中的变体类型构件在应用系统体系结构中选了新的变体。
●替换抽象构件(AbsComReplace)。参考体系结构中的抽象类型构件在应用系统体系结构中被应用构件替代。
●移除构件(MandComRemoved)。应用系统体系结构中移除了参考体系结构中的必选构件。
3)对2)中的差异进行抽象,并且合并到参考体系结构中(不包括正常定制结果所产生的差异)。
●对于新构件:首先决定是否为可选构件,随后加入到参考体系结构中。
●对于与抽象构件关联的新构件:不予以合并。
●对于不同的构件规约版本:参考体系结构的构件引用新的构件规约版本。
●对于新构件规约:参考体系结构中的构件转换为变体类型构件,原先的构件规约与新构件规约均作为变体。
●对于选择的变体引用不同的构件规约版本:参考体系结构中该变体引用的构件规约版本替换为应用系统体系结构中引用的版本。
●对于新变体:参考体系结构中的变体类型构件加入此新变体。
●对于移除构件:参考体系结构中的必选构件转换为可选构件。
本发明所述的基于体系结构的软件产品线演化方法,步骤(8)中应用系统体系结构与参考体系结构同步的具体过程为:以合并后的参考体系结构最新版本为基础,重复应用当前应用系统此前所使用的所有定制选项,并针对此次体系结构合并所新增的可变点(可选及多选一构件)进行决策,从而在与参考体系结构最新版本保持一致的基础上重新获得应用体系结构版本。参考体系结构可变点警戒条件中的决策变量都是针对特定应用的业务决策选项,与参考体系结构的具体版本无关,因此应用系统已确定的定制变量赋值都可以在体系结构同步中重新应用。
本发明所述的基于体系结构的软件产品线演化方法,可以实现软件产品线领域工程与应用系统工程的统一演化管理,支持增量、迭代的软件产品线开发过程。本方法允许各个应用系统体系结构及构件相对独立地进行演化,同时通过反馈与合并实现整个产品线范围内体系结构与构件演化的统一与协调。此外,本方法还同时支持基于抽象模型的体系结构和构件演化,以及传统的文件级的构件实现体版本和演化管理。
本发明所述的基于体系结构的软件产品线演化方法,适用于增量、迭代的软件产品线开发过程。这类产品线的形成往往开始于若干个特定的领域应用产品。在此基础上,为了适应新应用产品的要求而不断对产品线参考体系结构和领域构件进行增量改进(例如增加新的构件和可变点),而已有的应用系统将根据目标客户的要求以及所发现的bug对应用系统体系结构和应用构件进行修改。采用本发明的方法,可以在适应领域长期变化、支持产品线增量构建和完善(支持更多的应用产品并不断适应已有应用客户的新要求)的同时,保证整个产品线的完整性和一致性。
附图说明
图1是本发明的软件产品线体系结构与构件版本模型。
图2是本发明的方法流程图。
图3是本发明的体系结构演化过程示意图。
图4是本发明基于开源版本管理工具SubVersion的一个具体实现结构图。
具体实施方案
以下结合具体的实施例,对本发明做进一步的阐述。实施例仅用于对本发明做说明而不是对本发明的限制。
实施例:
本实施例给出了一个基于开源版本管理工具SubVersion的一个具体实施方式,说明书附图4是其示意图。它采用客户机/服务器的架构:在客户端提供产品线演化的各项操作;在服务器端实现传统的文件级版本管理(依托SubVersion)以及体系结构/构件配置管理和软件产品线演化过程的相关数据(利用产品线配置管理数据库)。该实现结构分为三个层次:最底层为基础层,包含开源版本管理工具SubVersion提供文件级版本管理功能;中间层为服务层,为领域工程与应用系统工程提供体系结构的设计与演化支持,包括体系结构、构件规约、构件实现的演化管理,应用体系结构的定制,以及体系结构的反馈与合并;最上层为用户接口层,产品线开发人员通过这些接口实施产品线的演化过程。
基于该实施方式的主要使用过程为:
(1)开发人员登录系统,通过构件规约、构件实现的开发接口以及图形化的体系结构设计接口,设计开发初始的产品线体系结构、构件规约与构件实现。
(2)按照领域演化需求,通过演化管理的接口进行产品线的各类领域核心资产的演化操作。
(3)通过应用产品体系结构生成接口,依照特定领域需求,对领域参考体系结构进行定制,得到应用系统体系结构。
(4)按照应用产品的演化需求,对应用产品资产进行演化操作,包括体系结构修改、应用构件规约及实现体添加、构件实现代码修改等。
(5)对应用产品体系结构的最新版本与参考体系结构的当前版本进行差异性比较,并将差异抽象,合并到参考体系结构。
(6)各个应用产品体系结构根据参考体系结构进行同步。
Claims (1)
1.一种基于体系结构的软件产品线演化方法,其特征在于,以支持产品线体系结构描述的体系结构描述语言xADL2.0为基础,建立软件产品线体系结构与构件版本模型;
所述xADL2.0将体系结构描述分为结构和类型两部分,结构部分描述体系结构的拓扑结构,包括构件、连接器以及它们之间的连接关系,结构部分的可选构件用于表示体系结构中的可选构件,其可选性由相应的警戒条件控制;
类型部分用构件类型描述构件的抽象规约信息,类型部分的变体构件类型用于表示包含多个多选一变体的特殊构件类型,每个变体对应一个构件类型以及相应的警戒条件;采用xADL2.0中的构件、连接器、连接、构件类型基本概念,以及可选构件和变体构件类型对软件产品线体系结构和构件演化进行扩展,在结构部分,将体系结构版本定义为一系列的构件、连接器和连接关系组成,每个体系结构有多个版本,参考体系结构和应用系统体系结构是一种体系结构,拥有多个版本;
所述的应用系统体系结构是在参考体系结构基础上导出的,每个应用系统体系结构版本与某个参考体系结构版本具有同步关系,类型部分扩展了构件规约和构件实现,构件规约有多个版本,体系结构中每个构件的构件类型是对某个构件规约版本的引用,每个构件实现要声明相应的构件规约而每个构件实现版本实现某个构件规约版本;
构件实现包括领域构件和应用构件两种,应用构件从领域构件导出,相应的应用构件实现版本与某个领域构件版本保持同步;
所述的演化方法通过以下步骤实现:
(1)设计产品线参考体系结构的初始版本,为每个构件的构件类型创建相应的构件规约,将当前参考体系结构中对各个构件的接口要求,描述为相应构件规约的初始版本,并开发相应的领域构件实现版本;
(2)创建应用系统项目,在参考体系结构当前版本基础上通过对各可选和多选一可变性对应的警戒条件变量进行赋值,创建应用系统体系结构的初始版本,并将所有绑定的构件规约和领域构件导入到当前应用开发项目中;
(3)领域工程开发按照应用系统开发反馈以及质量改进目标对产品线参考体系结构和领域构件进行改进;
(4)应用系统工程对于应用系统体系结构和应用构件进行相对独立地演化,根据特定应用客户需求或所发现的bug对应用体系结构、构件规约和构件实现进行修改;
(5)经过一定时间的开发后,应用系统工程将应用系统体系结构和构件的阶段性演化信息反馈到领域工程,并将应用开发暂时冻结;
(6)领域工程根据各个应用系统的阶段性反馈,将各个应用系统的体系结构和构件阶段性演化与参考体系结构及各领域构件当前版本进行合并;利用参考体系结构与应用系统体系结构的合并以及后续的同步过程实现体系结构级的演化协调;
所述的合并为:各个应用系统的体系结构并入参考体系结构,构件阶段性演化并入各领域构件当前版本;
所使用的体系结构合并过程在相关体系结构差异比较基础上通过可变性抽象实现合并,但不包括正常定制结果所产生的差异:
对于新构件,首先决定是否为可选构件,随后加入到参考体系结构中;
对于与抽象构件关联的新构件,不予以合并;
对于不同的构件规约版本,参考体系结构的构件引用新的构件规约版本;
对于新构件规约,参考体系结构中的构件转换为变体类型构件,原先的构件规约与新构件规约均作为变体;
对于选择的变体引用不同的构件规约版本,参考体系结构中该变体引用的构件规约版本替换为应用系统体系结构中引用的版本;
对于新变体,参考体系结构中的变体类型构件加入此新变体;
对于移除构件,参考体系结构中的必选构件转换为可选构件;
(7)领域工程将合并后的参考体系结构和领域构件反馈给各应用系统工程,同时领域工程重新进入步骤(3)继续进行演化;
(8)各个应用系统体系结构与参考体系结构进行同步,使得应用系统体系结构和应用构件重新与参考体系结构和各个领域构件保持一致,同时各个应用系统工程重新进入步骤(4)继续进行演化,具体过程为:
以合并后的参考体系结构最新版本为基础,重复应用当前应用系统此前所使用的所有定制选项,并针对此次体系结构合并所新增的可变点进行决策,从而在与参考体系结构最新版本保持一致的基础上重新获得应用体系结构版本;参考体系结构可变点警戒条件中的决策变量都是针对特定应用的业务决策选项,与参考体系结构的具体版本无关,应用系统已确定的定制变量赋值都可以在体系结构同步中重新应用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810207687 CN101763252B (zh) | 2008-12-24 | 2008-12-24 | 基于体系结构的软件产品线演化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810207687 CN101763252B (zh) | 2008-12-24 | 2008-12-24 | 基于体系结构的软件产品线演化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101763252A CN101763252A (zh) | 2010-06-30 |
CN101763252B true CN101763252B (zh) | 2013-08-21 |
Family
ID=42494424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810207687 Expired - Fee Related CN101763252B (zh) | 2008-12-24 | 2008-12-24 | 基于体系结构的软件产品线演化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101763252B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279347B (zh) * | 2013-05-28 | 2016-03-30 | 复旦大学 | 一种通用的软件产品线领域模型与应用模型的同步方法 |
CN113741935B (zh) * | 2021-08-27 | 2024-03-26 | 西藏宁算科技集团有限公司 | 一种项目与产品同步迭代升级方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1584830A (zh) * | 2004-06-16 | 2005-02-23 | 北京大学 | 构件化软件中非功能特征组装方法 |
CN1952882A (zh) * | 2006-11-16 | 2007-04-25 | 武汉大学 | 一种基于本体元模型的领域建模方法 |
-
2008
- 2008-12-24 CN CN 200810207687 patent/CN101763252B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1584830A (zh) * | 2004-06-16 | 2005-02-23 | 北京大学 | 构件化软件中非功能特征组装方法 |
CN1952882A (zh) * | 2006-11-16 | 2007-04-25 | 武汉大学 | 一种基于本体元模型的领域建模方法 |
Non-Patent Citations (1)
Title |
---|
黄崇德等.体系结构动态演化中的构件行为分析.《计算机工程与应用》.2007,第87页-第92页. * |
Also Published As
Publication number | Publication date |
---|---|
CN101763252A (zh) | 2010-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102782650B (zh) | 用于管理分布式环境中系统管理代理的配置的方法与系统 | |
US8612393B2 (en) | Application server provisioning system and method based on disk image profile | |
CN112424750A (zh) | 云平台上的多集群供应及管理办法 | |
US11231912B2 (en) | Post-deployment modification of information-technology application using lifecycle blueprint | |
US20130346260A1 (en) | Establishing an initial configuration of a hardware inventory | |
CN106201614A (zh) | 一种可对多种同类软件进行链式升级的通用方法及系统 | |
US10282200B2 (en) | Out-of-deployment-scope modification of information-technology application using lifecycle blueprint | |
KR101484680B1 (ko) | 컴포넌트 기반 소프트웨어 제품 관리 시스템 및 방법 | |
KR20110064485A (ko) | 모델 기반 맞춤형 에코 시스템 및 설계 방법 | |
CN110716983B (zh) | 一种信息处理方法和区块链网络服务平台 | |
CN110502239A (zh) | 一种车载系统sdk的开发制作方法及装置 | |
CN105260203A (zh) | 一种基于模型的Hadoop部署以及配置方法 | |
US8875118B1 (en) | Application configuration managment | |
CN108616391A (zh) | 服务器端进行设备固件升级的方法及系统 | |
CN108322341A (zh) | 一种更新路由器配置数据库的方法及系统 | |
Balobaid et al. | An effective approach to cloud migration for small and medium enterprises (SMEs) | |
CN101763252B (zh) | 基于体系结构的软件产品线演化方法 | |
Eilam et al. | Reducing the complexity of application deployment in large data centers | |
CN113824790B (zh) | 一种支持企业级应用的云原生PaaS管理平台 | |
Van Landuyt et al. | Variability middleware for multi-tenant saas applications: a research roadmap for service lines | |
KR101127701B1 (ko) | 비즈니스 프로세스로부터 사용자 맞춤형 웹 서비스를 생성하는 시스템 및 방법 | |
GB2380830A (en) | Automatic file sharing in a peer to peer network by use of constraints between file system domains | |
WO2024144882A1 (en) | Multi-tiered reconciliation of network functions | |
Lazovik et al. | Managing process customizability and customization: Model, language and process | |
Etedali et al. | Automated constraint-based multi-tenant saas configuration support using XML filtering techniques |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130821 Termination date: 20161224 |
|
CF01 | Termination of patent right due to non-payment of annual fee |