程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 用Rational Rose和UML開發J2EE應用(二)

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

編輯:關於JAVA

實現軟件

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

在我們的例子中,假設我們正在建立一個基於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模型工具。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved