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