红知博客

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

转:用Rational Rose和UML开发J2EE应用(二)

Posted on 2007-09-13 11:41 红子 阅读(429) 评论(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模型工具。

只有注册用户登录后才能发表评论。


网站导航:
 
我要啦免费统计