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