(计算机应用技术专业论文)基于框架的企业级应用开发研究与实践.pdf_第1页
(计算机应用技术专业论文)基于框架的企业级应用开发研究与实践.pdf_第2页
(计算机应用技术专业论文)基于框架的企业级应用开发研究与实践.pdf_第3页
(计算机应用技术专业论文)基于框架的企业级应用开发研究与实践.pdf_第4页
(计算机应用技术专业论文)基于框架的企业级应用开发研究与实践.pdf_第5页
已阅读5页,还剩73页未读 继续免费阅读

(计算机应用技术专业论文)基于框架的企业级应用开发研究与实践.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

。堡墅銎墅塑些堂丝圣。一 基于框架的企业级应用开发研究与实践 专业:计算机应用与技术 硕士生:陈涛 指导教师:马光思教授 摘要 论文以货运管理系统i t f r e n s 实际项目为背景,开展了大量的工程实践与理论研 究工作。通过对框架产品w a t o o l 的应用与分析,讨论了基于框架的构件系统开发与应 用。结合作者在工程中应用框架产品的实际经验,全面讨论了框架( f r a m e w o r k ) 的概 念、分类和技术特征。 不少企业级应用软件开发,虽然采用了j 2 e e 、c o r b a 等先进构件接口技术规范, 但因使用方法不合理,仍然发挥不了构件技术的作用,起不到复用效果,不能有效的 提高软件质量和效率,给企业造成了巨大的浪费。 论文抽象了w a t o o l 产品的体系结构、各组成部分的功能和工作原理,并分两部分 深入分析了w a t o o l 中m v c ( m o d e l v i e w - c o n t r o l l e r ) 框架和数据存取( d a t aa c c e s s ) 框架的设计与实现。w a t 0 0 1 分离表示、控制、业务和数据存取的系统设计思想和高度 科学的抽象方法,为提高系统效率,实现设计与复用奠定了良好的基础。 论文在对w a t o o l 所做大量理论分析的基础上,结合i t - f r e n s 项目,以其部分功 能的实现为例,进一步讨论了w a t o o l 在企业级软件开发中的重要作用和应用方法。 论文介绍了开发i t f r e n s 项目中遇到的问题及解决方案,凭借在项目开发与 w a t o o l 应用中积累的经验,指出了w a t o o l 的不足,并提出了作者的改进意见。 通过对w a t o o l 的大量研究与实践,揭示了构件系统的工作原理和设计思想,以及 应用框架技术设计实现中问件产品,进而广泛应用于企业级软件开发的流行软件开发 技术,加深了对构件技术和复用思想的深刻理解。 关键词:企业级应用,框架,w a t o o l ,m v c ,数据存取 2 r e s e a r c h & p r a c t i c eo fe n t e r p r i s ea p p l i c a t i o nd e v e l o p m e n t b a s e do nf r a m e w o r k s p e c i a l t y :c o m p u t e ra p p l i c a t i o n & t e c h n o l o g y n a m e :c h e nt a o i n s t r u c t o r :p r o f m a g u a n g s i a b s t r a e t i t _ f r e n si saf r e i g h tm a n a g e m e n ts y s t e ma n db a s e do nt h i sp r o j e c t ,w ed oal o to f t h e o r e t i c a lr e s e a r c ha n de n g i n e e r i n gp r a c t i c e b ym e a n so fi m p l e m e n t i n ga n da n a l y z i n ga f r a m e w o r k p r o d u c t ,c a l l e d w a t o o ,w e d i s c u s s e d d e v e l o p m e n t a n d a p p l i c a t i o n o f c o m p o n e n ts y s t e m f o u n d e do nf r a m e w o r ka n d g e n e r a l i z e dc o n c e p t ,c l a s s i f i c a t i o n a n d t e c h n o l o g i cc h a r a c t e r i s t i co f f r a m e w o r k t h o u g h s o m ea d v a n c e dc o m p o n e n tt e c h n o l o g yl i k ej 2 e e ,c o r b a h a sb e e ni n t r o d u c e d t o d e v e l o pe m e r p r i s ea p p l i c a t i o n ,t h e y d o n tb e n e f i tt o r e u s i n g a n di m p r o v es o f t w a r e q u a l i t ye f f e c t i v e l yb e c a u s eo fu s i n g t h e mi naw r o n g w a y i nt h i s p a p e r , w ep r e s e n t e ds t r u c t u r e s ,c o m p o s i t i o n sa n dp r i n c i p l e o fw a t o o la n d a n a l y z e dd e s i g na n di m p l e m e n t o fm v cf r a m e w o r ka n dd a t aa c c e s sf r a m e w o r ki nw a t 0 0 1 t h ea b s t r a c tm e t h o da n dt h ed e s i g ni d e ao fs e p a r a t i n gp r e s e n t a t i o n ,c o n t r o l ,b u s i n e s sa n d d a t aa c c e s sf o u n d e d d e e p l yf o re n h a n c i n gs y s t e me f f i c i e n c y , i m p l e m e n t a n d r e u s i n g b a s e do nt h et h e o r yr e s e a r c ho nw a t o o la n dp r a c t i c eo ni t - f r e n s ,w ee x p o u n d e dt h e s i g n i f i c a n c ea n da p p l i c a t i o no f t h e m i nt h ee n t e r p r i s es o f t w a r ed e v e l o p m e n t a tl a s t ,t h ep a p e rp u t sf o r w a r dt h ee x i s t i n gd e f e c t si nw a t o o la n dt h eo p i n i o no f w a t o o li m p r o v e m e n t t h r o u g hl o t so fr e s e a r c ha n dp r a c t i c eo nw a t o o l 。w ea l s or e v e a l e dt h ei m p l e m e n t p r i n c i p l e ,d e s i g ni d e aa n dt h ea p p r o a c ht od e v e l o pm i d d l e w a r ep r o d u c tw i t hf r a m e w o r k t e c h n o l o g y t h u s ,w ep r o f o u n d l yc a u g h t o nt h e c o m p o n e n tt e c h n o l o g y a n ds o f t w a r e r e u s i n gi d e a p a s s w o r d :e n t e r p r i s ea p p l i c a t i o n ,f r a m e w o r k w a t o o l ,m v c ,d a t aa c c e s s 声明 本人郑重声明我所呈交的论文是我个人在导师指导下 进行的研究工作及取得的研究成果。尽我所知,除了文中特 另n 加以标注和致谢的地方外,论文中不包含其他入已经发表 或撰写过的研究成果,也不包含本人或其他人在其它单位已 申请学位或为其它用途使用过的成果。与我一同工作的同志 对本研究所做的所有贡献均已在论文中作了明确的说明并 表示了致谢。 申请学位论文与资料若有不实之处,本人承担一切相关 责任。 做作者签名:佟、寿 嗍:洲陀 关于论文使用授权的说明 本人完全了解西安建筑科技大学有关保留、使用学位论 文的规定,即:学校有权保鼠送交论文的复印件,允许论文 被查阅和借阅:学校可以公布论文的全部或部分内容,可以 采用影印、缩印或者其它氢制手段保存论文。 ( 保密的论文在论文解密后应遵守此规定) 论文作者魏膀得导师签名:易缓蹶刎州 注:请将此页附在论文首页 西安建筑科技大学硕士学位论文 ! ! ! l ! _ l | ! ! ! 目l _ _ e ! e l e | ! ! j _ l _ 自! ! ! | ! ! j = l _ 自 第一章绪论 1 1 企业级应用软件的发展现状 近年来,随着i n t e r n e t 技术的飞速发展,计算机和网络给人们的工作、学习和日 常生活带来很大便利的同时,也为企业本身的经营管理带来了新的手段,给企业之间 的交流提供了极大方便。 所谓企业,是指为了某个共同的利益而工作在一起的人或实体所组成的组织,是 由许多部门组成的,这些部门之间存在一定的关系;同时,企业又不是孤立的,它处 在其他企业中间,需要与其他企业发生各种关系( 例如订购关系等) 。企业级应用软件, 简称企业级应用,就是为了解决企业内部和企业之间的各种需求而产生的,一般具有 以下几个特点”3 : 含有一系列访问数据库的小程序,且这些程序相对比较独立。 包含许多企业经营和业务数据的各种数据库。 处理各种业务的程序可以互操作,能够有机的集成在一起。 一般处于i n t e r n e t 环境中,可能需要和其他企业的应用互相通信。 能够给它的客户提供方便易用的服务,通常通过w e b 提供。 另外,提供其他服务或以其他形式存在的应用也可能是企业级应用。通常所说的 b 2 b ( b u s i h e s st ob u s i n e s s ) 和b 2 c ( b u s i n e s st oc u s t o m e r ) 就是企业级软件中最 流行的两种形式。企业级应用的结构复杂,涉及到的内外部资源众多、事务密集、数 据量大、用户数量多,对安全性要求高。 多年以来,绝大多数应用系统都是采用客户服务器( c 1 l e n t s e r v e r ,c s ) 两层 结构设计的,两层结构由客户机和服务器两个层面构成,客户端提供用户界面、处理 逻辑应用,将用户的数据查询请求转换为s q l 语句提交给服务器,而服务器接受查询 语句并进行数据查询,并将查询结果返回给客户端。由于传统两层结构采用直接连接 的方式,不可避免的带来了许多缺陷: 以单一的服务器和局域网为中心,系统难以扩展: 难以管理大量的客户机;软硬件组合和集成能力有限; 易使应用受制于特定供应商。 为了解决c s 两层结构与应用需求和网络软硬件环境日益突出的矛盾,三层结构 的b r o w s e r s e r v e r 应运而生。三层结构是建立在分布式技术的基础上,将传统的两层 结构中的业务逻辑从客户端分离出来,作为一个中间层,为企业级应用解决方案提供 必需的可适应性和可伸缩性。 在三层体系结构发展的同时,独立于三层结构的i n t e r n e t i n t r a n e t 技术也逐渐 成熟起来。如今的企业级应用软件不仅能提供静态的信息和交互式的动态信息服务, 还能提供应用程序的基础设施服务( 如安全、事务、传输、缓冲、生存期管理等) ,这 西安建筑科技大学硕士学位论文 通常是将原有的中间层再细分几层,成为目前正在蓬勃发展的n - t i e r 结构。n 层结构 的优点是每一层可以被单独改变,而不影响到其它层,降低了部署与维护的开销;资 源( 如连接) 可以被缓冲和重复利用:提高了灵活性、可伸缩性及软件层的可复用性。 尽管如此,仍然存在许多问题,即n - t i e r 结构的应用系统对企业级应用开发人员的素 质要求相对较高,需要熟悉分布式协议、事务处理、负载均衡、应用安全等。 1 - 2j 2 e e 平台及其应用现状 j 2 e e ( j a v a2e n t e r p r i s ee d i t i o n ) 是由s u n 公司提出的一个基于j a v a 的、适合 服务器端构件体系结构的、完整的企业级应用开发平台。j 2 e e 体系结构通过提供一个 统一的开发平台,降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集 成的强有力支持。通过技术人员、厂商以及用户的共同努力,j 2 e e 正在成为进行电子 商务应用和信息化建设的首选方案。 j 2 e e ,与c o r b a 、c o m + 相同,是一种构件接口技术规范,其相应产品给开发人员 提供了一个工作平台,它定义了整个标准的应用开发体系结构和一个部署环境。在这 个体系结构中,应用开发者的注意力集中在封装商业逻辑和商业规则上,一切与基础 结构服务相关的问题以及底层分配问题都由应用程序容器或者服务器来处理。使得 j 2 e e 应用开发人员可以集中考虑应用程序的逻辑和相关的服务,而把所有与基础结构 相关的服务交由运行环境实现。 j 2 e e 采用多层体系结构,即客户层( c 1 i e n tt i e r ) 、w e b 层( w e bt i e r ) 、业务逻 辑层( b u s i h e s st i e r ) 和企业信息系统层( e n t e r p r i s ei n f o r m a t i o ns y s t e mt i e r , e i s ,也称为数据层) 。其中,表示逻辑包括客户层和w e b 层,主要采用j a v as e r v e rp a g e s ( j s p ) 、s e r v l e t 、j a v a b e a n 等技术。 业务逻辑层主要处理业务逻辑,为底层业务服务组件提供必要接口,业务组件通 常被实现为运行在e j b 容器中的e j b 组件。e j b 组件从客户程序处接收数据,处理数 据,再将数据发送到企业信息系统层存储;同时,e j b 组件也可从数据层获取数据, 并将数据处理后返回给客户端。因此,业务逻辑层也被称为e j b ( e n t e r p r i s e j a v a b e a n s ) 层。业务逻辑层和w e b 层一起构成了三层j 2 e e 应用的中间层。 企业信息系统层运行企业基础设施系统,例如企业资源规划( e r p ) 、大型机事务 处理( m a i n f r a m et r a n s a c t i o np r o c e s s i n g ) 、数据库系统及其它遗产信息系统( l e g a c y i n f o r m a t i o ns y s t e m ) 等。在这层中,通常遇到的是数据库系统,其中记录了企业的 各种数据。由于数据库系统允许多种多样,j 2 e e 提供了j d b ca p i 来访问数据库系统。 j d b c 对数据库的访问具有平台无关性,为访问不同的数据库提供了统一的途径,使得 开发人员无须对特定的数据库有过多的了解,大大简化和加快了开发过程。 j 2 e e 提供了大量开发企业级应用的技术,如e j b 、j s p 、s e r v l e t 、j d b c 、r m i ( j a v a r e m o t em e t h o di n v o c a t i o n ,远过程调用) 、j m s ( j a v a m e s s a g es e r v i c e ,消息服务) 、 j n d i ( j a v an a m i n ga n dd i r e c t o r yi n t e r f a c e ,j a v a 命名与目录服务) 等,要使用 2 。 。;墼塑坠墼耋些墼篁已一 j 2 e e ,就要学习所有标准的j 2 e e 技术。但是,仅仅学习这些技术还不足以在j 2 e e 中 设计良好的应用程序,因为这些技术只回答了如何使用的问题,而没有回答何时使用 与为何使用。过去,大量应用程序以不恰当的方式使用j 2 e e 技术,使应用性能不好, 无法满足目标与要求,给企业级应用开发带来了许多问题和风险a 1 设计中没有充分考虑效率和性能优化:系统运行速度缓慢,以致用户无法忍受; 应用系统给服务器端带来了沉重的负担; 2 没有采用很好的构架方式:在大型软件的开发中,虽然采用了j 2 e e 平台,但 是在实际的开发中没有一套良好的构架体系,导致上层的应用系统过于庞大,增加了 开发的难度;在使用了很多次的核心库中发现b u g 而难以摘除: 3 没有真正理解j a v a 、e j b 、j 2 e e :j z e e 技术本身就比较复杂难懂,开发人员可 能重复开发了j d k 核心a p i 中的功能和类,滥用远程调用,导致程序性能底下。以为 e j b 是万能的,到处使用e j b ; 4 没有将表示层逻辑和业务层逻辑很好的分离:在系统的开发过程中,没有一个 好的框架来分离表示与业务逻辑,导致j s p 程序涉及了许多业务操作,过于庞大,在 业务逻辑改变时必须修改j s p ,在要求改变页面显示时又需要修改并重新配置e j b 和 其它后台组件: 5 对于e j b 的误解:e j b 常常被理解成j 2 e e 的核心。而实际应用却发现,e j b 只 是j 2 e e 提供的选择之一,它适合解决某些问题,但对许多应用并不适用; 6 无法复用以前的设计和代码:随着系统规模的增大,开发人员对各个机能间的 关系不能很好的说明,无法重复使用e j b 、组件或服务,达不到重用构件的目的; 7 会话管理的重要性:对会话管理尚无统一认识和对应的解决方案; 8 数据存取策略制定上的失误:数据是企业最重要的资源,数据存取策略常常决 定企业系统的性能。但i t 部门对于访问数据通常没有一套统一的策略。开发人员通常 把数据访问看成是业务逻辑层的问题,而不是从全面的、企业的角度去看待数据操作, 无法建立一个良好的数据访问与操作的公共框架。 上述问题极大的困扰了系统的设计和开发人员,降低了软件的质量,同时也增加 了开发成本。为了解决这些问题,开发人员在借鉴前人实践经验的基础上,提出了许 多基于j 2 e e 的设计模式( d e s i g np a t t e r n s ) 。尽管j 2 e e 从高层抽象了基础技术,但 对具体应用,仍然需要建立系统模型,并给出合理的设计方案,j 2 e e 设计模式在某些 具体问题的设计上,提出了更加具体的方案”1 ,例如: 特定任务最适合哪种企业b e a n 如何设计e j b 以达到性能和伸缩性要求 如何充分利用容器管理事务、持久性和安全性 是否每次查找组件或存储引用 把会话数据存放在哪里 使用j s p 还是s e r v l e t 3 西安建筑科技大学硕士学位论文 是否分别处理内容与表示 谁负责数据的验证 如何减少远程方法调用 如何集成现有的应用程序 正确的使用这些模式可以改进应用程序设计。尽管模式初看起来很简单,但通常 不那么容易采用。为了在实践中更好的利用模式,开发人员将模式应用到构件技术中, 提出了应用框架( a p p l i c a t i o nf r a m e w o r k ,简称框架) 的思想。 应用框架技术,是在面向对象技术及构件技术出现后又一个对软件开发产生重大 影响的技术。框架又称“骨架”,如果把软件的构建过程看成是传统的建筑过程,框 架的作用相当于为房屋搭建的“架子”。在框架编程模式下,许多设计和实现工作都 应在框架中完成,从而大大简化了系统开发,并提高了开发质量。 但是对于是否在应用程序中使用框架,以便在应用程序之间方便的修改与复用, 有两种态度: 有的开发人员没有见过任何正式的软件体系结构或设计框架,因此不知道如何 采用框架。 有的i t 专家试图实现框架,但觉得用起来很麻烦,很难维护。他们相信框架产 品能大大减少应用开发与维护工作的复杂度,但通常没有足够的时间和经费正确建立 框架,使得最终方案设计得难以实现或应用。 大多数开发出的应用程序都是针对具体的业务而实现的,随着业务的变化而动态 “编码”,仅在战术上提供某些业务功能,而不是着眼于战略目标,建立多个应用程 序之间可以复用的软件服务集合。 从短期来看,开发人员能提供所要的功能,但对公司不利,因为编写代码时没有 考虑复用性与扩展性,使支持代码的长期成本很高。要求i t 机构正确设计、提供和维 护任何类型的应用框架,就要求: 时间与经费 大多数机构不愿意花更多时间与经费建立可复用框架。系统体系结构是开发小组 面对机构中不同业务单元的交货期压力时首先牺牲的项目。 递增实现 建立系统体系结构要求确定能提供量化结构的小模块。但大多数公司用大段方法 实现公用系统体系结构。这样的结果常常令人失望,因为在编写初始框架后的几个月 内通常无法看到任何直接的业务好处。 愿意改变 因为好的体系结构不是设计出来的,而是从原有差的体系中一步一步演变出来的。 这样,机构必须愿意重新考虑各种因素,重新设计代码,即使代码能够满足眼前 的要求。有时,要改变整个体系结构以达到机构所需的复用性与扩展性。 4 西安建筑科技大学硕士学位论文 1 3 课题研究的背景及意义 1 3 1 课题研究的背景 随着计算机技术在铁路货运方面的广泛应用,货运信息的管理已由原来的电话报 送方式,改为计算机联网传输。现有货运系统已基本实现了对货物发送作业中的计划、 核算等环节的计算机管理,并取得了良好效果。但在有些方面仍然效率低下,例如: 货票管理方面:货运代理采用手工方式填写货票和进行配车计划,然后才将货票 输入计算机传递给货运站。货票是铁路运营的主要票据之一,是运输统计、财务管理、 物流货物分析的原始信息,也是运输调度指挥作业不可缺少的基础依据。随着货运站 货物量的逐年增加,对货物的通知和查询也越来越频繁。而上述流程速度慢,容易出 错,造成时间和精力上的大量浪费,也会引起货主的不满。 货运辅助事务的管理方面:例如司机、卡车、事故等没有一个统一的管理,当人 员或设施发生变更或调动时,不能及时的更新信息;对事故的频繁发生不能及时给出 原因。这些都会直接影响到货运过程的效率。 计算机管理方面:原有的货运系统虽然实现了计算机管理,但是基本采用的是c s 结构,服务器安装了o r a c l e 数据库,由客户端应用程序生成相应的传输文件( 例如货 票、报表等) 传递给货运站或上级组织。这种方式投资大,每个代理和货运站都必须 配备数据库服务器,大多只有一台微机与数据库相连,设备利用率低;系统复杂,维 护不方便,不仅服务器要安装数据库,客户端也要安装应用软件和数据库接口程序, 而操作人员只具备基本的计算机知识,一旦系统出现问题,只能由技术人员到现场处 理,且系统崩溃后重新安装也很麻烦:查询困难,查询系统都是在小型机上开发,一 般只支持终端,货运信息需要采用专门应用程序转换后才能提供给用户在系统中套询。 针对以上问题,也为了适应市场的竞争,提高效率,节约成本,某国交通部门决 定开发货运管理系统i t f r e n s ,用来管理货运中的各种信息和事务,例如货票、事故、 人员设备等。为了满足货运数据量高、并发访问数量大、安全性和兼容性高等要求, 采用了j 2 e e 平台和w a t o o l 中间件产品开发这套系统,其中服务器采用了w e b l o g i c6 1 作为应用程序服务器,后台数据库使用o r a c l e 8 1 。w a t o o l ( w e ba p p l i c a t i o nt 0 0 1 ) 是依据n e c 多年的企业应用系统开发经验,根据软件框架技术的思想,以j 2 e e 平台为 基准,应用多种设计模式开发而成的一个应用框架产品。该产品主要面向各种大型行 业或企业,如银行、证券、零售、交通、政府等,为其分支机构提供w e b 化管理和服 务,满足不同的业务需求。通过应用w a t o o l ,可以在解决上述j 2 e e 中面临问题的同时, 高效的开发企业应用程序,达到高品质、短周期、低成本的功效。 1 3 2 课题研究的意义 国外关于各种类型框架的研究开始的较早,例如m o d e l2j s pw e b 应用程序框架、 5 西安建筑科技大学硕士学位论文 o r 映射( 0 b j e c t r e l a t i o n a lm a p p i n g ) 框架等,已有很多产品投入使用,例如 s t r u t s “3 、t o p l i n k 。1 等。w a t o o l 依据框架技术,将企业级应用中公有的、与具体业务 无关的处理分离,如页面和业务逻辑调用、数据传递等,从而减少了整体设计,使开 发人员能够集中精力开发与具体业务相关的部分,降低了编码数量和引入b u g 的可能 性,并实现了设计上的大粒度复用,可在各种企业级应用中,提供给开发人员使用。 国内基于j 2 e e 平台的企业级应用开发才始于近几年,目前的复用还仅限于细粒度 级,比如类库和e j b 构件库,对于框架这种设计上的局部复用还研究得较少,很有必 要将注意力集中在这种优秀的技术上。 本文主要通过在i t f r e n s 系统中使用w a t o o l 的应用实践,对w a t o o l 进行深入研 究,了解它的设计思想,并分析它的优缺点,以此提出改进方案,希望能引起相关研 究人员和公司的重视,开发我国自己的框架产品。目前i n t e r n e t i n t r a n e t 的飞速发 展,企业应用的大量需求,国内软件企业如果能抓住机会,在提高质量、降低成本的 同时,开发符合中国国情的框架产品,必将极大地促进中国软件产业的迅速发展。 1 4 本人所承担的工作 本人在此课题的研究中具体完成以下工作: 1 学习w a t o o l 中间件的使用方法。 2 参加i t f r e n s 项目总体方案讨论,针对老系统存在的问题,提交需求分析。 3 负责i t f r e n s 系统t r a c e 支持子系统的软件设计与开发。 4 参与i t f r e n s 系统后期的技术维护工作。 5 对f a t o m 进行研究,分析其设计思想和采用技术,找出不足并提出改进方案。 1 - 5 论文的组织结构 本文共分为五章: 第一章绪论简要介绍了论文研究的背景以及研究对象。 第二章框架技术介绍了框架技术的产生、概念、特点、分类与组成,并通过与相 关技术的比较进一步说明了框架技术的实质。 第三章w a t o o l 中间件产品所基于的框架分析分析了w a t o o l 的组成结构并分两部 分重点分析了w a t o o l 对m v c 框架和数据存取框架的设计与实现。 第四章w a t o o 在货运系统中的应用简要介绍了i t - f r e n s 货运系统,并以其中一 个功能为例重点阐述了w a t o o l 在系统开发中的应用。 第五章总结与展望首先提出了在系统开发中遇到的问题和解决的方案,然后依据 对w a t o o l 的研究指出了w a t o o l 的不足及其改进的方案。最后总结了全文 的工作及对未来工作的展望。 6 西安建筑科技大学硕士学位论文 第二章框架技术 长期以来,多数软件都是针对某个具体应用的,多是从头再来,许多同类软件重 复开发的现象依然存在,不仅浪费了大量的人力、物力,还使得软件的质量得不到保 证。软件复用技术正是为避免上述问题提出并发展的。软件复用是指通过对已有的软 件的各种有关知识来建立新的软件,这些知识包括:领域知识、开发经验、设计决定、 体系结构、需求、设计、编码、测试和文档等“”。软件复用的目的是降低软件开发和 维护的成本,提高软件开发效率,提高软件的质量。 过程和函数的使用可看作是最早的软件复用,六十年代末提出的对象、类和继承 等概念,产生了以类为单元的软件复用资源,然而类是一个小粒度的复用资源,单独 的类难以提供完整的行为,需要与其他类结合使用才能提供有用的功能。在借鉴了工 业产品设计生产模式的经验后,又提出了构件( c o m p o n e n t ) 的思想,有一些组织专门 生产构件,软件人员在开发软件时可大量复用这些构件,从而降低软件的开发和维护 成本,提高软件生产率;同时,由于这些构件往往已经过严格的测试,并经过广泛的 使用,因此可靠性通常比较高,从而也提高了新软件的质量。 但是构件同样属于比较小的粒度复用。近些年来,面对日益复杂的软件系统,研 究人员逐渐认识到,要真正实现软件的工业化生产方式,达到软件产业发展所需的软 件生产率和质量,设计的复用更加重要,因为设计复用受实现环境影响较小,从而被 复用的机会更多,所需修改更少。 为了达到设计上的复用,研究人员在构件技术的基础上,提出了面向对象框架 ( o b j e c t 一0 r i e n t e df r a m e w o r k ,简称框架) 的概念。框架由一组相互协作的抽象类和 具体类组成,用来表达特定领域中若干相似的应用系统中所具有的功能和基本结构, 是针对应用系统或子系统的大粒度可复用软件资源。 框架最早起源于s m a l l t a l k 环境,其中最著名的是s m a l l t a l k8 0 用户环境框架 m v c ( m o d e l v i e w c o n t r o l l e t ) 呻1 。随着软件复用研究的深入,框架技术越来越受到 研究人员的重视,被成功的应用到许多领域,如操作系统。“、电子商务等。目前,框 架的研究主要集中在框架的开发、框架的演变和框架文档的建立方面,并取得了很大 进展。 2 1 框架技术 2 1 1 框架概念 面向对象的框架是由设计和代码组成的可复用软件成分,是一个给定领域内一个 应用程序的部分设计和实现,所以,框架是一个不完整的系统。关于框架,有很多不 同的定义,其中两个比较有代表性的定义是: 1 框架= 模式+ 构件,是由开发人员定制的应用系统的骨架,是整个系统或 7 西安建筑科技大学硕士学位论文 子系统的可复用设计,由一组抽象类及它们实例间的交互方式组成”1 。 2 框架是一个可实例化的、部分完成的软件系统或子系统,定义了一组系统或子 系统的体系结构并提供了构造系统的基本构造模块,还定义了对特殊功能实现 所需要的调整方式。在一个面向对象的环境中,框架由抽象类和具体类组成; 框架的实例化包括现有类的实例化和衍生”1 。 上述两个定义说明了一个框架由一组协作类组成,阐明了整个设计、类间依赖及 成元类的责任分布。这些类通常是抽象类,实现细节放在具体子类中,构成一个抽象 设计,不同的子类构成对设计的不同实现,所以说框架着重于设计复用,尽管框架中 可能包含某种程序语言实现的具体类。 应用开发人员通过扩展或定制框架生成应用特定部分的功能。框架是针对特定领 域的,一般建立在同一个或相似领域中,即所要开发的软件系统要具有较强的相似性, 通过框架把领域中不变或不易变的部分在一定时间间隔内固定下来,把易变的部分以 用户接口的形式保留下来,从而达到设计和代码的复用。一个成功的框架在很大程度 上简化了复杂系统的开发。框架技术与构件技术的结合产生了基于构件的应用框架技 术,这是框架技术的一个发展趋势。 2 1 2 框架的特点 框架内部使用的技术是面向对象技术,因此它继承了面向对象技术的所有优点。 此外,还拥有比面向对象技术更高级的特点。“: 模块化( m o d u l a r i t y ) :框架继承了面向对象技术的特点,并提供了骨架和设计, 将数据封装在对象里并提供相对稳定的接口用于操作数据。框架不仅仅是类的集合, 还提供了丰富的功能和对象类之间内嵌的骨架结构,这些体系模型和设计提高了系统 的模块化,最大限度的减少了开发人员需要开发的通用代码,减轻了代码调试和测试 的工作量。因此,框架技术具有很好的模块化特性。 可复用性( r e u s a b i l i t y ) :框架提供的稳定接口提高了复用性。通过定义通用的 构件,可以被重新是用来创建新的应用。应用的开发不再是从头开始重写整个程序, 而是从已有的框架基础上通过添加、改写或定制实现。因此,框架除了可以用面向对 象继承的方法重写代码外其本身就是一个可多次复用的模板。 可扩展性( e x t e n s i b i l i t y ) :应用开发人员通过添加、改写和定制方法一步步的 扩展框架,最终实现整个应用程序。因此,框架也具有很好的扩展性。 反向控制特性( i n v e r s i o no fc o n t r 0 1 ) :运行时框架的显著特征是反向控制。反 向控制是指由框架主动来控制工作流程( 比如通过消息派遣机制) ,不再像传统的类库 一样被用户代码调用,而是去调用用户代码。这种方法称为好莱坞规则( h o l l y w o o d p r i n c i p l e ) :“ic a l ly o u ,d o n t c a l lm e ( 不要给我打电话,我会给你去电话) ”。 这是一种新的思维方式,改变了过去过程式编程方式,角色发生了逆转。框架提供控 制流的角色,开发人员的代码被框架调用,这非常有益。框架的这种特性使得应用的 西安建筑科技大学硕士学位论文 开发变得简单,因为开发人员可以从应用程序的细节纠缠中脱离出来,而专注于他们 所熟悉的问题域,专心设计好应用的业务方法。 与传统的类库相比,框架与领域密切相关,它定义了特定领域应用系统的公共结 构,而对类的复用并没有领域相关性的限制。类是一种小粒度的可复用资源,而框架 则提供了系统级的可复用性,支持系统的、全面的软件复用,是一种大粒度的可复用 资源。 2 1 3 框架的分类 目前市场上有许多类型的框架,用来解决不同类型的问题,主要可从以下方面进 行分类川1 6 船瑚1 : 2 1 3 1 从应用范围分类 按照应用系统中所起作用的的不同,可将框架分为三类: 应用框架( a p p l i c a t i o nf r a m e w o r k ) :面向应用领域中应用系统的骨架,但它并 不提供完整的应用软件系统的全部,目前普遍所谓的框架都是指应用框架。 支承框架( s u p p o r tf r a m e w o r k ) :不是应用系统的骨架,而是框架的支撑部分。 基础框架( f o u n d a t i o n a lf r a m e w o r k ) :不是应用系统的骨架,而是应用系统共 同使用的公共框架,如c o r b a 等。 2 1 3 2 从应用范围分类 按应用范围的不同,可将框架分为两类: 水平( h o r i z o n t a l ) 框架:这种框架是面向技术领域的,如程序开发环境和用户 界面等。 垂直( v e r t i c a l ) 框架:面向特定应用领域,如用于制造或证券交易问题等的应 用框架。 目前,多数类型都选用水平框架,例如g u i 工具,可在各种工业领域中用来创建 用户界面;而垂直框架强调在特定领域内应用,例如,用来分析经济数据的框架就只 能应用于商业领域,因此,水平框架比垂直框架更具一般化。 2 1 3 3 从用途上分类 框架按照用途可被分为三类: 系统基础设施框架( s y s t e mi n f r a s t r u c t u r ef r a m e w o r k ) :一般用在系统基础建 设中,给应用提供一个全范围、功能性的基础设施,简化了系统基础设施的开发,如 操作系统、通讯框架等。具体应用例如:c + + 类库m f c 和j a v a 的基础类库j f c 。系统 基础设施框架主要用于一个软件组织内部,并不直接销售给顾客。 中间层集成框架( m i d d l e w a r ei n t e g r a t i o nf r a m e w o r k ) :通常用于开发集成分 布式应用和分布式构件,把中间层逻辑的代码通过框架技术组成为一个完整的系统, 9 西安建筑科技大学硕士学位论文 可以提高软件开发人员的模型化复用,并且增强软件基础设施在分布式环境下的无缝 联接。中间层集成框架的市场非常繁荣,例如j 2 e e 中的应用程序服务器和分布式数据 库框架等。 企业应用程序框架( e n t e r p r i s ea p p l i c a t i o nf r a m e w o r k ) :用于在某一特定企 业应用领域中( 如电信、电子设施、制造业和金融等) 提供通用的业务控制或特定业 务模式,是对该领域进行抽象而得出的,有助于减少实现应用的工作量,允许开发人 员在涉及的领域创造高质量的软件同时减少开拓市场的时间。相对于系统基础设施框 架和中间层集成框架,开发者购买企业应用程序框架是昂贵的,但因为它们直接支持 最终用户的开发,所以能够为投资带来可观的回报。系统基础设施和中间件集成框架 更大程度上致力于软件内部的开发,而企业应用框架更注重的是快速创建高品质的系 统。 2 1 3 4 从使用形式上分类 框架按照使用形式可分为白盒框架( w h i t e b o xf r a m e w o r k ) 和黑盒框架 ( b l a c k b o xf r a m e w o r k ) 2 “: 白盒框架:又被称为基于集成的框架,因为复用白盒框架时使用者是通过对框架 中的抽象类进行特殊化的方式来定制框架行为的。使用者首先对白盒框架进行具体化, 即为每一个抽象类派生一个子类,并在子类中给定所有纯虚方法的具体实现,然后就 可使用这些具体的子类来开发特定应用系统。自盒框架由于提供了框架种类的实现细 节,使得开发人员能够对它进行各种修改,提高了它的可复用范围,但同时这又成为 了它的一个缺点,即使用者必须对白盒框架的内部结构非常了解,才能正确有效地使 用它。 黑盒框架:与白盒框架相反,描述了使用框架的系统所包含的类、这些类需要符 合的规约以及它们之间的互联关系。框架使用者通过定义类或构件的接口参数得到它 们的不同组装,从而达到修改黑盒框架的目的。与白盒框架相比,开发人员在复用这 种框架时只需知道其外部接口,而不需了解框架内部的实现细节,但黑盒框架提供的 应变机制较弱,而且复用的范围有限。 在框架的演变过程中,开始的时候常常是基于继承的白盒框架,因为这时框架开 发人员对应用领域还没有充分的了解,无法将行为参数化。随着开发人员对领域的稳 定方面和灵活易变方面的深入了解,框架将逐渐向参数化的方向演变,即向基于组装 的黑盒框架演变。 继承和组装各有优缺点。白盒框架利用集成可以导出新的子类,通过编程创建新 的功能。但是集成是一种静态关系,导致类之间的“硬连接”,难以在运行时改变。组 装可在运行时改变,但不能产生新的功能,所以基于组装的黑盒框架要求框架开发人 员预先知道什么将会改变。 然而,实际的框架通常是混合型的,也称为灰盒框架( g r a y b o xf r a m e w o r k ) , l o 西安建筑科技大学硕士学位论文 用来避免白盒框架和黑盒框架带来的不足,一个好的灰盒框架必须拥有足够的灵活性 和可扩展性,并且能够隐藏一些开发者不必了解的信息。 2 1 3 。5 其它分类 除了上述的分类方法外,还可按照框架使用是否可视化,分为可视化框架和形式 化框架:按照框架能否开发出分布式应用程序,分为集中式框架和分布式框架等。 2 1 4 框架的组成元素 通常一个框架有以下元素构成: ( 1 ) 设计文档:框架的设计,包括类图( 或其它图) ,书写的文字,甚至是开发 者头脑中的想法。 ( 2 ) 接口:描述了类的外部行为。在j a v a 中可用i n t e r f a c e 构造接口;c + + 中抽 象类可以被用来模拟接口。接口可被用来在系统中构建不同的角色,一个角色代表了 一小组彼此相关的方法接口。 ( 3 ) 抽象类:是一个或多个接口的不完整实现,可以被用来定义一组实现了接口 的组件的公共行为。 ( 4 ) 组件:这个词被过多的使用,必须小心定义,在这里组件和类的唯一区别是 组件的a p i 能够以一个或多个接口构造的形式使用。与类一样,组件可姓与别的类发 生联系a 在图2 1 中,通过类和组件间“是的一部分”的箭头来表示这种联系。 如果这些类本身具有定义完整的a p i ,则指定这个类的最终结果集为组件的组合。一 个组件就是一个具有明确a p i 的简单类。 ( 5 ) 类:是框架的最底层。通常,组件使用类来代理功能,既一个框架用户通常 不会看到这些类,因为它只是在与组件进行交互。 图2 - 1 框架的组成元素 图2 一l 中的元素通过带有标签的箭头连接,这些箭头表明了这些元素之间的关系。 通常接口和抽象类一起被看成白盒框架,用来创建具体类。组件由于实现了框架中的 一些接口,所以组件和协作类通常一起被看成黑盒框架。 2 1 5 基于框架的软件开发过程 基于框架的软件开发模式是一种软件复用的高级形式,不仅能实现代码复用,且 可有效实现系统分析与设计复用。通常基于框架的软件开发过程包含以下及各阶段m 1 : ( 1 ) 领域分析 领域分析是在给定领域中,通过分析找出对所有应用程序来说都是共同的类和对 西安建筑科技大学硕士学位论文 象,建立领域模型,包含该领域中的需求关系、相关概念及其之间的关系a 该模型应 该集中于领域实体而不是实现细节。 ( z ) 需求分析 需求分析的目标是为了捕获所有有效的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论