2014-02-23 15 views
0

我目前正在刷新/改變我在軟件開發方面的知識,因爲我很快就會在這方面工作。我們已經在大學學到了很多關於UML圖和編碼的知識,但是我從來沒有把它們放在一個真正的項目中。因此,我開始在Grails中創建一個測試Web應用程序,並且我希望從需求分析開始,並且使用案例也保持接近實際。我是否對那些擴展或包含用例使用相同的actor?

我的網絡應用程序應該允許用戶共享食譜,查找食譜和審查其他用戶的食譜。每一個食譜都有很多成分,不僅僅是字符串,而是實體,所以卡路里,脂肪,蛋白質和碳水化合物可以用來自動計算某一配方的營養成分。

一種成分可以由消費者或營養專家添加到數據庫中。如果它是由消費者創建的,它只是一種「預期」成分,這意味着它必須由管理員驗證才能成爲「適當」的成分 - 否則它會被標記,例如。紅色的文字顏色。

這是我目前用例圖:

http://ubuntuone.com/0zDw9kEbj1BwtXjnCtxdwC

我的問題在這裏:

  • ,如果我使用包括或延長,我將不得不使用那些相同的主要參與者擴展或包含用例? (在截圖:難道AddProspectiveIngredient有不同的主要參與者比CreateRecipeinclude同樣的問題?)

編輯:我不認爲這個問題被廣泛問:如果我使用包括或延長,將我必須爲擴展或包含用例使用相同的主角色?

我同意,因爲這是我的#2第一個問題,那有一開始一些不必要的樣板。如果是這種情況,我可以編輯我的問題以保持開放。我仍然希望有人能夠偶然發現併爲我提供更多的知識或來源。

回答

1

如果我使用包括或延伸,我將不得不使用相同的主演員爲那些延伸或包括用例?

Extend指一個用例是另一個的變化。這是定義,對不起。所以,我不確定你是否真的想要這樣做,但不同的參與者可以輕鬆地進行不同的活動變化。

至於include,它不是那麼簡單。一種行爲被插入另一種行爲。這對用例的一般化有一些變化。

所以,如果行爲的包括B,和演員X只連接A和演員Y的連接不僅沒有這一切只B,這意味着,是Y真叫一個,太。 X具有Y和所有其他行爲的所有行爲。這意味着,X是Y的派生,或X是Y.

的子類

簡單地說,如果你有A和B不同的不綁的演員,你根本弄錯了。他們是捆綁的。

enter image description here

+0

再次感謝您的回覆。在你的例子中,這是否意味着你可以創建一個聚合用例'AB',其中X是主要的,Y是次要的?因此,Y幫助X實現了他們的目標,因此完成使用案例A. – nst1nctz

+0

@ user3025256恕我直言,X和Y都會與AB合作,但他們中的哪些人是次要的,取決於客戶的看法。 X可以做更多的事情。但這並不意味着他總是更重要。什麼是主要的,什麼是次要的與模型抽象無關。這只是我們對重要性的評估。這些信息有助於瞭解整個域名及其使用情況,在我們的計劃中應予以考慮,但這是比整個IT系統級別更高的信息。 – Gangnus

+0

我剛剛發現我爲什麼對這個問題感到困惑的原因。在我們在大學使用的一本書中,由Noushin和Hessam Ashrafi撰寫的面向對象系統分析和設計Pearson國際版,討論了這個話題。 「擴展用例的主要參與者必須與基本用例的主要參與者相同」(第226頁)但本書並沒有將這個問題與包含關係進行討論。遵循這個規則是明智的嗎? – nst1nctz

相關問題