UML软件工程组织

用Rational Rose和UML开发J2EE应用(二)
(来自Rational公司)

  实现软件

  虽然分析模型可以帮助你解决问题提供了一个基础,不过离实现还是很远。在设计期间,你必须考虑到所采用的技术带来的额外限制和需求,并且尝试映射解决方案到最优化的实现。

  在我们的例子中,假设我们正在建立一个基于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是一个强大的工具,通过上面的例子,你将会认识到这一点。

 

版权所有:UML软件工程组织