紅知博客

          知其然,亦知其所以然
          posts - 32, comments - 35, trackbacks - 0, articles - 0

          轉:用Rational Rose和UML開發J2EE應用(二)

          Posted on 2007-09-13 11:41 紅子 閱讀(445) 評論(0)  編輯  收藏 所屬分類: UML學習JAVAJ2EE 綜合

                                  用Rational Rose和UML開發J2EE應用(二)


          實現軟件

          雖然分析模型可以幫助你解決問題提供了一個基礎,不過離實現還是很遠。在設計期間,你必須考慮到所采用的技術帶來的額外限制和需求,并且嘗試映射解決方案到最優化的實現。

            在我們的例子中,假設我們正在建立一個基于Web的應用。實現這樣一個應用需要一個深思熟慮的方法。分析模型的作用是作為一個出發點,用來決定將不同的J2EE技術映射到方案。例如,<<control>> 類可很好地映射到Java Servlets或者Enterprise JavaBean (EJB) Session Beans。這個方法可以將J2EE層的實現模型和Sun的"Model 2"參考體系對應起來。

            Rational Rose提供了一個簡化的接口來開發servlets和EJB Session Beans。圖5顯示了創建一個servlet的對話框。


          ****圖5 Servlet定義窗口*****

            雖然EJB包含有多個接口和類,Rational Rose還是提供了創建EJB的便利接口。創建EJB的對話框如圖6所示。在這里,對話框顯示了需要創建一個無狀態Session Bean的設置。


            ****圖6****
          創建一個無狀態Session Bean

            得到的Session EJB如圖7所示。這是基于為EJB開發的UML模型,它是以Sun Java Community Process在JSR-26開發的。它顯示了構成EJB的各種元素之間的關系,特別是home和remote接口和EJB實現類。由于EJB并不真正實現home和remote接口(它們是通過配置工具自動產生的對象實現的),因此關系并不是實現home和remote接口而是分別產生<<EJBRealizeHome>>和<<EJBRealizeRemote>>。home和remote接口的依賴關系表明home接口實例化remote接口。


          ************圖7**********
          一個無狀態Session Bean

            <<boundary>>類粗略地映射到JSP、HTML和form,如果你正在開發一個傳統的基于客戶的應用,它映射到一個客戶應用的對話框。我們使用JSP作為呈現實體和系統交互的的一個手段。JSP實際上由兩個方面,也就是客戶端的表現和服務器端的行為,所以它的模型包含有一個客戶端頁面和服務器端的頁面,它們之間的關系是<<build>> 。一個例子如圖8所示。


          ***********圖8***********
          JSP作為服務器端和客戶端頁面

            創建一個JSP比EJB還簡單,你只需要在browser的菜單中選擇Web Modeler>New>Server Page就可以了,如圖9所示。


          *************圖9***********
          在Rational Rose中創建一個JavaServer Page

            諸如Catalog, Order和Customer的<<entity>> 類可映射為Entity Bean。它們的創建如上面圖6所示。

            J2EE應用中常利用的一個技術是使用JavaBean在servlets和JSPs之間傳送信息。在Rational Rose中要做到這一點是很簡單的,通過在一個Java類上創建attributes,并且通過如圖10中的attribute規范對話框來將attribute設置為屬性。


          *************圖10***********
          將一個attribute設置為屬性

            在整體實現模型中,創建JSPs, servlets, JavaBeans和EJBs是非常有用的。Rational Rose可讓你很容易地模型化關系和告訴工程師其中的基本細節,不僅包括JSPs, servlets, EJBs和JavaBeans,還包括實現中涉及到的HTML頁面和Form。這些可以送給表現層開發者作進一步的處理,同時可與你的應用邏輯保持兼容性。

            圖11是某個類框圖的一部分,它顯示了實現在線CD商店中涉及到的不同技術。該框圖展示了各個類以及它們如何與表現、商業邏輯和數據層排列在一起。這樣,客戶端的頁面在左邊,控制的servlet在中間,Entity Beans在右邊。


           *************圖11**************
           在線CD商店的部分實現模型

            該框圖只顯示了付費和瀏覽CD細節用例中需要用到一些類。我們可以通過一個簡單的付費情景來嘗試“閱讀”該框圖。假定你已經瀏覽完畢,并且選擇了一些準備購買的CD,你在主頁(左邊的頂部)上選擇“checkout”的選項。這樣將會調用經由相關stereotyped <<link>>顯示的MainSerlet控制器。MainServlet由Order EJB中得到訂單的細節,構造一個Order JavaBean,并且將它設置為session的一個屬性,并且將請求向前送,如<<forward>>標識的一樣,直到一個Checkout JSP。Checkout JSP使用Order JavaBean,如JSP和Order JavaBean之間所示的<<Use Bean>>關系一樣,它會構造Checkout_Client頁面并且呈現給用戶。

            很明顯,我們忽視了其中的一些細節。例如,在實際的項目中,你可能將使用購物車來跟蹤項目;控制的責任或許會更分散,而不只是用唯一一個MainServlet等。這里的主要觀點是告訴你,對于設計和開發復雜的J2EE應用,UML是一個強大的工具,通過上面的例子,你將會認識到這一點。


          實現工作

            Rational Rose可讓你直接從框圖中產生, JavaBean, HTML, Servlet和EJB代碼。例如,兩個JSP間的<<include>>關系將會在導致在相應的JSP中產生<%@ include file="header.jsp" %> 。同樣,<<Use Bean>>將會在JSP中產生<jsp:useBean id="cd" class="com.rational.cdshop.util.CD" scope="session">,這樣就可使用CD JavaBean。
          在EJB方面,除了可為EJB2.0中的全部三種EJB產生代碼外(以及符合EJB1.1的EJB),Rational Rose還提供了一些特性以簡化EJB的開發。例如,在開發EJB時,其中一個較麻煩的是需要在接口和實現類中寫方法的代碼。Rational Rose提供了一個菜單的選項,你只需要按一下按鈕就解決了。它還提供了一個"check and repair"菜單選項,可以驗證定義的EJB的合法性(例如,remote接口中的remote方法和EJB實現類中的是對應的),如果不是,可以為你修復它們。

            Rational Rose中另一個和EJB相關的特性是Rational Quality Architect (RQA),可用作設計測試EJB。例如,可以使用RQA為EJB作單元測試。還可以使用在Rose中定義的順序圖來作多個EJB的測試。當依賴某個軟件組件,但是它還未設計好,那么可以使用RQA來產生框架。

            為了確保可以用自己的條件來實現,而無需擔心UML模型的改變,反之亦然,Rational Rose提供了一個內置的代碼編輯器,用戶可以設置同步的選項。例如,你可以選擇一直保持同步。在這種情況下,每當你更新源代碼并且保存時,Rose中的UML模型就會自動被更新。有些時候,你可以只是想看一下它們是如何處理的,并不想影響你的模型。在這種情況下,你可以在全局或者基于每個類的設置將同步關掉。

            當然,當談到實現和編碼時,你將需要一個好的IDE,例如Sun's Forte for Java或者Borland JBuilder。Rational Rose 2001a提供的主流IDE的深度集成和自動同步,所以可以在享受Rational Rose在UML模型和開發J2EE應用好處的同時,繼續使用自己最喜愛的IDE。

            關于UML和J2EE的更多方面

            我們只是很簡略地談了一下使用UML作模型及開發J2EE應用。例如,通過session中涉及到的各種實體,你可以使用UML活動圖來模型化session管理。

            另一個挑戰是傳達session EJB需要的正確操作調用順序。一個順序圖可以標識某個情景,但是你需要大量的順序圖來表示組件支持的各種情景(有些人嘗試使用帶有控制和分支語句的順序圖,但是這樣只會得到一個復雜和費解的順序圖)。另一方面,UML狀態圖提供了一個強大的功能,可以模型化和傳達這些信息。通過狀態圖,你可以查看順序圖的每個情景,這樣你就可以驗證每個順序圖,并且看組件是否支持你需要用的操作。

            總結

            通過使用UML,你可以理解需求,作正確的分析和設計,并且在一個經過驗證的規則上開發一個方案和作最佳的實現,從而可以明顯的提升開發可擴展、易維護和可長時間使用的軟件的機會。

            Rational Rose是僅有的可以支持全程建模及J2EE應用設計的UML模型工具。
          我要啦免费统计
          主站蜘蛛池模板: 鄂尔多斯市| 焦作市| 台前县| 西昌市| 张家口市| 垦利县| 江都市| 龙游县| 申扎县| 杂多县| 兴山县| 万全县| 湘乡市| 孟连| 武夷山市| 库尔勒市| 太和县| 惠安县| 高邮市| 定南县| 昆山市| 平原县| 徐水县| 潞城市| 临安市| 绍兴县| 乌鲁木齐县| 通榆县| 东平县| 北辰区| 苍溪县| 广东省| 湟中县| 莱西市| 客服| 平顶山市| 济宁市| 四子王旗| 桑日县| 张家港市| 弥渡县|