UML 使用案例圖表:方針
在 Visual Studio Ultimate 中,您可以畫一個「使用案例圖表」來說明哪些人使用您的應用程式或系統,以及可執行的工作有哪些。 若要建立 UML 使用案例圖表,請在 [架構] 功能表上,按一下 [新增圖表]。
如需觀看示範影片,請參閱將功能組成使用案例 (英文)。
有了使用案例圖表的協助,您就可以討論和溝通:
系統或應用程式與人員、組織或外部系統進行互動的案例。
協助達成行動的目標。
系統的範圍。
使用案例圖表不會顯示使用案例的詳細資料:它只會摘要說明使用案例、行動和系統之間的某些關聯性。具體而言,圖表不會顯示達成每一個使用案例的目表所執行步驟的順序。您可以在連結到每一個使用案例的其他圖表或文件中說明這些詳細資料。如需詳細資訊,請參閱本主題內的詳細說明使用案例。
您針對使用案例提供的說明將用到許多與系統執行所在商務領域相關的詞彙,例如「特價」、「菜單」、「顧客」等。因此務必清楚定義這些詞彙及其關聯性,您可以透過「UML 類別圖表」的協助這方面的工作。如需詳細資訊,請參閱UML 類別圖表:方針。
使用案例只會在系統的操作需求內處理。其他需求 (例如商務規則、服務需求品質和實作條件約束) 則必須另外表示。架構和內部詳細資料也必須另行說明。如需如何定義使用者需求的詳細資訊,請參閱模型化使用者要求。
本主題中使用的範例是關於顧客可從當地餐廳訂購餐點的網站。
「行動」(Actor) (1) 是與您的系統互動的人員、組織、裝置或外部軟體元件的類別。範例行動包括「顧客」、「餐廳」、「溫度感應器」、「信用卡授權中心」。
「使用案例」(Use Case) (2) 代表一個或多個行動為追求特定目標所執行的動作。範例使用案例包括「訂購餐點」、「更新菜單」、「付款流程」。
在使用案例圖表上,使用案例會與執行使用案例的行動相關聯 (3)。
您的「系統 (4)」(System) 是您開發的任何系統。您的系統可能是小型軟體元件,其行動就是其他軟體的元件;它也可能是完整的應用程式,或者是部署到許多電腦或裝置的大型分散式應用程式套件。範例子系統包括「餐點訂購網站」、「餐點外送服務」、「第 2 版網站」。
使用案例圖表可顯示您的系統或其子系統支援哪些使用案例。
本主題內容
繪製使用案例圖表的基本步驟
繪製行動和使用案例
詳細說明使用案例
建構使用案例
使用子系統範圍
繪製使用案例圖表的基本步驟
注意事項 |
---|
HOW TO:編輯 UML 模型和圖表中會說明建立任何模型圖表的詳細步驟。 |
若要建立新的使用案例圖表
按一下 [架構] 功能表上的 [新增圖表]。
在 [範本] 下,按一下 [UML使用案例圖表]。
命名圖表。
在 [加入至模型專案] 中,選取方案中的現有模型專案,或 [建立新模型專案],然後按一下 [確定]。
若要繪製使用案例圖表
從工具箱將 [子系統] 範圍拖曳至圖表上,以代表整個系統或是其主要元件。
如果您不想說明系統或其元件支援的使用案例,可以只繪製使用案例圖表,而不包括系統範圍。
拖曳系統的一角將它放大 (如有需要)。
適當地重新命名系統。
從工具箱將 [行動] 拖曳至圖表 (將它們放置在任何系統範圍外)。
行動代表與您系統互動的使用者、組織和外部系統的類別。
重新命名動作項目。例如:「顧客、餐廳、信用卡機構」。
從工具箱將 [使用案例] 拖曳到適當的系統上。
使用案例代表行動透過您的系統協助所執行的活動。
使用行動本身了解的標題重新命名使用案例。請不要使用與程式碼相關的標題。例如:「訂購餐點、餐點付款、餐點外送」。
開始進行主要交易,例如「訂購餐點」,較小型的交易如「選擇菜單項目」則留到稍後再進行。
將每一個使用案例放置到支援的系統或主要子系統中 (略過任何僅涉及連接使用者的外觀或元件)。
您可以在系統範圍外繪製使用案例,表示特定版本或版次的系統不支援該使用案例。
按一下工具箱上的 [關聯],並按一下使用案例,然後按一下參與使用案例的行動。以此方式將每一個行動連結到其使用案例。
以 [Include]、[Extend] 和 [Generalization] 關聯性建構使用案例。若要建立這些連結,請依序按一下工具、來源使用案例和目標。請參閱下面標題為建構使用案例的章節。
詳細說明使用案例。請參閱下面標題為詳細說明使用案例的章節。
分別繪製用於不同子系統或是不同相關使用案例群組的圖表。一個模型專案中的所有圖表為相同模型的檢視。
繪製行動和使用案例
使用案例圖表的主要目的在於顯示哪些人與您的系統互動,以及這些人達到的主要目標。
建立 [行動],代表與您系統或子系統互動的人員、組織、其他系統、軟體或裝置的類別。
若要了解如何繪製行動和其他項目,請參閱 HOW TO:編輯 UML 模型和圖表。
依類型或角色識別每一組明確目標的行動 (即使實際的人員或實體可能相同)。例如,「餐廳」和「顧客」是不同的行動,即使餐廳員工有時可能會是顧客。
為每一個行動希望藉由系統達成的每一個目標建立 [使用案例 ]。
- 使用行動能了解的用語為使用案例命名並加以說明,而不要使用實作詞彙。
使用 [關聯] 連結行動與使用案例。
行動之間的繼承
您可以在行動之間繪製 [Generalization] 連結。範例中「俱樂部顧客」之類的特製化行動,會繼承「顧客」之類一般化行動的使用案例。箭頭應指向更一般的行動,例如「顧客」。當您建立連結時,請先指向較為特製化的行動。
特製化行動可以額外擁有專用的使用案例,其他行動無法使用。
警告 |
---|
您不應建立一般化關聯性迴圈,造成行動一般化本身。迴圈可能產生錯誤。 |
其他行動圖示
您可以使用自訂圖示代表行動,而不使用標準的簡筆畫圖案。例如,您可以改用模仿裝置、餐廳、銀行等的圖案。
若要變更行動的外觀
以滑鼠右鍵按一下行動,然後按一下 [屬性]。
[屬性] 視窗隨即出現。
將 [影像路徑] 屬性設定為影像檔的位置。
您可以使用數種影像格式,包括 .gif、.jpg 和 .bmp。
使用方案或專案原始檔控制內含的檔案,如此即使方案移動或複製,此檔案仍然可以使用。
若要在其他使用案例圖表中複製此外觀,請複製行動並貼入其他圖表中。
- 影像變更只會套用至特定圖表中的檢視,而不會套用至基礎模型項目。如果您從 [UML 模型總管] 將行動拖曳到其他圖表上,則行動會顯示為標準的簡筆畫圖案。
行動和使用案例之間的多重性
行動和使用案例之間的關聯可在兩端顯示「多重性」(Multiplicity)。
注意事項 |
---|
如果兩者都是 1,則使用案例圖表上關聯的多重性會隱藏。 |
每個多重性皆預設為 1。在嚴謹的模型解譯中,多重性為 1 表示每一種餐點都只有一位顧客訂購,而且每一位顧客一次只訂購一種餐點 (舉例而言)。
您可以變更這些多重性。
例如:
若要表示相同類別的數個行動可以參與單一使用案例,請將關聯中行動端的多重性設為 [1..*]。
在圖中,一家或多家餐廳可以參與提供相同的餐點訂購服務。
若要顯示每一個行動都可以同時參與數個使用案例,請將關聯中使用案例端的多重性設為 [*]。
在圖中,每一家餐廳一次都可以提供多種訂購服務。
若要設定關聯上的多重性
以滑鼠右鍵按一下關聯,然後按一下 [屬性]。
展開 [第一個角色] 或 [第二個角色]。
「角色」(Role) 是指位於關聯的其中一端的項目。
設定 [多重性] 屬性,從清單選擇:
[1],表示這個角色只有一個執行個體參與每一個連結。
[1..*],表示這個角色有一個或多個執行個體參與每一個連結。
[0..1],表示可選擇性參與。
[*],表示這個角色有零或多個執行個體參與此連結。
注意事項 |
---|
許多小組並未在使用案例圖表上放置多重性資訊,而讓多重性採用預設值 1。他們會另外於使用案例說明中提供資訊。在此情況下,使用案例圖表中的所有多重性將會隱藏。 |
在多個圖表上使用行動或使用案例
您可以在數個圖表上顯示相同的行動和使用案例。例如:
您可以在不同的圖表中描述與某個行動相關的不同使用案例。
您可以使用一個圖表顯示與使用案例相關聯的行動和子系統,並且使用另一個圖表顯示使用案例如何建構成包含和擴充的使用案例。
若要在不同的圖表上顯示相同的行動或使用案例
在某個圖表上建立行動或使用案例。
在另一個圖表上建立使用案例圖表。
從 [模型總管] 將行動或使用案例拖曳到新圖表上。
注意事項 如果您將已相關聯的行動和使用案例放置到新圖表上,則兩者之間的關聯將自動出現在新圖表上。
詳細說明使用案例
使用案例代表:
行動使用系統的目標,例如「購買餐點」;以及
一種或多種「案例」(Scenario),也就是為追求目標所執行的步驟順序,例如:{訂購餐點、付款、外送}。除了成功的案例之外,可能也會有數種例外狀況或失敗的案例,例如「信用卡遭拒」。
使用案例可透過不同的詳細程度加以說明。在早期設計階段,只要使用案例圖表上的名稱即可。此後可以陸續撰寫更詳細的案例說明。
在 Visual Studio Ultimate 中,您可以分別或一併利用許多方式說明使用案例:
將使用案例連結至專案中的其他圖表。
活動圖表可幫助您說明更複雜的流程,其中包含迴圈、分支和平行執行緒。此外還可顯示部分程序的資料流程。如需詳細資訊,請參閱UML 活動圖表:方針。
順序圖表可幫助您說明不同行動之間一系列複雜的互動。您還可以用它來顯示系統內部對每一個使用案例的回應。如需詳細資訊,請參閱UML 順序圖表:方針。
將使用案例連結至可詳細說明使用案例的 OneNote 頁面、區段或段落。
將使用案例連結到 Word 文件,您可在其中使用文字、螢幕擷取畫面等說明使用案例 (Case) 的案例 (Scenario)。如需詳細資訊,請參閱模型化使用者要求。
若要將使用案例連結至相同方案中的圖表或檔案
繪製順序圖表或活動圖表之類的圖表,以說明使用案例的情節。
返回使用案例圖表。
從 [方案總管] 將圖表或檔案拖曳到使用案例圖表的空白部分。
使用 [相依性] 從成品連接到使用案例。
若要連結至 Word 文件或 PowerPoint 簡報之類的方案檔
撰寫文件,在其中使用文字、螢幕擷取畫面等說明使用案例 (Case) 的案例 (Scenario)。
將文件加入至方案。
將 Word 文件移到與方案相同的 Windows 資料夾內。
在 [方案總管] 中,以滑鼠右鍵按一下方案,指向 [加入],然後按一下 [現有項目]。
巡覽至 Word 文件,然後按一下 [加入]。
Word 文件會出現在 [方案總管] 的方案資料夾中。
從 [方案總管] 將 Word 文件拖曳到使用案例圖表的空白部分。
新的成品隨即出現。
使用 [相依性] 從成品連接到使用案例。
若要連結至共用文件、OneNote 項目或網頁
取得共用項目的 URL。舉例來說,這可能是網路檔案路徑的開頭 '\\'、或網頁或 Sharepoint URL 的開頭 'http://',或是 OneNote 區段、頁面或段落之連結的開頭 'onenote:'。
按一下 [工具箱] 中的 [成品],然後按一下使用案例圖表。
在選取新成品後,將 URL 輸入或貼入 [超連結] 屬性中。
注意事項 |
---|
按兩下成品,即可開啟成品連結的圖表或文件。 |
將使用案例連結至工作項目
如果專案使用 Visual Studio Team Foundation Server 2010 且您擁有 Team Explorer,則可以將每一個使用案例連結至 Team Foundation 中的工作項目。若要了解如何建立這些連結,請參閱 連結模型項目和工作項目。
這樣可讓您:
說明連結的工作項目中的使用案例。具體而言,如果專案使用 Visual Studio Formal Process Template,則您可以連結至 [使用案例工作項目]。此工作項目類型提供說明使用案例 (Case) 的目標和案例 (Scenario) 的欄位。
將測試案例連結至使用案例,您就能取得正在開發的程式碼實作使用案例的程度報告。
將工作連結至使用案例,您就可以追蹤開發工作的進度。
建構使用案例
您應嘗試僅使用少數主要使用案例說明系統的行為。每一個大型使用案例都會定義行動達成的主要目標,例如購買產品;或是從廠商的角度來看,提供銷售的產品。
當您釐清這些目標之後,就可以深入了解達成每一個目標的方式,以及基本目標的變化。
避免將使用案例分解成太多細節。使用案例是關於使用者對於您系統的體驗,而不是內部工作內容。此外,一般來說您將發現及早建立可執行的程式碼版本較具生產力,而不是花時間建構使用案例的細節。
您可以在使用案例圖表上摘要說明主要和詳細使用案例的關聯性。下列章節將說明此方法:
使用 Include 顯示使用案例的詳細資料
使用 Generalization 共用目標
使用 Extend 分出變化的案例
使用 Include 顯示使用案例的詳細資料
使用 [Include] 關聯可顯示某一個使用案例說明另一個使用案例的部分詳細資料。在圖中,「訂購餐點」包括「付款」、「選擇菜單」和「選擇菜單項目」。每一個包含的詳細使用案例都是行動要達成包含使用案例的整體目標,可能必須執行的一個步驟。箭號應指向更詳細的被包含使用案例。
警告 |
---|
您不應建立 Include 關聯性迴圈,造成使用案例包含自己本身。迴圈可能產生錯誤。 |
您可以共用包含的使用案例。在範例中,「訂購餐點」和「訂閱評論」使用案例都包含「付款」。
所包含使用案例的目標和案例應各有自己的定義,以便包含在之後設計的使用案例中。
將使用案例分成包含和被包含部分,對於達成下列目標來說相當實用:
將您的使用案例說明建構成不同程度的詳細資料。
避免在不同使用案例中共用案例。
定義詳細步驟的順序
使用案例圖表不會說明詳細步驟必須執行的順序,也不會說明每一個步驟是否為必要。
為釐清步驟的順序,您可以使用 [成品] 將另一個文件附加至包含使用案例。在下列範例中,活動圖表會附加至「訂購餐點」使用案例。或者,您可以使用包含步驟清單或螢幕擷取畫面順序的文字文件。如需詳細資訊,請參閱詳細說明使用案例。
使用活動圖表時,請注意下列命名慣例:
整個活動的名稱與包含使用案例的名稱相同。
活動圖表中動作的名稱與被包含使用案例的名稱相同。
如需詳細資訊,請參閱UML 活動圖表:方針。
使用 Generalization 共用目標
使用 Generalization 關聯可顯示,「特製化」(Specialized) 使用案例是達成另一個「一般」(General) 使用案例所表示之目標的特定方式。開放式箭頭應指向更普通的使用案例。
例如「付款」會一般化「信用卡付款」和「現金付款」。
警告 |
---|
您不應建立一般化關聯性迴圈,造成行動一般化本身。迴圈可能產生錯誤。 |
特製化使用案例可幫助您顯示系統可達成同一目標的不同方式。
特製化使用案例會視為繼承一般使用案例的目標和行動。一般使用案例不需要擁有自己的案例;其特製化會說明達成目標的不同方式。
若要重構兩個或多個使用案例的共同目標
建立並命名新的一般使用案例。
建立 [Generalization] 關聯,其中大箭號指向新的一般使用案例。
按一下工具箱中的 [Generalization]。
按一下特製化使用案例 (範例中為「信用卡付款」)。
按一下一般使用案例 (範例中為「付款」)。
如果您已說明特製化使用案例的目標,請將共同部分移到一般使用案例的說明中。
特製化使用案例之間共用的行動可以移到一般使用案例中。
使用 Extend 分出變化的案例
使用 Extend 連結可顯示,某一個使用案例在某種情況下可將功能加入至另一個使用案例中。箭號應指向擴充的主要使用案例。
警告 |
---|
您不應建立擴充關聯性迴圈,造成行動一般化本身。迴圈可能產生錯誤。 |
例如,一般網站的「登入」使用案例可以包含「註冊新使用者」,但是只有在使用者並未擁有帳戶的情況下才可行。
若要將使用案例分割成主要和擴充部分
建立並命名新的擴充使用案例。
建立 [Extend] 關聯,其中箭號指向擴充的使用案例。
按一下工具箱中的 [Extend]。
按一下擴充使用案例 (範例中為「註冊新使用者」)。
按一下擴充的使用案例 (範例中為「登入」)。
注意事項 避免在圖表中建立 Extend 關聯的迴圈。使用不可為其本身的擴充。
如果您已為擴充的使用案例建立案例,請將相關步驟移至擴充的案例中。
擴充 (範例中為「註冊新使用者」) 的說明應包含在主要使用案例案例中發生的位置,以及在哪些情況下發生等詳細資料。您可將此視為修改主要案例的說明。
擴充使用案例 (Case) 代表的案例 (Scenario) 步驟可能會是主要使用案例 (Case) 案例 (Scenario) 的一部分。擴充的案例和目標會固定在主要使用案例的內容中讀取,因此不需各自有額外的功能。
分出擴充有助於說明這些情況:
有些行動僅與擴充使用案例相關。例如,必須有系統管理員核准顧客在網站上的註冊。
另一個子系統將處理擴充使用案例。
此擴充將只在特定版本的系統中使用。您可以在使用案例圖表中將每一個版本當做個別的子系統顯示。
使用子系統範圍
使用子系統範圍可顯示哪些使用案例包含在系統範圍內。
若要繪製子系統範圍
在工具箱中按一下 [子系統],然後按一下圖表。
子系統會出現在圖表上。
拖曳子系統的角落,即可調整其大小。
將現有使用案例拖入或拖出子系統中,即可調整其內容。
-或-
若要直接在子系統中建立新的使用案例,請按一下工具箱中的 [使用案例],然後按一下子系統內部。
注意事項 |
---|
使用案例的 [主旨] 屬性表示內含哪一種子系統。 |
系統範圍外的使用案例
在圖表上包含屬於業務一部分,但不是由您所開發系統處理的使用案例,常有其實用之處。這樣有助於開發人員了解其工作的內容。例如,「餐點外送」可以顯示為與「餐廳」和「顧客」行動相關的使用案例,但是不包含在「餐點訂購網站」的責任範圍內。
多個子系統
您可以建立數個子系統範圍,顯示不同的系統元件如何處理不同的使用案例。例如,「加入餐廳評價」可在另外的網站論壇上處理。務必記得,使用案例圖表應處理使用者可看見的內容。如果您要說明系統內部的細部工作,請考慮使用元件圖表。
系統版本
您可以使用不同的子系統範圍表示不同版本的系統。例如,「付款」使用案例可能包含在第 2 版網站內,但不包含在第 1 版網站內。這表示系統可幫助顧客訂購。不過,顧客必須直接付款給餐廳。
使用 [相依性] 關聯可連結代表不同版本或變化的子系統。