UML软件工程组织

如何用好构件?
谢晓芹(转载自计算机世界报)

一、原则

在选好系统框架和统一开发方针后, 系统构件的开发就应充分利用已有框架所提供的服务和工具。通常构件的开发应遵循以下几条原则:

1. 系统结构分层,业务与实现分离,逻辑与数据分离

首先,应用系统按照客户端、Web服务器、应用服务器、数据服务器分层;其次,以上几层分别提炼出客户端浏览器上和Web服务器上的构件,即用户可视化界面构件与应用服务器上的应用逻辑构件。在该层次上特别注意将应用逻辑从数据中分离。理由有:

应用逻辑变动频繁,特别在当前竞争激烈的市场上,要不断适应用户越来越苛刻的需求。 将应用逻辑独立分离,可即插即用替换构件,让系统易于升级。

应用逻辑是应用系统的核心,分离出来有利于高质量、高效处理。

在多层结构应用系统中, 如果应用服务器上所用中间件有变化, 独立分离出来的应用逻辑则不会受到影响。应用逻辑如何独立分离呢? 应该按应用域内功能特性去划分。一般来说,功能代表一组企业活动,对企业活动的执行处理、操作控制、策略规则、限制条件等都属应用逻辑。而对数据处理的构件必须放到数据服务器上。

如用UML语言和Rose工具时,具体做法是:

用user case图对应用系统域进行描述。

对每种user case建立事件流说明, 关注主题事件流功能。它常常是应用逻辑构件的雏形内容。

用类图、包图找底层和高层逻辑构件。通常,事件控制功能或事务性功能都属于应用逻辑构件的候选构件。在利用已有构件或购买的构件进行组装时,需要编制一些粘合代码,对这些完成粘合定制构件的代码最好也要构件化,尽可能按容器方式构造,以便构成高层上的构件。

2. 以接口为核心,使用开放标准

构件设计的目标就是即插即用,写一次,处处可用。达到此目标的关键是构件提供了契约式的接口。它的输入接口代表了环境为它提供的服务,输出接口代表了它为环境提供的服务。构件的输入、输出接口决定了构件之间的连接。为了独立于构件供应商,要用统一标准,应使用开放标准,如CORBA、DCOM、JavaBean、EJB 等。

用构件组合定制开发,接口很重要,它是构件之间的契约。一个接口提供一种服务,完成某种逻辑行为。构件接口由两部分组成:一是署名部分,即构件本身提供服务的描述;二是行为部分,即构件行为的描述。一个构件可以有一个或多个接口,在应用系统中,各构件接口必须用统一标准。开发者自已开发的构件,也必须用相同标准来提供API接口。

3.构件语义的描述要形式化

构件接口的标准化实质上是构件语义形式化描述措施的一个重要方面。除此以外,还有前置和后续条件定义操作、命名服务中命名和命名上下文标准、目录和目录上下文标准、事务服务描述符、部署描述符等,同时有命名规则、目录和命名绑定规则、事务语义定义、资源分布部署说明等。在不同标准中,它们都有自己的形式化语义规定。如 JNDI提供瘦型目录访问协议(LDAP),按可区分名字和树形上下文描述,实现用户和对象的查询;在EJB中有会话Bean和实体Bean事务描述符、EJB部署描述符;而在EJB部署描述符顶级元素中,定义了应用程序元数据的容器、EJB 数据结构、装配信息和各种文件名。

4.提炼封装构件过程要严格记录

由于构件允许第三方使用,所以要保证第三方用户能正确理解构件设计思想,就必须记录每次提炼的变化。通常,要用版本来管理。在开发构件过程中选用工具时,应注意选有版本管理功能的工具。在整个应用软件中,必须保证版本的一致性。当构件升级后,容器相应地也要升级。

5.设计模式也可以重用

CBSD的主要优点之一是重用,它的目标是代码、设计、解决方案都能重用。而设计模式是设计经验的记录,利用它可以达到事半功倍的效果。目前己有几十种设计模式可供参考应用,而用户界面设计的MVC模式就是最常用的一种。

6.利用开发工具

由于构件具有自检、持久、依赖于上下文、标准接口等特性,因此通常要利用开发工具来创建构件和应用软件,这些工具如BeanBox、 Jbuilder、 VisualAge for Java、 EJBMaker、WebGain Studio、WebGain等提供标准接口的署名和行为描述,并可检验和定制构件属性。

二、过程

CBSD 主要是利用已有构件组合集成。它的开发过程与传统方法不同。

