王 銘,王立松,魏 歐
(南京航空航天大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,南京 210000)
軟件產(chǎn)品線是一組相關(guān)聯(lián)的系列產(chǎn)品,也被稱為產(chǎn)品家族[1].各軟件產(chǎn)品擁有共同的核心資產(chǎn),產(chǎn)品家族中產(chǎn)品成員之間的差異被稱為可變性.目前關(guān)于產(chǎn)品線工程的研究大多是自動分析技術(shù)[3].另外還有關(guān)于最優(yōu)化自動軟件派生的研究.Sayyed等人將特征模型產(chǎn)品派生問題作為多目標(biāo)優(yōu)化問題來解決[4],并在各種類型的多目標(biāo)優(yōu)化算法上進(jìn)行實驗評估.Henard等人則提出使用SAT求解器作為變異手段的優(yōu)化算法SATIBEA[6].
然而在Sayyad以及Henard等人的研究中,最終種群的有效產(chǎn)品比率(Valid Product Rate,VR)指標(biāo)則表現(xiàn)不佳.在Sayyad等人的研究中,VR指標(biāo)在Web Portal模型上進(jìn)行50000次評估后為73%,而在E-shop這個相對較大的模型上進(jìn)行500000次評估后為52%.Henard等人則未對VR指標(biāo)進(jìn)行評估.考慮到在軟件工程領(lǐng)域,一個合法(沒有約束違反情況)的產(chǎn)品才是能實際可行的方案.產(chǎn)品有效率將是軟件產(chǎn)品線特征模型選擇問題的一個關(guān)鍵評估指標(biāo).并且對于特征模型選擇問題而言,在保證解集盡可能最優(yōu)時,解集還應(yīng)該提供盡可能多的有效解.然而常規(guī)的交叉和變異未考慮特征模型的樹形結(jié)構(gòu),容易在子代生成更多的約束違反項,影響算法的迭代效率,同時也降低了最終解集的有效率.
針對這些問題,本文擴(kuò)展了原始SATIBEA算法,提出一種基于特征樹子樹的新交叉算子方法——SATIBEA_ST,利用特征樹之間的結(jié)構(gòu)信息,在交叉操作環(huán)節(jié),按照特征樹子樹組成的基因塊進(jìn)行交叉,使得交叉環(huán)節(jié)不會引入新的約束違反項,有利于保持合法產(chǎn)品配置的結(jié)構(gòu)信息.同時,本文也對環(huán)境選擇算子進(jìn)行修改,提出算法SATIBEA_ST,使得約束違反項目標(biāo)被優(yōu)先考慮.本文設(shè)計了實驗實現(xiàn)上述兩種方法,并分析實驗數(shù)據(jù)說明了兩種算法的有效性.
特征模型(Feature Models)可以被用來描述整個產(chǎn)品家族[7].表達(dá)一個產(chǎn)品線上的所有可能產(chǎn)品,并且能夠準(zhǔn)確的表達(dá)各個特征之間的約束關(guān)系.特征通常對應(yīng)著產(chǎn)品家族的具體可變特征[19].
特征模型常由樹形結(jié)構(gòu)描述,此時稱為特征樹(Feature Tree).特征樹中的節(jié)點對應(yīng)著特征(Feature).節(jié)點和節(jié)點之間可以存在跨子樹約束(Cross-Tree Constraint,CTC).典型的跨子樹約束包括蘊(yùn)含(Requires)和互斥(Excludes).
圖1 簡單手機(jī)特征模型樣例Fig.1 A feature model of aamobile phone
多目標(biāo)優(yōu)化通常用來研究在具體領(lǐng)域下多個目標(biāo)同時最優(yōu)化的問題.多目標(biāo)優(yōu)化問題可以由一組目標(biāo)函數(shù)以及相關(guān)的約束條件組成.由于存在多個需要優(yōu)化的目標(biāo)函數(shù),一個解可能在目標(biāo)a上較優(yōu),而在目標(biāo)b上較差.因此,需要一個折中的解集,這樣解集被稱為Pareto最優(yōu)解集(Pareto-optimal set),這樣的Pareto最優(yōu)解集中的每個解在解空間都是不可支配的(non-dominated).
令X為產(chǎn)品線SPL的所有可能配置的空間,v=[F1(x),…,F(xiàn)k(x)]T為k個目標(biāo)函數(shù)的優(yōu)化目標(biāo)向量.假定k個目標(biāo)函數(shù)需要最小化.則產(chǎn)品線的特征選擇問題可以描述為:找到一個配置集x,使得x盡可能地接近Pareto最優(yōu)解集.
遺傳算法在迭代過程中,需要進(jìn)行交叉和變異操作,這兩個步驟賦予原種群更豐富的多樣性.由于特征子樹各個節(jié)點之間存在約束關(guān)系,常規(guī)的單點交叉常常會引入新約束違反項.這啟發(fā)我們在交叉環(huán)節(jié)利用特征樹之間的信息來引導(dǎo)交叉操作.
同時,多目標(biāo)優(yōu)化在進(jìn)行搜索最優(yōu)解時,解個體在評估適應(yīng)度時,通常將多個目標(biāo)同等對待[11].而在產(chǎn)品線特征選擇問題上,一個配置必須要保證的目標(biāo)是合法性(不存在約束違反情況的配置),這樣啟發(fā)我們可以將約束違反這個目標(biāo)優(yōu)先考慮.
Henard等人采用遺傳算法IBEA進(jìn)行產(chǎn)品的最優(yōu)選擇的同時,引入了約束求解器來處理特征模型間復(fù)雜的約束關(guān)系.他們定義了一種新的變異算子,在后代種群中通過“修補(bǔ)”和“替換”引入一定量的合法解.他們將該算法稱之為SATIBEA,大致步驟如下:
a)初始化:隨機(jī)生成一個種群P,種群大小為α;
b)評估種群:按照給定的指標(biāo)算子評估種群,在該算法中,采用超體積指標(biāo)IHD;
c)環(huán)境選擇:種群P中個體按適應(yīng)度的大小排序,并刪除適應(yīng)度較小的個體直到種群P的大小不大于α;
d)判斷終止:若種群滿P足終止條件則挑選出Pareto前沿的所有合法解作為解集輸出,否則繼續(xù)下一步;
e)親代選擇:采用錦標(biāo)賽選擇法對種群P進(jìn)行親代選擇,挑選出的親代加入交配池P′;
f)交叉:采用單點交叉對交配的個體進(jìn)行交叉操作,得到子代種群O;
g)變異:采用結(jié)合了SAT求解器的變異算子對子代種群O進(jìn)行變異操作,得到子代種群O′,并將O′加入到父代種群,轉(zhuǎn)到步驟c).
如何保證變異算子不引入違反約束項,同時賦予種群更多基因多樣這個問題較為棘手.Henard等人在變異操作中引入SAT求解器,按照一定概率將不合法的個體“修補(bǔ)”或“替換”為合法解.值得注意的是約束求解器求解過程較為耗時,若子代全采用SAT求解器進(jìn)行變異則算法耗時過大.Henard等人在進(jìn)行子代變異操作時,是按一定概率進(jìn)行SAT求解器方法變異,一定概率進(jìn)行常規(guī)單點變異.其中,進(jìn)行單點變異操作的子代可能會繼承親代的約束違反項,同時被引入單點變異算子造成的新約束違反項.
相對與變異算子,保證交叉環(huán)節(jié)不引入新約束違反項較為容易.本文的工作之一是基于Henard等人的工作,對SATIBEA的交叉算子進(jìn)行了擴(kuò)展,使得交叉算子不再引入新的約束違反項.本文將此交叉算子命名為特征樹子樹交叉算子,具體做法為在SATIBEA框架中步驟f)階段采用特征樹子樹交叉算子,本文將修改后的算法命名為SATIBEA_ST.另外本文還對環(huán)境選擇算子進(jìn)行了修改,使得約束違反項較多的個體更容易被淘汰,具體做法為在SATIBEA框架的步驟c)階段采用3.3節(jié)方法進(jìn)行環(huán)境選擇,本文將修改后的算法命名為SATIBEA_CP.
特征模型能夠描述整個產(chǎn)品家族配置信息的工具,其中蘊(yùn)含大量的結(jié)構(gòu)信息,利用其中的信息能更好的結(jié)合遺傳算法進(jìn)行配置優(yōu)化.
首先給出特征樹子樹的定義:若節(jié)點f的所有后繼節(jié)點{f1,f2,…,fn}與除了{(lán)f1,f2,…,fn}和f以外的節(jié)點都沒有Cross-tree Constrains約束關(guān)系,則稱f及其后繼節(jié)點{f1,f2,…fn}組成的子樹為特征樹子樹.圖2給定了一個簡單手機(jī)樣例的特征樹子樹樣例,圖中橢圓所圍的節(jié)點構(gòu)成所有的特征樹子樹,如在進(jìn)行交叉時,以特征節(jié)點“傳感器”作為父節(jié)點的子樹可以作為一顆特征樹子樹,設(shè)“傳感器”、“重力感應(yīng)”和“距離感應(yīng)”在編碼中分別編碼為f4,f8,f9,則進(jìn)行交叉操作時,親代的個體的f4,f8,f9三個基因位將同時交換.算法有兩個關(guān)鍵環(huán)節(jié):1)獲取特征模型所有的特征樹子樹,2)以特征樹子樹作為基因塊進(jìn)行交叉.
圖2 手機(jī)特征模型特征子樹樣例Fig.2 Feature-sub-trees of fig.1
算法1.獲取特征模型所有的特征樹子樹:
輸入:特征模型,跨子樹約束集合c.
輸出:特征樹子樹集合t.
Step1.初始化特征樹子樹根節(jié)點集合S為空,特征樹子樹集合t為空,令R為特征模型中所有節(jié)點組成的集合.令S=R.
Step2.從跨子樹約束集合C中取出一條約束constrainti,并從C中刪除該條約束.設(shè)與約束constrainti相關(guān)的節(jié)點為nj、nk,求出nj與nk的最小公共祖先節(jié)點nr.此時,記路徑nr至nj以及nr至nk上所有的節(jié)點組成的集合為D,令S=S/D.
Step3.判斷C是否為空.若C為空,對S中的每個節(jié)點s∈S,令t為s的所有后繼節(jié)點組成的集合,并將t加入到特征樹子樹集合t中.否則轉(zhuǎn)到Step 2.
算法2.特征樹子樹交叉算子:
輸入:父代個體fi,fj特征樹子樹集合.
輸出:子代個體Oi,Oj.
Step1.按照公式Pi=mi/m計算每個特征樹子樹被選中的概率,其中mi為第i個特征樹子樹ti的節(jié)點數(shù),其中ti∈t.m為t中所有特征樹子樹節(jié)點數(shù)的總和.
遺傳算法進(jìn)行環(huán)境選擇時,需要對解個體進(jìn)行適應(yīng)度評估,依照所優(yōu)化的目標(biāo)來計算個體的適應(yīng)度.而后按照適應(yīng)度從種群中淘汰個體.給定種群P一個環(huán)境限制大小α,按照適應(yīng)度的大小對種群P中個體排序后,刪除適應(yīng)度較小的個體,直到種群大小不大于α.這個操作稱為環(huán)境選擇算子.
Sayyed等人提出將約束違反項的數(shù)量(最小化)作為算法的一個優(yōu)化目標(biāo),以期最終的種群中存在約束違反項為零的個體,即合法解.Sayyed和Henard等人都將此目標(biāo)與其他優(yōu)化目標(biāo)同等考慮.在軟件產(chǎn)品線工程的領(lǐng)域環(huán)境下,合法配置即無約束違反項的解才是實際可用的,約束違反項數(shù)量這個優(yōu)化目標(biāo)理應(yīng)比其他目標(biāo)更加重要.
本文將適應(yīng)度設(shè)計為兩個維度,第一維度衡量個體的約束違反程度,第二維度衡量余下的其他優(yōu)化目標(biāo).當(dāng)需要種群需要淘汰個體時,那些約束違反項數(shù)量少的個體將被優(yōu)先保留.若兩個個體約束違反項數(shù)量相同,則優(yōu)先保留第二個維度上適應(yīng)度較高的個體.在原算法基礎(chǔ)上擴(kuò)展了該環(huán)境選擇算子,本文將此算法命名為SATIBEA_CP.
文章采用開源項目SPLOT提供的特征模型[13],各個特征模型的參數(shù)在表1中有詳細(xì)描述.其中有三個真實模型Amazon,E-shopping和Drupal,以及四個大規(guī)模隨機(jī)模型.
表1 特征模型參數(shù)Table 1 Feature models
實驗環(huán)境為Windows 7 64bits,平臺為2.4Ghz四核處理器,16G內(nèi)存.根據(jù)變異、交叉及環(huán)境選擇算子的不同,我們設(shè)計了三組算法進(jìn)行實驗,具體配置如表2所示.
表2 實驗算法配置Table 2 Configation of each algrithem
在求解最優(yōu)方案解中,上述算法都將分別執(zhí)行一遍.每次執(zhí)行將迭代評估50000次,并且為了排除算法的隨機(jī)性每個算法將重復(fù)執(zhí)行30次.
本文需要優(yōu)化的有5個目標(biāo),為便于比較我們與Sayyed及Henard等人文章[4,6]中設(shè)定了一樣的優(yōu)化目標(biāo):
1)違反約束規(guī)則數(shù):產(chǎn)品配置所違反的約束規(guī)則數(shù)目,取最小值;
2)特征豐富度:產(chǎn)品配置中的配置項個數(shù),通常對應(yīng)特征模型某個具體產(chǎn)品所選擇的特征,取最大值;
3)特征復(fù)用度:產(chǎn)品配置中在曾所使用過的配置項,取最大值;
4)已知缺陷個數(shù):產(chǎn)品配置中各個配置項的缺陷數(shù)的和,取最小值;
5)成本:每個配置都有一定成本,產(chǎn)品配置應(yīng)使得配置最小.
本文采用了三個評估指標(biāo)對實驗進(jìn)行評估,解集質(zhì)量定義在兩個方面,其一為解在各個目標(biāo)上的優(yōu)化情況.其二為算法是否能得到合法解,以及解集中合法解的占比情況.
1)HV指標(biāo) :Hypervolume,代表了解集在目標(biāo)空間所支配的超體積大小,它能很好衡量解集在各個優(yōu)化目標(biāo)上的優(yōu)化程度[17].
2)VN指標(biāo):Valid Run Number,在30次運(yùn)行中最終解集中存在至少一個合法解的運(yùn)行次數(shù),這個指標(biāo)能衡量算法得到合法解的概率.
3)VR指標(biāo):Valid Product Rate,30次運(yùn)行所得到最終解集的合并解集中合法解所占比率.這個指標(biāo)能衡量算法得到解集中有效解比例,即能提供給用戶的合法配置數(shù)量.
表4給出了三個算法SATIBEA,SATIBEA_ST,SATIBEA_CP在8個特征模型上實驗的數(shù)據(jù).圖3至圖10給出了8個特征模型三個算法的HV指標(biāo)箱形圖,從左到右分別是SATIBEA,SATIBEA_ST和SATIBEA_CP.
圖3 Amazon關(guān)于指標(biāo)HV的算法箱形圖 圖4 Drupal關(guān)于指標(biāo)HV的算法箱形圖
首先所有算法的VN指標(biāo)都為30次,說明所有算法的每次運(yùn)行都能得到合法解.應(yīng)用約束求解器“修補(bǔ)”或“替換”不合法子代為合法子代后對于種群向著合法這個目標(biāo)進(jìn)化有很重要的幫助[6].
SATIBEA_ST與SATIBEA相比,在HV指標(biāo)方面前者在三個模型上優(yōu)于后者,另外五個模型上劣于后者,平均而言二者差距較小.在VR指標(biāo)方面,從表3可以看出,前者在所有模型上都要優(yōu)于后者,特別是1000個節(jié)點以上大規(guī)模模型上顯著優(yōu)于后者.我們能得出這樣的結(jié)論:SATIBEA_ST能降低隨機(jī)搜索對有效解的破壞程度,顯著提高產(chǎn)品有效率,同時也只犧牲少量的超體積指標(biāo).特別是大規(guī)模模型上,SATIBEA_ST提升效果明顯.
圖5 E-shop關(guān)于指標(biāo)HV的算法箱形圖 圖6 500節(jié)點隨機(jī)模型關(guān)于指標(biāo)HV的算法箱形圖
SATIBEA_CP與SATIBEA相比,在HV指標(biāo)方面前者在所有模型上劣于后者,并有著一定的差距.在VR指標(biāo)方面,前者在所有模型上都為100%的產(chǎn)品有效率,優(yōu)于后者.可以看到SATIBEA_CP通過犧牲一定量的超體積,來得到100%的產(chǎn)品有效率.
圖7 1000節(jié)點隨機(jī)模型關(guān)于指標(biāo)HV的算法箱形圖 圖8 2000節(jié)點隨機(jī)模型關(guān)于指標(biāo)HV的算法箱形圖
SATIBEA_ST與SATIBEA_CP相比,在HV指標(biāo)方面前者在所有模型上優(yōu)于后者.在VR指標(biāo)方面前者不如后者,但SATIBEA_ST也能達(dá)到很好的產(chǎn)品有效率,大部分特征模型的VR指標(biāo)在70%至100%之間.
圖9 5000節(jié)點隨機(jī)模型關(guān)于指標(biāo)HV的算法箱形圖 圖10 10000節(jié)點隨機(jī)模型關(guān)于指標(biāo)HV的算法箱形圖
VR指標(biāo)代表了最終解集中有效解占所有解得比例,是衡量算法所能得到的有效產(chǎn)品的數(shù)量,在特征模型選擇領(lǐng)域是很重要的性能指標(biāo).從表3可以看出SATIBEA_ST除了在模型Amazon上表現(xiàn)不佳外(但依然優(yōu)于原始算法),在其他7個模型上顯著優(yōu)于原始算法,并且能保證較高的有效產(chǎn)品比例.可以驗證基于子樹的交叉方法的確能很好的保證特征模型選擇得到的產(chǎn)品的合法性.SATIBEA_CP則在所有的特征模型上都能達(dá)到100%的有效產(chǎn)品比例,也驗證了優(yōu)先考慮約束違反目標(biāo)的有效性.但SATIBEA_CP的解集超體積指標(biāo)要明顯差于SATIBEA和SATIBEA_ST.其通過犧牲解集超體積指標(biāo)來達(dá)到更高的解集有效比率,在特征的情況下也是適用的,例如客戶對有效產(chǎn)品數(shù)量有嚴(yán)格要求的情況.
表3 SATIBEA_ST相對SATIBEA在VR指標(biāo)上的提升Table 3 SATIBEA_ST vs.SATIBEA on VR
Olaechea等人是最早嘗試優(yōu)化多目標(biāo)配置的人員之一.他們采用規(guī)劃的方案進(jìn)行求解精確解,然而這種方案在規(guī)模稍大的模型上則很難進(jìn)行.Sayyed等人則將采用多目標(biāo)進(jìn)化算法來解決特征模型產(chǎn)品派生問題[4],并在各種類型的多目標(biāo)優(yōu)化算法上進(jìn)行實驗評估.他們還將最小化約束違反個數(shù)作為一個優(yōu)化目標(biāo),這樣便將約束條件合理地整合進(jìn)多目標(biāo)優(yōu)化方法中.Sayyad等人在文獻(xiàn)中使用了六種多目標(biāo)進(jìn)化算法,包括NSGA-II,SPEA2和IBEA等,最終得出結(jié)論IBEA在所有測試模型上都優(yōu)于其他算法.在他們隨后的研究中,進(jìn)一步發(fā)現(xiàn)算法在大模型上較難得到有效產(chǎn)品[5],Sayyad等人又提出了兩方面的改進(jìn)方法,首先通過先確定強(qiáng)制特征(所有有效產(chǎn)品都會選擇的特征)和無效特征(所有有效產(chǎn)品都不會選擇的特征)來縮小變量搜索空間,另外還在初始種群中添加進(jìn)有效個體作為初始種子.他們改進(jìn)后的算法顯著的提高了NSGA-II和IBEA算法的表現(xiàn).Henard等人則提出使用SAT求解器作為變異手段的優(yōu)化算法SATIBEA[6].并在Linux系統(tǒng)變體分析工具庫(LVAT)中的5個大規(guī)模模型上進(jìn)行實驗評估,實驗表明他們的方法顯著優(yōu)于Sayyad等人提出的方法.
我們討論了特征選擇問題中的約束條件,并詳細(xì)展示了特征樹子樹交叉方法SATIBEA_ST,通過大量實驗驗證了該方法能有效性提高原始算法SATIBEA特征選擇產(chǎn)生的產(chǎn)品有效率.同時修改環(huán)境選擇算子提出算法SATIBEA_CP,驗證了優(yōu)先考慮約束違反目標(biāo)能很好的保證產(chǎn)品有效率.然而算法也有不足之處,如小規(guī)模特征模型下,解集的有效率不高;以及約束項的求解依賴SAT求解器,算法需要耗費大量空間和時間.
表4 實驗數(shù)據(jù)Table 4 Experiment data
下一步的工作將著重考慮不使用SAT求解器直接進(jìn)行約束關(guān)系推導(dǎo)的特征選擇問題,特別是跨子樹關(guān)系約束下自上而下的推導(dǎo)特征選擇.
:
[1] Metzger A,Pohl K.Software product line engineering and variability management:achievements and challenges[C].ICSE Future of Software Engineering Track,2014:70-84.
[2] Long C A.Software product lines:practices and patterns[M].Addison-Wesley Longman Publishing Co.Inc,2001.
[3] Benavides D,Segura S,Ruiz-Cortés A.Automated analysis of feature models 20 years later:a literature review[J].Information Systems,2010,35(6):615-636.
[4] Sayyad A S,Menzies T,Ammar H.On the value of user preferences in search-based software engineering:A case study in software product lines[C].International Conference on Software Engineering,IEEE,2013:492-501.
[5] Sayyad A S,Ingram J,Menzies T,et al.Scalable product line configuration:a straw to break the camel′s back[C].IEEE/ACM,International Conference on Automated Software Engineering,IEEE,2014:465-474.
[6] Henard C,Papadakis M,Harman M,et al.Combining multi-objective search and constraint solving for configuring large software product lines[C].International Conference on Software Engineering,IEEE Press,2015:517-528.
[7] Kang K C,Cohen S G,Hess J A,et al.Feature-oriented domain analysis (FODA)feasibility study[R].Carnegie-Mellon Univ Pittsburgh Pa Software Engineering Inst,1990.
[8] Thum T,Batory D,Kastner C.Reasoning about edits to feature models[C].Proceedings of the 31st International Conference on Software Engineering,IEEE Computer Society,2009:254-264.
[9] Marler R T,Arora J S.Survey of multi-objective optimization methods for engineering[J].Structural and Multidisciplinary Optimization,2004,26(6):369-395.
[10] Sayyad A S,Goseva-Popstojanova K,Menzies T,et al.On parameter tuning in search based software engineering:a replicated empirical study[C].Replication in Empirical Software Engineering Research (RESER),2013 3rd International Workshop on.IEEE,2013:84-90.
[11] Schaffer,David J.Multiple objective optimization with vector evaluated genetic algorithms[C].Proceedings of the 1st International Conference on Genetic Algorithms.L.Erlbaum Associates Inc,1985:93-100.
[12] Zitzler E,Künzli S.Indicator-based selection in multiobjective search[C].International Conference on Parallel Problem Solving from Nature,Springer Berlin Heidelberg,2004:832-842.
[13] Mendonca M,Branco M,Cowan D.SPLOT:software product lines online tools[C].Proceedings of the 24th ACM SIGPLAN Conference Companion on Object Oriented Programming Systems Languages and Applications,ACM,2009:761-762.
[14] Durillo J J,Nebro A J.jMetal:a Java framework for multi-objective optimization[J].Advances in Engineering Software,2011,42(10):760-771.
[15] Le Berre D,Parrain A.The sat4j library,release 2.2,system description[J].Journal on Satisfiability,Boolean Modeling and Computation,2010,7(1):59-64.
[16] Olaechea R,Stewart S,Czarnecki K,et al.Modelling and multi-objective optimization of quality attributes in variability-rich software[C].International Workshop on Nonfunctional System Properties in Domain Specific Modeling Languages,2012.
[17] Brockhoff D,F(xiàn)riedrich T,Neumann F.Analyzing hypervolume indicator based algorithms[C].International Conference on Parallel Problem Solving from Nature,Springer Berlin Heidelberg,2008:651-660.
[18] Liu Yu-mei,Huang Ming-yu.Research on configuration method for software poroduct based on feature[J].Computer Technology and Development,2016,26(2):1-6.
[19] Nie Kun-ming,Zhang Li,F(xiàn)an Zhi-qiang,Systematic literarture review of software product line variability modeling techniques[J].Journal of Software,2013,24(9):2001-2019.
附中文參考文獻(xiàn):
[18] 劉玉梅,黃鳴宇.基于特征的軟件產(chǎn)品線配置方法研究[J].計算機(jī)技術(shù)與發(fā)展,2016,26(2):1-6.
[19] 聶坤明,張 莉,樊志強(qiáng).軟件產(chǎn)品線可變性建模技術(shù)系統(tǒng)綜述[J].軟件學(xué)報,2013,24(9):2001-2019.