首页 > 范文大全 > 正文

一种面向服务的软件产品线架构设计方法

开篇:润墨网以专业的文秘视角,为您筛选了一篇一种面向服务的软件产品线架构设计方法范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:软件产品线工程是一种有效的软件规模化生产方法,面向特定业务领域实现了软件资产的系统化复用,从而降低了软件生产成本,缩短了产品生产周期。然而面对市场快速变化,传统的软件产品线工程方法无法满足要求。针对行业领域应用,把SOA技术应用于软件产品线工程中,提出了能够适应业务敏捷变化的面向服务软件产品线架构设计方法

关键词:软件产品线;面向服务架构;领域建模;可变性分析;系统化复用

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2012)31-7472-03

随着整个社会信息化进程的加快,软件系统的规模和复杂度不断提高,以及快速的市场变化,企业正面临着成本、质量和交付时间多方面压力。

软件产品线工程是一种有效的软件规模化生产方法[1-5],它面向特定业务领域实现软件资产的系统化复用,从而降低了软件生产成本,缩短了软件产品生产周期,并能提高软件质量。但经典的软件产品线工程方法先决条件为产品结构相对稳定,否则会导致产品线核心资产结构的不稳定,而核心资产结构不稳定可能会引发产品线的崩溃,失去软件产品线规模化生产能力。当今企业面对快速变化的市场,为适应市场的变化,需要业务应能够敏捷变化,这就要求支撑业务的软件体系结构能柔性变化,满足业务敏捷性变化的要求。因此现有软件产品线工程无法满足要求。

面对快速变化的市场,开发能适应市场变化的敏捷系统是关键。SOA技术为实现业务敏捷性提供了有力支持,可以借助SOA建设一个灵活的IT来帮助企业快速应变市场并且引领业务创新。

为使软件产品线工程方法能在行业领域得到有效应用,本文把SOA技术应用于软件产品线工程中,提出了面向服务的软件产品工程方法。该方法既可以利用SOA技术开发敏捷系统适应市场的快速变化,又能实现基于系统化复用的软件规模化生产,从而降低开发成本,缩短交付时间。

1 面向服务的产品线架构设计方法

面向服务的软件产品线架构设计方法是一种自顶向下的系统识别方法,同时也是一种支持面向服务的核心资产复用的有效方式。

该方法的架构风格如图1所示,满足SOA开发的通用分层结构,架构本身被分为4个层次:分别是服务接口层,服务组合层,服务层,构件层。其中每个层次都代表不同的含义。接口层是由图形用户接口组件构成的,这一层服务于面向对象的产品线,为产品线提供虚拟接口,这些虚拟接口用来实现服务和服务组合的通信。服务组合层是由不同的服务集合组成的,这些服务集合可以用来执行一个完整的业务活动,或者一个完整的业务过程。服务层是由一些自制的、单一业务表示的服务构成,这些服务可以完成细粒度业务活动。构件层是由构件集合构成,构件本身为服务提供功能,确保并维护服务质量。

在图1中,架构中的构件、服务、服务组合以及服务接口构件都在开发的过程中涉及到可变性,因此这些架构元素本身也具有必选依赖、可选依赖及可替换关系。

面向服务的产品线架构设计方法将软件产品线工程分为两个生命周期:核心资产开发和产品开发。核心资产开发的目的是为后续的识别过程提供指导和步骤规范,同时记录并执行包含可变性的通用架构元素。在产品开发过程中,这些架构元素通过专门定制来满足特殊用户需求或者市场阶段性需要。

面向服务的产品线架构方法从识别阶段开始,该方法的输入包括特征模型和业务流程模型,输出包括可能构件列表、候选服务以及候选服务组合。并且这些架构元素可以复用在所有的产品中。上述处理过程分为构件识别和服务识别。

在构件识别和服务识别过后,还要进行可变性分析。把构件和服务列表作为输入,定义并记录架构中相关的可变性,同时说明可变性如何影响服务和构件执行的。

软件产品线架构还要遵循一定的架构规范。架构规范包括使用不同的视角来记录架构,这是为了给不同的产品相关人员描述项目的关键点。在架构规范活动中,构件、服务、服务组合和它们之间的流将会逐一规范化。例如,架构将会被规范。在这个活动中,方法和规范在可变性的作用下由所有的核心资产开发工件产生出来,架构规范需要符号来支持可变性的表达。

软件架构是一个复杂的实体,不能简单的通过一维形式表示出来。因为项目对应有许多不同的利益相关者,他们对系统的关注点不相同,因此从不同的角度来描述系统是很重要的。

在架构规范过程中,第一步是定义构件和服务接口。接下来,不同的架构视角能被生产出来,包括:结构视角,分层视角,交互视角,依赖视角,并发视角和物理视角。结构视角描述了架构的静态结构,这个视角展示额架构中的构件,服务和服务组合。分层视角描述了服务在每一层上的组织结构。交互视角展示了服务和构件之间如何通过交流来实现特殊功能。依赖视角描述了服务和构件之间的依赖信息。并发视角描述了服务和构件之间的并行交互,这种交互也同样可以在交互视角中进行描述。物理视角展示了服务和构件的分别以及交互协议。

利用UML图的固有模式和可变性扩展可以创建这些视角。例如,构件图能够用于表示构件的结构视图和依赖视图,而交互视图和并行视图可以用来表示顺序图,服务依赖视图能用接口之间的关系来创建等。

2 可变性分析设计方法

可变性是改变或定制软件系统的能力。改进系统中的可变性意味着使它更容易进行特定种类的定制化。此外,系统可以预选确定一些可变性的类型,并且构建一个系统,同时在系统中预留出可变接口。

