(计算机软件与理论专业论文)面向对象框架复用技术的研究与应用.pdf_第1页
(计算机软件与理论专业论文)面向对象框架复用技术的研究与应用.pdf_第2页
(计算机软件与理论专业论文)面向对象框架复用技术的研究与应用.pdf_第3页
(计算机软件与理论专业论文)面向对象框架复用技术的研究与应用.pdf_第4页
(计算机软件与理论专业论文)面向对象框架复用技术的研究与应用.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(计算机软件与理论专业论文)面向对象框架复用技术的研究与应用.pdf.pdf 免费下载

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

文档简介

山东大学硕士学位论文 摘要 面向对象框架技术是一种大型的面向对象复用技术。它兼有设计复用和代码 复用的优势,为基于复用的软件开发提供了一种强有力的工具。使用面向对象框 架开发的应用系统中,大部分的设计和代码由框架提供,这样大大提高了软件开 发的效率并降低了开发的难度。而且,由于框架一般是成熟而稳定的,基于框架 的应用开发还可以极大地提高软件的质量。随着面向对象技术的成熟,面向对象 框架的复用已成为软件生产中最有效的复用方式之一。面向对象框架的研究将极 大地推动软件开发新方法的应用。 论文从理论性与实践性两方面出发,着重研究面向对象框架的开发技术。首 先从技术的角度讨论软件复用的一般性概念、软件复用的关键技术。然后讨论框 架的一般性概念、框架的分类,并且将框架同其它相关的复用技术进行比较。在 对面向对象框架技术及设计模式进行详细地分析与研究的基础上,通过对传统框 架开发方法的分析,针对传统的自底向上的面向对象框架开发方法开发周期长, 软件可预测性差,开发技巧要求高的问题,将设计模式引入自顶向下的框架开发 过程中,提出基于设计模式的自项向下的框架开发方法,并对三种面向对象框架 的开发技术进行了比较。接着分析了j 2 e e 的多层应用体系,并对j 2 e e 平台上 典型的w e b 框架s t r u t s 的工作原理做了详细介绍。在对网络考试系统领域的知识 充分理解的基础上,应用基于s t r u t s 的框架开发方法,设计出了网络考试系统框 架。这部分主要讲述了基于s t r u t s 框架的网络考试系统的设计与实现,描述了网 络考试系统的组成与结构,阐述了系统的设计方案、实现方法以及所采用的开发 工具和相关技术。 关键词:软件复用;面向对象框架:设计模式; s t r u t s 网络考试系统 生变奎主要主兰竺笙兰 a b s t r a c t o b j e c to f i e o t e df r a m e w o r k ( o of r a m e w o r k ) i sal a 唱e _ s c a l es o f t w a r er e u s e t e c h n i q u e i th a st h ea d v a n t a g e sb o t ho fd e s i g nr e u s ea n dc o d er e u s e , p r o v i d i n ga p o w e r f u lt o o lf o r s o f t w a r ed e v e l o p m e n t b a s e d o ns o f t w a r er e u s e a m a j o r i t yo f d e s i g n a n dc o d ew o u l dc o m ef r o mf r a m e w o r kw h e ni ti sa p p l i e dt os o f t w a r ed e v e l o p m e n t t h u sg r e a t l yi n c r e a s ee f f i c i e n c yo fs o f t w a r ed e v e l o p m e n t m o r e o v e r , s o f t w a r e d e v e l o p m e n tb a s e do no of r a m e w o r kw o u l dg r e a t l yi n c r e a s es o f t w a r eq u a l i t y b e c a u s ea p p l i c a f o nf r a m e w o r ki sa l w a y sm a t u r ea n dh a sl i t i l ed e f e c t s a so o t e c h n i q u eg r o w sm o r em a t r r e , r e u s eo ff r a m e w o r kh a sb e c a m et h em o s te f f e c t i v e w a yi ns o f h v a r ep r o d u c t i o n r e s e a r c ho fo of r a m e w o r kw i l lg r e a t l yp r o m o t et h e a p p l i c a t i o no f n e ws o f t w a r ed e v e l o p m e n tm e t h o d s i nt h i sd i s s e r t a t i o n ,w er e s e a r c h e dm a i n l yt h ed e v e l o p m e n tt e c h n o l o g yo f0 0 f r a m e w o r kf r o mt w os i d e sb o t ht h e o r e t i c sa n dp r a c t i c e f i r s t , i tt a l k e da b o u tt h e c o m m o nc o n c e p t sa n dp i v o t a lt e c h n o l o g yo ns o f t w a r er e u s ef r o mt e c h n i c a l a s p e c t s e c o n d l y , i td i s c u s s e dt h ec o m n l o nc o n c e p t sa n dc l a s s i f i c a t i o no ft h eo o f r a m e w o r k a n dc o m p a r e dt h ef r a m e w o r kt e c h n o l o g yw i t l lo t h e rr e l e v a n tt e c h n i q u e so f s o f t w a r er e u s e s t h r o u g hd e e p l yr e s e a r c h i n go n0 0f r a m e w o r kt e c h n i q u ea n dd e s i g n p a t t e m s ,a i m i n ga tt h ep r o b l e mt h a tl o n gp e r i o do fd e v e l o p m e n t ,b a dc a p a c i t yf o r p r e d i c t i o na n dh i g hr e q u i r e m e n to fs k i l l s o fi r a d i t i o n a l d o w n - t o pf r a m e w o r k d e v e l o p m e n tm e t h o d s at o p - d o w no of r a m e w o r kd e v e l o p m e n tm e t h o db a s e do n d e s i g np a t t e r n si sb r o u g h tl 】pt h r o u g ht h ea n a l y s i so f 自r a d i t i o n a l0 0f r a m e w o r k d e v e l o p m e n tm e t h o d c o n s e q u e n ti tc o n s t r u e da p p l i c a t i o n sa r c h i t e c t u r eo fj 2 e ea n d i n t r o d u c e dt h ep o p u l a rw e bf r a m e w o r kn a m e ds t r u t sw h i c hb a s e do nj 2 e e i tn a r r a t e d t h ed e s i g n m e n ta n di m p l e m e n t a t i o no fa ne x a ms y s t e mo v e rn e t w o r kb a s e d0 1 1s t r u t s , a n dd e s c r i b e dt h ec o m p o s i n gm ds t r u c t u r eo f t h ew h o l es y s t e m i te x p a t i a t e d0 1 1w h a t l h ep r o p o s a li s , h o wt oi m p l e m e n t , w h a tt o o l sb eu s e dd u r i n gl i l ed e v e l o p m e n ta n d i n t e r r e l a t e ds k i l l s k e y w o r d s :s o f t w a r er e s u e ;0 0f r a m e w o r k s ;d e s i g np a t t e m s ;s t r u t s ;e x a m s y s t e mo v e rn e t w o r k 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独 立进行研究所取得的成果。除文中已经注明引用的内容外,本论文 不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文 的研究作出重要贡献的个人和集体,均已在文中以明确方式标明。 本声明的法律责任由本人承担。 论文作者签名:童l 盈笙 日期:枷。毛s 1 关于学位论文使用授权的声明 本人完全了解山东大学有关保留、使用学位论文的规定,同意学 校保留或向国家有关部门或机构送交论文的复印件和电子版,允许论 文被查阅和借阅;本人授权山东大学可以将本学位论文的全部或部分 内容编入有关数据库进行检索,可以采用影印、缩印或其他复制手段 保存论文和汇编本学位论文。 ( 保密论文在解密后应遵守此规定) 论文作者签名:童乜叠鞋导师签名: 立堑一日期:耳 山东大学硕士学位论文 1 1 研究背景 第1 章引言 在现代软件工程中,软件复用已经成为其中一个主要目标。熟悉面向对象的 人一定知道面向对象的最大的优势之一就是:软件复用。通过复用,可以减少很 多的工作量,提高软件开发生产率。 使用面向对象方法开发的系统具有良好的稳定性。对象将数据和行为封装 在一起,系统功能的变化仅仅影响到某些对象的行为特征的改变,而不会改变系 统的体系结构;同时,对象只能够通过公共接口操纵,从而能够改变对象的实现 细节而不影响操纵对象的客户,因此,系统具有良好的可扩展性,而面向对象方 法的继承特性使系统的部分程序代码得到复用。面向对象技术是目前最成功的基 于复用的软件开发技术。 复用本身也是分层次的,代码级的复用和设计架构的复用。代码复用通过 面向对象语言的继承机制和编译技术已成为现实。9 0 年代后,随着面向对象技 术的日趋成熟,像这样低层次的复用已经不适合于特定领域大型软件生产的需 求。这期间,构件的内涵也得到了极大的扩充,它不仅可以指可复用的软件单元, 功能模块,也可以是一些可复用的软件框架、软件体系结构模型等。这时期非常 明显的趋势是人们将代码复用与设计复用相结合,通过封装、继承、多态等支持 软件复用的基本机制,以及由此衍生的仅使用接口为其它部件提供服务的规则, 将一些对象及这些对象之间的结构封装成大粒度的构件,以进行大粒度大规模的 复用。基于框架的方式就是这样一种面向特定领域的复用技术。 框架由于提供了大力度的复用而被认为是一种最有前途的面向对象技术。单 独的类的复用,尽管有用,但由于复用力度小而不具备有意义的生产力的飞跃, 只有把特定领域的体系结构作为一个整体进行复用才能取得引人注目的成就。 那么什么是框架呢? 所谓框架,它不同于一般的标准库,是指一组紧密关联 的类,强调彼此的配合以完成某种可以重复运用的设计概念。这些类之间以特定 的方式合作,彼此不可或缺。 面向对象框架技术是一种大型的面向对象复用技术。使用面向对象框架技术 = f = 山东大学硕士学位论文 可以加强系统的扩充性和代码复用。面向对象框架是对某领域内应用系统的部分 或整体的可复用性设计。它将应用系统的控制流进行抽象,形成更为通用的功能 组件。并且,框架把系统中公用及繁琐部分都隐藏在稳定的界面之下。因此,面 向对象框架稳定的界面和抽象的功能组件增强了系统的可复用性。 面向对象框架技术对构造复杂系统的高可靠专用软件具有很高的实用价值, 为软件开发提供了一种强有力的技术支持。据统计,使用面向对象框架技术开发 应用系统,7 0 以上的设计和代码将由框架提供,这样大大提高了软件生产率与 软件质量。随着面向对象技术的成熟,面向对象框架被认为是一种最有前途的提 高软件重用度和软件生产力的软件复用技术。 采用框架技术进行软件开发的主要特点包括: ( 1 ) 领域内的软件结构一致性好: ( 2 ) 建立更加开放的系统; ( 3 ) 重用代码大大增加,软件生产效率和质量也得到了提高; ( 4 ) 软件设计人员要专注于对领域的了解,使需求分析更充分; ( 5 ) 存储了经验,可以让那些经验丰富的人员去设计框架和领域构件,而不必 限于低层编程: ( 6 ) 允许采用快速原型技术: 有利于在一个项目内多人协同工作; ( 8 ) 大粒度的重用使得平均开发费用降低,开发速度加快,开发人员减少,维 护费用降低,而参数化框架使得适应性、灵活性增强。 软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识、 内容、问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一 些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟, 稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制 等问题。框架一般都经过很多人使用,所以结构很好,扩展性也很好,而且它是 不断升级的,你可以直接享受别人升级代码带来的好处。 现在,很多开发人员都已经意识到很重要的一点,那就是,框架设计是系统 设计的重要组成部分,在开发一个应用软件系统的时候,一个好的系统框架是非 常重要的。从底层开始构建应用程序,是一件吃力不讨好的事情,而没有框架的 应用程序,则很难想象会是一个好的应用程序。 因此,研究面向对象框架复用技术,了解框架的特点和工作原理,将会为 搭建自己的可重用的应用程序框架提供坚实的理论基础,具有重大的现实意义。 1 2 本文研究的主要内容和创新点 本文从理论性与实践性两方面出发,着重研究面向对象框架的开发技术。 首先从技术的角度讨论软件复用的一般性概念、软件复用的关键技术、构件与框 架的关系。然后讨论框架的一般性概念、框架的分类,并且将框架同其它相关的 复用技术进行比较。在对面向对象框架技术与设计模式进行详细地分析与研究的 基础上,针对传统的自底向上的面向对象框架开发方法开发周期长,软件可预测 性差,开发技巧要求高的问题,将设计模式引入自项向下的框架开发过程中,提 出基于设计模式的自项向下的框架开发方法,并对三种面向对象框架的开发技术 进行了比较。接着分析了j 2 e e 的多层应用体系,并对j 2 e e 平台上典型的w e b 框架s t r u t s 的工作原理做了详细介绍。在对网络考试系统领域的知识充分理解的 基础上,应用基于s t r m s 的框架开发方法,设计出了网络考试系统框架。 1 3 本文的组织结构 本文的组织结构如下: l 、引言:简述面向对象框架技术的研究背景及本文的主要内容和创新点。 2 、从技术的角度讨论了软件复用的概念、软件复用的关键技术、构件及其 实现技术、框架的概念及框架与构件的关系等。 3 、主要讨论了框架的结构特征及框架的分类、设计模式的概念,框架的开 发方法和开发技术,通过对传统框架开发方法进行分析,提出了一种基于设计模 式的自顶向下的框架开发方法。 4 、分析了j 2 e e 多层应用体系结构,介绍了m v c 设计模式、s t r u t s 框架的 基本原理和工作流程。 5 、应用基于s t r u t s 的框架开发方法实现网络考试系统框架。 6 、结束语:对论文工作进行总结,并列举出一些需要进一步完善的工作。 山东大学硕士学位论文 第2 章软件复用技术研究 2 1 软件复用的概念 自从m c i l r o y 在1 9 6 8 年的n a t o 软件工程会议上正式提出软件复用的概念 以来,软件复用已有了近四十年的发展历程,复用的对象也从早期的代码复用扩 展到对软件开发过程中一切有价值的信息的复用,包括需求、需求规约、设计、 源代码、测试计划和测试案例等。近四十年的实践证明,软件复用可以有效地提 高软件生产率,并减少开发代价,还可以提高软件系统的质量,是解决当前“软件 危机”的一条比较现实可行的途径。 许多研究人员从各自不同的角度对软件复用这个概念作了说明:b i g g e r s t a f f 和r i t c h e r 认为软件复用是在新的开发项目中使用以前已获褥的概念和对象; t r a c z 对软件复用的定义是,复用特别为复用目的而设计的软件的过程。这个定 义认为软件复用具有事先性,而将复用不是特别为复用目的设计的软件的过程称 之为软件挽救【l 】:g a m b h i r 把在多个应用中使用相同的软构件称作软件复用,不 区分软件复用与软件挽救之间的区别。目前广泛为人们接受的软件复用的定义主 要吸收t t r a c z 的思想,认为软件复用是指重复使用“特别为复用目的而设计的 软件”的过程【8 】,而可复用软件则是指为了复用目的而设计的软件,是指在开发 新的应用系统时重复使用以前的资源,如设计、代码、测试用例、度量、过程、 开发知识和经验等。 在2 0 世纪6 0 年代前以结构化软件开发思想为主导的年代里,软件复用的 含义指一些定义良好的函数包和功能模块。软件复用主要是函数方法、模块、 系统函数库这几种有限的复用形式。在这之后,进入了面向对象技术方法的发展 初期,这时软件复用的含义就是类库的复用。这几种复用方式被认为是在软件复 用发展初期的表现形式,因为这几种复用的着眼点仅局限于对代码的复用,而编 码工作仅仅是软件生产中的一个环节,局限于代码的复用充其量只能改进编码工 作,而不能改进整个软件生产过程。相形之下,设计复用比代码复用更具有优势。 它更一般化,因而能被应用到更广泛的环境中;而且,它在开发过程的初期就被 引入,因此对项目的影响更大。众所周知,系统的编码仅仅占系统开发工作量的 山东大学硕士学位论文 2 0 0 左右,而系统的分析、设计及维护的工作量占总的开发工作量的7 0 0 左右。 其中系统的设计凝结了系统架构工程师与领域专家的智慧与心血,是系统的灵魂 所在,决定了一个系统的优劣程度及各种质量特性。 近十几年来,面向对象技术出现并成为主流技术,为软件复用提供了基本 的技术支持。软件复用研究重新成为热点。人们根据复用的对象,将软件复用分 为产品复用和过程复用。产品复用指复用已有的软件构件,通过构件集成( 组装) 得到新系统。过程复用指复用已有的软件开发过程,使用可复用的应用生成器来 自动或半自动地生成所需系统。 从对可复用产品的了解程度和复用方式看,也可分为白盒复用与黑盒复用。 黑盒复用指对已有产品或构件不需作任何修改,直接进行复用,这是理想的复用 方式。它主要基于二迸制代码的复用,包括可执行程序的复用和基于库( 包括动 态链接库和静态库) 的复用。白盒复用指根据用户需求对已有产品进行适应性修 改后才可使用。白盒复用一般为源代码一级的复用,以及相应的测试用例、文档 等的复用。唧 软件复用有三个基本原则嘲,一是必须有可以复用的对象:二是所复用的对 象必须是有用的,三是复用者需要知道如何去使用被复用的对象。软件复用包括 两个相关过程:可复用软件( 构件) 的开发( d e v e l o p m e n tf o rr e u s e ) 和基于可复用软 件( 构件) 的应用系统构造( 集成和组装) ( d e v e l o p m e n t w i t hr e u s e ) 。这两个过程与传 统的软件开发过程有着很大的不同,主要体现在开发过程的各个阶段中,均以软 件复用为中心,以可复用的软件构件库为基础,构件的制作与复用相互衔接,从 而将软件复用的思想充分贯彻到软件开发过程的各个阶段中。可复用软件( 构件) 的开发是实现软件复用的基本条件,对象技术的广泛使用,提供了建造和使用构 件的概念基础和实用工具,有了可复用软件,基于可复用软件( 构件) 的应用系统 构造( 集成和组装) 才能得以实现。软件的生产也可以象硬件的生产一样,在设计 好框架后通过标准的构件组装而成。 2 2 软件复用的关键技术 自从软件复用思想产生以来,计算机科学家和软件工程师就致力于软件复用 技术的研究和实践。在近4 0 多年的时间里,出现了多种软件复用技术,如:库 山东大学硕士学位论文 函数,模板,面向对象、设计模式、组件、框架、构架等田】。 实现软件复用的关键技术主要包括;软件构件技术( s o f t w a r ec o m p o n e n t t e c h n o l o 舒) 、领域工程( d o m a i ne n g i n e e r i n g ) 、软件构架( s o f t w a r ea r c h i t e c t u r e ) 、 软件再工程( s o f t w a r er e e n g i n e e r i n g ) 、开放系统( o p e ns y s t e m ) 、软件过程 ( s o f t w a r e p r o c e s s ) 、c a s e 技术等【矧。实现软件复用的各种技术因素( 还包括非 技术因素,但是本文从技术角度出发不对其进行讨论) 是互相联系的。如图2 1 所示,它们结合在一起,共同影响软件复用的实现。 图2 - 1 实现软件复用的关键技术川 软件构件技术 构件是指应用系统中可以明确辨识的构成成分。而可复用构件是指具有相 对独立的功能和复用价值的构件。随着对软件复用理解的深入,构件的概念已不 再局限于源代码构件,而是延伸到系统和软件的需求规约、系统和软件的构架、 文档、测试计划、测试案例和数据以及其他对开发活动有用的信息。这些信息都 可以称为可复用软件构件。 软件体系结构 软件体系结构是对系统整体结构设计的刻画,包括全局组织与控制结构, 构件间通讯、同步和数据访问的协议,设计元素间的功能分配,物理分布,设计 元素集成,伸缩性和性能,设计选择等。软件体系结构研究如何快速、可靠地从 可复用构件构造系统的方式,着重于软件系统自身的整体结构和构件间的互联。 其中主要包括:软件体系结构原理和风格,软件体系结构的描述和规约,特定领 域软件体系结构,构件向软件体系结构的集成机制等。 框架可以看作是特定领域软件体系结构的实现,它使用一种编程语言实现 了系统的整体设计格局,为构件的组装提供了基础和上下文,具有直接使用性; 另外,为复用而开发的软件框架可以作为种大粒度的、抽象级别较高的软件构 件,因为它同样具有模块化和封装的特征,同样可以加入到复用库中,同样需要 分类检索和配置管理。 领域工程 领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的 过程,它覆盖了建立可复用软件构件的所有活动。领域是指一组具有相似或相近 软件需求的应用系统所覆盖的功能区域。 软件再工程 软件复用中的一些问题是与现有系统密切相关的,如:现有软件系统如何 适应当前技术的发展及需求的变化,采用更易于理解的、适应变化的、可复用的 系统软件构架并提炼出可复用的软件构件? 现存大量的遗产软件系统 ( l e g a c y s o r w a v e ) c a 技术的发展,正逐渐退出使用,如何对这些系统进行挖掘、 整理,得到有用的软件构件? 已有的软件构件随着时间的流逝会逐渐变得不可使 用,如何对它们进行维护,以延长其生命期,充分利用这些可复用构件等等。软 件再工程( s o r w 牡er e e n g i n e e r i n g ) i e 是解决这些问题的主要技术手段。 软件再工程是一个工程过程,它将逆向工程、重构和正向工程组合起来, 将现存系统重新构造为新的形式。再工程的基础是系统理解,包括对运行系统、 源代码、设计、分析、文档等的全面理解。 开放系统技术 开放系统技术的基本原则是在系统的开发中使用接口标准,同时使用符合 接口标准的实现。这些为系统开发中的设计决策,特别是对于系统的演化,提供 了一个稳定的基础。同时,也为系统( 子系统) 间的互操作提供了保证。开放系统 技术具有在保持( 甚至是提高) 系统效率的前提下降低开发成本、缩短开发周期的 可能。对于稳定的接口标准的依赖,使得开放系统更容易适应技术的进步。当前, 以解决异构环境中的互操作为目标的分布对象技术是开放系统技术中新的主流 技术,它使得符合接口标准的构件可以方便地以“即插即用”的方式组装到系统 中,实现了黑盒复用。 山东大学硕士学位论文 软件过程 软件过程是软件生存周期内为达到一定目标而必须实施的一系列相关过程 的集合。一个良好定义的软件过程对软件开发的质量和效率有着重要影响。当前, 已出现了一些实用的过程模型标准,如c m m 、i s 0 9 0 0 1 t i c k i t 等。 c a s e 技术 c a s e 技术中与软件复用相关的主要研究内容包括:在面向复用的软件开发 中,可复用构件的抽取、描述、分类和存储,在基于复用的软件开发中,可复用 构件的检索、提取和组装;可复用构件的度量等等。 2 3 构件( c o m p o n e n t ) 软件构件相当于工业流水线生产上的“标准件”。p 2 11 9 6 8 年n a t o 软件工程会 议,m c l l r o y 在提交会议的论文大量生产的软件构件中,提出了“软件组装生 产线”的思想。从那以后,采用构件技术实现软件复用,采用“搭积木”的方式生 产软件,成为软件开发人员长期的梦想。建立在构件复用基础上的软件复用带来 了极大的价值,它可以降低维护成本和整体软件开发成本,提高开发效率。 2 3 1 构件的概念 构件的内涵十分丰富,对于什么是构件众说纷纭。b r o w n 和w a l l n a u 认为构件 是“一个平凡的、几乎独立的、可替换的系统组成部分,它在定义完善的体系 结构环境中实现某一清晰的功能”,同时他们认为构件只能是“一个说明了合同并 且明显地与语境无关的组合单元” 1 0 1 。o m g 组织的定义也很有代表性:构件是一 个物理的、可替换的系统组成部份,它包装了实现体且提供了对一组接口的实现 方法。构件表示了系统实现体的一个物理片段,包括软件代码( 源代码、二进制 代码或可执行代码) ,或者等同体,例如脚本或命令文件。总之,构件自身必须 相容于接口且实现接口,接1 2 1 表示了驻留在构件内的成分所实现的服务。这些服 务定义了一个整合的行为,从一些构件实例提供给其它客户端构件实例。一般认 为构件是具有一定功能、能够独立工作或同其他构件组合起来协调工作的程序 体,一经产生,就与它的具体实现语言无关,可以认为是一段二进制码和数据段, 其内部具体实现是无法看到的,可将成熟的构件当作商品出售,在保证开发者的 8 利益同时最大地满足社会需求。 面向构件技术对一组类的组合进行封装,并代表完成一个或多个功能的特定 服务,也为用户提供了多个接口。整个构件隐藏了具体的实现,只用接口提供服 务。这样,在不同层次上,构件均可以将底层的多个逻辑组合成高层次上的粒度 更大的新构件,甚至直接封装到一个系统,使模块的重用从代码级、对象级、架 构级到系统级都可能实现。 通过构件技术,可以在更大的粒度上来封装独立性较强的业务逻辑,从结构 上分解商业应用系统,减少整体的复杂度。面向构件提供了重用的、高效的、随 需应变的应用架构。 构件化的软件极具适应性,由构件的组合来改变业务逻辑,满足多样的、变 化的各种用户需求。构件技术已成为计算机软件运行环境的一个不可或缺的重要 部分,正在与传统的基础中间件整合在一起成为面向构件的中间件这样一个新的 基础软件层次。 2 3 2 构件及其实现技术 构件是可复用的软件组成成份,可被用来构造其它软件它可以是被封装的 对象类、类树、些功能模块、软件框架、软件构架( 或体系结构a r c h i t e c t u r e ) 、 文档、分析件、设计模式( p a n e m ) 等。构件分为构件类和构件实例,通过给出 构件类的参数,生成实例,通过实例的组装和控制来构造相应的应用软件1 3 l 。 构件具有可独立配置、严格封装、接口规范、没有个体特有的属性等特点。 构件不同于0 0 技术强调对个体的抽象,侧重于复杂系统中组成部分的协调关 系,强调实体在环境中的存在形式,形成一个专门的技术领域。构件实现一般采 用中间件与构架技术。 中间件是位于操作系统和应用软件之间的通用服务,它的主要作用是用来屏 蔽网络硬件平台的差异性和操作系统与网络协议的异构性,使应用软件能够比较 平滑地运行于不同平台上中间件从本质上是对分布式应用的抽象,因而抛开了 与应用相关的业务逻辑的细节,保留了典型的分布交互模式的关键特征。经过抽 象,将纷繁复杂的分布式系统经过提炼和必要的隔离后,以统一的层面形式呈现 给应用。 构架是一种抽象的模型,其功能是将系统资源与应用构件隔离,这是保证构 山东大学硕士学位论文 件可重用甚至“即插即用”的基础。这与中间件的意图是一致的。构架不是具体软 件,而是一种抽象的模型,但模型中应当定义一些可操作的成分,如标准协议。 中间件与构架实际是从两种不同的角度看待软件的中间层次,可以说中间件 是构架或构件模型的具体实现,是构件软件存在的基础。中间件促进了构件化, 中间件和构架都实现了构件向应用的集成。 2 4 框架 2 4 1 什么是框架 设计模式【1 】对框架有如下定义:“a f r a m e w o r k i s as e t o f c o o p e r a t i n gc l a s s e s t h 蕊 m a k e u p a r e u s a b l ed e s i g n f o r as p e c i f i cc l a s s o f s o f l w a r e ( - - 个框架就是一组相互协 作的类,对于特定的一类软件,框架构成了一种可重用的设计) ”。这个定义虽 然主要着眼于面向对象的软件开发,但已经基本上给出了这个词的核心含义:框 架是软件系统的设计、开发过程中的一个概念,它强调对已完成的设计、代码的 重复使用,并且,一个框架主要适用于实现某一特定类型的软件系统。不同领域 的软件项目有着不同的框架类型。框架的作用在于:由于提取了特定领域软件的 共性部分,因此在此领域内新项目的开发过程中代码不需要从头编写,只需要在 框架的基础上进行一些开发和调整便可满足要求;对于开发过程而言,这样做会 提高软件的质量,降低成本,缩短开发时间,使开发越做越轻松,效益越做越好, 形成一种良性循环。 框架不是工具包,类库,a p i 。目前流行的很多框架中,包括了大量的类库和a p i , 但是调用a p i 并不就是在使用框架开发。仅仅使用a p i 时,开发者完成系统的主 体部分,并不时地调用类库实现特定任务。而框架构成了通用的、具有一般性的 系统主体部分,“二次开发者”只是像做填空题一样,根据具体业务,完成特定应 用系统中特殊的部分。 面向对象框架是设计复用和代码复用相结合的一种最为重要的形式 3 1 。说它 是代码复用的一种形式,是因为它是由一种程序设计语言写成,是一个应用的半 成品( 应用可以通过扩展框架来实现所需的功能) ,且常常包括具体的立即可用 的构件与子类。但面向对象框架更强调设计复用,它定义了应用的整体结构,框 山东大学硕士学位论文 架中各个构件的主要责任和构件之间的协作。因此也就记录了其应用领域中共同 的设计决策。 框架强调的是软件的设计重用性和系统的可扩充性,以缩短大型应用软件系 统的开发周期,提高开发质量。与传统的基于类库的面向对象重用技术比较,框 架更注重于面向专业领域的软件重用。框架具有领域相关性,构件根据框架进行 复合而生成可运行的系统。框架的粒度越大,其中包含的领域知识就更加完整。 框架涉及到的概念和技术方法较多,包括领域工程、设计模式、体系结构、 类库、构件技术等。一方面,当与模式、类库和构件结合在一起使用时,框架能 明显提高软件质量,降低应用开发的难度;另一方面,进行领域工程,研究发掘 出应用领域可复用的设计模式,基于发掘出的设计模式开发应用框架是一条完整 解决框架复用问题的有效途径。 2 4 2 框架与构件的关系 框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、 协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例 之间协作的方法,它为构件复用提供了上下文( c o n t e x t ) 关系。它是构件技术、软 件体系结构研究和应用软件开发三者发展结合的产物。在很多情况下,框架通常 以构件库的形式出现,但构件库只是框架的一个重要部分。框架的关键还在于框 架内对象间的交互模式和控制流模式。 框架比构件可定制性强。在某种程度上,将构件和框架看成两个不同但彼此 协作的技术或许更好【1 6 l 。首先,框架为组件提供了一个可复用的环境。每一个组 件在开发时都假定了它的存在环境,如果组件预定的环境不同,则它们就不可能 在一起很好地工作。而框架则为组件提供了一个标准的环境来处理错误,交换数 据,激活彼此间的互操作。通常所谓的“组件系统”如0 l e ,0 p e n d o c 和j a v a b e a n s 实际上是框架,它们解决了在构造复合文档和其它组合对象时所带来的标准问 题。框架与组件在一起协同工作的另一种方式就是框架使得开发新的组件变得容 易。实际上,不管组件库被设计得如何的优秀应用程序的功能看起来还是无法 完全满足,从而必须开发新的组件,框架则提供了设计组件所需的规范和实现它 们的模板。 山东大学硕士学位论文 组件的缺点在于它不能体现和重用领域中大的协作关系,因此它通常被用于 简化最终用户程序的功能开发;而框架则具有这一优势,因此框架被用于简化体 系结构和大型中间件的开发。 2 4 3 使用框架开发的优点 框架的最大好处就是重用。面向对象系统获得的最大的复用方式就是框架, 一个大的应用系统往往可能由多层互相协作的框架组成。 由于框架能重用代码,因此从已有构件库中建立应用变得非常容易,因为构 件都采用框架统一定义的接口,从而使构件间的通信简单。 框架能重用设计。它提供可重用的抽象算法及高层设计,并能将大系统分解 成更小的构件,而且能描述构件间的内部接口。这些标准接口使在已有的构件基 础上通过组装建立各种各样的系统成为可能。只要符合接口定义,新的构件就能 插入框架中,构件设计者就能重用构架的设计。 框架还能重用分析。所有的人员若按照框架的思想来分析事务,那么就能将 它划分为同样的构件,采用相似的解决方法,从而使采用同一框架的分析人员之 间能进行沟通。 采用一个经过良好设计的框架的优点: ( 1 ) 缩短开发周期。采用框架的开发,要比一切从头做起快速、高效得多。 通过一般化和重用机制,框架能最大限度地加快一个特定应用系统的实现。 ( 2 ) 经过良好设计的框架可以为程序提供清晰的结构并且提高程序的内聚 性。 ( 3 ) 在好的框架下,开发者只需要写一些必须的代码;他们不需要直接接 触底层的a p i 。 ( 4 ) 可维护性。完全通过委托开发完成的系统很难由其他厂商维护。框架 往往是多个企业、大量开发者实践的成果,因此能在一定程度上打破上述壁垒, 增进系统的可维护性。 第3 章面向对象框架研究 可复用性是人类解决问题时普遍使用的一个概念。目前的状况是一方面有大 量的软件要开发,要维护,软件危机依然严重存在;另一方面是有大量的重复工 作存在。据美国加州的一项调查结果显示,在商业银行和保险业务应用系统中, 7 5 的功能重复地出现在多个系统中。现在越来越多的人已经认识到,解决软件 危机的一个重要途径就是采用面向对象框架技术。 3 1 框架的一般性概念 一般而言,框架反映了应用的整体结构,定义了类和对象的分割,各部分的 主要责任,类和对象协作关系,以及控制流程。框架强调软件的复用性和系统的 扩充性。框架具有部分实现的特性,它的使用能向应用提供大部分设计和代码, 使应用程序设计者能集中精力于程序本身。 3 1 1 面向对象框架的特征 ( 1 ) 、可复用性:框架强调应用领域内重复出现的大粒度问题及其解的抽象 提取,适应于该领域内一组相关问题的求解,可作为应用程序的半成品,具有较 大的重用粒度。可复用性是框架的最重要的特征。 ( 2 ) 、模块化和封装性:框架是对某领域内应用软件公用部分的抽象,具体 表现为一组相关的抽象类。面向对象的封装性可为应用框架提供统一而稳定的使 用界面,从而可使设计与实现的细节局部化并对用户透明,这为框架的使用和实 现带来了诸多方便。 ( 3 ) 、集成性:框架的本质内涵为对一组问题求解的基础结构。通常表现为 在统一基础结构下的一组设计模式( d e s i g np a t t e r n ) 与相应功能的有机合成。面向 对象的继承与组合机制可以用来较好地表达框架的集成性。 ( 4 ) 、可扩展性:框架为用户提供了直接使用其内置的手段。但更为重要的 是,框架也为用户提供了修改其功能及扩充其功能的途径。框架的扩展性是通过 扩展点的实例化过程实现的。 ( 5 ) 、领域性:框架总是面向特定领域的,记录了应用领域的公共设计决策, :匿 山东大学硕士学位论文 反映了特定领域应用软件的体系结构,是特定领域软件体系结构( d s s a ) 的实 例。 ( 6 ) 、易移植性:由于不同抱应用领域对其应用环境往往会有不同的要求。 因此,框架应该可以在单机、并行机或分布式网络环境等多重平台上实现,而对 应用程序不产生影响。框架表示的抽象界面为此提供了可能。【1 1 1 3 1 2 框架与一般性应用系统的比较 一般的,一个应用是针对具体需求,解决具体问题的可执行系统,是具体问 题的解决方案。这一方案是用具体的编程语言描述的( 这一点与框架是一样的) , 具有一定的功能。而框架是针对某个具体领域的,是同一领域一簇相似应用的公 共骨架,因此,框架和应用所关注的范围是不同的,框架比一般应用涉及到的范 围更广泛;另外,框架具有同领域应用的一般性特征,因此它比应用系统具有更 高的抽象层次。 框架是应用系统的部分实现。框架提取了领域中相似应用的公共部分,封装 于稳定的界面下,这就是框架中的冻点,即稳定不变的部分,而且框架向应用开 发者提供了可扩展的热点以适应领域的可变性,使用户能够根据需求很容易在这 些热点上进行定制而得到一个新的应用程序。通过对可变部分( 热点) 的不同实 现,可以得到一簇系统,如图3 1 所示。 图3 - l 特定领域框架与应用的关系 应用具有直接执行性,框架也具有这一特性,但这两者是不同的。一般情况 下,框架通过这一特性为一族应用提供默认的行为,而具体的应用可以改变这些 默认的行为以实现自己独特的行为。 3 1 3 框架中的几个重要结构特点 面向对象框架中存在些重要和常见的概念,这些概念对刻画框架的本质起 着重要的作用,它们也是框架的重要和常用的构造和扩展机制叫】: l 、熟点( h o tp o i n t ) 和冻点( f r o z e np o i n t ) 人们依据框架自身的特点将其分为两部分:( 1 ) 框架的核心即冻点,它对 于框架所在领域的所有应用都适用,描述了应用的典型的体系结构。( 2 ) 热点, 它定义了框架的可变点,使得框架能根据具体应用的要求被定制。热点是在应用 领域的一种扩展槽,开发者根据自己的需要填充这些扩展槽。热点使得框架具有 灵活性。因此,识别领域专用的热点是框架开发中最为关心的问题。而在基于框 架的应用开发中,只须扩展框架热点的全部或某些部分。 2 、抽象类( a b s t r a c tc l a s s ) 抽象类是一种不能进行实例化的类,因此它只能作为基类使用。在抽象类 中至少有一个没有实现的方法,这个方法需要留到子类中去实现,这样就提供了 一种扩展机制。由于抽象类不能被实例化,它可以作为实现具体子类的模板,因 此它可以被看作是一种支持设计的机制。 框架使用抽象类作为其构件抽象类规定了父类和子类的接口,当客户需 要子类化抽象类并使用子类的实例时,他实际上将使用一个实现了抽象类接口的 子类对象。而且,抽象类同时提供了子类的部分实现,因而使得子类对象具有抽 象类的某些行为和功能。 3 、模板方法( t e m p l a t em e t h o d ) 、抽象操作( a b s t r a c to p e r a t i o n ) 和钩子操作 ( h o o k o p c r a t i o n ) 模板方法在抽象父类中定义一个算法的基本骨架,而将算法的一些具体步 骤延迟到子类实现。每一个具体的步骤都可被子类重新定义为一个单独的操作, 这样,子类就可实现自己的独特的行为特征而不改变整个算法的结构。抽象父类 能将单独的步骤处理为一个抽象操作或钩子操作。抽象操作是一个纯的虚方法, 它完全不实现任何的算法步骤,具体子类需要按照自己的要求定制它;而钩子操 作提供了默认的具体算法步骤的实现,具体子类可以定制以实现自己行为,也可 使用父类默认的行为。 山东大学硕士学位论文 框架通过使用模板方法并提供隐式的抽象方法或显式的钩子方法,允许应 用程序来扩展其固定接口。框架的这种扩展性对于保证及时地定制新的应用程序 服务和特征是十分必要的。 4 、反向控制( i n v e r s i o no f c o n t r 0 1 ) 框架的一个重要机制是用户定义的方法经常是被框架调用,而不是用户的 应用代码调用框架。这种机制被称之为“反向控制”。它使得标准的应用程序过程 可由框架派发机制激活的事件处理对象步步地定制。当事件发生时,框架的派

温馨提示

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

评论

0/150

提交评论