瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          UML用例圖

          Posted on 2010-09-25 14:22 瘋狂 閱讀(3495) 評論(1)  編輯  收藏 所屬分類: 項目管理UML
          前些時間參加了潘加宇老師的技術(shù)講座,UML建模技術(shù)受益匪淺。我也把平時的一些積累和上次的收獲總結(jié)在這篇文章中,主要講解用例圖相關(guān)的知識。
               
          用例圖是軟件需求分析到最終實現(xiàn)的第一步,它描述用戶如何使用系統(tǒng)及使用系統(tǒng)什么樣的功能。用例圖從業(yè)務(wù)角度上體現(xiàn)誰來使用系統(tǒng)、用戶希望系統(tǒng)提供什么樣的服務(wù),以及用戶需要為系統(tǒng)提供的服務(wù),也便于軟件開發(fā)人員最終實現(xiàn)這些功能。用例圖在開發(fā)中被廣泛的應(yīng)用,但是它最常用來描述系統(tǒng)提供了什么樣的功能給什么樣的用戶使用。

                 在官方文檔中用例圖包含六個元素,分別是:執(zhí)行者(Actor)、用例(Use Case)、關(guān)聯(lián)關(guān)系(Association)、包含關(guān)系(Include)、擴(kuò)展關(guān)系(Extend)以及泛化關(guān)系(Generalization)。但是有些UML的繪圖工具多提供了一種直接關(guān)聯(lián)關(guān)系(DirectedAssociation)

                  用例圖可一個包含注釋和約束,還可一個包含包,用于將模型中的元素組合成更大的模塊。有時,可以將用例的實例引入到圖中。用例圖模型如下所示,執(zhí)行者用人形圖標(biāo)來標(biāo)識,用例用橢圓來表示,連線表示它們之間的關(guān)系。

           
           

          一、執(zhí)行者(Actor

                 1、執(zhí)行者概念

              是指用戶在系統(tǒng)中扮演的角色。如圖1-1是一個用戶管理的用例圖,圖中的用戶、管理員就是用例的執(zhí)行者。


                              1-1

                   2、從業(yè)務(wù)中找出執(zhí)行者

              獲取系統(tǒng)用例首先要找出系統(tǒng)的執(zhí)行者。我們可以通過用戶回答一些問題的答案來識別執(zhí)行者。可以參考以下問題:

          1. 誰使用系統(tǒng)的主要功能(主要使用者)?
          2. 誰需要系統(tǒng)支持他們?nèi)粘9ぷ鳎?br />
          3. 誰來維護(hù)、管理系統(tǒng)使其正常工作(輔助使用者)?
          4. 系統(tǒng)需要控制哪些硬件?
          5. 系統(tǒng)需要其他哪些系統(tǒng)交互?這里包含其他計算機系統(tǒng)或者應(yīng)用程序。
          6. 對系統(tǒng)產(chǎn)生結(jié)果感興趣的是哪些人和哪些事物?

                 3、執(zhí)行者之間關(guān)系

          因為執(zhí)行者是類,所以多個執(zhí)行者之間可以具有與類相同的關(guān)系。在用例圖中,使用了泛化關(guān)系來描述多個執(zhí)行者之間的公共行為。如果系統(tǒng)中存在幾個執(zhí)行者,它們既扮演自身的角色,同時也扮演更具一般化的角色,那么就用泛化關(guān)系來描述它們。這種情況往往發(fā)生在一般角色的行為在執(zhí)行者超類中描述的場合。特殊化的執(zhí)行者繼承了該超類的行為,然后在某些方面擴(kuò)展了此行為。執(zhí)行者之間的泛化關(guān)系用一個三角箭頭來表示,指向扮演一般角色的超類。這與UML中類之間的返還關(guān)系符號相同。圖1-2


                              圖1-2

           

          二、用例(Use Case

                   1、用例概念

              用例就是外部可見的系統(tǒng)功能,對系統(tǒng)提供的服務(wù)進(jìn)行描述。

                   2、從業(yè)務(wù)中找出用例

              找出系統(tǒng)的用例,我們從執(zhí)行者入手,對每個執(zhí)行者提出一些問題,然后從執(zhí)行者對這些問題的答案中獲取用例。可以參考以下問題:

          1. 執(zhí)行者要求系統(tǒng)提供哪些功能(執(zhí)行者需要做什么)?
          2. 執(zhí)行者需要讀、產(chǎn)生、修改、刪除或者存儲系統(tǒng)中的信息有哪些類型?
          3. 執(zhí)行者必須提醒系統(tǒng)事件有哪些?把這些事件表示成系統(tǒng)用例。

                   3、用例之間關(guān)系

          二、用例之間關(guān)系

                  1、關(guān)聯(lián)關(guān)系(Association

          關(guān)聯(lián)關(guān)系是連接執(zhí)行者和用例,表示該執(zhí)行者代表的外部系統(tǒng)實體與該用例描述的系統(tǒng)需求有關(guān)。


          圖1-3

                  2、包含關(guān)系(Include

          包含關(guān)系是來自于用例的抽象,即從數(shù)個不同的Use Case中,分離出公共的部分,而成為可以復(fù)用的用例。


          1-4

                  3、擴(kuò)展關(guān)系(Extend

              擴(kuò)展關(guān)系表示某一個用例的對話流程中,可能會根據(jù)條件臨時插入另外一個用例,而前者稱為基礎(chǔ)用例后者稱為擴(kuò)展用例。

              

                          圖1-5

          4、泛化關(guān)系(Generalization

              一個用例可以被特別列舉為一個或多個用例,這被稱為用例泛化,如果系統(tǒng)中一個或多個用例是某個一般用例的特殊化時,就需要使用用例的泛化關(guān)系。

              


          評論

          # re: UML用例圖  回復(fù)  更多評論   

          2012-11-28 09:16 by liu100
          用Rational設(shè)計和實現(xiàn)簡單的電話簿程序
          2007-10-23 13:46 來源:論壇整理 作者:佚名 責(zé)任編輯:方舟?yesky 評論(0)
            將 Java 轉(zhuǎn)換為 UML

            現(xiàn)在,創(chuàng)建另一個轉(zhuǎn)換配置,將 Java 文件轉(zhuǎn)換為一個 UML 模型。

            1、選擇 Rational Software Architect 的 Model Explorer 中的 PhoneBookJavaProject。

            2、選擇 Modeling > Transform > New Configuration。

            3、輸入名字 PhoneBookJava2UML,然后選擇 IBM Rational > Java to UML,如圖 24 所示。點擊 Next。

            圖 24. 創(chuàng)建一個用于 Java 到 UML 轉(zhuǎn)換的轉(zhuǎn)換配置

            

            4、選擇 PhoneBookJavaProject 作為源。

            5、點擊 Create new Target Container... 創(chuàng)建一個用于保存所產(chǎn)生文件的 UML 模型。

            6、再 Create UML Model 中,點擊 Next 從標(biāo)準(zhǔn)模版中創(chuàng)建一個新的 UML 模型。

            7、輸入 Phone Book UML Reverse Model 作為文件名。

            8、點擊 Browse 選擇已有的 MyPhoneBookUMLProject 作為新模型文件的存放處。 Create UML Model 區(qū)域應(yīng)當(dāng)與圖 25 所示類似。

            圖 25. Create UML Model 區(qū)域

            

            9、點擊 Finish。

            在 Source and Target 區(qū)域中,選擇新創(chuàng)建的模型文件 Phone Book UML Reverse Model 作為目標(biāo),如圖 26 所示。

            圖 26. 選擇用于轉(zhuǎn)換的源和目標(biāo)

            

            1、點擊 Next。

            2、取消選擇 Generate getter and setter,這樣不會產(chǎn)生 getter 和 setter。

            3、繼續(xù)點擊 Next,查看其它可用的選項。 使用所有的缺省選項,然后點擊 Finish。

            現(xiàn)在,您已經(jīng)創(chuàng)建了一個轉(zhuǎn)換配置,名字為 PhoneBookJava2UML.tc。 本練習(xí)中的最后一步,是將 Java 文件轉(zhuǎn)換為一個 UML 模型。

            1、右鍵點擊文件 PhoneBookJava2UML.tc。

            2、選擇 Transform > Java to UML,將 Java 代碼轉(zhuǎn)換為 UML 模型,如圖 27 所示。

            圖 27. 將 Java 代碼 轉(zhuǎn)換為 UML

            

            3、單擊 OK 接受所有待定變化。

            4、現(xiàn)在,這三個 Java 類被轉(zhuǎn)換為 Phone Book UML Reverse Model 下的三個模型元素,如圖 28 所示。

            圖 28. 產(chǎn)生的 UML 模型

            

            在 Phone Book UML Reverse Model 中創(chuàng)建一個類圖,以可視化所產(chǎn)生的模型元素。 將這三個模型類拖放到圖中,如圖 29 所示。

            圖 29. 在類圖中的三個模型類

            

            在圖中,關(guān)聯(lián)關(guān)系顯示為屬性。 選擇這些屬性,然后右鍵點擊并選擇 Filters > Show As Association,將這些屬性轉(zhuǎn)為關(guān)聯(lián)關(guān)系。

            您在 userHasInput 中已經(jīng)增加的新參數(shù)并沒有在圖中顯示化。 右鍵點擊類 PhoneBookController,并選擇 Filters > Show Signature,顯示這些操作的完整簽名。

            您轉(zhuǎn)換的 UML 模型的類圖應(yīng)當(dāng)類似于圖 30 顯示所示。將此圖與您先前所創(chuàng)建的類圖(參見圖 9)進(jìn)行比較,并注意相似性。 也注意到,Association Relationship 顯示為圖中的兩條線,以指出這個雙向的行為。

            圖 30. 產(chǎn)生的 UML 模型

            

            選擇 Ctrl-S 保存所有變化。

            完成實現(xiàn)

            一旦您已經(jīng)從 UML 圖中產(chǎn)生了 Java 文件,您就可以修改所產(chǎn)生的文件,以基于設(shè)計架構(gòu)來實現(xiàn)您的應(yīng)用程序。 在 下載 一章中,您將會找到一個簡單的電話號碼簿應(yīng)用程序,其實現(xiàn)了一個命令行接口,將號碼條目保存為一個本地文件,但是這知識一個可能的實現(xiàn)。 例如,您可以生成一個 GUI 界面來替代命令行界面,用 EJB 組件存儲數(shù)據(jù)來替代文件,或者使用 Observer 模式實現(xiàn)通告機制。 所提供的實現(xiàn)示例只是實現(xiàn)設(shè)計的方法之一。

            在最后一章中,您將從您的 UML 圖中修改產(chǎn)生的文件,以實現(xiàn)電話號碼簿應(yīng)用程序范例。

             您想要查看這些步驟的示例嗎?

            將范例實現(xiàn)復(fù)制和粘貼到三個合適的 java 文件中。

            選擇 File > Save All 以保存所有內(nèi)容。

            選擇 PhoneBookController,然后選擇 Run > Run As ... > Java Application,以一個 Java 應(yīng)用程序來運行電話號碼簿實現(xiàn)。

            來到 Console 視圖,如圖 31 所示,并與應(yīng)用程序進(jìn)行交互。 驗證可以執(zhí)行先前討論的兩個用例,Add an entry 和 Search for a phone number。 記住: 用例的目的是定義系統(tǒng)的行為并獲得需求。 實現(xiàn)滿足需求,并如期望的那樣工作是很重要的。

            圖 31. 運行電話號碼簿應(yīng)用程序范例

            

            您也可以再次運行一個 Java 到 UML 的轉(zhuǎn)換,使用 PhoneBookJava2UML.tc 轉(zhuǎn)換配置來理解完整電話號碼簿應(yīng)用程序的 UML 模型。

            圖 32. 電話號碼簿應(yīng)用程序范例的 UML 模型

            

            總結(jié)

            本教程提供了一個對 Rational Software Architect V7 的高層的和實踐介紹。 您已經(jīng)按照詳細(xì)的練習(xí)和例子,學(xué)習(xí)了如何使用 UML 圖設(shè)計一個應(yīng)用程序,將模型信息發(fā)布到一個 Web 頁面,將您的設(shè)計轉(zhuǎn)換為 Java 代碼,然后使用 Rational Software Architect V7 將 Java 代碼反向工程到一個 UML 圖。 最后,您實現(xiàn)了簡單的電話號碼簿應(yīng)用程序,并在 Rational Software Architect 控制臺中進(jìn)行了查看。
          上一頁1234567

          主站蜘蛛池模板: 安吉县| 和林格尔县| 开远市| 娱乐| 长葛市| 方正县| 延川县| 革吉县| 建宁县| 深圳市| 五华县| 富蕴县| 石楼县| 老河口市| 吉水县| 青岛市| 临沂市| 嘉善县| 巴马| 西宁市| 叙永县| 龙岩市| 休宁县| 锡林浩特市| 东辽县| 会泽县| 南平市| 溧阳市| 都安| 潜山县| 乐山市| 阿克苏市| 枞阳县| 武鸣县| 武功县| 长治市| 瑞安市| 义马市| 桃源县| 揭阳市| 沙坪坝区|