1. 需求分析和构件的评选

需求分析阶段除分析外,还要进行构件的评选。一般分两步:查找所要构件和评价构件。

首先按需求分析结果,从构件库或构件市场查找所需要标准的构件,了解构件的功能、可靠性、可预测性等特性,包括市场份额、以前业绩;然后选出一些候选构件,再进行评价和决策。由于评价方法不精确,需求有时也不十分明确,因此评价和决策比较难。这一步主要确定构件适应性,主要考虑修改定制构件的投资和风险。

2.构件的剪裁和扩展

经过评选的构件不可能马上都能用,有时要对已有构件进行属性扩展或修改,称之为构件的剪裁和扩展。这常常需要对构件开发者提出扩展或修改的意见,由构件开发者去完成。注意只改内部属性,不能改接口。

3.构件的测试

经过剪裁和扩展后,也可能要重新开发一些新构件,这些扩展或新开发的构件,必须在构造应用工具上进行测试,保证构件功能及接口规范的实现。这一步比传统的单元测试要快和容易。

4.构件的装配和集成

构件的装配和集成是把构件装配成模块或打成包,在模块或包中都可以有自已的定制描述符。如用EJB模型时,要把构件与EJB部署描述符装配成EJB JAR模块;再把EJB模块和J2EE部署描述符打包成J2EE平台上的应用程序;最终将它部署到应用服务器环境下。客户端建立EJB客户库,产生EJB客户接口以及相应的EJB存根。客户构件与客户EJB部署描述符被打包成J2EE平台上的客户应用程序。对大型系统而言,与传统系统集成也成为一个问题,可利用Java技术本地接口JNI解决。但这只适用于非分布式、简单的老系统集成,当有访问多个老系统的情况出现时,则不能用JNI,必须采用其他技术,如CORBA、HTTP、RMI、TCP/IP、JMS、XML等实现集成。

5.应用系统的部署

早在EJB框架出现以前, 应用系统是独立的Java应用程序。如要完成多客户、异构、分布式、安全并可扩展的功能,开发者就要从事大量的编程工作,不可能在几个月内完成。EJB框架出现后, 应用系统可基于应用服务器开发, 应用系统访问资源及网上通信都由应用服务器提供服务。应用系统开发只关注应用逻辑和数据定义,从而使整个应用系统的完成变得简单。完成应用逻辑和数据定义编程工作后,对应用服务器及客户按标准的XML文件配置和部署, 完成了整个应用系统的部署。

6.系统的演化

应用系统的维护就是系统的演化过程, 系统功能的不断改善和扩展,是通过对系统中构件的升级替换来实现的。随着构件版本的变换, 应用系统也形成了不同的版本。这就是系统的演化。

三、 Java应用构件平台

Sun公司经过多年努力,在Java应用方面做出了许多贡献。至今, 应用平台共有四种:Java Card、J2ME、J2SE、J2EE,如附图所示。

 

 Java Card是最小的应用平台,是为Java Smart 信用卡设置的平台,目前在美国大量应用,深受欢迎。Java Card 有一组API接口,运行在卡虚拟机上. Java Card统一了智能卡的编程接口,提供了强大的安全机制,支持多次装载 Applet,支持一卡多 Applet 的功能。

J2ME是Java 2平台的微型版,它分成CDC(connected device configuration)和CLDC(connected limited device configuration)两部分。CDC运行在连接虚拟机上,为手提式计算机一类较复杂的移动设备提供应用平台;CLDC运行在核心虚拟机(KVM)上,它实现MIDP(Mobile Information Device Profile)移动信息设备应用平台,即针对手机之类的设备建立移动计算平台。

J2SE是Java 2平台的标准版, 它适用于桌面系统,提供CORBA标准的ORB技术,结合Java的RMI支持分布式互操作环境。它运行在Java虚拟机上。在引入了Java IDL后, J2SE支持IIOP通信。它是高可移植性、异构性的实现环境和健壮平台,也是实现可伸缩性、可移植性、分布式异构互操作应用软件开发的标准平台。

J2EE是Java 2平台的企业版。J2EE技术的基础就是J2SE标准版,它巩固了标准版中的许多优点。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。它为灵活配置各种多层企业应用软件,特别是B2B、B2C等电子商务应用,提供了强大的服务功能。最近又新加了Connector API服务,使企业应用的开发和部署有了一系列成熟的技术。J2EE已成为企业解决方案的工业标准,29家公司获得J2EE技术的使用许可证。

 

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