天天看點

UML模組化之用例圖關系

一.UML簡介

  UML(統一模組化語言,Unified Modeling Language)是一種定義良好、易于表達、功能強大且普遍适用的可視化模組化語言。它融入了軟體工程領域的新思想、新方法和新技術。它的作用域不限于支援面向對象的分析與設計,還支援從需求分析開始的軟體開發的全過程。在系統分析階段,我們一般用UML來畫很多圖,主要包括用例圖、狀态圖、類圖、活動 圖、序列圖、協作圖、建構圖、配置圖等等,要畫哪些圖要根據具體情況而定。其實簡單的了解,個人了解,UML的作用就是用很多圖從靜态和動态方面來全面描述我們将要開發的系統。

二、什麼是用例

   用例是對包括變量在内的一組動作序列的描述,系統執行這些動作,并産生傳遞特定參與者的價值的可觀察結果。這是UML對用例的正式定義,可能有點難懂。我們可以這樣去了解,用例是參與者想要系統做的事情。對于用例的命名,我們可以給用例取一個簡單、描述性的名稱,一般為帶有動作性的詞。用例在畫圖中用橢圓來表示,橢圓下面附上用例的名稱。

三、什麼是用例圖

  用例圖(use case diagram)就是由主角、用例以及它們之間的關系構成的圖。該圖說明了用例模型中的關系。

      可以将用例圖組織到用例包中,并歸用例包所有,讓特定包中僅顯示互為關聯關系的内容。

      用例圖由參與者(Actor)、用例(Use Case)、系統邊界、箭頭組成,用畫圖的方法來完成。

      參與者不是特指人,是指系統以外的,在使用系統或與系統互動中所扮演的角色。是以參與者可以是人,可以是事物,也可以是時間或其他系統等等。還有一點要注意的是,參與者不是指人或事物本身,而是表示人或事物當時所扮演的角色。比如小明是圖書館的管理者,他參與圖書館管理系統的互動,這時他既可以作為管理者 這個角色參與管理,也可以作為借書者向圖書館借書,在這裡小明扮演了兩個角色,是兩個不同的參與者。參與者在畫圖中用簡筆人物畫來表示,人物下面附上參與 者的名稱。

如何發現角色:

  1. 使用系統的主要功能的人是誰(即主要角色)?

  2.需要借助于系統完成日常工作的人是誰?

  3.誰來維護,管理系統(次要角色),保證系統正常工作?

  4.系統控制的硬體裝置有哪些?

  5.系統需要與哪些其他系統互動?其他系統包括計算機系統,也包括該系統将要使用的計算機中的其他應用軟體。其他系統也分成兩類,一類是啟動該系統的系統,另一類是該系統要使用的系統。

  6.對系統産生的結果感興趣的人或事是哪些?

用例:用例代表的是一個完整的功能。

如何發現用例:

  1.角色需要從系統中獲得哪種功能?角色需要做什麼?

  2.角色需要讀取,産生,删除,修改或存儲系統中的某種系統嗎?

  3.系統中發生的事件需要通知角色嗎?或者角色需要通知系統某件事嗎?這些事件(功能)能幹些什麼?

  4.如果用系統的新功能處理角色的日常工作是簡單化了,還是提高了工作效率?

  5.還有一些與目前角色可能無關的問題,也能幫助模組化者發現用例,例如:

  6.系統需要的輸入/輸出是什麼資訊?這些輸入/輸出資訊從哪兒來到哪兒去?

  7.系統目前的這種實作方法要解決的問題是什麼(也許用自動系統代替手工操作)?

四、UML用例圖中用例之間的關系:

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

1)包含關系——include

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

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

  例如:業務中,總是存在着維護某某資訊的功能,如果将它作為一個用例,那添加、删除以及修改都要在用例詳述中描述,過于複雜;如果分成添加用例、修改用例和删除用例,則劃分太細。這時包含關系可以用來理清關系。        

        

UML模組化之用例圖關系

2)、擴充關系——extend

  擴充關系:将基用例中一段相對獨立并且可選的動作,UML用例圖關系中用擴充(Extension)用例加以封裝,再讓它從基用例中聲明的擴充點(ExtensionPoint)上進行擴充,進而使基用例行為更簡練和目标更集中。擴充用例為基用例添加新的行為。擴充用例可以通路基用例的屬性,是以它能根據基用例中擴充點的目前狀态來判斷是否執行自己。但是擴充用例對基用例不可見。

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

  例如,系統中允許使用者對查詢的結果進行導出、列印。對于查詢而言,能不能導出、列印查詢都是一樣的,導出、列印是不可見的。導入、列印和查詢相對獨立,而且為查詢添加了新行為。是以可以采用擴充關系來描述:

          

UML模組化之用例圖關系

在以下幾種情況下,可使用擴充用例:

  2.1).表明用例的某一部分是可選的系統行為(這樣,您就可以将模型中的可選行為和必選行為分開);

  2.2).表明隻在特定條件(如例外條件)下才執行的分支流;

  2.3).表明可能有一組行為段,其中的一個或多個段可以在基本用例中的擴充點處插入。所插入的行為段和插入的順序取決于在執行基本用例時與主角進行的互動。

            

UML模組化之用例圖關系

3)、泛化關系——generalization

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

UML模組化之用例圖關系
UML模組化之用例圖關系