一、Use Case 概述 Use Case,它描述的是一個操作,而不是一個功能。傳統的軟件模型設計喜歡在需求分析把業務分解成功能模塊,這樣的弊端就是混淆了需求和設計的界限,因為功能模塊的劃分牽涉到系統的概要設計。在RUP里面提倡用use case來代替功能模塊的劃分。與功能模塊不同的是,用例是站在用戶的角度來分解系統,用戶并不想了解系統的內部結構和設計,他們關心的是系統所能提供的服務,即系統是如何去操作的,這就是用例的基本思想。用例模型主要由以下元素組成:
1、參與者(Actor):參與者是與系統發生交互的外部用戶、系統或其他硬件設備,參與者可以是人、另一個計算機系統或一些可運行的進程等。
2、用例(Use Case):用例用于表示系統所提供的服務,它定義了系統是如何被參與者所使用的,它描述的是參與者為了使用系統所提供的某一完整功能而與系統之間發生的一段對話。
3、通訊關聯(Communication Association) :通訊關聯用于表示參與者和用例之間的對應關系,它表示參與者使用了系統中的哪些服務(用例),或者說系統所提供的服務(用例)是被哪些參與者所使用的。
二、用例之間的關系
1、包含(include),將若干用例中一些相同的行為,單獨抽象成一個的用例,然后其他用例來包含這個用例。這樣避免在多個用例里面重復設計同一個操作,也避免同一個操作在不同的用例里面的描述出現不一致。需要修改的時候,也只需要一個用例,避免修改多個用例出現的不一致和重復工作。例如:銀行ATM系統,用戶取款、存款時,都會打印憑證,我們將打印憑證抽象出來,取款、存款等操作時包含打印任證這個行為。
2、擴展(extend),擴展是將事件流中一些相對獨立并且可選的行為擴展為新的用例,并且在基用例上的擴展點進行擴展。與包含關系不同的是,包含的事件是必須存在的動作,并且該用例的事件流一定要插入到基礎用例中;而擴展是提供一些備選動作,可根據條件來決定是否將擴展用例的事件流插入基礎用例的事件流中。擴展也可以抽象為基用例的備選流,擴展出來的用例可以讓基用例變得更加簡練。例如:在通話業務的基礎上可擴展一些增值業務,如語音信箱、呼叫轉移等。
3、泛化(generalization) ,也叫繼承(泛化是分析領域術語,繼承是設計和實現領域術語,通常用繼承來解決泛化問題)。當多個用例擁有相同的結構、行為時,我們可以把它們的共性部份抽象出來成為父用例,而其他用例作為泛化關系中的子用例。在泛化關系中,子用例是父用例的特殊形式,子用例繼承了父用例所有的結構、行為以及關系。例如:訂票是網上訂票用例和電話訂票用例的抽象。
三、建立用例模型
1、確定參與者,可以從以下問題入手:
系統開發完成之后,有哪些人會使用這個系統?
系統需要從哪些人或其他系統中獲得數據?
系統會為哪些人或其他系統提供數據?
系統會與哪些其他系統相關聯?
系統是由誰來維護和管理的?
2、確定用例,尋找用例可以從以下問題入手(針對每一個參與者):
參與者為什么要使用該系統?
參與者是否會在系統中創建、修改、刪除、訪問、存儲數據?如果是的話,參與者又是如何來完成這些操作的?
參與者是否會將外部的某些事件通知給該系統?
系統是否會將內部的某些事件通知該參與者?
posted on 2009-03-19 22:21
josson 閱讀(491)
評論(1) 編輯 收藏 所屬分類:
軟件設計