鄭曉娟,劉 洋,陳祥科
(東北師范大學(xué)信息科學(xué)與技術(shù)學(xué)院,吉林 長春 130117)
自軟件危機(jī)之后,軟件復(fù)用的概念開始流行起來,作為軟件復(fù)用領(lǐng)域重要方法的軟件產(chǎn)品線得到了很大發(fā)展,發(fā)展軟件產(chǎn)品線的關(guān)鍵問題是如何進(jìn)行可變性管理,并基于可變性[1]管理實(shí)現(xiàn)軟件核心資產(chǎn)的復(fù)用。而軟件產(chǎn)品線[2]可變性建模[3]是可變性管理的關(guān)鍵技術(shù)。
可變性建模分為2個階段[4]:
1)需求階段的可變性處理。本文從軟件產(chǎn)品線的需求出發(fā),采用改進(jìn)的特征建模方法,加強(qiáng)模型間的可追溯性和一致性,指導(dǎo)生成系統(tǒng)的特征模型。
2)設(shè)計(jì)階段的可變性處理。本文引入分層思想設(shè)計(jì)領(lǐng)域參考架構(gòu)模型的辦法和可變構(gòu)件的概念,利用可選的構(gòu)件和接口實(shí)現(xiàn)設(shè)計(jì)階段的可變性建模。
在實(shí)際開發(fā)中,將前面的理論成功應(yīng)用到教學(xué)服務(wù)管理系統(tǒng)項(xiàng)目中,開發(fā)可復(fù)用構(gòu)件,提高效率,驗(yàn)證該理論作為軟件復(fù)用分支理論是實(shí)際可行的。
軟件產(chǎn)品線面向特征的領(lǐng)域方法成為領(lǐng)域建模的主流,卡內(nèi)基·梅隆大學(xué)的軟件工程研究所[5]率先提出了面向特征的領(lǐng)域分析方法FODA,支持對領(lǐng)域中系統(tǒng)共性和可變性的發(fā)現(xiàn)、分析和文檔記錄。后來經(jīng)過整合和分析建立了一個高效的復(fù)用模型FeatuRESB[6],該方法引入了可變點(diǎn)和變體的概念,表達(dá)一組同一維度的變化特征。Kang等人[7]進(jìn)一步將上述方法擴(kuò)展到設(shè)計(jì)階段,提出了一種面向特征的復(fù)用FORM方法。張偉等人[8]在現(xiàn)有領(lǐng)域分析方法所使用的特征模型的基礎(chǔ)上,對特征模型的組織框架和剪裁機(jī)制進(jìn)行了統(tǒng)一、抽象的描述,引入行為層特點(diǎn),給出建模過程,提出FODM方法。表1給出了一些經(jīng)典的特征建模方法的比較。
表1 特征建模方法的比較
通過研究發(fā)現(xiàn)特征建模方法存在以下幾個問題:
1)在共性與可變性的識別、可變點(diǎn)的構(gòu)建、依賴關(guān)系確定上,只是領(lǐng)域?qū)<乙罁?jù)經(jīng)驗(yàn)進(jìn)行判斷,缺少有效的識別依據(jù),無法保證準(zhǔn)確性。
2)特征建??勺凕c(diǎn)[14]的表示方法不夠精煉和明確,需求過多時,呈現(xiàn)形式復(fù)雜。
3)缺少模型與核心資產(chǎn)的映射關(guān)系,無法保證一致性和可追溯性。
4)構(gòu)建特征模型缺少詳細(xì)可操作的指南,使得領(lǐng)域分析人員在實(shí)踐中很難有效地進(jìn)行領(lǐng)域建?;顒?。
5)只是提出方法,并沒有應(yīng)用到開發(fā)中,缺乏實(shí)踐指導(dǎo)意義。
傳統(tǒng)的需求階段特征建模的流程是:
1)可變點(diǎn)的確定。明確可變性產(chǎn)生的位置。
2)可變體的確定??勺凅w利用變量實(shí)現(xiàn)對應(yīng)可變點(diǎn)的不同選擇。
3)可變體變化形式的確定。根據(jù)系統(tǒng)的需求屬性來確定可變性,可變性可分為3類:可選性、或選性和多選性。
4)可變體之間的依賴關(guān)系確定。分為需要和排斥2種依賴關(guān)系,根據(jù)依賴關(guān)系,實(shí)現(xiàn)構(gòu)件的綁定[15]。
傳統(tǒng)的設(shè)計(jì)階段的特征建模的流程:軟件產(chǎn)品線體系結(jié)構(gòu)的設(shè)計(jì),它包含的元素不應(yīng)當(dāng)是單一功能結(jié)構(gòu),而是包含領(lǐng)域內(nèi)所有構(gòu)件以及構(gòu)件關(guān)聯(lián)的規(guī)則,從領(lǐng)域中所有應(yīng)用系統(tǒng)的體系結(jié)構(gòu)抽象出更高層次的體系結(jié)構(gòu),這個共有的體系結(jié)構(gòu)是針對領(lǐng)域可變性模型中的領(lǐng)域需求給出的解決方案,常規(guī)的表示方式是用UML表示各個接口的關(guān)系,這造成軟件產(chǎn)品線產(chǎn)品較多,過于復(fù)雜。
在傳統(tǒng)建模流程的基礎(chǔ)上,針對上述發(fā)現(xiàn)的問題,本文分析5家教學(xué)服務(wù)管理系統(tǒng)的功能需求后,劃分形成領(lǐng)域的特征集,并進(jìn)行如下的改進(jìn):
1)進(jìn)行特征共性與可變性識別,設(shè)計(jì)表格分析,引入數(shù)值化的計(jì)算,根據(jù)在系統(tǒng)族中特征存在的概率,如果概率在20%~80%之間,可判斷為可變特征,根據(jù)層次劃分和可變點(diǎn)表示符號,進(jìn)行樹狀構(gòu)建。
2)在依賴關(guān)系判斷上,設(shè)計(jì)表格進(jìn)行分析,在表格的首行和首列填寫所有特征,引入數(shù)值表示行列特征之間的依賴排斥關(guān)系,分析得到依賴關(guān)系對。
3)特征樹中可變點(diǎn)和可變體的表示形式上進(jìn)行精簡,原有3類可變性,但是在或選和多選中是互通的,只有變體選擇的個數(shù)不同,所以確定或選與可選2種表示形式,加強(qiáng)了特征模型的可讀性,根據(jù)以上3步,通過可變點(diǎn)構(gòu)建和依賴關(guān)系確認(rèn),可以得到教學(xué)服務(wù)管理系統(tǒng)的全特征模型。
4)在體系結(jié)構(gòu)設(shè)計(jì)的過程中引入分層思想與領(lǐng)域特征集分層相對應(yīng),加強(qiáng)映射關(guān)系,保證模型的一致性,在構(gòu)件設(shè)計(jì)中實(shí)現(xiàn)構(gòu)件間的交互關(guān)系,通過上述改進(jìn),有效地改善了傳統(tǒng)UML建模的復(fù)雜性。
5)將軟件產(chǎn)品線中可變性的思想,延伸到構(gòu)件的設(shè)計(jì)中,提出可變構(gòu)件的概念,并給出詳細(xì)構(gòu)件的內(nèi)部設(shè)計(jì),將可變性模型延伸到代碼層面,提高模型的可操作性和實(shí)用性。
6)在應(yīng)用工程層面上將方法成功應(yīng)用到教學(xué)服務(wù)管理系統(tǒng)二次開發(fā)當(dāng)中,根據(jù)教學(xué)服務(wù)管理全特征模型,將現(xiàn)有系統(tǒng)的共性特征進(jìn)行保留,針對可變性特征,結(jié)合學(xué)院的情況,有針對地實(shí)現(xiàn)可變構(gòu)件的開發(fā),將可變構(gòu)件配置到共性系統(tǒng)中,高效地對系統(tǒng)進(jìn)行了完善。
針對缺少詳細(xì)的建模指南,本文給出如圖1所示的詳細(xì)操作步驟。
圖1 改進(jìn)后建模方法開發(fā)過程
教學(xué)服務(wù)管理系統(tǒng)是為高校提供服務(wù)的,包括作業(yè)管理、論壇中心、教務(wù)管理等,解決高校多系統(tǒng)混雜而帶來的功能冗余、數(shù)據(jù)分散、不便管理等多種問題??傮w功能結(jié)構(gòu)如圖2所示,根據(jù)總體的功能結(jié)構(gòu)進(jìn)行可變性建模。
圖2 教學(xué)服務(wù)管理系統(tǒng)總體功能結(jié)構(gòu)
本文將分層思想延伸到特征收集階段,將教學(xué)服務(wù)管理系統(tǒng)的特征劃分為業(yè)務(wù)特征集、功能特征集和行為特征集,與體系結(jié)構(gòu)的通用構(gòu)件層、基礎(chǔ)構(gòu)件層、原子構(gòu)件層相對應(yīng)[16]。在進(jìn)行產(chǎn)品線研究時,存在大量系統(tǒng),需要選擇一個子集作為樣本系統(tǒng)。對樣本系統(tǒng)需求的考察將顯示領(lǐng)域需求的一個變化范圍,所以選取5個滿足條件的教學(xué)服務(wù)管理系統(tǒng)的需求模型和SRS,進(jìn)行特征識別,得到5個系統(tǒng)特征集的并集,并對其進(jìn)行有效劃分,得到表2。
在建立特征模型前,需要對教學(xué)服務(wù)管理系統(tǒng)中的特征進(jìn)行共性和可變性分析,便于可變點(diǎn)的確定與構(gòu)建,依次建立業(yè)務(wù)特征集(見表3)、功能特征集和行為特征集的特征識別表,以業(yè)務(wù)特征集為例。設(shè)計(jì)表格首列為樣本的系統(tǒng)集,首行為特征集,如果在系統(tǒng)1中s1存在則記為1,依次分析各特征。
定義1特征存在系數(shù)FPR:FPR=特征在樣本集中為1的個數(shù)/樣本系統(tǒng)集的個數(shù)。
如果FPR大于0.8的特征放入到共性特征集中,將FPR在0.2~0.8的特征放到可變特征集中,存在系數(shù)低于0.2的特征視為系統(tǒng)中不存在的特征。功能特征和行為特征的分析同理,根據(jù)分析得到可變特征集,如表4所示。
表2 教學(xué)服務(wù)管理系統(tǒng)特征集
表3 業(yè)務(wù)特征集的特征識別表
表4 教學(xué)服務(wù)管理系統(tǒng)的可變特征集
表5 特征依賴識別表
表6 特征依賴對表
在變化點(diǎn)的構(gòu)建上,需要遵循的原則是:
1)變化點(diǎn)中變體的構(gòu)造上應(yīng)遵從系統(tǒng)層次結(jié)構(gòu)。
2)需要考慮變化點(diǎn)之間、變體之間、變體與變化點(diǎn)之間的排斥和需要關(guān)系。
按照上述表示方式和原則,構(gòu)成樹狀可變點(diǎn),如圖3所示。
圖3 教學(xué)服務(wù)管理系統(tǒng)中的變化點(diǎn)
1)以教學(xué)服務(wù)管理系統(tǒng)為根特征,依據(jù)先共性特征再可變性特征的順序,樹的第一層為業(yè)務(wù)特征,第二層為功能特征,第三層為行為特征,依次加入特征樹模型中。
圖4 教學(xué)服務(wù)管理系統(tǒng)全特征模型
通過可變性需求階段的建模,參考架構(gòu)的設(shè)計(jì)主要考慮2方面:
1)充分結(jié)合特征模型。在參考架構(gòu)的設(shè)計(jì)中納入特征模型的思想,便于可變構(gòu)件的設(shè)計(jì)。
2)分層設(shè)計(jì)的思想。有效降低參考架構(gòu)設(shè)計(jì)的復(fù)雜性,提高各階段的可追溯性。
圖5 軟件產(chǎn)品線參考架構(gòu)元模型
分析架構(gòu)設(shè)計(jì)的基礎(chǔ)知識,并對軟件產(chǎn)品線架構(gòu)的研究,本文提出軟件產(chǎn)品線領(lǐng)域工程參考架構(gòu)的元模型(見圖5),根據(jù)元模型對教學(xué)服務(wù)管理系統(tǒng)的體系結(jié)構(gòu)進(jìn)行分層設(shè)計(jì):
1)數(shù)據(jù)邏輯層。主要為系統(tǒng)提供相應(yīng)的數(shù)據(jù)服務(wù),在教學(xué)服務(wù)管理系統(tǒng)中,為其設(shè)計(jì)數(shù)據(jù)庫及其相關(guān)的軟件支撐環(huán)境[18]。
2)基礎(chǔ)構(gòu)件層。是系統(tǒng)業(yè)務(wù)功能實(shí)現(xiàn)的核心支撐,上層構(gòu)件可調(diào)用本層的基礎(chǔ)構(gòu)件。在本文系統(tǒng)中,基于面向構(gòu)件標(biāo)準(zhǔn)的軟件總線及服務(wù),為構(gòu)件之間的數(shù)據(jù)交換和通信提供可靠保障,包含運(yùn)算構(gòu)件、顯示構(gòu)件等為系統(tǒng)提供基礎(chǔ)支撐功能的構(gòu)件。
3)業(yè)務(wù)構(gòu)件層。是4層結(jié)構(gòu),包括原子業(yè)務(wù)構(gòu)件層、基礎(chǔ)業(yè)務(wù)構(gòu)件層、通用業(yè)務(wù)構(gòu)件層和行為業(yè)務(wù)構(gòu)件層[19]。
①原子業(yè)務(wù)構(gòu)件層。主要是將業(yè)務(wù)對象進(jìn)行適當(dāng)分解,并對基礎(chǔ)構(gòu)件層的構(gòu)件進(jìn)行組合。該層包含短信收發(fā)、上傳下載、郵件收發(fā)、文件導(dǎo)入等界面展示構(gòu)件和數(shù)據(jù)處理構(gòu)件。
②基礎(chǔ)業(yè)務(wù)構(gòu)件層?;A(chǔ)業(yè)務(wù)層構(gòu)件利用原子業(yè)務(wù)層的構(gòu)件,通過整合原子構(gòu)件。該層包含教務(wù)通知發(fā)布、成績導(dǎo)入、考場安排、作業(yè)上交等能夠直接處理業(yè)務(wù)的構(gòu)件。
③通用業(yè)務(wù)構(gòu)件層。該層包括作業(yè)管理、教務(wù)通知、成績管理、系統(tǒng)管理等一些能進(jìn)行通用型業(yè)務(wù)處理的構(gòu)件。
④行為業(yè)務(wù)構(gòu)件層。行為應(yīng)用構(gòu)件層處于最高層,該層構(gòu)件通過將原子業(yè)務(wù)構(gòu)件或者基礎(chǔ)業(yè)務(wù)構(gòu)件進(jìn)行組裝,形成符合特定領(lǐng)域需求的領(lǐng)域構(gòu)件,形成領(lǐng)域應(yīng)用構(gòu)件,如圖6所示。
圖6 教學(xué)服務(wù)管理系統(tǒng)參考架構(gòu)
在完成教學(xué)服務(wù)系統(tǒng)參考架構(gòu)后,將架構(gòu)層次與特征集層次進(jìn)行對應(yīng)比較,可以在一定程度上保證模型間的一致性。
在構(gòu)件和接口的設(shè)計(jì)中,需遵循以下原則:
1)可變構(gòu)件[20]的設(shè)計(jì)上要有普通構(gòu)件具備的能力:對外請求的接口集合、對外提供的接口集合、功能說明和構(gòu)件規(guī)約。
2)要適應(yīng)可變性建模表示的需要,所以本文將共性部分設(shè)計(jì)為必選構(gòu)件,可變部分設(shè)計(jì)為可變構(gòu)件,必選構(gòu)件對應(yīng)的接口需要被設(shè)計(jì)為必選接口,保證系統(tǒng)的完整性和確定性。
3)在對應(yīng)或選可變性時,接口一定是必選的,不能因接口而導(dǎo)致構(gòu)件的可變性發(fā)生變化。
4)在可變構(gòu)件的設(shè)計(jì)和構(gòu)造時,需要考慮系統(tǒng)需求和設(shè)計(jì)復(fù)雜度選擇合適的粒度,以免造成模型過于復(fù)雜或簡單。
與可變特征相對應(yīng),可變構(gòu)件也有3種形式,分別為必選、可選和或選構(gòu)件[17],如圖7所示
圖7 構(gòu)件的設(shè)計(jì)
通過參照教學(xué)服務(wù)管理系統(tǒng)特征模型和參考架構(gòu),利用可變構(gòu)件的設(shè)計(jì)原則和方法,為教學(xué)服務(wù)管理系統(tǒng)設(shè)計(jì)可變構(gòu)件,其部分構(gòu)件如表7所示。
表7 教學(xué)服務(wù)管理系統(tǒng)可變構(gòu)件列表(部分)
以郵件群發(fā)構(gòu)件為例進(jìn)行構(gòu)件內(nèi)部的設(shè)計(jì):在信息推送時要用到郵件發(fā)送的功能,實(shí)現(xiàn)一個郵件內(nèi)容多人發(fā)送的功能,是一個可選構(gòu)件。構(gòu)件對外提供的接口集合有發(fā)送郵件的功能,對內(nèi)提供參數(shù)有發(fā)送者的郵件地址、登錄郵箱的用戶名、密碼、郵件的標(biāo)題、內(nèi)容和接收人郵件的地址等,設(shè)計(jì)如圖8所示。
圖8 郵件群發(fā)構(gòu)件的設(shè)計(jì)
在以上領(lǐng)域分析、設(shè)計(jì)的基礎(chǔ)上,針對某院教學(xué)服務(wù)管理系統(tǒng)應(yīng)用要求,開展應(yīng)用工程。針對其特定的應(yīng)用環(huán)境和特定的需求,對以上特征模型進(jìn)行裁減,選擇相應(yīng)的特征,得到設(shè)計(jì)的可變構(gòu)件。在原有網(wǎng)站基礎(chǔ)上進(jìn)行再開發(fā),開發(fā)可變構(gòu)件,二次完善系統(tǒng)。下面以郵件群發(fā)構(gòu)件開發(fā)為例,利用PHP和OOP開發(fā)[21],偽碼如下:
function sendMail($to,$title,$content){
require_once(′//引用路徑′);
$mail=new PHPMailer();
//是否需要身份驗(yàn)證
$mail->SMTPAuth=TRUE;
function sendMail($to, $title, $content){
$mail->From="liuyangwill661@163.com";
$mail->FromName="liuyang";
//發(fā)送郵件的服務(wù)協(xié)議地址
$mail->Host="smtp.163.com";
$mail->Username="phpseven";
$mail->Password="phpseven777";
$mail->AddAddress($to);//收件人
//郵件標(biāo)題內(nèi)容
$mail->Subject=$title;
$mail->Body=$content;
return($mail->Send());
}}
上述代碼是調(diào)用郵件群發(fā)構(gòu)件的部分代碼,其中調(diào)用send()方法,實(shí)現(xiàn)郵件多人發(fā)送的功能,借助163郵箱現(xiàn)有的服務(wù)器,作為實(shí)現(xiàn)郵件群發(fā)的基礎(chǔ),實(shí)現(xiàn)參數(shù)的設(shè)置,通過提供方法內(nèi)部參數(shù),可以實(shí)現(xiàn)群發(fā)郵件的功能,本構(gòu)件并沒有對前端頁面和按鈕進(jìn)行封裝,更有利于后期復(fù)用的兼容性。
在教學(xué)服務(wù)管理系統(tǒng)應(yīng)用工程階段,針對特定的應(yīng)用和需求,在具體的系統(tǒng)分析、設(shè)計(jì)后,一方面可以復(fù)用以上特征分析和特征建模的結(jié)果、系統(tǒng)框架和構(gòu)件的設(shè)計(jì),另一方面可以根據(jù)實(shí)際情況,二次開發(fā)適合具體應(yīng)用特定業(yè)務(wù)構(gòu)件和應(yīng)用實(shí)例,然后進(jìn)行系統(tǒng)集成配置。其運(yùn)行界面如圖9~圖12所示。
圖9 教學(xué)服務(wù)管理系統(tǒng)的學(xué)生主界面
圖10 教學(xué)服務(wù)管理系統(tǒng)的學(xué)生作業(yè)管理界面
圖11 教學(xué)服務(wù)管理系統(tǒng)的學(xué)生考試安排界面
圖12 教學(xué)服務(wù)管理系統(tǒng)的學(xué)生論壇中心界面
主要比較一次開發(fā)(見表8)和建模后開發(fā)(見表9)的相關(guān)參數(shù),對效率進(jìn)行度量。參數(shù)包括上線時間、資產(chǎn)庫中增加的數(shù)量、需求設(shè)計(jì)階段的工作量、學(xué)生與教務(wù)人員的滿意度[22]。
表8 一次開發(fā)相關(guān)參數(shù)
表9 建模后開發(fā)相關(guān)參數(shù)
在開發(fā)效率上,收集開發(fā)過程中所消耗時間的反饋,前期可變性模型的創(chuàng)建有效地縮短了開發(fā)時間,提高了開發(fā)效率,同時構(gòu)件的增加也為后序的復(fù)用提供支持。
在開發(fā)的質(zhì)量上,雖然前期的需求和設(shè)計(jì)階段消耗了一定的時間,但是可以幫助開發(fā)人員更加了解這個領(lǐng)域,開發(fā)出更加有針對性和滿意度更高的功能需求和構(gòu)件。
通過上述的比較發(fā)現(xiàn),將改進(jìn)后的特征模型應(yīng)用于教學(xué)服務(wù)管理系統(tǒng),可以有效地降低開發(fā)成本,提高用戶的滿意度。
本文旨在解決需求和設(shè)計(jì)階段的可變性建模以及系統(tǒng)高效的實(shí)現(xiàn),成功將此方法應(yīng)用在教學(xué)服務(wù)管理系統(tǒng)產(chǎn)品線的開發(fā)過程中。通過提升可變性建模和管理層次,能更好地維護(hù)體系結(jié)構(gòu)可變性的一致性配置,并給予可變性建模詳細(xì)的操作指南,為實(shí)施的產(chǎn)品線提供良好的指導(dǎo)。根據(jù)可變模型的分析,得出可變構(gòu)件,降低開發(fā)成本,未來可不斷完善和豐富構(gòu)件庫以及軟件產(chǎn)品線核心資產(chǎn),形成產(chǎn)品體系,從根源上提高開發(fā)效率。