ABC:基于体系结构、面向构件的软件开发方法(下)
时间:2016-03-23 11:40 文章来源:http://www.lunwenbuluo.com 作者:梅宏,陈锋,冯耀东, 点击次数:
ABC方法并不特定于某一种构件运行平台进行组装,目前的工具首先支持的是J2EE平台.由于J2EE平台也存在多种实现,不同实现在生成胶合代码(主要是部署描述文件)时的要求不同,因此ABCTool允许用户针对不同的平台开发不同的组装插件,提高了工具的普适性.同样地,ABCTool也可以将组装的范围扩展到其他类型的构件平台上,例如支持CCM的ORB平台。
现有的构件平台主要关注的还是构件的运行时刻模型和构件间的互操作,对ABC方法的支持都还不充分,例如平台服务固定,这样就限制了Aspect的效果,又如平台上运行的都是原子构件,没有保留应用系统结构的层次关系,失去了SA模型中的很多信息,使得系统结构难以理解,对系统维护和演化造成困难.因此,我们设计开发了自己的构件运行平台PKUAS[21],从平台本身的灵活性、运行时刻信息的保持等方面为ABC方法提供了更好的支持。
2 ABC方法指导的软件开发示例
在下面的章节中,我们将结合一个网上订、售火车票系统的例子来介绍如何使用ABC方法开发基于J2EE平台的分布式构件系统.一个网上订、售火车票系统的基本功能包括:
(1)票务信息查询:为用户提供查询列车时刻、票价等信息的功能。
(2)实时售票:向用户出售3天内的火车票,并立刻付款出票。
(3)订票:用户可以订3天~15天之内的火车票,经过一定时间的处理后,票务人员将会通知用户,或者由用户自己查询订票的结果。
2.1建立SA模型
根据上面的功能分析,我们可以建立起该订、售票系统的体系结构。
可以看到,在这个系统中有两个复合构件:界面(UI)与售票代理(ticketagent)以及两个Aspect:权限控制(authorization&authentication)与事务(transaction).界面可以是一"个独立的程序模块,也可以是一组Web页面;售票代理则包括了一个负责出票的售票模块(seller)和一个实现网上支付的取款模块(teller)。
2.2构件开发
在系统的体系结构设计完成以后,需要为每个设计构件指定相应的实现构件.ABC方法的一个前提就是已经存在一个可用的构件库,需要尽量复用构件库中的构件.对于还不存在的构件,则要进行构件的开发,这一工作是在SA设计的基础上进行的,以查询模块为例,其ADL描述如下:
ComponentQueryAgentisOO.Obj{
Properties{
Version=1.0;
}
Interfaces{
ProvideplayerQueryRequestisObj.Method{
ObjectGetTrainTimeTable(inObjectTrainld);
CollectionGetTrains(inStringStartPoint,inStringEndPoint);
RequestplayerTicketlnfoisObj.Method{TicketlnfoGetTicketlnfo(inObjectTrainld);
Dependencies{
QueryRequestdependsonTicketlnfo;
用户在这个框架中进一步进行精化设计,例如,增加需要的辅助类(比如处理时刻表信息的TimeTable类等),并最终将其映射到某个运行平台上加以实现.这里以J2EE平台为例,得到下面的代码(这里的Home和Remote接口可以由工具自动生成):
(1)使用EJB实现的查询模块的Remote接口publicinterfaceQueryAgentextendsEJBObject{
publicTimeTablegetTrainTimeTable(ObjecttrainId)throwsRemoteException;publicCollectio
ngetTrains(StringstartPoint,StringendPoint)throwsRemoteException;
}
- 论文部落提供核心期刊、国家级期刊、省级期刊、SCI期刊和EI期刊等咨询服务。
- 论文部落拥有一支经验丰富、高端专业的编辑团队,可帮助您指导各领域学术文章,您只需提出详细的论文写作要求和相关资料。
-
- 论文投稿客服QQ:
2863358778、
2316118108
-
- 论文投稿电话:15380085870
-
- 论文投稿邮箱:lunwenbuluo@126.com