蘇濃光 楊貫中
(湖南大學(xué)信息科學(xué)與工程學(xué)院 湖南 長沙 410082)
本文主要研究將基于軟件產(chǎn)品線高度可復(fù)用[1]的開發(fā)方法引入可配置的特征模型的方法,提出了一種基于形式化可配置特征單元的特征模型——可配置特征模型CFM(Configurable Feature Model),以期提高軟件質(zhì)量,提高開發(fā)軟件的效率,縮減軟件的研發(fā)成本。
軟件產(chǎn)品線的工程成功是實現(xiàn)軟件復(fù)用的方法之一[2]。領(lǐng)域工程與應(yīng)用工程是軟件產(chǎn)品線工程的兩個過程[3]??芍赜玫钠脚_建立、軟件產(chǎn)品線可變性和公共性的定義在領(lǐng)域工程階段完成。需求工程、領(lǐng)域設(shè)計、領(lǐng)域?qū)崿F(xiàn)及領(lǐng)域測試是領(lǐng)域工程的四個過程。為了加快開發(fā)產(chǎn)品的過程軟件平臺中的構(gòu)件被應(yīng)用工程重用。應(yīng)用需求工程、應(yīng)用設(shè)計、應(yīng)用實現(xiàn)和應(yīng)用測試應(yīng)用工程包含四個過程。
本文提出的可配置特征模型CFM是面向特征的領(lǐng)域需求規(guī)約模型[4]。通過記錄領(lǐng)域中一組具有相對穩(wěn)定的特征以及特征與特征之間的關(guān)系反映整個領(lǐng)域的產(chǎn)品需求,在生產(chǎn)線工程中開發(fā)可動態(tài)重新配置的產(chǎn)品的特征模型[5-6]。在軟件復(fù)用的領(lǐng)域工程和應(yīng)用工程階段,特征模型[7]呈現(xiàn)出不同的特點。Lee等[8]為了便于產(chǎn)品線中可復(fù)用構(gòu)件的設(shè)計和開發(fā),引入了特征的操作化依賴。李玉琴等[9]定義了一系列從需求到特征的映射規(guī)則,得到一致性產(chǎn)品核心資產(chǎn)。但是這些傳統(tǒng)特征模型的建立過度地依賴于領(lǐng)域?qū)<业姆治瞿芰10],由于缺少對表示特征約束關(guān)系的新元素的引入,難以實現(xiàn)各個階段之間的平滑過渡,使得特征模型與各個軟件制品的追溯關(guān)系難以建立[11]。
本文在已有特征模型的基礎(chǔ)上,對可配置特征模型組成各元素進行了概念說明,給出了相應(yīng)的形式語義,著重就特征屬性[12]、特征關(guān)系等問題進行了討論。創(chuàng)新性地把特征組合定義成特征運算實現(xiàn),定義了多種特征組合運算,保證了不同抽象層次的構(gòu)件及其關(guān)系具有明確和嚴格的定義,從而建立了一種層次化的可配置特征模型。并給出了從特征到可配置特征單元的映射規(guī)則,為基于特征的軟件產(chǎn)品線中的設(shè)計和實現(xiàn)提供理論支持。
軟件產(chǎn)品線中的特征可以被分成兩種類型:共性特征和可變特征。
某個特定的領(lǐng)域中每一個應(yīng)用系統(tǒng)存在的特征就是共性特征。只在某個系統(tǒng)中存在的特征為可變特征。領(lǐng)域的核心成分和基礎(chǔ)設(shè)施是由共性特征構(gòu)成,領(lǐng)域里具有的共性得以展現(xiàn)??勺兲卣黧w現(xiàn)的是領(lǐng)域的變化性,須基于領(lǐng)域中共性特征的集合前提之上,并不能單獨存在這種可變性。
可變特征可以被分為以下幾種類型:強制的(mandatory)、可選的(optional)、可替代的(alternative)。
強制特征MF(Mandatory Feature):是指在領(lǐng)域中每個應(yīng)用系統(tǒng)中應(yīng)該包含的特征;也可指當父特征被保留時,它的某個子特征是必選的,則該子特征相對于它的父特征為強制特征。
可選特征OF(Optional Feature):是指對于領(lǐng)域中的各個應(yīng)用系統(tǒng)可有可無的特征;也可當父特征被保留時,它的某個子特征有可能被選中,則子特征相對于它的父特征為可選特征。
可替代特征AF(Alternative Feature):可替代特征又稱為多選一特征,可以被認為是對某一個一般性特征的具體化,它與可選特征的區(qū)別是可選特征能夠同時選擇多個而可替代特征只能選擇一個特征;也可指當父特征被保留時,在子特征集中每個特征和父特征之間都是可選關(guān)系,但是在保留的子特征個數(shù)上存在約束。
某個集合里特征與特征間的某種關(guān)系隱含在變化性的某種類型中,在軟件產(chǎn)品線里的特征選擇約束可以用特征可變性表示,形式化的特征的可變性表示為:SCf={mandatory,optional,alternative}。
特征間的關(guān)系包括層次關(guān)系和依賴關(guān)系[13]。
層次關(guān)系包括包含、特化和實現(xiàn)關(guān)系。在本文中,層次關(guān)系主要用到跨層約束中的父子關(guān)系。
依賴關(guān)系包括:需要和互斥兩種關(guān)系。
根據(jù)前面的分類形式化,形式化的特征依賴表示為:Deff={require,exclude}。
特征依賴是可傳遞的,但不包括排斥的依賴,即指直接依賴的相鄰能夠組合成隱含的某一種依賴關(guān)系。不包括排斥關(guān)系的任何依賴關(guān)系稱作“requisite”(需要的)依賴關(guān)系。重復(fù)使用這種傳遞性可以找出兩個不相鄰的特征之間隱含的某種依賴關(guān)系。
本文中的特征描述采用形式化描述方法[14],使用形如數(shù)學(xué)符號的形式化語法和語義來刻畫可配置特征模型的組成元素,行為的組裝與特征模型規(guī)約的描述,可以避免描述可配置特征模型圖形符號或者自然語言等不是形式化的方法在產(chǎn)生二義性的問題。特征模型設(shè)計采用形式化方法,主要是希望可以像其他的工程領(lǐng)域內(nèi)的學(xué)科一樣,通過一定的數(shù)學(xué)分析,來設(shè)計的魯棒性和可靠性得以提高。接下來對各組成元素進行詳細描述并給出其對應(yīng)的圖形符號表示。
定義1特征 特征F(Feature)定義為軟件產(chǎn)品中具有用戶可見的顯著的相對獨立的功能、有特定的屬性、和上下文有明顯關(guān)系可獨立部署的軟件實體。
一個特征描述了它所提供的服務(wù)特點,特征的類型、特征的屬性和特征之間相互的關(guān)系,是軟件復(fù)用的基本單元。一個特征F是一個四元組,其形式化表示為:
F=
(1)
式中:
?FName是特征名稱,是特征的唯一標識符。
?T表示特征的類型,主要分為能力特征、運行環(huán)境特征、領(lǐng)域技術(shù)特征和實現(xiàn)技術(shù)特征。
能力特征描繪了特定領(lǐng)域的應(yīng)用系統(tǒng)的性能、特定服務(wù)、功能或操作,用戶可以看見并可以被用戶選擇來實現(xiàn)所需的應(yīng)用系統(tǒng)的需求。
運行環(huán)境特征是指該領(lǐng)域應(yīng)用中最終選擇和運行環(huán)境的屬性,主要包括接口協(xié)議、網(wǎng)絡(luò)環(huán)境以及軟硬件平臺等。
領(lǐng)域技術(shù)特征針對具體領(lǐng)域按照不同的技術(shù)層次描述了實現(xiàn)細節(jié)。
實現(xiàn)技術(shù)特征與領(lǐng)域技術(shù)類似,區(qū)別在于領(lǐng)域技術(shù)特征是針對具體領(lǐng)域而言,無法用于其他領(lǐng)域,實現(xiàn)技術(shù)特征則更加通用,可以用于其他領(lǐng)域。
能力特征可以被進一步劃分為功能性特征、操作性特征和表示性特征。
功能性特征是應(yīng)用系統(tǒng)提供的基本服務(wù)。
操作性特征是與應(yīng)用系統(tǒng)操作有關(guān)的特征(從用戶的角度),用來描述用戶是如何應(yīng)用系統(tǒng)進行交互的。
表示性特征是指那些與將要呈現(xiàn)給用戶的信息內(nèi)容以及這些信息以什么方式呈現(xiàn)給用戶這兩方面相關(guān)的特征。
?C表示特征的屬性,指明該特征是強制的、可選的還是可替代的。
?RX表示特征之間的關(guān)系,特征之間的關(guān)系對外是不可見的,特征與特征之間存在依賴關(guān)系:層次關(guān)系(parent或child)、需要關(guān)系(require)以及互斥關(guān)系(exclude)。其形式化表示為:
(2)
式中:Fi、Fni分別表示特征i和特征i對應(yīng)的特征集,X表示特征Fi與特征Fni之間的關(guān)系,即:
規(guī)范1特征之間的關(guān)系規(guī)范Fni表示與特征Fi相關(guān)的一個特征集,其特征數(shù)量可以為0,也可以為多個。
定義2可配置特征單元必備集合 在配置特征單元F時,必須出現(xiàn)當前配置中的特征集合,則Require(F),縮寫為R(F)。
定義3可配置特征單元排除集合 在配置特征單元F時,必須不在當前配置中的特征集合,則Exclude(F),縮寫為E(F)。
定義4.運算 運算實現(xiàn)提取特征部分內(nèi)容,如A是特征集合F中的特征,且滿足CFM(A)∈CFM(F),則A就可以表示為F.A。
定義5特征相等關(guān)系 若f1、f2是特征集F中的特征,當f1、f2滿足下面條件時:
(3)
稱f1、f2相等,記作f1?f2,其中?表示邏輯等價。
定義6直接連接運算 若f1、f2是特征集F中的特征,當f1、f2滿足下面條件時:
稱f2是f1的父特征,在特征圖中可以將f1直接與f2相連。圖1展示了f1直接與f2相連的結(jié)果。
此外,孔子在《論語·泰伯》中說過:“邦有道,貧且賤焉,恥也。邦無道,富且貴焉,恥也?!币馑际菄艺吻迕?,自己貧賤,是恥辱。國家政治黑暗,自己富貴,是恥辱。也就是說,國家有道,應(yīng)該出來做事,在為國家服務(wù)后,必然會獲得奉祿,此乃理所當然。而國家昌明之時,自己依舊貧賤,只能說明自己無才無德,不足以服務(wù)于國家,沒能建功立業(yè),應(yīng)以此為恥。若國家無道,而自己富貴,那你捫心自問,你是依據(jù)何道而富貴的呢?思考一下,一定會感到可恥。
圖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)
例如在智慧教室特征圖中,通過運算添加特征抽風(fēng)機(智慧教室⊕抽風(fēng)機),添加特征單元CO2傳感器(智慧教室⊕CO2傳感器),以及刪除特征LED顯示屏(智慧教室ΘLED顯示屏),其特征圖的變化見圖2。
圖2 智慧教室特征運算的特征圖
識別產(chǎn)品線里產(chǎn)品對用戶可見的某些活動特性并構(gòu)建成特征模型的過程就是特征建模。軟件產(chǎn)品線的非功能特性、技術(shù)特征、服務(wù)以及操作都可以是特征。特征的層次結(jié)構(gòu)圖形化之后就是特征樹,主要是可變特征和共性特征還有特征間的關(guān)系。進一步對特征模型分析研究發(fā)現(xiàn),當保留或刪除特征模型內(nèi)某個特征時,另外存在某些特征也會跟隨被保留或刪除。由此,本文提出了可配置特征單元的概念。下面對可配置特征單元的概念進行研究討論。
定義9可配置特征單元 可配置特征單元CFU定義為在特征模型里某一組可變性彼此相關(guān)的特征,一個可配置特征單元描述了這組特征的屬性Commonality、特征之間相互的關(guān)系Relationship,以及可配置特征單元中包含的一組特征集合。一個可配置特征單元CFU是一個四元組,其形式化表示為:
CFU=
(7)
式中:
?CFUName是的名稱,是可配置特征單元的唯一標識符。
?C(Commonality) 表示可配置特征單元的屬性,指明該可配置特征單元是強制的、可選的還是可替代的。
?RX表示可配置特征單元之間的關(guān)系(Relationship),通過對特征之間關(guān)系的提升操作,實現(xiàn)從特征關(guān)系到可配置特征單元關(guān)系的轉(zhuǎn)化,本文定義可配置特征單元具有三種關(guān)系:層次關(guān)系(parent或child)、需要關(guān)系(require)以及互斥關(guān)系(exclude)。其形式化表示為:
(8)
式中:CFUi、CFUj分別表示可配置特征單元i和可配置特征單元j, X表示可配置特征CFUi與可配置特征CFUj之間的關(guān)系,即:
?CF表示可配置特征單元中包含的一組特征的集合。
通常將可配置特征單元的命名是以它所對應(yīng)的特征子樹中的根特征作為命名的主要依據(jù),輔以考慮其他子特征的功能,來設(shè)定可配置特征單元的名稱??膳渲锰卣鲉卧膬?nèi)部CF就是一個由組成這個可配置特征單元的特征所構(gòu)成的特征子樹??膳渲锰卣鲉卧膶傩允怯蛇@棵特征子樹的根節(jié)點的可變性決定的:可配置特征單元是強制的該可配置特征單元的根節(jié)點強制,若可配置特征單元是可選的即指該可配置特征單元的根節(jié)點可選;若可配置特征單元根節(jié)點可替代,則該可配置特征單元是可替代的。同時,可配置特征單元中的特征必須存在一定的約束關(guān)系,具體如下:
規(guī)范2可配置特征單元中關(guān)于特征數(shù)目的規(guī)范 一個可配置特征單元內(nèi)至少必須包含一個特征,即可配置特征單元集數(shù)目大于1,‖CF‖≥1。
規(guī)范3可配置特征單元的屬性規(guī)范 可配置特征單元的根特征是強制特征、可選特征或者可替代特征中的某一種。其他特征可以是其中任意一種特征,并能通過可配置特征單元的運算對其他特征進行運算。
規(guī)范4可配置特征單元葉子特征的規(guī)范 可配置特征單元中每個葉子特征在特征模型中的子特征一定是可選的或可替代的。
上述可配置特征單元的幾種約束關(guān)系,能夠作為可配置特征單元驗證的依據(jù),以保證可配置特征單元分割的合理性。
由于這樣的分組方式使得可配置特征單元產(chǎn)品配置管理過程中的變體復(fù)雜性得以降低,可以幫助開發(fā)者分析選擇該特征而引起的改變情況。同時,通過CFU的映射規(guī)則進行識別,方便進一步地有效管理。
由特征的選擇約束可得,可配置特征單元的選擇約束其形式化表示為:SCCFU={mandatory,optional,alternative}。
根據(jù)特征依賴具有可傳遞的特性可知,不包括排斥的可配置特征單元的依賴關(guān)系也是具備傳遞性。意思是直接依賴的相鄰能夠組合成隱含的某一種依賴關(guān)系。不包括排斥關(guān)系的任何依賴關(guān)系稱作“requisite”(需要的)依賴關(guān)系。重復(fù)使用這種傳遞性可以找出兩個不相鄰的特征之間隱含的某種依賴關(guān)系。
定義10可配置特征單元根特征,Root Feature of CFU 一個CFU的根特征是組成這個可配置特征單元的特征所構(gòu)成的特征子樹的根節(jié)點。
特征模型中,特征與特征之間存在依賴關(guān)系:層次關(guān)系、需要關(guān)系以及互斥關(guān)系。依據(jù)可配置特征單元的定義可知,可配置特征單元包含的特征可以表示為一顆特征子樹,并且這顆特征子樹是整個特征模型的片段配置。因此,通過提升操作,實現(xiàn)從特征關(guān)系到可配置特征單元關(guān)系的轉(zhuǎn)化。本文定義可配置特征單元具有三種關(guān)系:層次關(guān)系、需要關(guān)系,以及互斥關(guān)系。
定義11可配置特征單元的結(jié)構(gòu)關(guān)系 結(jié)構(gòu)關(guān)系是指可配置特征單元存在父子關(guān)系,如果一個可配置特征單元的根特征是另一個可配置特征單元中任意一個特征的孩子特征,則這兩個可配置特征單元之間存在結(jié)構(gòu)關(guān)系,其形式化表示為:
?f1?f2((f1∈CFU1.CF)∧(f2CFU2.CF.Root)∧
(f2∈f1.child))?(CFU2.parent=CFU1)∧
CFU2∈CFU1.child
(9)
定義12可配置特征單元的需要關(guān)系 可配置特征單元中的需要關(guān)系是指可配置特征單元之間存在的某種必需的關(guān)系,若一個可配置特征單元中一個特征和另外一個可配置特征單元中的某一個子特征存在需要關(guān)系,那么這兩個可配置特征單元存在需要關(guān)系,其形式化表示為:
?f1?f2((f1∈CFU1.CF)∧(f2∈CFU2.CF)∧
(10)
定義13可配置特征單元的互斥關(guān)系 可配置特征單元的互斥關(guān)系是指可配置特征單元之間的排斥關(guān)系,若一個可配置特征單元的某一個特征與另一個可配置特征單元中的某一個子特征存在互斥關(guān)系,那么這兩個可配置特征單元存在互斥關(guān)系,其形式化表示為:
?f1?f2((f1∈CFU1.CF)∧(f2∈CFU2.CF)∧
(11)
如果可配置特征單元是從特征一一映射而來,特征之間的依賴關(guān)系就和可配置特征單元之間的依賴關(guān)系是相同。但事實上,可配置特征單元不是特征的一一映射,所以特征之間的依賴關(guān)系和可配置特征單元之間的依賴不是同樣的,但是我們可以假定特征之間和可配置特征單元之間相同的依賴類別存在,那么前面討論的關(guān)于特征的依賴關(guān)系和可變性同樣實用于可配置特征單元。
特征和可配置特征單元之間存在多對多(n×m)的關(guān)系。在特征和可配置特征單元選擇約束的關(guān)系如圖3所示。
圖3 特征和可配置特征單元選擇約束之間的關(guān)系
在領(lǐng)域工程中,特征被表示為F,在軟件產(chǎn)品當中可以生成多個特征,特征數(shù)量是v,每個特征有一個唯一的標識號。
1)F≡{Fi|1≤i≤v}。
2) ?Fi∈F,Fj∈F?(i=j)∨(Fi≠Fj)∧(i≠j)產(chǎn)品特征指定了可配置特征單元CFU,產(chǎn)品中可配置特征單元數(shù)是n,每個可配置特征單元有一個唯一標識號。
3)CFU≡{CFUi|1≤i≤n∧specify(F,CFUi)}。
4) ?CFUi∈CFU,CFUj∈CFU?(i=j)∨(CFUi≠CFUj)∧(i≠j)。
基于第1.1節(jié)的定義,每個特征對應(yīng)一個選擇約束SCf。
5)SCf∈{common,mandatory,optional,alternative}。
每個可配置特征單元同樣也有一個選擇約束SCcfu。
6)SCcfu∈{mandatory,optional,alternative}。
映射規(guī)則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。
映射規(guī)則2共性的特征映射到強制的可配置特征單元。如果指定一個可配置特征單元的所有特征都是共性的,那么這個可配置特征單元成為強制的可配置特征單元。
8) ?CFUi∈CFU,?Fk∈F,specify(Fk,CFUi)∧(?Fl∈Fk,SCf(Fk)=Common)?SCcfu(CFUi)=Mandatory。
映射規(guī)則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。
映射規(guī)則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。
映射規(guī)則5可選的特征映射到強制的可配置特征單元。如果一個可配置特征單元由可選的特征指定,并且存在一個強制的特征對這個可選的特征之間有“需要的”依賴關(guān)系,那么這個可配置特征單元成為強制的可配置特征單元。
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。
映射規(guī)則6可替代的特征映射到強制的可配置特征單元。如果一個可配置特征單元由可替代的特征指定,并且存在一個強制的特征對這個可選的特征之間有“需要的”依賴關(guān)系,那么這個可配置特征單元成為強制的可配置特征單元。
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。
這些映射規(guī)則被應(yīng)用到特征到可配置特征單元的轉(zhuǎn)換過程之后,可配置特征單元的可變性有可能和指定這些可配置特征單元的特征原來的可變性不相同了。
可變性改變將進一步指導(dǎo)軟件產(chǎn)品線中的構(gòu)件和體系結(jié)構(gòu)設(shè)計,做軟件產(chǎn)品線的共性部分也包括其中從可變的特征轉(zhuǎn)變成強制的可配置特征單元。
在領(lǐng)域工程中,特征模型是面向特征的領(lǐng)域需求規(guī)約模型,通過記錄領(lǐng)域中一組具有相對穩(wěn)定的特征,以及特征與特征之間的關(guān)系反映整個領(lǐng)域的產(chǎn)品需求。特征模型對特征本質(zhì)及特征間關(guān)系是抽象描述。特征模型關(guān)注特征屬性和特征之間的關(guān)系,是特征組裝的依據(jù)和保證,并為特征的不同生產(chǎn)者和使用者提供了一個為大家所接受的一致性描述。
本文以智慧教室產(chǎn)品線為例,智慧教室系統(tǒng)通過管理和控制一組設(shè)備來保證整個教學(xué)樓或者教室的理想教育學(xué)習(xí)環(huán)境。綜合上述對軟件產(chǎn)品線特征模型的定義,以智慧教室集成系統(tǒng)為例,給出智慧教室產(chǎn)品線特征模型,如圖4所示。
圖4 智慧教室特征模型
在圖4中的智慧教室產(chǎn)品線特征模型可以看出,特征模型采用類似樹形的結(jié)構(gòu)來表示,其中,節(jié)點表示特征,連接線表示特征之間的層次關(guān)系。圖4所示的特征模型中包含可選、強制和可替代三種類型的特征。它通過記錄領(lǐng)域中一組具有相對穩(wěn)定的特征與特征之間的關(guān)系反映整個智慧教室的產(chǎn)品需求。
識別產(chǎn)品線里產(chǎn)品對用戶可見的某些活動特性并構(gòu)建成特征模型的過程就是特征建模。軟件產(chǎn)品線的非功能特性、技術(shù)特征、服務(wù),以及操作都可以是特征。特征的層次結(jié)構(gòu)圖形化之后就是特征模型,主要是可變特征和共性特征還有特征間的關(guān)系。進一步對特征模型分析研究發(fā)現(xiàn),當保留或刪除特征模型內(nèi)某個特征時,另外存在某些特征也會跟隨被保留或刪除?;诖颂攸c,我們提出了一種基于可配置特征單元的形式化特征模型(CFM)。還以智慧教室集成系統(tǒng)為例,綜合前文對軟件產(chǎn)品線基于可配置特征單元的形式化特征模型(CFM)的定義,對特征的選擇約束的說明,通過映射規(guī)則,可以很快得出智慧教室產(chǎn)品線基于可配置特征單元的形式化特征模型,并對其特征模型進行分析,如圖5所示。
圖5 智慧教室可配置特征模型
在圖5中的智慧教室產(chǎn)品線基于可配置特征單元的形式化特征模型可以看出,特征模型同樣采用類似樹形的結(jié)構(gòu)來表示,其中,節(jié)點表示可配置特征單元,連接線表示可配置特征單元之間的層次關(guān)系。圖5所示的特征模型中包含可選、強制和可替代三種類型的可配置特征單元。
在智慧教室的傳統(tǒng)特征模型中,總共包含54個特征,然而在基于可配置特征單元的特征模型中僅僅包含20個可配置特征單元。因此,基于可配置特征單元的特征模型縮小了傳統(tǒng)特征模型的規(guī)模。這樣我們就可以根據(jù)智慧教室領(lǐng)域中某個系統(tǒng)的需求快速、準確地找到該系統(tǒng)所需要的可配置特征單元,用被選中的可配置特征單元構(gòu)成的特征模型來描述系統(tǒng)需求規(guī)約。分析對比,發(fā)現(xiàn)傳統(tǒng)特征單元研究中不宜察覺的特征約束關(guān)系,對從特征到可配置特征單元使用映射規(guī)則后,我們得到的特征和可配置特征單元是一致的。
本文主要研究將基于軟件產(chǎn)品線高度可復(fù)用的方法引入可配置的特征模型的方法,提出了一種形式化可配合的特征模型,是面向特征的領(lǐng)域需求規(guī)約模型,通過記錄領(lǐng)域中一組相對穩(wěn)定的特征,以及特征與特征之間的關(guān)系反映整個領(lǐng)域的產(chǎn)品需求。本文以特征為切入點,對可配置特征模型組成各元素進行了概念說明,并給出了相應(yīng)的形式化的語義。著重就特征屬性,特征關(guān)系等問題進行了討論,創(chuàng)新性地把特征組合定義成特征運算實現(xiàn)。定義了多種特征組合運算,保證了不同抽象層次的特征及其關(guān)系具有明確嚴格的定義。在此基礎(chǔ)上,建立了一種形式化可配置特征模型,并給出了一套從特征映射到可配置特征單元的映射規(guī)則,為基于可配置特征單元的軟件產(chǎn)品線中的設(shè)計和實現(xiàn)提供理論支持。
但是,本文還存在著一些不足,對于特征的依賴和映射規(guī)則,我們只在一個抽象層次上研究了依賴對體系結(jié)構(gòu)的影響。在后續(xù)工作中,我們將繼續(xù)研究不同特征依賴關(guān)系對體系結(jié)構(gòu)的影響,建立領(lǐng)域需求和領(lǐng)域?qū)崿F(xiàn)之間的映射關(guān)系,以提高軟件開發(fā)的效率。
[1] 王勇.軟件過程資產(chǎn)庫的研究與實現(xiàn)[J].計算機應(yīng)用與軟件,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] 鄧惠月,楊貫中,張大方.面向嵌入式產(chǎn)品線的非功能特征模型[J].計算機應(yīng)用與軟件,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] 趙鄂,楊博文,楊貫中.一種適用于軟件產(chǎn)品線的特征模型[J].計算機系統(tǒng)應(yīng)用,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] 李玉琴,趙文耘.從領(lǐng)域需求到產(chǎn)品線體系結(jié)構(gòu)的映射——一種面向特征的方法[J].計算機研究與發(fā)展,2007,44(7):1236-1242.
[10] 聶坤明,張莉.基于模型對比和組合的軟件產(chǎn)品線領(lǐng)域需求建模[J].計算機學(xué)報,2014,37(3):539-550.
[11] 張偉,梅宏.面向特征的軟件復(fù)用技術(shù)——發(fā)展與現(xiàn)狀[J].科學(xué)通報,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.