2010-01-30 54 views
0

讀的書約UML,我不明白以下幾點:問題有關UML擴展/包括本書實例

         --------include---> Add new manufacturer 
    Servoce Assistant---Add new product 
            <--------extend----Add new product type  

我只是不明白。如果還沒有知名的製造商,則使用包含的案例添加製造商。但是,如果它還不是已知的類型,那麼是否延伸?這對我來說沒有任何意義。如果只有添加製造商可以從不同的地方調用,但添加新的產品類型僅適用於這種情況,那將是有意義的。這是對的嗎? 謝謝!

+0

杜佩http://stackoverflow.com/questions/2167688/uml-relation-between-usecases-extend-include的同一個用戶 – 2010-01-30 15:35:05

+1

不,不是,我的上一個問題是一般的,這是特定於所述的例子... – Thomas 2010-01-30 15:47:41

回答

0

首先,您需要在此給人們一些背景。您正在使用用例圖。其次,我通常遠離使用UML的擴展;但我會放棄它。 「包含」用於模塊化用例。例如,「用戶登錄」使用了很多,並且「包含」比寫出每個用例中的步驟要容易得多。「擴展」嘗試對用例使用泛化/繼承,但我不我認爲它非常好,可用。這裏有一個例子,「添加虎」擴展了「添加動物」。再次,我會保持從「延伸」的方式。

0

托馬斯,你的意思是extension points而不是擴展類?

以LWoodyiii的登錄示例爲例,您將擁有一切完美的使用場景作爲起點,然後您可以將擴展添加到該場景可能出錯的地方。

有很多examples那裏,只是谷歌爲uml用例擴展

1

如果還沒有知名的製造商,它使用包含案例添加製造商。 但如果它尚未知名類型,有擴展?這對我來說沒有任何意義。

我不完全確定它對我有意義。

的UML2規範說的包括(16.3.5節):

一種包括兩個用例之間的關係意味着在包括用例中定義的行爲包括在鹼的使用行爲 案件。包含關係旨在用於兩個或多個用例的行爲有共同部分的情況。這個公共部分然後被提取到一個單獨的用例中,以包含在所有具有這個部分共同的基本用例中。由於包含關係的主要用途是重用通用部分,所以在基本用例中留下的內容通常本身並不完整,但依賴於包含的部分是有意義的。這個 反映在關係的方向上,表明基本用例取決於添加但不是副作用 。

包含的用例的執行類似於子程序調用。包含用例的所有行爲是在包含用例的單個位置執行的 ,然後繼續執行包含用例。

...

請注意,包含的用例不是可選的,並且始終需要包含用例才能正確執行。

的並且延伸(16.3.3節):

該關係規定了一個使用例的行爲可以通過另一個(通常是 補充)的行爲進行擴展用例。該擴展發生在擴展使用 案例中定義的一個或多個特定擴展點處。但是,請注意,擴展用例是獨立於擴展用例而定義的,並且與擴展用例無關,而是有意義的 。另一方面,擴展用例通常定義的行爲本身並不一定有意義。相反,擴展用例定義了一組模塊行爲增量,它們在特定條件下增加了擴展用例的執行。

...

如果擴展的條件爲真在 延長使用了該案的執行,在達到第一個擴展點,那麼所有的擴展的適當行爲片段的時間用例也將被執行。如果 條件爲false,則不會發生擴展。

用例在OOD語言中是比較程序化的東西。包括子例程調用。擴展是可選的過程,或者像條件邏輯或template method pattern,其中主要方法可能調用或不調用更具體的實現。

作爲一個用例是一個分類器,您可以在用例之間使用與用例之間相同的泛化關係來表示泛化。擴展和包含表示可選和必需的子行爲。

如果只有添加製造商可以從不同的地方調用添加新的產品類型只存在這種情況下,這將是有意義的。這是對的嗎?謝謝!

它說,只要你添加一個產品,你總是添加一個新的製造商,有時你可能會添加一個新的產品類別。它沒有說明是否有任何用例是從其他地方調用的,但通常情況下,如果它們是通用的,那麼你只會分解包含的用例。鑑於真實世界的製造商製造不同的產品,這可能是一個糟糕的例子。

5

下面的解釋可能有助於澄清「擴展」和「包括」關於用例圖的關係:

包括:一個包括用例調用或調用收錄其中。包含用於顯示如何使用 案例分成較小的步驟。包含的用例在 末尾。

延伸:擴展用例向延伸使用 案例添加目標和步驟。在特定條件下,分機只能操作 。擴展的 用例位於箭頭末端。

Include and Extend relationships on a use case diagram http://i.msdn.microsoft.com/Dd409427.UML_UCOvStructure(en-us,VS.100).png

UML用例圖:參考在由http://msdn.microsoft.com/en-us/library/dd409427%28VS.100%29.aspx