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