(计算机科学与技术专业论文)基于构件的软件复用技术研究与应用实践.pdf_第1页
(计算机科学与技术专业论文)基于构件的软件复用技术研究与应用实践.pdf_第2页
(计算机科学与技术专业论文)基于构件的软件复用技术研究与应用实践.pdf_第3页
(计算机科学与技术专业论文)基于构件的软件复用技术研究与应用实践.pdf_第4页
(计算机科学与技术专业论文)基于构件的软件复用技术研究与应用实践.pdf_第5页
已阅读5页,还剩67页未读 继续免费阅读

(计算机科学与技术专业论文)基于构件的软件复用技术研究与应用实践.pdf.pdf 免费下载

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

文档简介

中文摘要 摘要 随着大容量、高速度计算机的出现, 发急剧增长,软件系统的规模越来越大, 使计算机的应用范围迅速扩大,软件开 复杂程度越来越高,软件可靠性问题也 越来越突出。原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变 软件生产方式,提高软件生产率,软件危机开始爆发。 近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基 本的技术支持。软件复用研究重新成为热点,被视为解决软件危机,提高软件生 产效率和质量的现实可行的途径。通过软件复用,可以提高软件开发的效率和质 量。当前软件构件技术被视为实现成功复用的关键因素之一。同时,在分布对象 研究领域,软件构件技术也是一个重要内容,基于构件的复用是产品复用的主要 形式,也是当前复用研究的焦点。 本文首先介绍软件构件的概念、国内外发展现状及其相关技术,并对应用于 软件公司管理系统开发的关键技术软件复用技术进行了分析,以期对w e b 应用体系结构和软件构件技术有一个全面的研究和认识。然后从一种框架技术入 手,对当前流行的软件构件技术进行了分析。在一个几经设计好的w e b 应用框架 的基础上,开发了一些能够适应需要的软件构件,并详细分析了软件构件的理论 基础和实现过程。 最后,把软件构件技术应用于一软件公司管理系统的开发过程中。事实证明, 软件构件技术能够有效提高了复杂w e b 应用的开发效率。 关键词:软件复用;软件构件技术;w e b 应用体系结构;框架技术 英文摘要 a b s t r a c t w i t hl a r g ec a p a c i t y ,h i g h - s p e e dt h ee m e r g e n c eo ft h ec o m p u t e r ,t h ec o m p u t e r r a p i d l ye x p a n d i n gr a n g eo fa p p l i c a t i o n s ,t h er a p i dg r o w t ho fs o f t w a r ed e v e l o p m e n t , s o f t w a r es y s t e m ,t h ei n c r e a s i n gs c a l e ,c o m p l e x i t yi sg e t t i n gh i g h e ra n dh i 【曲c r , t h e i s s u eo fs o f t w a r er e l i a b i l i t yh a sb e c o m ei n c r e a s i n g l yp r o m i n e n t t h eo r i g i n a ld e s i g no f t h ei n d i v i d u a l ,p e r s o n a lu s ei sn ol o n g e ra b l et om e e tt h er e q u i r e m e n t so ft h ew a y , t h e r ei sa nu r g e n tn e e dt oc h a n g et h es o f t w a r em o d eo fp r o d u c t i o na n dt oi m p r o v e s o f t w a r ep r o d u c t i v i t y ,a n ds o r w a r ec r i s i sb e g a n i nt h er e c e n tt e ny e a r s ,o b j e c t o r i e n t e dt e c h n o l o g yh a sa p p e a r e da n db e c o m e sa m a i n s t r e a mt e c h n o l o g y ,t h e r e b yp r o v i d i n gf u n d a m e n t a lt e c h n o l o g y s u p p o r tf o r s o f t - w a r er e u s e s o f t w a r er e u s er e g a i n sm o r ea t t e n t i o ni ns o f t w a r ee n g i n e e r i n gr e s e a r c h a n di sc o n s i d e r e dap r a t i c a la n df e a s i b l ea p p r o a c ht os o l v i n gt h es o f t w a r ec r i s i s s o f t w a r er e u s ei m p r o v e se f f i c i e n c ya n dq u a l i t yi nt h es o f t w a r ed e v e l o p m e n t n o w s o f t w a r ec o m p o n e n tt e c h n o l o g yi sr e g a r d e da sak e yf a c t o ro fs u c c e s s f u ls o f t w a r e r e u s e a tt h es a m et i m e ,s o t t w a r ec o m p o n e n tt e c h n o l o g yp l a y sa ni m p o r t a n tr o l ei n d i s t r i b u t e do b j e c tr e s e a r c ha n dr e u s eb a s e do ns o f t w a r ec o m p o n e n t si st h ei m p o r t a n t f o r mo fp r o d u c tr e u s ea n di st h em a j o ra r e ao fs o t t w a r er e u s er e s e a r c h f i r s to fa l l ,t h et h e s i si n t r o d u c e dt h ec o n c e p t so fs o f t w a r ec o m p o n e n tt e c h n o l o g y , t h en a t i o n a la n do v e r s e a sd e v e l o p m e n to fs o r w a r ec o m p o n e n tt e c h n o l o g y t h e nt h e t h e s i sa n a l y s i st h es o r w a r er e u s et e c h n o l o g y ,w h i c hi st h ek e yt e c h n o l o g yo fs o f t w a r e d e v e l o p m e n to fs o r w a r ec o m p a n ym a n a g e m e n ts y s t e m ,e x p e c t e dt oh a v eaw h o l e r e c o g n i t i o no fw e ba p p l i c a t i o na r c h i t e c t u r ea n ds o f t w a r ec o m p o n e n tt e c h n o l o g y n e x t t o ,o nb a s i so fak i n do ff r a m e w o r kt e c h n o l o g ya n da n a l y z i n gc u r r e n t l yp o p u l a r s o f t w a r er e u s et e c h n o l o g y o nt h eb a s i so fas e v e r a l - t i m e sd e s i g n e dw e ba p p l i c a t i o n f r a m e w o r k , d e v e l o p e dt oa d a p tt ot h en e e d so f an u m b e ro fs o f t w a r ec o m p o n e n t sa n d d e t a i l e da n a l y s i so ft h es o f t w a r ec o m p o n e n to ft h et h e o r e t i c a lb a s i sa n di m p l e m e n t 英文摘要 f i n a l l y ,a p p l i e ss o f t w a r ec o m p o n e n tt e c h n o l o g y i nt h ed e v e l o p m e n to fa m a n a g e m e n ts y s t e mo fs o f t w a r ec o m p a n yi nw e ba p p l i c a t i o nd e v e l o p m e n t i th a s p r o v e dt h a ts o f t w a r ec o m p o n e n tt e c h n o l o g ys u p p o r t sw e ba p p l i c a t i o nd e v e l o p m e n t a n di n c r e a s e st h ee f f i c i e n c yo fw e ba p p l i c a t i o nd e v e l o p m e n t k e yw o r d s :s o f t w a r er e u s e ;s o f t w a r ec o m p o n e n tt e c h n o l o g y :w e ba p p l i c a t i o n a r c h i t e c t u r e :f r a m e w o r kt e c h n o l o g y 大连海事大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:本论文是在导师的指导下,独立进行研究工作所取得的成果, 撰写成博,硕士学位论文 = = 基王拉鲑敛熬往复届亟苤班塞墨虐届塞跪:。除论 文中已经注明引用的内容外,对论文的研究做出重要贡献的个人和集体,均已在 文中以明确方式标明。本论文中不包含任何未加明确注明的其他个入或集体己经 公开发表或未公开发表的成果。本声明的法律责任由本人承担。 学位论文作者签名:二壁垒- 竺少j 兰箩i 学位论文版权使用授权书 本学位论文作者及指导教师完全了解大连海事大学有关保留、使用研究生学 位论文的规定,即:大连海事大学有权保留并向国家有关部门或机构送交学位论 文的复印件和电子版,允许论文被查阅和借阅。本人授权大连海事大学可以将本 学位论文的全部或部分内容编入有关数据库进行检索,也可采用影印、缩印或扫 描等复制手段保存和汇编学位论文。同意将本学位论文收录到中国优秀博硕士 学位论文全文数据库( 中国学术期刊( 光盘版) 电子杂志社) 、中国学位论 文全文数据库( 中国科学技术信息研究所) 等数据库中,并以电子出版物形式 出版发行和提供信息服务。保密的论文在解密后遵守此规定。 本学位论文属于:保密口在 年解密后适用本授权书。 不保密口( 请在以上方框内打“ ) 论文储繇黼嘞燧名:萨乙 日期: 年 月 e t 基于构件的软件复用技术研究与应用实践 第1 章绪论 1 1 研究背景 随着计算机技术的发展,面对日益复杂的计算机软件系统,人们认识到,要 真正实现软件的工业化生产,提高软件的生产效率和质量,软件复用是一条切实 可行的途径。为了解决软件危机,在1 9 6 8 年的n a t o 会议上首次提出了“软件 工程”的概念【l 】,使软件开发开始了从“艺术”、“技巧”和“个体行为”向“工 程和“群体协同工作”转化的历程【2 】。三十多年来,软件工程的研究和实践取 得了长足的发展,虽然距离彻底解决软件危机尚有较大差距,但对软件开发的工 程化以及软件产业的发展起到了积极的推动作用,提供了良好的技术支持。近年 来。构件技术和软件体系结构技术成为软件工程界关注的重点,被认为是提高软 件生产率和软件质量、解决软件危机的关键技术。 构件技术是指通过组装一系列可复用的软件构件来构造软件系统的软件技 术。通过运用构件技术,开发人员可以有效的进行软件复用,减少重复开发,缩 短软件的开发时间,降低软件的开发成本。 面向构件技术对一组类的组合进行封装,并代表完成一个或多个功能的特定 服务,也为用户提供了多个接口。整个构件隐藏了具体的实现,只用接口提供服 务。这样,在不同层次上,构件均可以将底层的多个逻辑组合成高层次上的粒度 更大的新构件,甚至直接封装到一个系统,使模块的重用从代码级、对象级、架 构级到系统级都可能实现,从而使软件像硬件一样,通过各种构件的组合就可开 发完成。 尽管j 2 e e 在企业级w e b 应用上取得了巨大的成功,但同时也存在着一些不 可忽视的缺陷。作为j 2 e e 的核心组件,e j b ( e n i e r p r i s e j a v a b e a n ) 在解决分布式应 用上具有很好的效果,但它在操作上的复杂性给系统开发过程增添了困难,同时 也带来了前期开发成本高、程序繁琐不利于后期测试等问题。复杂的代码使得系 统的整体性能偏低,这与开发者的期望相差较大。由于e j b 技术的复杂性及其带 来的性能低下的问题,并且使用e j b 技术需要昂贵的应用服务器软件的支持,众 多的开发人员开始寻求一些替代e j b 的解决方案。近年来,在国外的开源社区里, 第1 章绪论 开发人员提出了很多新的思路和新的应用框架,旨在建立轻量级的w e b 应用的框 架。 这几年,陆续出现了各种基于j 2 e e 的开发框架。早期有建立在e j b 基础上 的远程e j b 框架和本地e j b 框架,接着出现了s t r u t s 、t a p e s t r y 、s p r i n g 框架,还 有关于数据库访问方面的h i b e r n a t e 、i b a t i s 等框架。基于w e b 应用的几个主要 层次上都存在多种应用框架,这些框架提供了方便快捷的开发模式,使得基于 j 2 e e 的w c b 应用蓬勃发展。 从理论角度来看,j 2 e e 框架本身就是由不同功能的组件以及它们之间的接口 规范所构成的,这就为在j 2 e e 框架中引入软件复用技术提供了可能性。我们可 以将j 2 e e 框架中的组件技术与软件复用中的构件技术相结合,将j 2 e e 框架中成 熟的组件模型和接口规范看作是构件技术的一种实现和应用。可以将c b s d ( 基 于构件的软件开发) 方法和领域工程等方面的知识引入基于j 2 e e 框架的软件开 发过程中,从而使得该开发过程更加高效和容易。从实际运用角度来看,软件复 用技术和j 2 e e 框架的结合将会打破传统的“一切从零开始”的软件生命周期模 型,在极大程度上缩短软件开发周期,提高软件开发效率。尤其对于大规模的企 业级应用程序来说,两者的结合将具有重大意义。因此,软件复用技术与j 2 e e 框架的结合既可以促进这两项技术的融合与扩展,又对实际应用软件的开发具有 现实意义。 1 2 国内外研究现状 1 9 6 8 年n a t o 软件工程会议,m c l l r o y 在提交会议的论文大量生产的软件 构件中,提出了“软件组装生产线”的思想。从那以后,采用构件技术实现软 件复用,采用“搭积木的方式生产软件,成为软件开发人员努力的方向。软件 复用是指重复使用“为了复用目的而设计的软件”的过程。就软件开发而言,软 件复用包括:早期的函数复用、面向对象言语中的类的复用,以及互联网时代的 完整软件体系的构件复用。 有效的软件复用是可以提高软件开发的效率和质量。建立在构件复用基础上 的软件复用将会带来极大的价值,( ( s o f t w a r er e u s e ) ) 指出很多公司通过复用取得 的成就使们坚信,管理层可以期待获得如下优势。 基于构件的软件复用技术研究与应用实践 投放市场时间:减少为原来的1 2 到1 5 ;缺陷密度:降低为原来的1 5 到1 1 0 ; 维护成本:降低为原来的1 5 到1 1 0 ;整体软件开发成本:降低大约1 5 ,长期 项目可降低高达7 5 。 因此,软件复用中的构件技术一直被视为解决软件危机现实可行的途径。在 过去几十年尽管软件开发的主流思想几经沿革,软件业一直没有放弃构件技术的 尝试。 6 0 年代末到8 0 年代初,结构化的软件开发思想占主导地位,当时的复用是 函数复用和模块复用。函数通过参数来适应不同应用需求的变化,p a c k a g e 模块 也是通过接口规范说明进行连接和组装实现复用。但是,由于结构化的存在极大 隐患,函数层面的复用能力有限,其结果是系统结构混乱、效率低,软件成份复 用性差。函数复用和模块复用没有解决软件工程的危机。 8 0 年代起,面向对象的软件开发思想迅速发展起来,通过类的封装、继承和 应用,面向对象的软件开发成功的实现代码级的复用。类和封装性,实现数据抽 象和信息隐蔽,继承性,提高了代码复用性。面向对象技术被公认为当前的主流 的技术。但是,面向对象的复用脱离不了代码级复用的本质,由于复用的颗粒较 低,软件开发中的复用的潜力远远没有发挥出来。类复用也没有彻底解决软件工 程的危机。 因此,本人在一个已经设计好的w e b 应用框架j s s i 的基础上,开发了一些 可以复用的j a v a 语言构件类,并与j s s i 框架组装达到设计的复用。 1 - 3 论文的主要研究内容 本文以w e b 应用为基础,结合应用框架j s s i ,并在此基础上以软件公司管理 系统开发项目为研究背景,同时结合应用框架j s s i 的软件构件的特点,对软件构 件在实际项目中的应用实践提出研究。具体来说包括以下研究内容: ( 1 ) w e b 应用体系结构的研究:为了设计出适合的w e b 应用j s s i 框架的构件, 对w e b 应用体系结构进行了研究。 ( 2 ) 软件复用技术的研究:深入研究了关于软件复用的各项技术,为构件复用 提供了理论支持。并把软件复用的技术应用到实际的软件构件开发当中,提高软 件开发的质量与效率。分析了在适合的应用框架下运用构件开发软件的好处。 第1 章绪论 ( 3 ) 应用开发框架j s s i 下的构件:通过对构件技术和构件组装技术的研究, 本人设计了适合一些面向高层复用的框架j s s i 的j a v a 语言构件,使得工具类构 件与该框架组装能够在w e b 应用系统的开发取得更好的支持。 ( 4 ) 框架j s s i 和构件在实际软件开发中的应用:把框架j s s i 和新开发的工具 类构件组装应用于- - , j , 型软件公司的日常管理系统开发中,以此来证明结合框架 的构件类库的优势。对日常管理系统依次进行了需求分析、设计,按照功能划分 出子系统及其相应模块,并此基础上给出了系统登陆界面以及项目管理的详细实 现问题。事实证明,结合j s s i 框架的工具类构件能够较好地支持w e b 应用系统 的开发,有效提高了复杂w e b 应用的开发效率。 1 4 论文的结构和安排 本文共分七章: 第一章、绪论。主要介绍了本文的研究背景及国内外现状、主要内容和论文 的组织结构。 第二章、w e b 应用体系结构的研究。主要介绍了w e b 软件体系结构,并分 析了w e b 开发常用的分层系统结构。 第三章、软件复用技术的研究。主要介绍了软件复用技术的概念及软件复用 的意义及关键技术,并在关键技术其中着重介绍了构件。 第四章、框架技术与构件技术的研究。主要介绍了框架技术与构件关键技术, 并简单介绍了构件应用的基础一j s s i 框架,然后在j s s i 框架基础上进行了j a v a 语言的构件设计。 第五章、日常管理系统分析与总体设计。主要对日常管理系统各层次结构进 行了分析,对系统各模块进行了需求分析和业务流程设计。 第六章、日常管理系统详细实现。主要对日常管理系统中的几个模块从设计 到实现作了具体的介绍,并按照一定的目标要求对设计实现的系统进行了测试, 对实现的系统界面作了展示,介绍j s s i 框架上开发的构件在实际的软件开发中的 应用,并通过在系统中的应用来证明设计的构件的优越性。 第七章、总结与展望。对全文所做的工作进行了总结,并对未来的完善工作 和进一步的研究提出展望。 基于构件的软件复用技术研究与应用实践 第2 章w e b 应用体系结构的研究 2 1 软件体系结构 软件体系结构又被称为软件构件结构s c i ( s o f t w a r ec o m p o n e n ti n f r a s t r u c t u r e ) 或软件架构,是对软件系统整体结构的刻画。软件体系结构是具有一定形式的结 构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责 对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组 组合连接起来。软件体系结构是软件工程继过程性模型和面向对象模型之后的最 新模型。软件体系结构研究如何应用可复用构件系统快速可靠地对系统进行构造, 着重于软件系统自身的整体结构和构件间的互连与通信。软件体系结构是软件在 系统级层次上的组成和行为,是设计过程中不可缺少的一个阶段,它对复杂软件 的后期设计起到了决定性的作用。 虽然软件体系结构已经在软件工程领域中有着广泛的应用,但迄今为止还没 有一个被大家所公认的定义。许多著名的专家学者都从不同角度和不同侧面对软 件体系结构进行了刻画说明,其中较为典型的定义有以下几种【3 】: ( 1 ) d e w a y n ep e r r y 和a l e xw o l f 曾这样定义:软件体系结构是具有一定形式 的结构化元素,即构件的集合。包括处理构件、数据构件和连接构件。处理构件 负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部 分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方 法在其他的定义和方法中基本上得到保持。 ( 2 ) m a r ys h a w 和d a v i dg a r l a n 认为软件体系结构是软件设计过程中的一个层 次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总 体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设 计元素的组织,规模和性能,在各设计方案问进行选择等。软件体系结构处理算 法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和 全局控制结构、关于通讯、同步与数据存取的协议,设计构件功能定义,物理分 布与合成,设计方案的选择、评估与实现等。 第2 章w e b 应用体系结构的研究 ( 3 ) k r u c h t e 指出,软件体系结构有四个角度,它们从不同方面对系统进行描 述:概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与 层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库 函数在开发环境中的组织。 ( 4 ) h a y e sr o t h 则认为软件体系结构是一个抽象的系统规范,主要包括用其行 为来描述的功能构件和构件之问的相互连接、接口和关系。 ( 5 ) d a v i dg a r l a n 和d e w n ep e r r y 于1 9 9 5 年在i e e e 软件工程学报上又采用如 下的定义:软件体系结构是一个程序系统各构件的结构、它们之间的相互关系以 及进行设计的原则和随时间进化的指导方针。 ( 6 ) b a r r yb o e h m 和他的学生提出,一个软件体系结构包括一个软件和系统构 件,互联及约束的集合:一个系统需求说明的集合:一个基本原理用以说明这一 构件,互联和约束能够满足系统需求。 ( 7 ) 1 9 9 7 年,b a s s ,c t e m e n t s 和k a z m a n 在使用软件体系结构一书中给出 如下的定义:一个程序或计算机系统的软件体系结构包括一个或一组软件构件、 软件构件的外部的可见特性及其相互关系。其中。“软件外部的可见特性”是指软 件构件提供的服务、性能、特性、错误处理、共享资源使用等。 软件体系结构作为一个软件系统的高层结构。它的主要特点有: ( 1 ) 软件体系结构是一个高次上的抽象,它并不涉及具体的系统结构,比如 结构模式是c s 还是b s ,不关心具体的实现。 ( 2 ) 软件体系结构必须支持系统需求的功能。在设计软件体系结构的时候, 考虑系统的动态行为是必须的。 ( 3 ) 软件体系结构必须遵循系统的特征( 系统的非功能需求) 。包括考虑现有系 统的兼容性、安全性和可靠性同时还要考虑系统以后的扩展性、伸缩性和复用 性。这些需求可能发生冲突,因此,在设计体系结构时,必须考虑在多个可选方 案中如何达到某种层次上平衡。 ( 4 ) 达到体系结构这个层次上后,系统实现的细节都被隐藏。 伴随着软件规模的扩大和新的商业模式的涌现,必然会出现更多、更大的应 用系统。如何设计这些系统的体系结构,使软件开发达到更快、更好、更便宜, 基于构件的软件复用技术研究与应用实践 是每个软件开发人员都必须面对的问题。为了提高软件开发的效率和质量,研究 软件系统的体系构架还是非常必要的。常见的软件体系结构风格主要有以下五种: ( 1 ) 管道和过滤器; ( 2 ) 数据抽象和面向对象结构; ( 3 ) 基于事件的隐式调用: ( 4 ) 分层系统; ( 5 ) 仓库。 b s 结构模式大多采用的是分布式的分层体系结构。本文所采用的就是分层 软件体系结构,下面将对分层系统软件体系结构详细介绍一下。 2 2 分层系统软件体系结构 层次系统【4 】风格将软件结构组织成一个层次结构,一个分层系统是分层次组 织的,每层对上层提供服务,同时对下层来讲也是一个服务的对象。在一些分层 系统中,内部的层只对相邻的层可见。除了相邻的外层或经过挑选用于输出的特 定函数以外,内层都被隐藏起来。这种风格支持基于可增加抽象层的设计。由于 每层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的 方法实现,同样为软件重用提供了强大的支持。 分层系统体系结构有以下优剧5 】: 第一,支持基于抽象程度递增的系统设计。这允许设计者可以将一个复杂系 统设计按递增的步骤进行分解。 第二,支持扩充。因为每层至多和与之相邻的上层和下层交互,所以,改变 某层的功能最多只会影响与之相邻的其它两层。 第三,支持重用。与抽象数据类型一样,只要对相邻层提供同样的接口,每 层可以有很多不同的可相互替代的实现方法。因此,可能出现对于标准的层接口 的定义可以有不同的实现方法。 但是分层系统体系结构也有存在缺点: 首先,并不是每个系统都可以很容易地划分为分层的模式。甚至即使一个系 统可在逻辑上进行分层,但可能出于性能的考虑需要在逻辑上与处于高层的函数 和处于低层的实现之间建立紧密的联系。 第2 章w e b 应用体系结构的研究 其次,很难找到一个合适的、正确的层次抽象方法。分层设计作为一个设计 的理念方法,在软件设计中得到越来越广泛的应用,特别是在复杂大型软件的研 制开发项目中。即使是在中小型软件的开发过程中,也要合理的把系统划分为几 个层次,把服务接口一步步地建立起来。系统在进行软件层次设计时应遵循如下 三个基本原则【6 】: ( 1 ) 实现和接口分离原则 这是对所有模块接口的一个通用原则。不同的层次实际上是不同的模块,只 不过这些模块在逻辑关系上有上下的依赖关系。在这个分离原则之下,层次之间 的互换性就可以得到保证。对于一般的软件设计来说,最常见的是抽象层,即把 应用部分与一些具体的实现分离开来。 ( 2 ) 单向性原则 软件的分层应该是单向的,即只能上层调用下层,反过来通常是不行的。因 为上层调用下层,结果是上层离不开下层,但下层可以独立地存在:如果下层同 时调用上层,上下层就紧密地耦合在一起,谁也离不开谁,形成了软件中的共生 现象,导致模块的互换性和可重用性就得不到保证。 ( 3 ) 服务接v i 的粒度提升原则 每层的存在应该是为了完成一定的使用,从软件设计和程序编写的角度来讲, 应该向上一层提供更加方便快捷的服务接口。简单重复下一层功能的层是没有意 义的,一般越往上层服务接口的粒度越大。对很多应用软件来说,在与数据库直 接打交道的地方有数据抽象层。该层把上层的应用同具体的数据库引擎分离开来。 在此之上,建立业务对象层( b u s i n e s so b j e c t ) ,把具体的业务逻辑反映到该层次上。 再往上是交互的用户界面等。 多层结构系统具有良好的可拓展性、可维护性和稳定的系统质量,同时,可 以提高软件的可重用性,节省项目的开发时间。在开发中,具体采取几层构架, 可根据系统的业务繁简程度灵活运用。 对于j 2 e e 技术架构中的动态w e b 编程技术而言,其软件体系结构经历了 m o d e l l 和m o d e l 2 时代7 1 。 基于构件的软件复用技术研究与应用实践 2 3m o d e l l 由于j s p 技术的发展,很快这种便于掌握和可实现快速开发的技术就成了创 建w e b 应用的主要技术。j s p 页面中可以非常容易地结合业务逻辑( j s p :u s e b e a n ) 、 服务端处理过程( j s p :l e t ) 和h t m l ,在j s p 页面中同时实现显示,业务逻辑和 流程控制,从而可以快速地完成应用开发。现在很多的w e b 应用就是由一组j s p 页面构成的。这种以j s p 为中心的开发模型我们可以称之为m o d e l l 。m o d e l l 流 程如图2 1 所示。 1 ;軎书i矽“瑚 辔。7 磁 、 匕一二。一 。? 。j 象 l jl + 浏 4 响应 ,览 2 r 器 1r 3 lj7 :尊v a 一7 。l 卜 缴么l 、瞄_ _ 二厶_ - l il l - - w e b 服务器企业数据库 图2 1m o d e l l 的程序流程 f 适2 1t h ep r o g r a mf l o wo f m o d e l i m o d e l l 模式的实现比较简单,适用于快速开发小规模项目。但从工程化的角 度看,它的局限性明显:j s p 页面兼v i e w 和c o n t r o l l e r 两种角色功能,将控制逻 辑和表现逻辑混合到一起,从而导致代码的重用性低,增加了系统扩展和维护的 难度。 2 4m o d e l 2 m o d e l 2 已经是基于m v c 架构的设计模式。在m o d e l 2 架构中,s e r v l e t 作为 前端控制器,负责接收客户端发送的请求,在s e r v l e t 中之包含控制逻辑和简单的 第2 章w e b 应用体系结构的研究 前端处理;然后,调用后端j a v a b e a n 来完成实际的逻辑处理;然后,转发到相应 的j s p 页面处理显示逻辑。其实现方式如图2 2 所示。 图2 2m o d e l 2 的程序流程 f i g 2 2t h ep r o g r a mf l o wo fm o d e l 2 企业数据库 在m o d e l 2 模式下,j s p 不再包含控制器的责任,而仅仅承担表现层角色,将 表现结果呈现给用户,j s p 页面的请求与s e r v l e t ( 控制器) 交互,而s e r v l e t 负责与 j a v a b e a n 通信。在m o d e l 2 模式下,模型( m o d e l ) f hj a v a b e a n 充当,视图( v i e w ) f l q j s p 页面充当,而控制器( c o n t r o l l e r ) 贝0 由s e r v l e t 充当。 2 5m v c 模式 m v c 框架即是模型视图控制器( 1 o d e l v i e w - c o n 臼1 0 l l e r ) 设计模式【引。m v c 核心思想是将一个应用程序的数据业务处理功能( 模型) 、表示功能( 视图) 、和控制 功能( 控制层) 在3 个不同的部分( 也叫层) 上分别实现。m v c 的目的是增加代码的 复用性,减少数据描述和应用操作的耦合度,并提高代码的可读性,同时使软件 的可维护性、可扩展性、灵活性、可修复性以及封装性大幅度提高。 m v c 框架模式主要由以下3 个部分组成: 基于构件的软件复用技术研究与应用实践 ( 1 ) 视图:视图是应用程序的表示层,代表用户交互界面。一个应用程序可 以对应多个视图。m v c 对视图的操作包括对视图上数据的采集和处理,以及对 用户的请求处理,但并不负责对视图上的业务流程的处理。 ( 2 ) 模型:模型是应用程序的业务处理层,负责所有业务流程的处理和业务 规则的制定。模型处理由控制器转发来的视图的请求数据,并将最终的处理结果 返回给视图。 ( 3 ) 控制器:控制器的作用实际上是就是一个分发器。负责决定将请求数据 转发给什么样的模型组件,以及决定选择什么样的视图来显示模型返回的数据。 同视图一样,控制器本身也不处理任何业务信息。 m v c 模式的三个部分的关系如图2 3 所示。 图零3m v c 结构 f i g a 3a r c h i t e c t u r eo f m v c 应用m v c 结构模式的有以下优点f 9 】: ( 1 ) 有利于程序的维护和功能的扩展。在i v i v c 框架中,3 个层在功能和结构 上互相独立的,每个层负责实现各自的功能。如果某个层的需求发生了变化,则 只需要更改相应层中的代码即可,而不会影响到其他层的代码。 ( 2 ) 有利于开发中的分工。在m v c 框架中,由于把应用程序划分成了3 个层, 可以很好的实现开发中的分工。网页制作人员可以开发视图层,熟悉业务的人员 可以开发业务层,其他的人可以开发控制层。 一 第2 章w e b 应用体系结构的研究 ( 3 ) 有利于组件的重用。m v c 框架的分层开发模式,有利于组件的重用。如 控制层可以成为一个独立的组件,表示层也可以做成一个通用的界面,而业务层 也可以成为一个独立的功能模块,从而可以把这些组件应用到其他的项目开发中。 基于构件的软件复用技术研究与应用实践 第3 章软件复用技术的研究 3 1 软件复用概念 传统的软件开发把从头开始建立每个新系统看作是用户服务的最好方法,而 不注意和关心软件重复创建出现的次数。重复创建在软件开发中造成了重大的资 源浪费。无数软件项目耗费大量资源去开发和已经存在的软件构件相似的软件构 件。软件浪费的现象普遍存在。对软件系统的比较分析表明,在多个系统中,系 统功能的6 0 到7 0 是相同的。 要实现软件开发的工业化,提高软件开发的质量和速度,需要改变传统的软 件开发模式,软件复用技术是在为了避免软件开发过程中重复劳动而产生的。通 过软件复用,开发人员可以利用通过复用高质量的已有的开发成果,避免了重新 开发可能引入的错误,还可以避免在软件开发中的重复劳动,极大的提高了软件 开发的劳动生产效率和产品质量【l o 】。 软件复用1 1 1 是一种由预先构造好的、为软件复用是一种由预先构造好的、为 复用目的而设计的软件构件来建立或者组装软件系统的过程。它的基本思想非常 简单,即放弃那种原始的、一切从头开始的软件开发方式,而是利用复用技术,由 公共的可复用构件来组装新的系统,这些可复用构件包括对象类、框架或者软件 体系结构等。 按抽象程度的高低,软件的复用可以划分为如下级别1 2 , 1 3 ; ( 1 ) 代码的复用 包括目标代码和源代码的复用,其中目标代码的复用级别最低。当前大部分 编程语言的运行支持系统都提供了连接( l i n k ) 、绑定( b i n d i n g ) 等功能来支持这种复 用。源代码的复用级别略高于目标代码的复用,程序员在编程时把一些想复用的 代码段复制到自己的程序中,但这样往往会产生一些新旧代码不匹配的错误。此 类复用对环境的依赖性较强。 ( 2 ) 设计的复用 设计结果比源程序的抽象级别更高,因此它的复用受实现环境的影响较少, 从而使可复用构件被复用的机会更多,并且所需的修改更少。这种复用有三种途 第3 章软件复用技术的研究 径,第一种途径是从现有系统的设计结果中提取一些可复用的设计构件,并把这 些构件应用于新系统的设计;第二种途径是把一个现有系统的全部设计文档在新 的软硬件平台上重新实现,也就是把一个设计运用于多个具体的实现;第三种途 径是独立于任何具体的应用,有计划地开发一些可复用的设计构件。 ( 3 ) 分析的复用 这是比设计结果更高级别的复用,可复用的分析构件是针对问题域的某些事 物或某些问题的抽象程度更高的解法,受设计技术及实现条件的影响很少,所以 可复用的机会更大。复用的途径也有三种,即从现有系统的分析结果中提取可复 用构件用于新系统的分析;用一份完整的分析文档作输入产生针对不同软硬件平 台和其它实现条件的多项设计:独立于具体应用,专门开发一些可复用的分析构 件。 ( 4 ) 测试信息的复用 主要包括测试用例的复用和测试过程信息的复用。前者是把一个软件的测试 用例在新的软件测试中使用,或者在软件作出修改时在新的一轮测试中使用。后 者是在测试过程中通过软件工具自动地记录测试的过程信息,包括测试员的每一 个操作、输入参数、测试用例及运行环境等切信息。这种复用的级别,不便和 分析、设计、编程的复用级别作准确的比较,因为被复用的不是同一事物的不同 抽象层次,而是另一种信息,但从这些信息的形态看,大体处于与程序代码相当 的级别。 由于软件生产过程主要是正向过程,即大部分软件的生产过程是使软件产品 从抽象级别较高的形态向抽象级别较低的形态演化,所以较高级别的复用容易带 动较低级别的复用,因而复用的级别越高,可得到的回报也越大,因此分析结果 和设计结果在目前很受重视。用户可购买生产商的分析件和设计件,自己设计或 编程,掌握系统的剪裁、扩充、维护、演化等活动。 3 。2 软件复用的意义 。 在软件开发中,充分利用已有的各项成果,避免重复劳动,增加技术积累, 提高软件水平,加快开发速度,保证软件开发质量。其意义主要有以下几剧1 4 】: ( 1 ) 提高生产率: 基于构件的软件复用技术研究与应用实践 软件复用最明显的好处在于提高生产率,从而减少开发代价。生产率的提高 不仅体现在代码开发阶段,在分析、设计及测试阶段同样可以利用重用来节省开 销。 ( 2 ) 减少维护代价: 这是软件复用的一个重要优点。由于使用经过检验的构件,减少了可能的错 误,同时软件中需要维护的部分也减少了。 ( 3 ) 提高互操作性: 一个更为专业化的好处在于提高了系统间的互操作性。通过使用同一个接口 的实现,系统将更为有效地实现与其它系统之间的互操作。 ( 4 ) 支持快速原型: 另一个好处在于对快速原型的支持,即可以快速构造出系统可操作的模型, 以获得用户对系统功能的反馈。利用可复用构件可以快速有效地构造出应用程序 的原型。 ( 5 ) 减少培训开销: 最后一个好处在于减少培训开销,即雇员在熟悉任务时所需的非正式的开销。 软件工程师将使用一个可复用构件库,其中的构件都是他们所熟悉和精通的。 软件复用技术将促进软件产业的变革,使软件产业真正走上工程化、工业化 的发展轨道。 3 3 软件复用的关键技术 实现软件复用的关键技术如图3 1 所利15 1 。 第3 章软件复用技术的研究 图3 1 软件复用的关键技术 f i g 3 1t h ek e yt e c h n o l o g yt os o f t w a r er e u s e 软件构件技术、领域工实现软件复用的各种技术因素和非技术因素是互相联 系的,它们结合在一起共同影响软件复用的实现。下面就简单介绍一下软件复 用的各项技术 1 6 , 1 7 : ( 1 ) 软件构件技术 软件构件技术是支持软件复用的核心技术【1 钔。构件技术就是一种类似于“零部 件组装”集成组装式的软件生产方式。它把零件、生产线和装配运行的概念运用在 软件产业中,彻底打破了手工作坊式的软件开发模式。 构件是指语义完整,语法正确和有可复用价值的单位软件,包括程序代码、 测试用例、设计文档、设计过程、需求分析文档、甚至领域知识等。广义上讲, 构件可以是数据,也可以是被封装的对象类、软件构架、文档、测试用例等。一 个构件可以小到只有一个过程,也可以大到包含一个应用程序。它可以包括函数、 例程、对象、二迸制对象、类库、数据包等。 构件具有以下特点【1 9 】: 一构件是一个独立的可部署单位,它能很好地从环境和其它构件中分离出来;同 基于构件的软件复用技术研究与应用实践 时,作为一个部署单位,一个构件不会被部分地部署,第三方也不应该涉及构件 的内部实现细节。 构件是一个由第三方进行集成的单位,同其它构件一起组合使用。这就要求 构件必须封装其实现细节并通过定义良好的接口与其环境进行交互。 构件是可替换的,构件通过接口与外界进行交互,明确定义的接口是构件之 间唯一可视的部分。实现接口的具体构件本身就是可以替换的部分。构件的可替 换性为构件的装配者、使用者提供了可选择的空间。 ( 2 ) 软件构架 软件构架是对软件系统的系统组织,是对构成系统的构件的接口、行为模式、 协作关系等体系问题的决策总和【2 0 】。研究软件体系结构有利于发现不同系统的高 层共性,保证灵活和正确的系统设计,对系统的整体结构和全局属性进行规约、 分析、验证和管理。 软件构架是对系统整体结构设计的规划,包括全局组织与控制结构,构件间 通讯、同步和数据访问的协议,设计元素间的功能分配,物理分布,设计元素集 成,伸缩性和性能,设计选择等。在基于复用的软件开发中,

温馨提示

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

评论

0/150

提交评论