摘 要:本文首先介紹統一建模語言(UML),然后提出了基于UML的構件抽取的方法及策略,在此基礎上,運用UML的構件抽取方法對教師管理系統進行了構件抽取,為在開發基于構件的應用系統中進行構件的抽取提供了一種可行的解決方案。
關鍵詞:統一建模語言(UML);構件;教務管理
中圖分類號:TP311 文獻標志碼:A文章編號:1671-7953(2009)01-0086-03
Research Based on UML Component Extraction Technology
ZHANGXiu-ai,LIU Xiu-ju,LIU Feng-ge
(Computer and Information Engineering Department,Heze University,Heze Shandong 274015,China)
Abstract: The article first introduced unified modeling language (UML),then proposed component extraction method and strategy based on UML,and carried on the component extraction to the educational administration management system using the UML component extraction method,Provided a kind of feasible solution to carry on the component extraction in order to develop application system based on the component.
Key words: Unified Modeling Language (UML);component;educational administration management
1 構件及統一建模語言簡述
軟件構件技術是當前復用研究的焦點,被視為實現成功復用的關鍵因素之一。構件是封裝了設計和實現的細節而僅向外部提供接口的相對獨的可復用軟件單元,構件可以與其他構件組成更大規模的構件。統一建模語言(Unified Modeling Language)UML 是一種在面向對象開發中用來建模和開發軟件系統的圖形化語言,可以對軟件進行可視化、詳述、構造和文檔化,主要用于為系統建造模型。用 UML 建立起的系統模型可以是獨立于最終系統實現語言的模型,具有更大的通用性,便于交流。它提供了軟件開發的各個階段的可視化建模支持,使得涉及項目各級人員都可以從 UML 模型中方便地獲取自己需要的信息,從而使多數應用領域的軟件開發具有一種實際、高效的保證[1]。
2 基于UML的構件抽取方法
2.1 構件的抽取方法
構件設計既要滿足系統需求,又要具備高內聚、低藕合、易重用的特點。構件具有不同的粒度,可以有不同的大小和分類,小的可以是一個類,大的可以是完成某個獨立系統功能和服務的獨立的軟件包。構件的粒度要適中。構件粒度過小,構件雖然易于復用,但是不利于構件的管理:構件粒度越大,雖然復用程度越高,但是管理和實現構件相對比較困難,復用難度加大。因此合理的構件粒度有利于實現、復用和管理之間的平衡。目前通常采用MUL語言來描述需求模型。識別出高內聚、低耦合的構件,是構件設計階段的重要環節。
識別構件的過程如圖所示。該方法是以UML語言描述的業務用例模型作為輸入,通過聚類分析算法識別業務構件,進而設計出構件的接口。

2.2 基于UML的構件抽取過程:
1)通過 USE CASE 框圖映射系統的需求視圖,得到系統的功能模型。
2)利用交互圖來描述每個用例的具體實現流程和所涉及的相關對象。
3)通過分析 USE CASE 和交互圖得到類圖,來描述系統的靜態結構和完成功能的實體;為得到滿足實際應用的構件,必須分析獲取系統中的類,得到類圖。
4)通過分析類圖,抽象出系統的構件模型;UML 模型圖中類圖是進行構件劃分和提取的關鍵,構件是對類的更大粒度的抽象和封裝。
5)通過組件圖表示組件與外界的交互。

