摘 要: 在分析當前軟件工程中使用UML方法劃分軟件子系統方法,存在很大的主觀因素的基礎上,引入形式概念分析(FCA)理論解決這一不足,通過UML可視化建模得到用例圖后生成用例的形式背景,進而構造概念格,最后通過對概念格的分析,完成對軟件子系統的劃分。
關鍵詞: 形式概念分析;子系統劃分;軟件建模;UML;用例模型
隨著軟件工程的飛速發展,軟件建模提出了一系列的語言、理論、工具和方法。實踐表明,大多數的系統軟件開發中的錯誤是由需求和設計階段產生的,而且錯誤在系統中存在的時間越長則越難發現,解決這些錯誤的代價也越高。為了提高軟件需求和軟件設計的質量,軟件工程界提出了需求分析工程技術和各種軟件建模技術。
在軟件建模中,當獲得用戶需求后,首要任務就是要劃分子系統,子系統劃分得合理與否,直接影響軟件后續的開發和維護工作能否順利進行。劃分子系統時首先應該要遵循“高內聚、低耦合”的原則;其次要考慮到所有的使用角色,兼顧使用者的需求;最后也要適當考慮整體開發的分段實現。
1 概述
在研制開發軟件系統尤其是開發一個較大企業管理系統時,為便于直觀方便地劃分子系統,通常根據過程與數據類的相關性,利用功能和數據的關系確定子系統。由此要涉及到許多支持的相關理論和方法,如模糊聚類、神經網絡等。這些方法幾乎都有一個共同點,都需要產生或處理C-U矩陣的問題。其中,C表示程序模塊對基本表的存入關系(即創建或維護基本表),U表示對基本表的使用關系。雖然C-U矩陣具有很強的分析能力,但在實際開發軟件系統中,C-U矩陣的構造和處理都比較復雜,增加了軟件開發與設計的難度,從獲取用戶需求、描述能力和圖形化方面都有待于提高。
目前,統一建模語言(UML)形成了相對完善的建模理論并得到了廣泛的應用,能夠快速地獲得用戶的需求,也有很好的圖形展示。但UML在劃分子系統時,常根據開發人員的主觀因素去進行判斷,降低了系統的科學性。為減少產生錯誤的代價和彌補應用UML建模開發過程中的不足,本文探討了應用FCA理論方法來解決這一問題。
2 形式概念分析
形式概念分析FCA(Formal Concept Analysis)[1]是對概念的哲學理解的數學化表達,是以人為中心的構造數據并分析數據的方法,是數據的內在結構、 關聯和相互依存關系的可視化方法。FCA將概念的對象看作外延,將屬性看作內涵對概念數學化,然后通過構造形式背景進而生成概念格對給定的數據進行數學分析和思考。FCA作為人工世界的建模工具,與傳統的建模方法相比較,既具有描述能力又具有分析能力,還具有圖形化能力,這從根本上決定了其在軟件系統建模中無可替代的優勢。
由以上定義可以看出,概念的內涵是概念外延中所有對象共同屬性的集合,而概念的外延則是概念內涵可以確定的最大對象集合,一個概念是一個完備的二元組。特別定義兩個特殊的概念,分別是:包含所有對象的概念為全概念,包含所有屬性的概念為空概念。形式概念(A,B)的外延A和內涵B被關系I緊密地聯系在一起。因為A′=B且B′=A,則外延決定內涵,同時內涵也決定外延,進而決定了形式概念。
2.2 FCA在軟件系統中的應用
FCA被引入到信息科學技術領域后,即被軟件工程及軟件系統開發等領域所關注和應用。在國外的應用研究中,有如參考文獻[3]的基于FCA的信息系統模型綜合性與完整性的驗證方法。在參考文獻[4]中,FCA在軟件系統開發中的應用被分為早期階段活動和軟件維護兩方面。早期階段主要應用于需求分析、復用組件檢索、形式化規格說明和基于FCA的Z規格可視化等;而軟件的維護階段主要用于類層次再工程。在參考文獻[5]中指出:FCA可以很好地運用在軟件生命周期的各個階段;若將FCA用在軟件工程的各個主要部分還有可能開啟一個徹底的基于概念的軟件工程新視角等。
為此,本文結合UML建模方法與FCA的各自優勢,設計了UML建模與FCA相結合的軟件子系統劃分的新方法,使得快速準確地獲得用戶需求的同時又科學地劃分軟件子系統。并且希望通過在劃分軟件子系統這一應用中,找到UML方法和FCA理論在軟件建模應用中的其他結合點。
3 基于FCA軟件子系統劃分
3.1 軟件系統建模問題分析
基于UML的面向對象軟件過程建模克服了傳統軟件都用過程或函數作為主要構造模塊,同時還解決了數據流分析的層次復雜性,對軟件系統模型的映射程度進行了加強;而且UML作為面向對象的可視化標準建模語言,采用的是圖形符號進行表示系統中所有的對象和關系,應用直觀的圖形從不同的角度描述待開發系統,為更好地理解建模過程提供了有效的交流形式。
應用UML建模開發一個功能多、數據較復雜的軟件系統,在開發過程中,基本上都是采用由大劃小、各個擊破的方式。因此,對復雜軟件系統結構的分析就成為軟件系統建模要解決的首要問題,而明確系統-子系統-功能模塊之間的層次關系以及各個層次中各要素間的相互作用就成為軟件系統建模的前提和基礎。
軟件系統結構建模的難點在于如何將系統內相互聯系緊密的模塊聚合在一起,使得模塊內部的內聚合性增強,同時使模塊間的耦合度降低。FCA的概念格理論所提供的聚類機制可以很好地解決這一難題。所以,本文在軟件的開發過程中,采用以UML進行建模、使用FCA對軟件系統進行子系統劃分方法,可以使軟件系統在開發過程對子系統的劃分更加地合理、科學。
3.2 基于FCA建模的實例分析應用
下面以學生選課管理系統為例,說明利用FCA結合UML對系統結構建模的基本原理。
(1)窮舉軟件系統所要實現的所有功能模塊
UML分析系統功能需求較為快速有效的方法就是構建用例模型,并以用例圖加以描述。這一部分可以采用按角色找到系統的用例(即系統的功能)。學生選課管理系統的參與角色主要有學生、教師、教學秘書這三類。按照這三個角色可以得到的系統用例圖如圖1所示。
(2)找到各功能所對應數據類并生成形式背景
根據定義1中所述,形式背景由概念的內涵和外延組成,外延為對象集,在本方法中將功能集合作為對象集(即形式背景中的外延),以數據集合作為屬性集(即形式背景的內涵),建立起兩者的“功能-數據”二元關系。在這里,功能-數據的二元關系既包括功能產生對應數據這一關系,也包括該功能使用對應數據這一關系。結合實例,生成學生選課管理系統“功能-數據”形式背景如表1所示。
(4)根據概念格的聚類功能
使用或產生相同數據并實現相近功能的節點在概念格的Hasse圖上必能聚集在一起,根據這一規律在系統分析員的幫助下,利用Hasse圖就可以輕易地分析找出“功能-數據”密切相關的一些模塊,將之歸納入一個子系統中并命名。將“功能-數據”聯系緊密的模塊聚集在一起,如圖2中的區域所示,每個區域代表一個子系統,區域1代表選課管理子系統,區域2代表成績管理子系統,區域3代表新課程增加子系統。
(5)判別子系統或模塊實現的先后次序
利用概念格節點的聯系可以很容易判斷出子系統之間的關系,也可得出子系統產生的數據有多少被其他子系統所共享,在充分考慮共享數據的重要性及關聯的緊密程度的前提下,可根據各子系統間的技術約束來判別實現的先后順序。如圖2所示,區域2中成績管理子系統要使用區域1中的課程信息數據,因此選課管理子系統要先于成績管理子系統實現。在同一子系統中,節點(即模塊)的層次越高,其使用和產生的數據被下級節點所共享的程度就越大。因此,可以根據區域中節點的層次關系,也即是屬性(即模塊使用和產生的數據)的層次關系來確立子系統中模塊開發的先后次序。
子系統劃分是軟件系統建模中的一個基礎性工作,子系統劃分是否合理,將會直接影響到軟件系統后續的開發和維護。本文提出的劃分子系統方法,首先運用UML建模方法找到系統中的角色,然后根據每個角色窮盡其所有的用例(即找到功能),最后使用形式概念分析方法構造出形式背景,進而構造出概念格,完成子系統的劃分。有效地避免了單純用UML建模中的主觀意識,使得子系統劃分工作更科學、更合理。
參考文獻
[1] WORMUTH B, BECKER P. Introduction to formal concept analysis[C]. Proceedings of the 2nd International Conference of Formal Concept Analysis, Sydney, Australia, 2004:1-4.
[2] 謝志鵬,劉宗田.基于概念格的關聯規則發現[J].小型微型計算機系統,2000,21(10):1028-1031.
[3] LAUKAITIS A, VASILECAS O. Formal concept analysis and information systems modeling[C]. Proceedings of the International Conference on Computer Systems andTechnologies, Bulgaria. New York, NY, USA: ACM, 2007.
[4] TILLEY T, COLE R, BECKER P, et al. A survey of formal concept analysis support for software engineering activities [C]. Berlin/Heidelberg: Springer, 2005: 107-118.