posts - 122,  comments - 25,  trackbacks - 0
          一、Use Case 概述 Use Case,它描述的是一個(gè)操作,而不是一個(gè)功能。傳統(tǒng)的軟件模型設(shè)計(jì)喜歡在需求分析把業(yè)務(wù)分解成功能模塊,這樣的弊端就是混淆了需求和設(shè)計(jì)的界限,因?yàn)楣δ苣K的劃分牽涉到系統(tǒng)的概要設(shè)計(jì)。在RUP里面提倡用use case來(lái)代替功能模塊的劃分。與功能模塊不同的是,用例是站在用戶的角度來(lái)分解系統(tǒng),用戶并不想了解系統(tǒng)的內(nèi)部結(jié)構(gòu)和設(shè)計(jì),他們關(guān)心的是系統(tǒng)所能提供的服務(wù),即系統(tǒng)是如何去操作的,這就是用例的基本思想。用例模型主要由以下元素組成: 
          1、參與者(Actor):參與者是與系統(tǒng)發(fā)生交互的外部用戶、系統(tǒng)或其他硬件設(shè)備,參與者可以是人、另一個(gè)計(jì)算機(jī)系統(tǒng)或一些可運(yùn)行的進(jìn)程等。
          2、用例(Use Case):用例用于表示系統(tǒng)所提供的服務(wù),它定義了系統(tǒng)是如何被參與者所使用的,它描述的是參與者為了使用系統(tǒng)所提供的某一完整功能而與系統(tǒng)之間發(fā)生的一段對(duì)話。
          3、通訊關(guān)聯(lián)(Communication Association) :通訊關(guān)聯(lián)用于表示參與者和用例之間的對(duì)應(yīng)關(guān)系,它表示參與者使用了系統(tǒng)中的哪些服務(wù)(用例),或者說(shuō)系統(tǒng)所提供的服務(wù)(用例)是被哪些參與者所使用的。

          二、用例之間的關(guān)系
          1、包含(include),將若干用例中一些相同的行為,單獨(dú)抽象成一個(gè)的用例,然后其他用例來(lái)包含這個(gè)用例。這樣避免在多個(gè)用例里面重復(fù)設(shè)計(jì)同一個(gè)操作,也避免同一個(gè)操作在不同的用例里面的描述出現(xiàn)不一致。需要修改的時(shí)候,也只需要一個(gè)用例,避免修改多個(gè)用例出現(xiàn)的不一致和重復(fù)工作。例如:銀行ATM系統(tǒng),用戶取款、存款時(shí),都會(huì)打印憑證,我們將打印憑證抽象出來(lái),取款、存款等操作時(shí)包含打印任證這個(gè)行為。
          2、擴(kuò)展(extend),擴(kuò)展是將事件流中一些相對(duì)獨(dú)立并且可選的行為擴(kuò)展為新的用例,并且在基用例上的擴(kuò)展點(diǎn)進(jìn)行擴(kuò)展。與包含關(guān)系不同的是,包含的事件是必須存在的動(dòng)作,并且該用例的事件流一定要插入到基礎(chǔ)用例中;而擴(kuò)展是提供一些備選動(dòng)作,可根據(jù)條件來(lái)決定是否將擴(kuò)展用例的事件流插入基礎(chǔ)用例的事件流中。擴(kuò)展也可以抽象為基用例的備選流,擴(kuò)展出來(lái)的用例可以讓基用例變得更加簡(jiǎn)練。例如:在通話業(yè)務(wù)的基礎(chǔ)上可擴(kuò)展一些增值業(yè)務(wù),如語(yǔ)音信箱、呼叫轉(zhuǎn)移等。
            
          3、泛化(generalization) ,也叫繼承(泛化是分析領(lǐng)域術(shù)語(yǔ),繼承是設(shè)計(jì)和實(shí)現(xiàn)領(lǐng)域術(shù)語(yǔ),通常用繼承來(lái)解決泛化問(wèn)題)。當(dāng)多個(gè)用例擁有相同的結(jié)構(gòu)、行為時(shí),我們可以把它們的共性部份抽象出來(lái)成為父用例,而其他用例作為泛化關(guān)系中的子用例。在泛化關(guān)系中,子用例是父用例的特殊形式,子用例繼承了父用例所有的結(jié)構(gòu)、行為以及關(guān)系。例如:訂票是網(wǎng)上訂票用例和電話訂票用例的抽象。
          三、建立用例模型
          1、確定參與者,可以從以下問(wèn)題入手:
        1. 系統(tǒng)開(kāi)發(fā)完成之后,有哪些人會(huì)使用這個(gè)系統(tǒng)?
        2. 系統(tǒng)需要從哪些人或其他系統(tǒng)中獲得數(shù)據(jù)?
        3. 系統(tǒng)會(huì)為哪些人或其他系統(tǒng)提供數(shù)據(jù)?
        4. 系統(tǒng)會(huì)與哪些其他系統(tǒng)相關(guān)聯(lián)?
        5. 系統(tǒng)是由誰(shuí)來(lái)維護(hù)和管理的?  


          2、確定用例,尋找用例可以從以下問(wèn)題入手(針對(duì)每一個(gè)參與者):

        6. 參與者為什么要使用該系統(tǒng)?
        7. 參與者是否會(huì)在系統(tǒng)中創(chuàng)建、修改、刪除、訪問(wèn)、存儲(chǔ)數(shù)據(jù)?如果是的話,參與者又是如何來(lái)完成這些操作的?
        8. 參與者是否會(huì)將外部的某些事件通知給該系統(tǒng)?
        9. 系統(tǒng)是否會(huì)將內(nèi)部的某些事件通知該參與者?
        10. posted on 2009-03-19 22:21 josson 閱讀(496) 評(píng)論(1)  編輯  收藏 所屬分類: 軟件設(shè)計(jì)


          FeedBack:
          # re: UML 之用例(use case)
          2010-04-21 14:42 | jiayu
          ting hao  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2010年4月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 马龙县| 诸暨市| 万载县| 宿迁市| 崇信县| 白玉县| 德安县| 康平县| 阿图什市| 嘉善县| 东乌珠穆沁旗| 老河口市| 达州市| 深圳市| 华坪县| 梁山县| 平和县| 赣榆县| 绥滨县| 左权县| 泾川县| 鹰潭市| 佛冈县| 磐安县| 易门县| 宁武县| 临夏县| 房产| 新余市| 云龙县| 苏尼特右旗| 遵义市| 长治市| 东至县| 资源县| 尤溪县| 富锦市| 五原县| 根河市| 乡城县| 无棣县|