UML用例圖例項解析

心鑫發表於2014-04-02


本文和大家重點討論一下UML用例圖例項的應用,UML用例圖包含了用例和參與者,用例之間用關聯來連線以求把系統的整個結構和功能反映給非技術人員(通常是軟體的使用者),對應的是軟體的結構和功能分解。

UML用例圖

本文和大家重點討論一下UML用例圖例項的應用,UML用例圖包含了用例和參與者,用例之間用關聯來連線以求把系統的整個結構和功能反映給非技術人員(通常是軟體的使用者),對應的是軟體的結構和功能分解。
UML用例圖

用例圖主要用來圖示化系統的主事件流程,它主要用來描述客戶的需求,即使用者希望系統具備的完成一定功能的動作,通俗地理解用例就是軟體的功能模組,所以是設計系統分析階段的起點,設計人員根據客戶的需求來建立和解釋用例圖,用來描述軟體應具備哪些功能模組以及這些模組之間的呼叫關係,UML用例圖包含了用例和參與者,用例之間用關聯來連線以求把系統的整個結構和功能反映給非技術人員(通常是軟體的使用者),對應的是軟體的結構和功能分解。

用例是從系統外部可見的行為,是系統為某一個或幾個參與者(Actor)提供的一段完整的服務。從原則上來講,用例之間都是獨立、並列的,它們之間並不存在著包含從屬關係。但是為了體現一些用例之間的業務關係,提高可維護性和一致性,用例之間可以抽象出包含(include)、擴充套件(extend)和泛(generalization)幾種關係。

共性:都是從現有的用例中抽取出公共的那部分資訊,作為一個單獨的用例,然後通後過不同的方法來重用這個公共的用例,以減少模型維護的工作量。

1、包含(include)

包含關係:使用包含(Inclusion)用例來封裝一組跨越多個用例的相似動作(行為片斷),以便多個基(Base)用例複用。基用例控制與包含用例的關係,以及被包含用例的事件流是否會插入到基用例的事件流中。基用例可以依賴包含用例執行的結果,但是雙方都不能訪問對方的屬性。

UML用例圖中包含關係對典型的應用就是複用,也就是定義中說的情景。但是有時當某用例的事件流過於複雜時,為了簡化用例的描述,我們也可以把某一段事件流抽象成為一個被包含的用例;相反,用例劃分太細時,也可以抽象出一個基用例,來包含這些細顆粒的用例。這種情況類似於在過程設計語言中,將程式的某一段演算法封裝成一個子過程,然後再從主程式中呼叫這一子過程。 

例如:業務中,總是存在著維護某某資訊的功能,如果將它作為一個用例,那新建、編輯以及修改都要在用例詳述中描述,過於複雜;如果分成新建用例、編輯用例和刪除用例,則劃分太細。這時包含關係可以用來理清關係。

2、擴充套件(extend)

擴充套件關係:將基用例中一段相對獨立並且可選的動作,用擴充套件(Extension)用例加以封裝,再讓它從基用例中宣告的擴充套件點(ExtensionPoint)上進行擴充套件,從而使基用例行為更簡練和目標更集中。UML用例圖中擴充套件用例為基用例新增新的行為。擴充套件用例可以訪問基用例的屬性,因此它能根據基用例中擴充套件點的當前狀態來判斷是否執行自己。但是擴充套件用例對基用例不可見。

對於一個擴充套件用例,可以在基用例上有幾個擴充套件點。

例如,系統中允許使用者對查詢的結果進行匯出、列印。對於查詢而言,能不能匯出、列印查詢都是一樣的,匯出、列印是不可見的。匯入、列印和查詢相對獨立,而且為查詢新增了新行為。因此可以採用擴充套件關係來描述:

3、泛化(generalization)

UML用例圖中泛化關係:子用例和父用例相似,但表現出更特別的行為;子用例將繼承父用例的所有結構、行為和關係。子用例可以使用父用例的一段行為,也可以過載它。父用例通常是抽象的。在實際應用中很少使用泛化關係,子用例中的特殊行為都可以作為父用例中的備選流存在。

例如,業務中可能存在許多需要部門領導審批的事情,但是領導審批的流程是很相似的,這時可以做成泛化關係表示:

上面是我參考的一篇文章,覺得將三種關係的區別講得很清晰,在此基礎上結合自己的系統,對專案(線上購物系統)的用例做了整體的描繪

相關文章