Feature IDE理论与技术研究
2018-10-21胡月莹
胡月莹
摘要:Feature IDE 在 Eclipse软件中的插件,可以用于软件产品线中面向特征的软件开发(FOSD)。FOSD 是软件整体系统结构、个性定制和合成的一种方法。Feature IDE 支持FOSD的所有软件开发阶段,并将其分为四个阶段,分别为领域分析、需求分析、领域实现和软件生成。在特征模型领域中对Feature IDE理论与技术进行综述,按照综述的方法重点的探讨了Feature IDE前两个开发阶段的技术。
关键词:综述;软件产品线;特征模型;Feature IDE
引言
软件产品线是可以高效率的完成高质量的软件产品的生产,和工业领域中流水线生产方法类似,生产出来的软件产品功能多样,符合特定领域的软件需要[1]。FOSD是软件产品线的主流技术,是在特定领域中软件产品公共性特征基础上结合可变特征生产软件产品。Feature IDE是一种比较成熟FOSD的技术,很有实用价值。本文总结Feature IDE理论与技术的四个开发阶段的理论基础和主流技术。
1 Feature IDE
特征是指明显的、用户可见的软件系统的具有独立功能的特性。FOSD的基本思想是将软件系统分解为许多个特征,从而根据特征的选择进行配置,从而生成具体的软件系统。Feature IDE技术从设计生成软件具体包括四个阶段:
(1)领域分析,用来获取获取软件体系领域的需求特征,并对这些特征进行分类,分为可变特征和公共特征,最终以特征模型的方式展现出来。
(2)需求分析,选取特征模型的特征组合方案,从而完成软件特征的组装和配置。
(3)领域实现,将特征用代码进行映射和表示。
(4)软件生成,描述特征如何映射到实现工件,生成定制的软件系统。
德国马格德堡大学计算机学院Thomas Thum 等人开发了基于Eclipse 的Feature IDE开源框架,它包含了整个软件开发周期,还可以子啊集成开发环境(IDE)中建立软件产品线(SPLs),可以建立特征模型,还可以为软件生成提供开发平台和可复用构件。在2005年Thomas Thum等人首次提出了一个Feature IDE的原型版本[2]作为AHEAD工具套件的前端的编程语言[3],随后提出了FOSD可复用的实现工具Feature House和Feature C++和FOSD 集成框架Feature IDE。到目前为止,Feature IDE 集成了 Aspect J、Delta J[4]、Antenna和 Munge等技术。随后为了解决 Feature IDE 实现和测试的问题,Thomas 等人开发了相关 Eclipse插件。Feature IDE 架构整合了 Feature IDE C++(支持 C++)、Feature House(支持 C、 C#、java 1.5、JML、Haskell、XML 和 Java CC 等)、面向方面程序设计(Aspect J)和面向 Delta编程,所以该架构支持现有的FOSD编程语言。Feature IDE 支持 FOSD 的所有阶段:领域分析、需求分析、领域实现和软件生成。下面对领域分析和需求分析阶段进行重点描述。
2 领域分析
在领域分析中绘制的特征模型中,存在很多的无效特征,会导致最终省的软件没办法使用。所以在制作模型过程中要选定有效特征,制成有效的特征组合。特征模型(FM)不仅描述了有效特征,还体现了特征之间密切关系特征模型是一种层次结构,特征可以有子特征。特征和其子特征集的关系包括为 And-group(与关系)、Or-group(或关系)和 Alternative-group(二选一关系)。子特征根据他是否具有公共性又分为强制特征(Mandatory)和可选特征(Optional)。强制特征是具有公共性,所有软件产品线的软件都需要具备的特征,所以具有强制性。可选特征具有独特性,是某个或者某部分软件产品所包含的特征;除此之外特征中有些特征只是特征分解中一个中间件,不会映射具体的工件,称为抽象特征(Abstract),而最终软件产品中具有的特征称为具体特征(Concrete)。
Feature IDE 创建特征模型有两种方式,图形式和文本式。Feature IDE 可以在Eclipse中导入特征建模工具,包括 GUIDSL、Feature Modeling Plug-In [37]、S.P.L.O.T., 和 SPLConqueror。特征模型可以存储为多种图形格式,也可以以 PDF格式进行打印。
3 需求分析
特征模型中特征之间的除了层次关系,还有约束关系,Feature IDE使用Cross-tree 约束去定义这种约束关系。Cross-tree 约束命题公式,由是一组特征的组成,在特征图下方。
特征模型包括一下四点:
(1)当一个特征最终成为某一软件产品的特征,那么它的父特征也必然出现在这个软件产品中。
(2)当一个特征最终成为某一软件产品的特征,则其 And-group 中的所有的强制类型的子特征必然出现在这个软件产品中。
(3)在 Or-group 中,其多个子特征中,最后至少有一个特征属于最终的软件产品。
(4)在 Alternative-group 中,有且只有一个特征属于最终的软件产品。
Feature IDE 提供了约束编辑器。该编辑器有内容帮助功能,可以方便的处理语法语义的有效性检查。图 2 展示了约束的有效性检查。可以检查可以检测括号不匹配、假可选特性、不可满足的约束和冗余约束。
上式表示特征F依赖于特征A,B或者C以及它们的任意组合。
上式表示特征F依赖于特征对(A,X),(B,Y),(B,Z)或C以及它们的任意组合。排斥
也有相同的表达。综上所述,可以得出非语法约束可以是任意命题约束。语法为特征模
型提供了一个图形中性的表示,例如图3(b)的语法可以表达图3(a)的特征模型。
获取特征集合,绘制特征模型之后,需要选择合适的特征组合,即特征子集,称为配置。其中默认配置是特征模型中包含的所有特征的集合。而且要保证配置得到的特征集合有效,可以生成有效的软件产品。
参考文献:
[1] 郭健美.基于共性與可变性分析的适应性软件复用与配置技术研究[D].上海交通大学,2011.
[2] 赵鄂,杨博文,杨贯中.一种适用于软件产品线的特征模型[J].计算机系统应用. 2013(10)
[3] Zhang W,Mei H,Zhao H.Feature-driven requirement dependency analysis and high-lev
[4]Batory D.A tutorial on feature oriented programming and the ahead tool suite [M],Berlin Heidelberg:Springer,2006:3-35.