对use case的一点理解——by Vega
在一般的UML建模過程中,分為以下幾個階段:業務、需求、分析和設計,其中設計又可分為結構分析和行為分析。業務是對商業模型的深刻理解,從商業模型里面提取出業務需求,然后把需求分解成一系列的用例。分析和設計是在用例的基礎上,對商業模型的結構和行為進行詳細具體的描述。結構分析一般是用類圖,類圖又可以按照M-V-C模型分為數據類、界面類和控制類。行為分析是描述三種類之間的流程操作關系,一般是用時序圖或者狀態圖來表示。
Use case國內翻譯為用例,它描述的是一個操作,而不是一個功能。傳統的軟件模型設計喜歡在需求分析把業務分解成功能模塊,這樣的弊端就是混淆了需求和設計的界限,因為功能模塊的劃分牽涉到系統的概要設計。在RUP里面提倡用use case來代替功能模塊的劃分。與功能模塊不同的是,用例不是站在開發者的角度,而是站在用戶的角度來分解系統,因為用戶并不想了解系統的內部結構和設計,他們關心的是系統的服務,即系統是如何去操作的,這就是用例的基本思想。用例模型主要由以下元素組成:
- 參與者(Actor)
參與者是指存在于被定義系統外部并與該系統發生交互的人或其他系統,他們代表的是系統的使用者或使用環境。?
- 用例(Use Case)
用例用于表示系統所提供的服務,它定義了系統是如何被參與者所使用的,它描述的是參與者為了使用系統所提供的某一完整功能而與系統之間發生的一段對話。?
- 通訊關聯(Communication Association)
通訊關聯用于表示參與者和用例之間的對應關系,它表示參與者使用了系統中的哪些服務(用例),或者說系統所提供的服務(用例)是被哪些參與者所使用的。?
三種元素在UML用圖形表示如下:
Actor可以是用戶,也可以是系統,它的選擇取決于用例的邊界范圍,即用例是由誰來觸發的,是用戶?還是系統?如果是用戶觸發的,那么它稱為業務用例;如果是系統觸發的,它稱為系統用例。用例的內容包括了幾個操作場景,其中最主要的一個場景稱為基本流,它代表用例的主要流程。但是一個用例里面的流程可能包括一些意外情況或者失敗場景,那么這些場景就稱為備選流。例如,在電話通訊系統里面,通話過程是基本流,而占線或者掛斷就是備選流。
描述用例除了用例圖,還有用例規約,或者說是用例文檔。RUP中提供的用例規約包括這些內容:
- 簡要說明 (Brief Description)
簡要介紹該用例的作用和目的。?
- 事件流 (Flow of Event)
包括基本流和備選流,事件流應該表示出所有的場景。?
- 用例場景 (Use-Case Scenario)
包括成功場景和失敗場景,場景主要是由基本流和備選流組合而成的。?
- 特殊需求 (Special Requirement)
描述與該用例相關的非功能性需求(包括性能、可靠性、可用性和可擴展性等)和設計約束(所使用的操作系統、開發工具等)。?
- 前置條件 (Pre-Condition)
執行用例之前系統必須所處的狀態。?
- 后置條件 (Post-Condition)
用例執行完畢后系統可能處于的一組狀態。?
基本流的描述一般按照這樣的格式:1.每個步驟都有數字編號來表明它的先后順序;2.每個步驟都有簡短的標題來概括它的內容;3.每個步驟要詳細描述參與者跟系統之間的交互,一般按照正反兩個方面來描述:(1)參與者向系統提交了什么信息;(2)系統作出了什么反應。
備選流除了包括基本流類似的描述外,還包括:
(1)??? 起點:備選流從事件流的哪一步開始;
(2)??? 條件:在什么條件下觸發;
(3)??? 動作:備選流下系統采取了哪些操作;
(4)??? 恢復:備選流結束后,用例如何繼續。
有時候為了體現用例之間的業務關系,提高系統的可維護度和一致性,用例之間可以抽象出包含(include)、擴展(extend)和泛化(generalization)這幾種關系。
包含:在一些模型中,很多用例都會包括一些相同的行為,而我們就可以把這些相同的行為單獨抽象成一個用例,然后用其他的用例來包含這個用例。從而避免在多個用例里面重復設計一個操作,也避免同一個操作在不同的用例里面的描述出現不一致。需要修改的時候,也只需要一個用例,避免修改多個用例出現的不一致和重復工作。
例如,一個ATM系統里面,如果銀行客戶的查詢、提款和轉帳操作都需要打印回執,那么我們就可以把打印回執這個操作提取出來稱為一個用例,而原有的查詢、提款和轉帳操作都可以包含這個用例,提高系統的可維護性。
擴展:擴展是將事件流程里面一些相對獨立并且可選的動作擴展為新的用例,并且在基用例的擴展點進行擴展。它與包含的區別是,包含的事件是必須存在的動作,而擴展是提供一些備選的動作。擴展也可以抽象為基用例的備選流,擴展出來的用例可以讓基用例變得更加簡練。
例如,在電話業務里面,在基本通話業務的基礎上可以擴展一些增值業務,比如語音信箱、呼叫轉移和呼叫等待等。
泛化:泛化也叫繼承,如果多個用例之間有同樣的 結構、行為的時候,我們可以把它們的共性抽象為父用例,其他用例作為泛化關系中的子用例。
例如,用戶執行上傳操作,他有可能上傳文檔,也有可能上傳圖片,或者上傳視頻,但是它們都可以抽象成為上傳功能。
?
總結
以上是生活随笔為你收集整理的对use case的一点理解——by Vega的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电气工程及其自动化
- 下一篇: 医咖会免费SPSS教程学习笔记—二元逻辑