摘 要: 結(jié)合面向?qū)ο箢I(lǐng)域建模和面向特征的領(lǐng)域分析方法,提出了一種面向特征的軟件產(chǎn)品家族建模方案,通過特征模型和用例模型來描述家族內(nèi)產(chǎn)品的共性和變化性,建立產(chǎn)品家族的領(lǐng)域分析模型,以實現(xiàn)需求的復(fù)用。結(jié)合高校設(shè)備預(yù)定管理,討論了軟件產(chǎn)品家族的領(lǐng)域建模過程。
關(guān)鍵詞: 領(lǐng)域分析; 軟件產(chǎn)品家族; 特征模型; 變化性; 共性
軟件產(chǎn)品家族是具有共同特性的一系列軟件系統(tǒng),例如電信公司的各種計費系統(tǒng)、手機應(yīng)用軟件,像這樣一些具有共同特性的一組軟件系統(tǒng)的開發(fā),如果沒有系統(tǒng)重用的方法,采取傳統(tǒng)的“一次開發(fā)一個系統(tǒng)”的方法,將使系統(tǒng)的成本和開發(fā)周期大大增加。
軟件復(fù)用被認為是解決軟件危機、實現(xiàn)軟件產(chǎn)業(yè)工業(yè)化生產(chǎn)方式的有效途徑。軟件產(chǎn)品家族方法即應(yīng)用軟件復(fù)用的相關(guān)原理和技術(shù),把整個產(chǎn)品家族作為同一問題空間來看待的軟件開發(fā)方法。研究和實踐表明,通過應(yīng)用軟件復(fù)用技術(shù),軟件產(chǎn)品家族方法極大地節(jié)省了軟件產(chǎn)品的開發(fā)成本和時間[1],因此軟件產(chǎn)品家族方法也被認為是一種提高軟件開發(fā)效率和控制軟件復(fù)雜性的有效措施。
本文采用面向特征的領(lǐng)域分析方法,選取高校設(shè)備預(yù)定管理產(chǎn)品家族作為研究實例,闡述了對軟件產(chǎn)品家族領(lǐng)域分析的方法,實現(xiàn)了需求的復(fù)用。
1相關(guān)概念
1.1領(lǐng)域工程
領(lǐng)域是一組具有相似或相近軟件需求的應(yīng)用系統(tǒng)所覆蓋的功能區(qū)域[2]。領(lǐng)域的概念規(guī)定了領(lǐng)域工程的研究范圍,即在構(gòu)造一個特定領(lǐng)域內(nèi)的系統(tǒng)或者系統(tǒng)的某些部分時,以可重用方面的形式收集、組織并保存過去的經(jīng)驗的活動,以及在構(gòu)造新系統(tǒng)時,提供一種充分的方法來重用這些資源。
領(lǐng)域工程過程實施與開發(fā)單個應(yīng)用系統(tǒng)的軟件工程過程(應(yīng)用工程)不同,需依據(jù)一定的領(lǐng)域工程方法進行。較有影響的領(lǐng)域分析方法有:面向特征的領(lǐng)域分析方法FODA(Feature-Oriented Domain Analysis)、組織領(lǐng)域分析模型方法ODM(Organization Domain Modeling)及領(lǐng)域分析和設(shè)計過程(DADP)等[3]。面向特征的領(lǐng)域分析方法為領(lǐng)域分析定義了具體的過程和階段,與其他方法相比具有較強的操作性。以下3個基本階段刻畫了FODA過程[3]:場景分析,定義進行分析的領(lǐng)域的區(qū)域(或邊界);領(lǐng)域建模,提供一個對用軟件表達的領(lǐng)域的問題空間的描述;構(gòu)架建模,創(chuàng)造一個可以將解決方案實施到領(lǐng)域中具體問題的軟件體系結(jié)構(gòu)。
1.2 產(chǎn)品家族
產(chǎn)品家族是指一類共享體系結(jié)構(gòu)屬性、特征、代碼、構(gòu)件、中間件或者需求的軟件產(chǎn)品。作為特殊的領(lǐng)域,產(chǎn)品家族主要強調(diào)產(chǎn)品所在家族的共性,并不限于特定的軟件企業(yè)。共性是產(chǎn)品家族存在的基礎(chǔ),而家族內(nèi)單個產(chǎn)品間的區(qū)別則屬于變化性。因此,對軟件產(chǎn)品家族進行領(lǐng)域分析,需要描述出家族內(nèi)產(chǎn)品的共性和變化性。FODA方法用特征來對需求進行模塊化組織,用特征和特征之間的關(guān)系來對整個產(chǎn)品領(lǐng)域進行建模。
1.3 特征和特征模型
特征的定義在領(lǐng)域工程中并不完全相同,一個比較完整的定義為:從需求規(guī)約的組織結(jié)構(gòu)角度來看,特征提供了一種對需求的分割和組織方式,即以特征作為需求空間內(nèi)的一階實體,系統(tǒng)具有的特征及其相互關(guān)系構(gòu)成了系統(tǒng)的需求空間[4]。
領(lǐng)域特征模型是面向特征的領(lǐng)域需求規(guī)約模型,通過記錄領(lǐng)域具有的一組相對穩(wěn)定的特征以及特征之間的關(guān)系反映整個領(lǐng)域的軟件需求。它分為共性和變化性特征,其中共性特征表達領(lǐng)域內(nèi)各成員系統(tǒng)的共有部分,變化性特征描述領(lǐng)域內(nèi)部分成員系統(tǒng)的共有或特有部分。
2 面向特征的軟件產(chǎn)品家族建模方法
本文在對高校設(shè)備預(yù)定管理產(chǎn)品家族進行領(lǐng)域建模時,以FODA為基礎(chǔ),把特征和特征模型的概念引入到領(lǐng)域分析模型中,用于表現(xiàn)領(lǐng)域需求,同時采用用例模型描述家族中的成員系統(tǒng)的變化性。
面向特征的產(chǎn)品家族領(lǐng)域分析的主要目標是獲得領(lǐng)域分析模型以描述家族中產(chǎn)品的共性和變化性需求,包括場景模型、領(lǐng)域面向?qū)ο蠓治瞿P秃吞卣髂P?部分。其主要活動及過程如圖1所示。
2.1領(lǐng)域場景分析
場景分析的目的是通過領(lǐng)域分析人員與用戶、領(lǐng)域?qū)<医换?,分析已有的一組軟件產(chǎn)品,給出一個軟件產(chǎn)品家族范圍的定義,確定軟件系統(tǒng)族包括哪些應(yīng)用。場景分析包括以下3個過程:定義領(lǐng)域的范圍、確定與軟件家族交互的操作者、建立領(lǐng)域字典。如果是第一次開發(fā)家族內(nèi)的成員系統(tǒng),沒有可重用的軟件產(chǎn)品家族需求,則需要由需求工程師和領(lǐng)域?qū)<覐臍v史、當前和未來的系統(tǒng)需求中確定系統(tǒng)家族的功能需求和質(zhì)量需求?! ?br />
2.2領(lǐng)域面向?qū)ο蠓治瞿P?br />
在產(chǎn)品家族中,不同的應(yīng)用系統(tǒng)由于其針對的商業(yè)目標或用戶群不同,使得用戶與系統(tǒng)之間的交互存在差異性。在為軟件產(chǎn)品家族創(chuàng)建用例模型時,需要對現(xiàn)存系統(tǒng)的用例模型進行整合,將各用例模型中的公共部分抽取出來,作為用例模型中的共性部分;對于家族內(nèi)單個產(chǎn)品具有的功能,進行分類篩選,作為用例模型的變化性部分,在單個用例圖中加以描述。之后要對整個用例模型進行一致性、冗余性檢查,最終得到包含共性和變化性需求的軟件產(chǎn)品家族用例模型。
2.3特征模型
領(lǐng)域分析階段特征模型主要根據(jù)領(lǐng)域用例模型而來的,領(lǐng)域用例模型描述的是領(lǐng)域的功能性需求,因而特征模型主要是由功能性特征組成。而一個功能在執(zhí)行過程中表現(xiàn)出的行為特點,既可能是產(chǎn)品家族中所有系統(tǒng)的共性,也可能只是單個系統(tǒng)才具有的獨特之處。
3應(yīng)用實例
本文選取高校設(shè)備預(yù)定管理這一類共享軟件需求的軟件家族作為研究案例,應(yīng)用面向特征的軟件產(chǎn)品家族建模方法。
3.1領(lǐng)域范圍
在高校教學中,大都或多或少地存在著教學設(shè)備和教學資源緊缺的問題。為了合理地利用現(xiàn)有教學資源,提高教學效率和教學資源的利用率,許多高校使用設(shè)備預(yù)定管理軟件進行教學設(shè)備的預(yù)定和分配。這些系統(tǒng)具有相似的功能,即實現(xiàn)設(shè)備的預(yù)定/預(yù)約,方便用戶或設(shè)備使用人員,實現(xiàn)設(shè)備使用的自動分配,因此可以定義為高校設(shè)備預(yù)定管理產(chǎn)品家族。這里的設(shè)備包括高校教學中使用的教學儀器、設(shè)備,以及教室、會議室、學術(shù)報告廳等教學資源。
3.2與軟件家族交互的操作者
硬件方面包括數(shù)據(jù)傳輸局域網(wǎng)、服務(wù)器和客戶端計算機。
軟件方面包括Windows XP、SQL Server 2005、Microsoft.Net Framework 2.0。
系統(tǒng)使用者包括設(shè)備管理人員和設(shè)備使用人員。
3.3領(lǐng)域字典
對于軟件產(chǎn)品家族內(nèi)的部分術(shù)語以領(lǐng)域字典的形式進行注釋,如表1所示。
3.4領(lǐng)域用例模型
通過分析現(xiàn)有高校設(shè)備預(yù)定管理軟件,考慮到不同學校不同的管理方式,抽象出高校設(shè)備預(yù)定管理軟件產(chǎn)品家族的共性需求,由用例模型來描述, 如圖2所示。用例圖能夠詳細地描述用戶與系統(tǒng)的交互過程,因此可以表達交互過程中的變化性。表2是其中的“增加預(yù)定”用例,變化性的需求用斜體表示。
3.5特征模型
根據(jù)設(shè)備預(yù)定管理的家族用例模型,從交互過程分析活動開始,建立設(shè)備預(yù)定管理家族的特征模型圖,如圖3所示?!?br />
“批量預(yù)定”——可選特征。有的應(yīng)用系統(tǒng)中不允許批量預(yù)定(例如重要設(shè)備),只能在使用前臨時預(yù)定;而有些設(shè)備則可以一次預(yù)定多個(例如教室)。“批量預(yù)定”特征包含“多個時間段”和“多個設(shè)備”2個特征,二者關(guān)系可替換,即允許多個時間段預(yù)定,也可一次預(yù)定多個設(shè)備,或二者皆可。
“設(shè)備管理”——強制特征。每個應(yīng)用系統(tǒng)都需要對設(shè)備進行管理,如添加、刪除、修改等。
“刪除設(shè)備方式”——強制特征。由“刪除設(shè)備和預(yù)定”、“預(yù)定結(jié)束后刪除”和“不刪除”3個子特征描述。三者的關(guān)系是多選一,即“刪除設(shè)備方式”是3個子特征中的1個。
依賴關(guān)系:例如“批量折扣”特征依賴于“批量預(yù)定”特征。
面向特征的領(lǐng)域建模方法是目前主流的領(lǐng)域建模方法,該方法支持領(lǐng)域需求共性/變化性的建模,及支持對領(lǐng)域需求變化性的剪裁。本文在分析了面向特征的領(lǐng)域分析方法的基礎(chǔ)上,提出了通過建立領(lǐng)域用例模型和特征模型來描述軟件產(chǎn)品家族內(nèi)成員的共性和變化性,得到了高校設(shè)備預(yù)定管理家族的領(lǐng)域分析模型,從而實現(xiàn)了對軟件產(chǎn)品家族的建模。
參考文獻
[1] 鄒盛享,張偉,趙海燕,等.面向軟件產(chǎn)品家族的變化性建模方法[J].軟件學報,2005,16(1) :37-48.
[2] 李克勤,陳兆良,梅宏,等.領(lǐng)域工程概述[J].計算機科學, 1999,26(5): 21-25.
[3] KANG, KYO C,COHEN,et al. Feature-oriented domain anal ysis(FODA)feasibility study (CMU/ SEI-90-TR-21, ADA2357 85)[M]. Pittsburgh, Pa: Software Engineering Institute ,Carnegie Mellon University , 1990.
[4] 張偉,梅宏.一種面向特征的領(lǐng)域模型及其建模過程[J].軟件學報,2003,14(8):1345-1356.
[5] 王千祥,吳瓊,李克勤,等.一種面向?qū)ο蟮念I(lǐng)域工程方法[J]. 軟件學報,2002,13(10):1977-1984.
[6] 袁勝瓊,應(yīng)時.一種從用例模型構(gòu)造特征模型的方法[J].計算機工程與應(yīng)用,2003,(25):71-73.