基于 UML 的構件抽取是一個復雜的過程,需要考慮的角度比較多,根據不同的構件,應用的知識也是不同的。為了抽取更加合理的構件,一般需要多次迭代,同時也需要團體的協調工作。構件的抽取由用例驅動,用例描述系統的需求,交互圖描述用例的流程和所涉及的類,類圖則描述實現用例的類和類間的關系,構件則是類的抽象。統一軟件開發過程 RUP,即是以用例為驅動、以體系結構為中心、迭代和遞增的軟件開發過程。所以,在構件的抽取過程中,用例圖和類圖的建立是至關重要的[2]。
3 軟件構件抽取策略
構件的抽取主要是如何對類進行更大粒度的組裝或合并,定義構件對外提供的服務界面。方法一般為:首先從相應得類圖中劃分得到業務/領域構件,即與領域有關執行應用邏輯的構件,再依次劃分出協調控制構件、數據處理構件和用戶界面構件。每個構件所呈現給其他構件的只是它提供的界面,即向外部提供的服務,其內部構成對外部而言是透明的,界面的定義可以從類具有的屬性和方法中提取得到。
構件的抽取策略如下[3]:
1)當決定某一個類是否屬于一個構件時,一般是依據一個類與其它類之間的交互方式。一個類如果只是發送消息,則將這種類稱為客戶機類,一個類如果只是接收消息,則將這種類稱為服務器類,如果二者兼有,則稱為客戶機、服務器類。
2)服務器類通常應為單獨劃分為一個構件。因為服務器類是消息傳遞的終點,例如,數據處理類為領域類提供數據存取服務,接收領域類發送的消息提供相應得服務,屬于服務器類,可單獨得劃分為一個數據處理構件。
3)客戶機類主要是請求業務/領域類提供服務。客戶機類只是要求提供服務而不能提供服務,一般不將客戶機類劃歸到某個領域構件中,而不是把它劃分到用戶界面構件中。因為一個客戶機類的并入只會增加構件交互的復雜性造成構件的修改和維護困難,而不會增加構件的功能。
4)當一個類只為另一個類提供服務時,應考慮是否將這兩個類合并。在后期階段,還需對獲取的構件進行分層與分離,便于系統的組裝和復用。分層是按照抽象層次的不同來劃分和組織層次的,各層是請求/服務關系;而分離一般是指同一抽象層次上,將功能相對獨立的構件從系統其他部分抽取出來;在對系統進行分層和分離后還對各個構件的合理性進行分析,其目的在于降低耦合性,增強內聚性提高構件的適用范圍和復用程度。
4 教務管理構件的抽取
教務系統包含的功能很多,為了更好地抽取構件,按照圖3所示,我們把構件分為兩類:基礎構件和業務構件。基礎構件是應用到整個系統中,需要從全局考慮,它的抽取主要依靠經驗知識。業務構件從功能模塊中進行抽取,它通過“聚類分析”方法進行抽取。
4.1 對基礎構件抽取
對系統進行整體的構件抽取,采用復用的原則進行分析,看這些構件是不是達到復用性最高,抽取出系統的基礎構件。基礎構件有:連接數據庫構件、數據導入構件,數據導出構件,界面管理構件、報表構件。如圖所示。

連接數據庫構件完成系統登陸數據庫功能。
數據導入構件完成數據的批量導入功能。
數據導出構件完成數據的批量導出功能。
界面管理構件完成定義界面格式的功能。
報表構件完成報表的統計、打印功能。
4.2 系統的業務構件進行抽取。
為了更加準確的識別業務構件,采用聚類分析算法。聚類分析(Cluster Algorit加nr)是數理統計中研究“物以類聚”的一種方法。按照構件語義從領域模型中選擇樣本點進行分類。聚類分析依賴于樣本點集合的選取以及對樣本點之間的關聯值的理解,定義不同的樣本點集合和關聯值度量將產生不同的聚類結果。構件是對業務過程和業務規則的封裝,采用UML用例圖和活動圖描述的用例是一種目前較為通用的描述業務過程的表示元素,因而選擇以業務用例作為識別構件的X樣本點合。用聚類分析法對系統的業務構件進行抽取。
我們以教師管理為例來說明業務構件抽取的過程,業務構件的抽取是在功能模塊劃分的基礎進行,采用聚類分析法。

對圖中的所有用例執行聚類分析:“工作量管理”、“工作量計算公式設置”、“教師實際開課信息”、“計算工作量”,這四個用例之間的關系是包括關系,他們的關聯值Rij = 2>=Rmin,可以將這四個用例識別為工作量管理構件。“用戶”和“行政管理員”是泛化關系,他們的關聯值Rij=3>=Rmin,可以將“用戶”和“行政管理員”識別為用戶管理構件,用戶管理構件對整個系統有效。同理可以識別出教師評估構件和教師綜合信息構件。在教師管理模塊中,工作量、評估、教師綜合信息都有可能存在數據的批量導入,導出,數據庫訪問、報表打印功能,這些在抽取基礎構件的時候就抽取出來了。教師管理模塊的主要構件如圖5所示。

工作量管理構件的主要功能有工作量公式設定,工作量計算等。
教師綜合信息構件涉及的功能是對所有與教師有關的信息進行管理,如科研,簡歷等。教師評估構件的主要功能有評估項目的設置,評估分數的設置等。
5 結束語
目前基于構件的軟件復用技術獲得越來越廣泛的應用,復用中所使用的構件即可以從已有的系統中抽取,也可以在軟件開發的初期就設計成構件的形式。許多高校已經有自己的教務系統,只是有些功能和性能已經有些落后,因此從已有的系統中抽取構件,組裝成新的教務系統,也不失為解決現有問題的一個好的策略。
參考文獻
[1] 陳 菲,劉克勤. 計算機軟件復用技術研究[J]. 現代電力,2002,19(6):95-101.[2] 鄭祥華.基于軟件構件的教務管理系統構造研究[D]. 山東師范大學碩士學位論文,2006 48-50.
[3] 溫泉徹,馬智峰.UML及其在構件抽取中的應用[J]. 湛江師范學院學報,2004,25(6):111-114.