苏浓光 杨贯中
(湖南大学信息科学与工程学院 湖南 长沙 410082)
本文主要研究将基于软件产品线高度可复用[1]的开发方法引入可配置的特征模型的方法,提出了一种基于形式化可配置特征单元的特征模型——可配置特征模型CFM(Configurable Feature Model),以期提高软件质量,提高开发软件的效率,缩减软件的研发成本。
软件产品线的工程成功是实现软件复用的方法之一[2]。领域工程与应用工程是软件产品线工程的两个过程[3]。可重用的平台建立、软件产品线可变性和公共性的定义在领域工程阶段完成。需求工程、领域设计、领域实现及领域测试是领域工程的四个过程。为了加快开发产品的过程软件平台中的构件被应用工程重用。应用需求工程、应用设计、应用实现和应用测试应用工程包含四个过程。
本文提出的可配置特征模型CFM是面向特征的领域需求规约模型[4]。通过记录领域中一组具有相对稳定的特征以及特征与特征之间的关系反映整个领域的产品需求,在生产线工程中开发可动态重新配置的产品的特征模型[5-6]。在软件复用的领域工程和应用工程阶段,特征模型[7]呈现出不同的特点。Lee等[8]为了便于产品线中可复用构件的设计和开发,引入了特征的操作化依赖。李玉琴等[9]定义了一系列从需求到特征的映射规则,得到一致性产品核心资产。但是这些传统特征模型的建立过度地依赖于领域专家的分析能力[10],由于缺少对表示特征约束关系的新元素的引入,难以实现各个阶段之间的平滑过渡,使得特征模型与各个软件制品的追溯关系难以建立[11]。
本文在已有特征模型的基础上,对可配置特征模型组成各元素进行了概念说明,给出了相应的形式语义,着重就特征属性[12]、特征关系等问题进行了讨论。创新性地把特征组合定义成特征运算实现,定义了多种特征组合运算,保证了不同抽象层次的构件及其关系具有明确和严格的定义,从而建立了一种层次化的可配置特征模型。并给出了从特征到可配置特征单元的映射规则,为基于特征的软件产品线中的设计和实现提供理论支持。
软件产品线中的特征可以被分成两种类型:共性特征和可变特征。
某个特定的领域中每一个应用系统存在的特征就是共性特征。只在某个系统中存在的特征为可变特征。领域的核心成分和基础设施是由共性特征构成,领域里具有的共性得以展现。可变特征体现的是领域的变化性,须基于领域中共性特征的集合前提之上,并不能单独存在这种可变性。
可变特征可以被分为以下几种类型:强制的(mandatory)、可选的(optional)、可替代的(alternative)。
强制特征MF(Mandatory Feature):是指在领域中每个应用系统中应该包含的特征;也可指当父特征被保留时,它的某个子特征是必选的,则该子特征相对于它的父特征为强制特征。
可选特征OF(Optional Feature):是指对于领域中的各个应用系统可有可无的特征;也可当父特征被保留时,它的某个子特征有可能被选中,则子特征相对于它的父特征为可选特征。
可替代特征AF(Alternative Feature):可替代特征又称为多选一特征,可以被认为是对某一个一般性特征的具体化,它与可选特征的区别是可选特征能够同时选择多个而可替代特征只能选择一个特征;也可指当父特征被保留时,在子特征集中每个特征和父特征之间都是可选关系,但是在保留的子特征个数上存在约束。
某个集合里特征与特征间的某种关系隐含在变化性的某种类型中,在软件产品线里的特征选择约束可以用特征可变性表示,形式化的特征的可变性表示为:SCf={mandatory,optional,alternative}。
特征间的关系包括层次关系和依赖关系[13]。
层次关系包括包含、特化和实现关系。在本文中,层次关系主要用到跨层约束中的父子关系。
依赖关系包括:需要和互斥两种关系。
根据前面的分类形式化,形式化的特征依赖表示为:Deff={require,exclude}。
特征依赖是可传递的,但不包括排斥的依赖,即指直接依赖的相邻能够组合成隐含的某一种依赖关系。不包括排斥关系的任何依赖关系称作“requisite”(需要的)依赖关系。重复使用这种传递性可以找出两个不相邻的特征之间隐含的某种依赖关系。
本文中的特征描述采用形式化描述方法[14],使用形如数学符号的形式化语法和语义来刻画可配置特征模型的组成元素,行为的组装与特征模型规约的描述,可以避免描述可配置特征模型图形符号或者自然语言等不是形式化的方法在产生二义性的问题。特征模型设计采用形式化方法,主要是希望可以像其他的工程领域内的学科一样,通过一定的数学分析,来设计的鲁棒性和可靠性得以提高。接下来对各组成元素进行详细描述并给出其对应的图形符号表示。
定义1特征 特征F(Feature)定义为软件产品中具有用户可见的显著的相对独立的功能、有特定的属性、和上下文有明显关系可独立部署的软件实体。
一个特征描述了它所提供的服务特点,特征的类型、特征的属性和特征之间相互的关系,是软件复用的基本单元。一个特征F是一个四元组,其形式化表示为:
F=
(1)
式中:
•FName是特征名称,是特征的唯一标识符。
•T表示特征的类型,主要分为能力特征、运行环境特征、领域技术特征和实现技术特征。
能力特征描绘了特定领域的应用系统的性能、特定服务、功能或操作,用户可以看见并可以被用户选择来实现所需的应用系统的需求。
运行环境特征是指该领域应用中最终选择和运行环境的属性,主要包括接口协议、网络环境以及软硬件平台等。
领域技术特征针对具体领域按照不同的技术层次描述了实现细节。
实现技术特征与领域技术类似,区别在于领域技术特征是针对具体领域而言,无法用于其他领域,实现技术特征则更加通用,可以用于其他领域。
能力特征可以被进一步划分为功能性特征、操作性特征和表示性特征。
功能性特征是应用系统提供的基本服务。
操作性特征是与应用系统操作有关的特征(从用户的角度),用来描述用户是如何应用系统进行交互的。
表示性特征是指那些与将要呈现给用户的信息内容以及这些信息以什么方式呈现给用户这两方面相关的特征。
•C表示特征的属性,指明该特征是强制的、可选的还是可替代的。
•RX表示特征之间的关系,特征之间的关系对外是不可见的,特征与特征之间存在依赖关系:层次关系(parent或child)、需要关系(require)以及互斥关系(exclude)。其形式化表示为:
(2)
式中:Fi、Fni分别表示特征i和特征i对应的特征集,X表示特征Fi与特征Fni之间的关系,即:
规范1特征之间的关系规范Fni表示与特征Fi相关的一个特征集,其特征数量可以为0,也可以为多个。
定义2可配置特征单元必备集合 在配置特征单元F时,必须出现当前配置中的特征集合,则Require(F),缩写为R(F)。
定义3可配置特征单元排除集合 在配置特征单元F时,必须不在当前配置中的特征集合,则Exclude(F),缩写为E(F)。
定义4.运算 运算实现提取特征部分内容,如A是特征集合F中的特征,且满足CFM(A)∈CFM(F),则A就可以表示为F.A。
定义5特征相等关系 若f1、f2是特征集F中的特征,当f1、f2满足下面条件时:
(3)
称f1、f2相等,记作f1⟺f2,其中⟺表示逻辑等价。
定义6直接连接运算 若f1、f2是特征集F中的特征,当f1、f2满足下面条件时:
称f2是f1的父特征,在特征图中可以将f1直接与f2相连。图1展示了f1直接与f2相连的结果。
此外,孔子在《论语·泰伯》中说过:“邦有道,贫且贱焉,耻也。邦无道,富且贵焉,耻也。”意思是国家政治清明,自己贫贱,是耻辱。国家政治黑暗,自己富贵,是耻辱。也就是说,国家有道,应该出来做事,在为国家服务后,必然会获得奉禄,此乃理所当然。而国家昌明之时,自己依旧贫贱,只能说明自己无才无德,不足以服务于国家,没能建功立业,应以此为耻。若国家无道,而自己富贵,那你扪心自问,你是依据何道而富贵的呢?思考一下,一定会感到可耻。
图1 特征直接连接运算
定义7特征添加运算 若对于任意特征f,在可配置特征单元CFU中都存在一个特征F,满足f.parent=F且f∈CFU.CF,则定义将f加入到可配置特征单元CFU中,作为CFU的子特征的过程,称为CFU与f的一次添加运算,记为CFU⊕f,其形式化表示为:
∀f((f∈CFU.CF)∧(∃F∈CFU.CF)∧
(f.parent=F))⟺CFU⊕f
(4)
推论若f本身为一个可配置特征单元,在可配置特征单元CFU中都存在一个特征F,满足f.Root.parent=F且f.Root∈CFU.CF,则定义将f加入到可配置特征单元CFU中,作为CFU的子特征的过程,称为CFU与f的一次添加运算,记为CFU⊕f,其形式化表示为:
f((f.Root∈CFU.CF)∧(∃F∈CFU.CF)∧
(f.Root.parent=F))⟺CFU⊕f
(5)
定义8特征删除运算 在可配置特征单元CFU中,若对于任意可选特征f且f∈CFU.CF,则定义删除运算为将f从CFU中删除,记为CFUΘf,其形式化表示为:
∀f((f∈CFU.CF)∧(f.C=Optional))⟺CFUΘf
(6)
例如在智慧教室特征图中,通过运算添加特征抽风机(智慧教室⊕抽风机),添加特征单元CO2传感器(智慧教室⊕CO2传感器),以及删除特征LED显示屏(智慧教室ΘLED显示屏),其特征图的变化见图2。
图2 智慧教室特征运算的特征图
识别产品线里产品对用户可见的某些活动特性并构建成特征模型的过程就是特征建模。软件产品线的非功能特性、技术特征、服务以及操作都可以是特征。特征的层次结构图形化之后就是特征树,主要是可变特征和共性特征还有特征间的关系。进一步对特征模型分析研究发现,当保留或删除特征模型内某个特征时,另外存在某些特征也会跟随被保留或删除。由此,本文提出了可配置特征单元的概念。下面对可配置特征单元的概念进行研究讨论。
定义9可配置特征单元 可配置特征单元CFU定义为在特征模型里某一组可变性彼此相关的特征,一个可配置特征单元描述了这组特征的属性Commonality、特征之间相互的关系Relationship,以及可配置特征单元中包含的一组特征集合。一个可配置特征单元CFU是一个四元组,其形式化表示为:
CFU=
(7)
式中:
•CFUName是的名称,是可配置特征单元的唯一标识符。
•C(Commonality) 表示可配置特征单元的属性,指明该可配置特征单元是强制的、可选的还是可替代的。
•RX表示可配置特征单元之间的关系(Relationship),通过对特征之间关系的提升操作,实现从特征关系到可配置特征单元关系的转化,本文定义可配置特征单元具有三种关系:层次关系(parent或child)、需要关系(require)以及互斥关系(exclude)。其形式化表示为:
(8)
式中:CFUi、CFUj分别表示可配置特征单元i和可配置特征单元j, X表示可配置特征CFUi与可配置特征CFUj之间的关系,即:
•CF表示可配置特征单元中包含的一组特征的集合。
通常将可配置特征单元的命名是以它所对应的特征子树中的根特征作为命名的主要依据,辅以考虑其他子特征的功能,来设定可配置特征单元的名称。可配置特征单元的内部CF就是一个由组成这个可配置特征单元的特征所构成的特征子树。可配置特征单元的属性是由这棵特征子树的根节点的可变性决定的:可配置特征单元是强制的该可配置特征单元的根节点强制,若可配置特征单元是可选的即指该可配置特征单元的根节点可选;若可配置特征单元根节点可替代,则该可配置特征单元是可替代的。同时,可配置特征单元中的特征必须存在一定的约束关系,具体如下:
规范2可配置特征单元中关于特征数目的规范 一个可配置特征单元内至少必须包含一个特征,即可配置特征单元集数目大于1,‖CF‖≥1。
规范3可配置特征单元的属性规范 可配置特征单元的根特征是强制特征、可选特征或者可替代特征中的某一种。其他特征可以是其中任意一种特征,并能通过可配置特征单元的运算对其他特征进行运算。
规范4可配置特征单元叶子特征的规范 可配置特征单元中每个叶子特征在特征模型中的子特征一定是可选的或可替代的。
上述可配置特征单元的几种约束关系,能够作为可配置特征单元验证的依据,以保证可配置特征单元分割的合理性。
由于这样的分组方式使得可配置特征单元产品配置管理过程中的变体复杂性得以降低,可以帮助开发者分析选择该特征而引起的改变情况。同时,通过CFU的映射规则进行识别,方便进一步地有效管理。
由特征的选择约束可得,可配置特征单元的选择约束其形式化表示为:SCCFU={mandatory,optional,alternative}。
根据特征依赖具有可传递的特性可知,不包括排斥的可配置特征单元的依赖关系也是具备传递性。意思是直接依赖的相邻能够组合成隐含的某一种依赖关系。不包括排斥关系的任何依赖关系称作“requisite”(需要的)依赖关系。重复使用这种传递性可以找出两个不相邻的特征之间隐含的某种依赖关系。
定义10可配置特征单元根特征,Root Feature of CFU 一个CFU的根特征是组成这个可配置特征单元的特征所构成的特征子树的根节点。
特征模型中,特征与特征之间存在依赖关系:层次关系、需要关系以及互斥关系。依据可配置特征单元的定义可知,可配置特征单元包含的特征可以表示为一颗特征子树,并且这颗特征子树是整个特征模型的片段配置。因此,通过提升操作,实现从特征关系到可配置特征单元关系的转化。本文定义可配置特征单元具有三种关系:层次关系、需要关系,以及互斥关系。
定义11可配置特征单元的结构关系 结构关系是指可配置特征单元存在父子关系,如果一个可配置特征单元的根特征是另一个可配置特征单元中任意一个特征的孩子特征,则这两个可配置特征单元之间存在结构关系,其形式化表示为:
∃f1∃f2((f1∈CFU1.CF)∧(f2CFU2.CF.Root)∧
(f2∈f1.child))⟺(CFU2.parent=CFU1)∧
CFU2∈CFU1.child
(9)
定义12可配置特征单元的需要关系 可配置特征单元中的需要关系是指可配置特征单元之间存在的某种必需的关系,若一个可配置特征单元中一个特征和另外一个可配置特征单元中的某一个子特征存在需要关系,那么这两个可配置特征单元存在需要关系,其形式化表示为:
∃f1∃f2((f1∈CFU1.CF)∧(f2∈CFU2.CF)∧
(10)
定义13可配置特征单元的互斥关系 可配置特征单元的互斥关系是指可配置特征单元之间的排斥关系,若一个可配置特征单元的某一个特征与另一个可配置特征单元中的某一个子特征存在互斥关系,那么这两个可配置特征单元存在互斥关系,其形式化表示为:
∃f1∃f2((f1∈CFU1.CF)∧(f2∈CFU2.CF)∧
(11)
如果可配置特征单元是从特征一一映射而来,特征之间的依赖关系就和可配置特征单元之间的依赖关系是相同。但事实上,可配置特征单元不是特征的一一映射,所以特征之间的依赖关系和可配置特征单元之间的依赖不是同样的,但是我们可以假定特征之间和可配置特征单元之间相同的依赖类别存在,那么前面讨论的关于特征的依赖关系和可变性同样实用于可配置特征单元。
特征和可配置特征单元之间存在多对多(n×m)的关系。在特征和可配置特征单元选择约束的关系如图3所示。
图3 特征和可配置特征单元选择约束之间的关系
在领域工程中,特征被表示为F,在软件产品当中可以生成多个特征,特征数量是v,每个特征有一个唯一的标识号。
1)F≡{Fi|1≤i≤v}。
2) ∀Fi∈F,Fj∈F⟹(i=j)∨(Fi≠Fj)∧(i≠j)产品特征指定了可配置特征单元CFU,产品中可配置特征单元数是n,每个可配置特征单元有一个唯一标识号。
3)CFU≡{CFUi|1≤i≤n∧specify(F,CFUi)}。
4) ∀CFUi∈CFU,CFUj∈CFU⟹(i=j)∨(CFUi≠CFUj)∧(i≠j)。
基于第1.1节的定义,每个特征对应一个选择约束SCf。
5)SCf∈{common,mandatory,optional,alternative}。
每个可配置特征单元同样也有一个选择约束SCcfu。
6)SCcfu∈{mandatory,optional,alternative}。
映射规则1强制的特征映射到强制的可配置特征单元。如果指定一个可配置特征单元的所有特征都是强制的,那么这个可配置特征单元成为强制的可配置特征单元,其形式化表示为:
∀f((f∈CFU.CF)∧(f.C=Mandatory))⟺
CFU.C=Mandatory
(12)
7) ∃CFUi∈CFU,∃Fk∈F,specify(Fk,CFUi)∧(∀Fl∈Fk,SCf(Fk)=Mandatory)⟹SCcfu(CFUi)=Mandatory。
映射规则2共性的特征映射到强制的可配置特征单元。如果指定一个可配置特征单元的所有特征都是共性的,那么这个可配置特征单元成为强制的可配置特征单元。
8) ∃CFUi∈CFU,∃Fk∈F,specify(Fk,CFUi)∧(∀Fl∈Fk,SCf(Fk)=Common)⟹SCcfu(CFUi)=Mandatory。
映射规则3可选的特征映射到可选的可配置特征单元。如果指定一个可配置特征单元的根特征都是可选的,那么这个可配置特征单元成为可选的可配置特征单元,其形式化表示为:
∃f((f=CFU.CF.Root)∧(f.C=Optional))⟺
CFU.C=Optional
(13)
9) ∃CFUi∈CFU,∃Fk∈F,specify(Fk,CFUi)∧(∃Fl∈Fk,Fl=CFU.CF.Root,SCf(Fk)=Optional)⟹SCcfu(CFUi)=Optional。
映射规则4可替代的特征映射到可替代的可配置特征单元。如果指定一个可配置特征单元的根特征都是可替代的,那么这个可配置特征单元成为可替代的可配置特征单元,其形式化表示为:
∃f((f=CFU.CF.Root)∧(f.C=Alternative))⟺
CFU.C=Alternative
(14)
10) ∃CFUi∈CFU,∃Fk∈F,specify(Fk,CFUi)∧(∃Fl∈Fk,Fl=CFU.CF.Root,SCf(Fk)=Alternative)⟹SCcfu(CFUi)=Alternative。
映射规则5可选的特征映射到强制的可配置特征单元。如果一个可配置特征单元由可选的特征指定,并且存在一个强制的特征对这个可选的特征之间有“需要的”依赖关系,那么这个可配置特征单元成为强制的可配置特征单元。
11) ∃CFUi∈CFU,∃Fk∈F,specify(Fk,CFUi)∧(∃Fj∈F,∃Fl∈Fk,dep(Fj,Fl)=Requisite,SCf(Fj)=Mandatory,SCf(Fk)=Optional,F1=CFU.CF.Root)⟹SCFcfu(CFUi)=Mandatory。
映射规则6可替代的特征映射到强制的可配置特征单元。如果一个可配置特征单元由可替代的特征指定,并且存在一个强制的特征对这个可选的特征之间有“需要的”依赖关系,那么这个可配置特征单元成为强制的可配置特征单元。
12) ∃CFUi∈CFU,∃Fk∈F,specify(Fk,CFUi)∧(∃Fj∈F,∃Fl∈Fk,dep(Fj,Fl)=Requisite,SCf(Fj)=Mandatory,SCf(Fk)=Alternative,Fl=CFU.CF.Root)⟹SCcfu(CFUi)=Mandatory。
这些映射规则被应用到特征到可配置特征单元的转换过程之后,可配置特征单元的可变性有可能和指定这些可配置特征单元的特征原来的可变性不相同了。
可变性改变将进一步指导软件产品线中的构件和体系结构设计,做软件产品线的共性部分也包括其中从可变的特征转变成强制的可配置特征单元。
在领域工程中,特征模型是面向特征的领域需求规约模型,通过记录领域中一组具有相对稳定的特征,以及特征与特征之间的关系反映整个领域的产品需求。特征模型对特征本质及特征间关系是抽象描述。特征模型关注特征属性和特征之间的关系,是特征组装的依据和保证,并为特征的不同生产者和使用者提供了一个为大家所接受的一致性描述。
本文以智慧教室产品线为例,智慧教室系统通过管理和控制一组设备来保证整个教学楼或者教室的理想教育学习环境。综合上述对软件产品线特征模型的定义,以智慧教室集成系统为例,给出智慧教室产品线特征模型,如图4所示。
图4 智慧教室特征模型
在图4中的智慧教室产品线特征模型可以看出,特征模型采用类似树形的结构来表示,其中,节点表示特征,连接线表示特征之间的层次关系。图4所示的特征模型中包含可选、强制和可替代三种类型的特征。它通过记录领域中一组具有相对稳定的特征与特征之间的关系反映整个智慧教室的产品需求。
识别产品线里产品对用户可见的某些活动特性并构建成特征模型的过程就是特征建模。软件产品线的非功能特性、技术特征、服务,以及操作都可以是特征。特征的层次结构图形化之后就是特征模型,主要是可变特征和共性特征还有特征间的关系。进一步对特征模型分析研究发现,当保留或删除特征模型内某个特征时,另外存在某些特征也会跟随被保留或删除。基于此特点,我们提出了一种基于可配置特征单元的形式化特征模型(CFM)。还以智慧教室集成系统为例,综合前文对软件产品线基于可配置特征单元的形式化特征模型(CFM)的定义,对特征的选择约束的说明,通过映射规则,可以很快得出智慧教室产品线基于可配置特征单元的形式化特征模型,并对其特征模型进行分析,如图5所示。
图5 智慧教室可配置特征模型
在图5中的智慧教室产品线基于可配置特征单元的形式化特征模型可以看出,特征模型同样采用类似树形的结构来表示,其中,节点表示可配置特征单元,连接线表示可配置特征单元之间的层次关系。图5所示的特征模型中包含可选、强制和可替代三种类型的可配置特征单元。
在智慧教室的传统特征模型中,总共包含54个特征,然而在基于可配置特征单元的特征模型中仅仅包含20个可配置特征单元。因此,基于可配置特征单元的特征模型缩小了传统特征模型的规模。这样我们就可以根据智慧教室领域中某个系统的需求快速、准确地找到该系统所需要的可配置特征单元,用被选中的可配置特征单元构成的特征模型来描述系统需求规约。分析对比,发现传统特征单元研究中不宜察觉的特征约束关系,对从特征到可配置特征单元使用映射规则后,我们得到的特征和可配置特征单元是一致的。
本文主要研究将基于软件产品线高度可复用的方法引入可配置的特征模型的方法,提出了一种形式化可配合的特征模型,是面向特征的领域需求规约模型,通过记录领域中一组相对稳定的特征,以及特征与特征之间的关系反映整个领域的产品需求。本文以特征为切入点,对可配置特征模型组成各元素进行了概念说明,并给出了相应的形式化的语义。着重就特征属性,特征关系等问题进行了讨论,创新性地把特征组合定义成特征运算实现。定义了多种特征组合运算,保证了不同抽象层次的特征及其关系具有明确严格的定义。在此基础上,建立了一种形式化可配置特征模型,并给出了一套从特征映射到可配置特征单元的映射规则,为基于可配置特征单元的软件产品线中的设计和实现提供理论支持。
但是,本文还存在着一些不足,对于特征的依赖和映射规则,我们只在一个抽象层次上研究了依赖对体系结构的影响。在后续工作中,我们将继续研究不同特征依赖关系对体系结构的影响,建立领域需求和领域实现之间的映射关系,以提高软件开发的效率。
[1] 王勇.软件过程资产库的研究与实现[J].计算机应用与软件,2016,33(7):106-108,144.
[2] Moon M,Yeom K,Seok Chae H.An Approach to Developing Domain Requirements as a Core Asset Based on Commonality and Variability Analysis in a Product Line[J].IEEE Transactions on Software Engineering,2005,31(7):551-569.
[3] Paul Clements,Linda Northrop.Software Product Lines:Practices and Patterns[M].Addison-Wesley,New York,2001.
[4] 邓惠月,杨贯中,张大方.面向嵌入式产品线的非功能特征模型[J].计算机应用与软件,2016,33(1):244-248.
[5] Lee J,Kang K C.A feature-oriented approach to developing dynamically reconfigurable products in product line engineering[C]//Software Product Line Conference,2006,International.IEEE,2006:131-140.
[6] Yang G Z,Deng T.Sample-system-based domain feature model validation[C]//International Conference on Natural Computation and,Fuzzy Systems and Knowledge Discovery.2016:2104-2108.
[7] 赵鄂,杨博文,杨贯中.一种适用于软件产品线的特征模型[J].计算机系统应用,2013,22(10):114-118.
[8] Lee K,Kang K C.Feature Dependency Analysis for Product Line Component Design[C]//Software Reuse:Methods,Techniques and Tools:,International Conference,ICSR 2004,Madrid,Spain,July 5-9,2009.Proceedings.DBLP,2004:69-85.
[9] 李玉琴,赵文耘.从领域需求到产品线体系结构的映射——一种面向特征的方法[J].计算机研究与发展,2007,44(7):1236-1242.
[10] 聂坤明,张莉.基于模型对比和组合的软件产品线领域需求建模[J].计算机学报,2014,37(3):539-550.
[11] 张伟,梅宏.面向特征的软件复用技术——发展与现状[J].科学通报,2014(1):21-42.
[12] Yang G,Zhou R.A feature dependency graph analysis method based on object[C]//International Conference on Natural Computation and,Fuzzy Systems and Knowledge Discovery,2016:1587-1593.
[13] Sun R,Yang G,Zhang D,et al.ECM:An formal embedded component model for embedded system[J].International Journal of Control & Automation,2015,8.
[14] Lee Y,Yang C,Zhu C,et al.An approach to managing feature dependencies for product releasing in software product lines[C]//International Conference on Reuse of Off-The-Shelf Components.Springer-Verlag,2006:127-141.