PackageUML Diagram的應用

 

 

英文標題: Applying packages on UML diagrams

中文標題: PackageUML Diagram的應用

 

內容摘要:

PackageUML的構件(construct),你可以用PackageUse CaseClass模型(Model)Element,組合成PackagePackage若用的好,可以簡化軟體設計的Diagram。在UML堙APackage是以資料匣的圖示表達。Package可用在所有的UML Diagram上,但最常是用在Use Case DiagramClass Diagram。因為這兩種Diagram會一直成長,所以常需要適時切割!

 

原文: http://www-106.ibm.com/developerworks/webservices/library/ws-tip-pkgs/

作者: Scott W. Ambler

技術編輯: 光桀

發表日期: 2004/9/22

 

如何簡化複雜的Diagram

        PackageUML的構件(construct),你可以用PackageUse CaseClass模型(Model)Element,組合成PackagePackage若用的好,可以簡化軟體設計的Diagram。在UML堙APackage是以資料匣的圖示表達,如圖2所示。Package可用在所有的UML Diagram上,但最常是用在Use Case DiagramClass Diagram。因為這兩種Diagram會一直成長,所以常需要適時切割!

 

譯註:Element簡單的來說指的是構成Diagram的圖示。如Use Case DiagramElementUse CaseIncludeExtend等。嚴謹的定義請參考UML Semantics v1.0

 

譯註:Model是一個可以幫助我們了解或描述系統的工具。我們可以從不同的觀點來了解或描述一個系統,如Use Case ModelClass Model。每一種Model,可以用適合它的許多Diagram來畫它。如Use Case Model,可以用許多Use Case Diagram表達。

範例:簡化Use Case Diagram

        1是一個複雜的Use Case Diagram(關於Use Case Diagram,請參考:Modeling essential use cases)。圖2是用Package來切割此Diagram。隨者Package的導入,會讓你的Use Case Diagram變的更簡單、更易於了解。從另一個角度來看,Package可以畫成另一個Use Case Diagram來表達它的內容,如圖3 所示。

 


1:一個大學教務系統的Use Case Model片段

Partial use case model for a university system

譯註:圖2Use Case中英對照:

        Obtain student grant:獲得助學金

        Obtain student loan:獲得助學貸款

        Pay fees:繳學費

        Inform student of grade:通知學生成績

        Produce fee schedule 告示收費標準

        Reimburse course fees 償還課程費用

        Enroll in seminar 註冊課程

        Drop seminar:註銷課程

        Attend seminar:出席課程

        Finish seminar:修完課程

        Input marks:輸入分數

        Produce teaching schedule:告示教學進度表

        Teach seminar:教課

        Apply for grant:申請助學金

        Notify students of schedule changes:通知學生課程改變了


2:用Package來組織Use Case Model

 

A use case model organized with packages

譯註:圖2Package中英對照:

        Manage loan and grants:管理貸款與助學金

        Instruct seminars:授課

        Manage fees:管理學費

        Manage seminar registration:管理課程的註冊


3Package:「Manage seminar registration

The Manage Seminar Registration package


 

使用Package的時機與規範

        Diagram畫得很亂時,使用Package

有當Diagram很難看懂,或一張紙畫不下時,我才使用Package。可以用Package將一張很大的Diagram切成幾個較小的部份。能夠讓人一目了然的Diagram,通常包含59個圈圈(Use CaseClass)

        Package必須要有內聚力(Cohesive)

當你要將Element放到Package時,要考慮所放的ElementPackage原有的內容搭配後,是否仍具有意義。如果你能為Package一個簡短的命名,表示這個Package是有內聚力的。若不行,可能是你將一些不相關的Element擺在一起。

        Use Case Diagram而言,將相關的Use Case包成Package

Use Case Diagram中,我喜歡從Use Case與另一個Use Case的關係(extendinclude)當中找出Package。因為從Base(Parent) Use Case中拉出的Use Case,彼此之間是有邏輯上的關連,所以我的作法是:將被includeUse Caseinclude它的Base Use Case放在同一個Package;將被extendUse Caseextend它的Parent Use Case也放在同一個。然後開始分析有那些主要的Actor(參與者)參與Use Case。你將會發現每一位和系統產生互動的Actor都是為了要完成某項目標。例如學生使用這套系統是為了要註冊、管理課表、與申請助學貸款。

        Class Diagram而言,將相關的Class包成Package

我以同樣的做法用在UMLClass Diagram上。第一步,將同組繼承關係的Class放在相同Package。第二步,Class透過AggregationComposition的關係而關連到其它的Class可放在相同Package。第三步,從Sequence DiagramCollaboration Diagram中找出有互動的Class,這些Class可放在相同的Package。第四步,若以上的步驟做完,還無法讓Package擁有最好的內聚力,再去決定該挑那些Class放在Package堙C