2.1 可变性分析

在该阶段,面向服务的产品线中的候选构件、候选服务以及候选服务组合已经被识别出来。在可变性复习活动中,定义并记录了必要的架构决定,这些决定是关于在特征模型和业务流程中表现的可变性如何被服务和构件执行。

可变性分析活动从分析候选构件和候选服务的识别开始。要以减少候选服务数量为目的来分析服务中的相似性和不同之处。服务相似性分析包括比较服务功能,这时为了使相同的服务结合在一起,以获得更好的可变性表示,例如改变类属性或方法可以实施可变性。在这种情况下,服务可以作为内部可变性而融入到另一个服务中。同样的分析过程也可以用在候选构件中。这样一来,服务和构件就不再是候选元素了。

接下来,该分析还要解决构件如何执行可变点的问题。基于构建的开发可以被视为换一个实施技术,如每个变体都是由一个不同的构件实施的。同样,已经熟知的可变性实施技术能被用于实施构件内部可变性,例如面向方面的编程,条件编辑,配置文件和设计模式。类似的事情也发生在服务中。在这种情况下,面向服务能被作为技术而用于实施可变性,例如每个变体能被实施在服务中。面向服务的应用被定制化、改变服务顺序或者参与服务组合形式,以便实施可变性。一个可变点可以通过实施而改变一个类属性,或者一个类,一个方法,一个整体构件或服务。因此,在一些情况下,很有必要去了解服务的内部可变性。

为了实施服务的内部可变性,例如一个能为不同目的而被定制唯一的服务,在一些情况下服务接口,必须反映服务包括的基本可变性,这些可变性保存在构件和类中。因此,条件编辑和参数化能被用于不同的目的,包括改变服务接口或者根据特定客户需求修改服务行为。代码转换工具的使用可以用于执行服务接口的可变性。

2.2 可变性设计

对于常规的架构来说,只要满足了单个系统的行为的质量目标,几乎任何实例都是可以的。但是,对于产品线架构则不能采用这一简单的方法来划分系统,产品线架构中有一组明确允许发生的变化,这些变化可能会非常大。这些变化在软件产品线中的产品同时存在,但这些产品在行为、质量属性、平台、网络、物理配置、中间件以及比例因子等方面可能是不同的。产品线架构设计过程包括:确定变化点,支持变化点,及对产品线架构的适宜性进行评估。

为所有产品都获取正确的需求是困难的,特别是当不同产品的需求存在冲突时。这些冲突必须在产品线架构中予以解决。我们在产品线架构设计中在抽象级别上考虑了三种基本技术支持架构可变性:适应(adaptation)、替换(replacement )及扩展(extension),如图2所示。

图2 三种可变性设计方式

在使用适应技术时,一个组件只有一个具体实现,但它提供多种方式来调节它的行为。这些方式可以采用配置文件、运行时参数化、给组件源代码打补丁等形式来实现可选项。

在使用替换技术时,一个组件有多个不同的实现。每个实现都遵循产品线架构中定义的组件规约。在应用工程中,其中的一个实现被选择,或者特定于产品的一个实现根据给定的规约被开发。

在使用扩展技术时,要求架构提供允许添加新组件的接口。新增加的组件可以特定于产品的,也可以不是。与替换不同的是仅有一般化的接口用来添加不同类型的组件。基于替换技术,接口是特定于组件的做什么,仅在怎样做上存在区别。

3 软件生产实践验证

采用面向服务的软件产品工程方法,在社会保障领域开展了软件产品线应用实践。社保领域业务复杂,尽管有统一的管理规范,但各地区都有自身的特殊性,适合于软件产品线工程开发方法。

研发工作涵盖核心资产的开发与应用两方面。软件产品线核心资产开发框架主要由核心资产、参考实现及资产库管理三部分构成。在核心资产库中,包含了需求资产、组件资产、测试资产、数据资产等。通过核心资产的系统化复用来提高本地化项目的复用度。

在软件产品线工程中,核心资产的研发是关键。由于社保领域的业务正在不断地发展和变化,核心资产结构需不断的变化,以满足业务需求的变化,因此采用了面向服务的软件产品线架构设计方法。通过动态的服务组合,实现服务流程的敏捷变化。

社保领域软件产品线工程实践验证了面向服务的软件产品线方法的有效性,通过核心资产复用(复用度达到了60-80%),节约了开发成本,提升了产品质量。

4 结束语

针对行业领域应用,把SOA技术应用于软件产品线工程中,提出了能够适应业务敏捷变化的面向服务的软件产品线架构设计方法。

面向服务的软件产品线工程运用,实现了核心资产系统化复用,产品工程开发组可以充分利用核心资产实现本地化应用系统的开发,有效地提高了QCD水平。

软件产品线工程方法在社保领域应用实践,实现了资产的高复用率60%-80%。软件生产实践证明了软件产品线工程方法在软件规模化生产中的有效性。

参考文献:

[1] 王广昌.软件产品线关键方法与技术研究[D].杭州:浙江大学,2001.

[2] Clements P,Northrop L.Software Product Lines: Practices and Patterns[M].Addison-Wesley,2002.

[3] Pohl K,Günter B,Frank J,et al.Software Product Line Engineering:Foundations,Principles,and Techniques[M].Springer,2005.

[4] 郭军.产品线架构中支持软件复用的若干关键技术的研究[D].沈阳:东北大学.2005.

[5] 普尔.软件产品线工程[M]. 张佳骥,李彦平,译.北京:国防工业出版社,2010.