(计算机应用技术专业论文)基于构件的web开发框架的研究、设计和实现.pdf_第1页
(计算机应用技术专业论文)基于构件的web开发框架的研究、设计和实现.pdf_第2页
(计算机应用技术专业论文)基于构件的web开发框架的研究、设计和实现.pdf_第3页
(计算机应用技术专业论文)基于构件的web开发框架的研究、设计和实现.pdf_第4页
(计算机应用技术专业论文)基于构件的web开发框架的研究、设计和实现.pdf_第5页
已阅读5页,还剩63页未读 继续免费阅读

(计算机应用技术专业论文)基于构件的web开发框架的研究、设计和实现.pdf.pdf 免费下载

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

文档简介

基丁构什的w e b 开发框架的研究、设计和实现 摘要 本文首先分析了传统w e b 应用丌发中的一系列困惑和问题一缺乏大粒度的构件、丌 发效率低、分工合作鼠难、系统可维护性差等,继而介绍了有关构件、软件体系结构、设 计模式和框架的有关理论和思想。进而介绍了目前在w e b 应用中常见的几种符合m v c 模式 的w e b 丌发框架,通过分析,指出了它们各自的特点和不足。 在此基础上,本文提出了种新的基于构件的w e b 开发框架c b e a n 框架,并阐述 了c b f a n 框架的工作原理和设计原理。c b f a n 框架最主要解决的是w e b 应用中缺乏实用的 客户端构件的问题,它包括客户端构件、自定义标签库、自定义标签解析模块和服务器端 控制模块,本文对它们的设计和实现分别进行了详细介绍,并介绍了框架中的关键的 c o a ns q l 机制和数据验证机制的设计和实现以及c 1 3 f j 小i 框架与其它框架如何进行集成。 最后,本文对c b e a n 框架结合一个实际匣用的案例一一在电f 言大客户管理系统的应 用,详细介绍了应用c b f a n 框架进行丌发的详细步骤,通过实际应用,总结了c b e a n 框架 开发的优势,并对其进步的研究需要考虑的关键问题进行展望和分$ j i - 。 关键词:构件w e b 丌发框架m v c 设计模式 基丁构什的w e b 开发框架的研究、殴计乖实现 a b a s t r a c t t h i sp a p e ra n a l y s e sas e r i e so fp r o b l e m si nt r a d i t i o n a lw e ba p p l i c a t i o n d e v e l o p m e n t a tt h e f i r s t ,i n c l u d i n g t h a titl a c k s c o m p o n e n t so fb i g g r a n u l a r i t y ,d i f f c u l t yo fc o o p e r a t i o n ,a n dp o o r m i n t a i n a b lilit yo f s y s t e m e t c ,t h e ni n t r o d u c e si n t e r r e l a t e dt h e o r i e sa n dt h o u g h t sa b o u tc o m p o n e n t ,s o f t w a r e a r c h i t e c t u r e ,d e s i g np a t t a ma n df r a m e w o r k i ti n t r o d u c e ss e v e r a l w e bf r a m e w o r k a c c o r d i n gw i t hm v cm o d e li nw e ba p p l i c a t i o nd e v e l o p m e n t a n dp o i n t so u tt h e i ro w e c h a r a c t e r i s t i ca n dd e f i c i e n c i e sb ya n a l y s i s o nt h i sb a s i s ,t h i sp a p e rp u t sf o r w a r dak i n do fn e ww e bf r a m e w o r k ,c b e a n f r a m e w o k ,w h i c hi sb a s e do nc o m p o n e n t ,a n de x p a t i a t e so ni t so p e r a t i o na n dd e s i g n p r i n c i p l e j e a nf r a m e w o r kc h i e f l ys o l v e st h a ti tl a c k sa p p l i e dc o m p o n e n ta tt h e c ll e n ti nw e ba p p l i c a t i o nd e v e l o p m e n t i ti n c l u d e sc l i e n tc o m p o n e n t ,s e l f - d e f i n i n g t a g l i b ,a n a l y s y z i n gm o d u l ef o rs e l f - d e f i n i n gt a g l i ba n dc o n t r o l l e rm o d u l ea tt h e s e r v e r t h i sp a p e ri n t r o d u c e st h e i rd e s i g na n di m p l e m e n t a n di n t r o d u c e sk e yc ( 删 s q l m e c h a n i s ma n dd a t av e r i f y i n gm e e h a n i s m , a n dh o wt oi n t e g r a t ew i t ho t h e r f r a m e w o r k s f i n a l l y ,t h r o u g ha ne x a m p l e ,d e v e l o p i n gt e l e c o m m u n i c a t i o nc u s t o m e rm a n a g e m e n t s y s t e mb yu s i n gc b e a nf r a m e w o r k t h i sp a p e ri n t r o d u c e sd e t a i l e dd e v e l o p m e n ts t e p b yu s i n gc 删f r a m e w o r k ,s 哪a r iz e sa d v a n t a g e so fc b e nf r a m e w o r k ,a n da n a l y s e sk e y d r o b l e m sn e e dt ob es o l v e df o rf u r t h e rr e s e a r c h k e y w o r d s :c o m p o n e n t w e bf r a m e w o r km v c d e s i g np a t t e r n v 7 7 6 7 1 6 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方以外,论文中不包含其他人已经发表或撰写过的研究成果,也不包 含为获得塞邀堡王杰堂或其他教育机构的学位或证书而使用 过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文 中作了明确的说明并表示谢意。 学位论文作者签名:签字日期:年月 日 学位论文版权使用授权书 本学位论文作者完全了解塞徵堡三太堂有保留、使用学 位论文的规定,即:研究生在校攻读学位期间论文工作的知识产权单 位属于安徽理工大学。学校有权保留并向国家有关部门或机构送交论 文的复印件和磁盘,允许论文被查阅和借阅。本人授权安徽堡王 盍堂可以将学位论文的全部或部分内容编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。( 保 密的学位论文在解密后适用本授权书) 学位论文作者签名 签字日期:年月 日 导师签名:曼巧似 签字日期:移亍年6 月 日 基_ r 构引:的w e b 开发框架的研究、设计和实现 第一章绪论 1 1 引言 软件,作为种无形产品来说,其丌发过陧岱鹾黜蜡多问题,比如,生产效率低, 重复劳动程度高,软件质量难以保证等。据美国国家标准技术研究院的一份报告显示,占 据世界软件销售额8 5 的是大型的专用软件,而其丌发的失败率却高达7 0 。那么,如何 既能提高软件的生产效率,又能保障软件产品的质量? 如何减少重复劳动? 软件丌发人员 通过多年探索,逐渐意识要解决匕述问题,软件丌发必须脱离传统手工业的单件生产模式, 转向构筑在标准化零部件基础上的高效率、高质量的新型生产方式,即软件构件化。 软件构佴北的思磊弭己提出,上个世兰已7 0 年代“软僻7 a 舰”的出现,伎研究人员意 识到软件丌发效率要得到根本性的提高还在于软件复用。通过研究和丌发人员大量实践, 软件复用已经取得了一些成果,工业化的软件复用已经占惯硼类摩逆讹到了面向领域的应 用框架,在强调重用是软件构件发展最主要的特色的同时,随着技术的发展,重用的层次 和粒度都得以提升。2 l 世纪 们! 在延续着软件构件化的努力。现在不光构件可以重用, 框架也可以重用。这样,软件重用的领域扩大到设计和分析阶段,涵盖到了软件丌发的大 部分过程。 有了软件构件之后,应用开发人员就可以利用现成的软件构件装配膨重用于不同领 域、功能各异的应用系统。这是人们跨世纪的梦想,也是软件产业发展的一个梦想。借用 构件和框架,人们将彻底改变软件的生产方式,从根本e 提高软件生产的效率和质量,提 高丌发大型软件系统尤其是商用系统的成功率。 同时,在软件工程实践中,人们越来越深刻地认识到,随着软件系统规模和复杂性的 增长,系统总体结构设计和规格说明的重要性已园函瞄丑特定算法和数据结构的选择,良 好的体系结构对保证系统的成功至关重要。如今,网络已融入 们的生活,因此各种w e b 应用系统也应运而生,尤其是电子商务、电子政务的应用已经成为个热门领域。为了满 足用户的需求,适应激烈的市场竞争,各种w e b 应用系统必须不断地改进其内容和形式、 同时还需要节省项目的丌发成本、缩短项目的丌发周期、刚氐项目管理的难度和风险、提 升项目和产品的交付质量,从而提高软件企业的市场竞争能力。而解决这些问题的关键是 选择具有优良体系结构的旺蝴框架。 在基于j 2 e e 的w e b 应用系统中,w e b 应用框啦于j 2 e e 平台之上,提供w e b 应用系 统共同的操作,例如请求分派、调用商业逻辑和选择组装视图。w e b 应用框架不仅可以为 w e b 应用系统提供优良的体系结构,提高w e b 应用系统开发的效率,而且可以节省项目的 丌发成本、缩短项目的丌发周期、刚氐项目管理的难度和j ) ( 1 险、提升项目和产品的交付质 量,使得w e b 应用丌发项目更容易获得成功。 1 2 论文的背景、意义 l _ 2 1w e b 应用系统丌发面临的挑战 基丁构仆的w e b 开发框架的研究、设计苯【实现 软件行业素来以速度和互相追赶而著称。在这场比赛中,任何一瘃软件企业要想在商 业竞争中获胜,就必须使其产品和服务与众不同。在残酷的市场竞争环境中,所有的企业 都想以尽可能快的速度推出自己的项目和产品,以抢先占有市场高地,打败竞争对手,也 艰因为如此,所有的软件企! 出都面i 陆卜系列的挑战: ( 1 ) 如何能够快速组织大规模的应用开发,使数量众多的开发人员在丌发过程中有效 地合作? ( 2 ) 如何能够缩短项目周期、刚氐项目的投入,并按时、保质、不超预算地将项目交 铽绘甩产 ( 3 ) 如何能够让丌发出来的系统具有更好的可移植性、可扩展性、灵活性和安全陛? ( 4 ) 如何能够阿氐开发的a , i t r 槛,使软件丌发不再是“白领”,而是“蓝领”也可 以胜任的工作? 特别是b s 软件结构和j 2 瓯技术已被广泛采纳、基于w e b 的应用系统己成为主流的今 天,以前在软件产业界倍受推崇的c s 模式也逐渐丌始向b s 模式迁移。与c s 模式相比较, b s 模式有许多优点: ( 1 ) 用户环境更加开放,日口端无需任何配置,仅使用浏览器,就可以让用户透明地应 用由不同的运行平台组成的异构的计算机资源; ( 2 ) 软件维护和升级更加方便:与c s 模式每升级一次就需要用户重新安装一次升级 软件不同,b s 模式的软件系统维护主要是在服务器端完成,而客户端无需作任何修改; ( 3 ) 用户界面j x l 格统一,使用更加简单,更加便于用户接受,从而减少对用户培训的 人力及费用支出; 然而,基于b s 模式的软件丌发存在着技术上的瓶颈制约,主要表现在:在c s 模式 下,可以选择多种多样的控件可以选择,以减少丌发难度,提高丌发效率;而在b s 模式 下,无论是多么复杂的应用,最终都只能以f f d 4 l 文本的格式部署,而h t f & 是w 3 c 组织在 2 0 世纪9 0 年代制定的标准,所支持的功能相对而言单一而又简单,无法满足多种多样的 w 髓应用的需要,难以进行大型企业缴应用的丌发。这与目自u 软件企业丌发效率高、易于 分工和合作、系统可维护性的要求是格格不入的。 1 2 2w e b 应用系统的传统丌发方式分析 基于w e b 的应用系统的传统开发方式主要有两种,即我们常说的模型一和模型二 t 5 。 ( 1 ) 模型一:j s p + j a v a b e a n s 模型 采用模型一开发的系统,首先客户端通过浏览器发送请求,由相应的j s p 页面进行响 应,然后调用相应的j a v a b e a n s 进行业务逻辑的处理,如图1 1 所示。 2 基丁构什的w e b 开发框架的研究、设计和实现 幽1 1 衄廓州系统的传统开发模i ! 一 基于该种模型进行的丌发一定程度上分离了页面表现和业务逻辑处理,然而不足的 是,这种方式需要在j s p 页面中嵌入大量的j a v a 代码,这带来两方面的问题: 其一、使页面臃肿庞大,不利于阅读、调试和维护; 其二、由于可读性差,不利于前端页面设计人员和j a v a 开发人员之i 、日j 协作,刚氐了 项目的丌发效率: ( 2 ) 模型二:j s p + s e r v l e t + j a v a b e a n s 模型 模型二的提出有效地解决t t - 勉- 遇到的问题。在模型二中,使用j a v a b e a n s 处理 事务逻辑,使用j s p 技术实现页面表现,而使用s e r v l e t 作为系统的总控制器,响应客户 端的请求,并将它们分发到各个j s p 页面。 模型二基本上实现了 l v c 设计模式,对模型、视图、控带i 腊行了分离,因而具有更清 晰的页面表珊和丌发角色划分,因此基本上符合大多数w e b 应用对体系结构方面的要求。 7 l ( c o n t r 0 1 e r ) l 卅 s e r v l e t 卜 。 i ( m o d e l ) j a v a b e a n r j7 j ( v i e w ) y 、l3 s 9 , a p l i c a t i o ns e r v e re n t e r p r i s es e r v e r 幽1 2w e b 洲系统的传统开发模型二 随着技术的发展,人们认识到,由于模型一、模型二只是一种w e b 应用丌发的概念模 3 基丁构件的w e b 开发框架的研究、设计和实现 型,从w e b 应用系统柬乩w e b 应用系统不仅具有刘以m v c 方面的共性,还具有一些共陛 的操作,如请求分派、调用商业逻辑以及选择组装视图等。而模型一、模型二并没有提供 该基础服务,而大型w e b 应用在项目进度、投入等方面的要求又迫使丌发者不能完全从零 丌始,即,大型w e b 应用需要在目| ; 的体系结构上再提供一些共性的基础服务的支撑上进 行丌发。 1 2 3 基于框架构件的丌发方式 w e b 应用系统的传统丌发方式是将业务逻辑和表现逻辑集成在起,采用 r r m l ,j s p 和s e r v l 田技术开发:或者仅仅是将业务逻辑和表现逻辑分丌,采用 r f 札,j s p ,s e r v i 。e t s , j a v a b e a n s 技术丌发。 这两种丌发方式在特定解决方案中的应用程序混合了m 札代码与应用程序逻辑。很 显然,这种开发模式使得界面设计的更改和业务逻辑的更新在大型| 立用程序中既困难又昂 贵,因为紧耦合的表示和逻辑逻辑相互混合,进而导致系统容易出错,并且调试困难,以 致丌发进展缓漫。而且,混合时代码要求部分丌发人员具备界面设计知识,或者要求丌发 人员与图形设计人员之间有紧密的工作关系,这常常会造成时间上的浪费。 因此,这两种丌发方式都会面1 临着令人头痛的问题如丌发周期漫长、客户需求变化频 繁、维护成本高、丌发人员难于分工、应用的可维护性、可扩展陛和可测量性都比较低等 问题。使得项目进展缓慢,软件更新困难,甚至一个处于维护期的产品,当用户提出新需 求时,网站的结构、页面结构、页面流程、功能和服务都发生了变化,造成了整个应用软 件,从表现逻辑部分到应用逻辑部分都! 必顽重新设计开发,导致必须从头做起进行新的丌 发工作。因此,对于大型的w e b 应用系统,采用传统的丌发方式存在着固有的弊端,而提 出新的丌发模式就显得尤为重要。今天,m v c 设计模式( 即模型一视图一控制,详见3 3 2 节) 己经成为w e b 应用系统丌发的主流。虽近月年m v c 被推荐为s u n 公司j 2 e e 平台的设 计模式,并且受到越来越多的w e b 应用系统开发者的欢迎。而w e b 丌发框架正是这一思想 精华的体现所在。 框架,即f r a m e w o r k ,可以理解为某种应用的半成品,它通过对应用系统丌发中的一 些共用元素根据设计模式的思想进行抽象,从而使丌发人员可以集中精力完成系统的业 务逻辑设计,而无须关心事务处理、安全性、流程控制等些细节问题,提升丌发人员的 工作效率。框架中应用了许多成熟的大家一致认同的设计模式,因而具备优良的结构,可 扩展性好。另外框架还具备不断升级的特性。 目前w e b 丌发框架有很多,国外的丌源社区不到一个月,就有一种新的w e b 丌发框架 问世,如最著名的也是最常被谈及的m v c 的丌放源码体现之一的s t r u t s ,s u n 积极倡导和 推荐的j s f ,轻量级框架w e b w o r k ,权限控制框架t u r b i n e ,s p r i n g ,c o c o o n 等( w e b 开 发框架详见3 5 节) ,它们功能、性能都备有千秋,分别从页面控制、页面表现、数据持 久性控制等多方面为w e b 应用提供服务。在实际的应用丌发中,常根据具体的应用以及丌 发人员对框架的熟悉程度选择适当的丌发框架。 4 基丁构 ,l :的w e b 开发框架的研究、设计帚i 实现 框架之所以能完成一系列功能,给丌发人员带来方便,是基于一系列的组件或构件来 完成的。如s t r u t s 中的总控制器组件、页面表瑚组件等。 所谓基于框架、构件的丌发方法是指将软件系统的丌发过程看作在框架的指导下用构 件组装软件系统的过程的软件丌发方法。与传统的丌发方式比较,一般地来说,有这样一 些特点: ( 1 ) 丌发的组织方式 系统化的软件重用改变了软件丌发的模型、方法、技术和过程。在基于构架、构件的 软件丌发中,软件的生命周期被分为丌发司重用产品的生命周期和用可重用产品开发目标 系统的生命周期。同时,软件丌发的组织形式和管理方式相应于这两个生命周期也有改变。 其r 的在于通过系统化的软件重用形成软件的工业化生产线,通过不同项同、不同丌发人 员之间的分工合作,达到缩短工期、降低成本和i 置应变化的目的。 ( 2 ) 重用的层次 基于构架、构件的丌发方法支持构架、框架、设计模式、构件等多个层次的重用,从 而极大的扩展了软件重用的范围。 ( 3 ) 丌发的过程 基于框架、构件的丌发过程结合了传统的软件开发生命周期和自身特点,一般遵循以 下步骤: 领域分析和建模 浚阶段主要通过与领域专家的充分交流,决定领域中有些什么,本过程将应用于解决 什么问题,列出谈领域内各种应用需满足的用户需求清单,建立领域术语字典,定义设计 和实现约束,建立领域模型,并让领域专家确认。 构架( 参考构嘉9 的选择或设计 首先从领域分析和建模的结果出发,考察现实中是否有满足该领域应用需求和领域模 型的框架可以重用,若有,则重用该框架或将其作为参考构架:若无,则丌发新的框架, 新的框架需要确定模块或形成它的构件的语法和语义。同一应用领域可能需要不同的构架 ( 高层设计) ,因为它们在实现t 加了一定的约束,因而在一个领域内可能会设计几个特定 领域的软件框架来满足以前的标识和约束。 构件的设计、选择和实现 根据框架设计的结果,通过抽象定义应用所需的构件,然后,从现有的构件库中查询 满足条件的构件并针对实际需要进行一定程度的特例化,对于找不到可重用构件的新的构 件需通过一定的方法予以实现,这过程包括设计模式、框架等的设计选择与实现。 构件的组装( 即构架的实例化) 将第步中找到的构件按照第步中所设计的构架进行组装,从而产生所需的应用系 统。 1 2 4 两种丌发力式之间的比较 5 基丁构什的w e b 开发框架的研究、设计和实现 基于框架、构件的丌发方法由于建立在软件复用、设计模式等先进成熟的思想之上, 所以,理论e 来说,基于框架、构件的开发方法比传统的开发方法效率高,易于分工和合 作,并且_ 丌发的系统可维护性高; 1 3 论文的工作内容及解决的问题 本课题研究的目的,旨在通过研究大量的企业应用的基础上,设计、实现一个w e b 应 用丌发框架一- c b e a n 框架,该框架的特点是拥有套e 随颇靴s 丌发模式下的| 】| i e b 构件, 如具有可排序可编辑属性的表格等。该框架的应用,可以嘲回哑应用丌发的难度,提高 软件生产率和系统可维护性。 构件技术是近年来才提出的技术,目前国内在这方面的成果都还比较少。“青鸟工程” 是我国较早提出构件化生产的项目,该项目是国家“九五”重点科技攻关项目,其目标是 改变我国目前的软件生产手段,为促进我国软件产业5 l 手工作坊式转向工业化规模生产提 供技术、方法、基础设施和标准规范的服务。青鸟“九五”二期工作更是将软件构件化生 产提到了个特别的高度e ,提出研发基于构件复用的应用系统集成组装环境青鸟软 件生产线系统,包括软件工业化生产技术、工程化丌发方法和相应支撑工具体系、标准规 范,以及领域丌发平台、产业化基地建设等,为我国软件产业发展提供了参考。随后的 2 0 0 2 年,国家信息产业部决定建立中国国家级构件库,以促进国内基础软件产业的交流 和发展。值得提的是,2 0 0 3 年1 0 月2 l 同,出国家8 6 3 计划和上海市科委资助的重大 专项,也是8 6 3 上海软件基地的主要技术支撑之一,上海市政府牵头,上海软件中心、复 旦大学、北京大学等科研院所及在构件化开发方面有相当实践的软件公司共同承建的,“上 海构件库”宣告成立,成为国内目前唯一的比较成功的构件库。 目前国内对构件应用主要体现是领域应用,即,在会融、公安、电子商务等领域,通 过业务组合、模型抽取等手段,从而建立一系列的业务中白j 件。而对w 髓应用中的基础性 构件的研究和应用相对较少,有的仅仅是提出某种软件丌发方式的思想,但并没有可用于 实际丌发的成果。目前对该方面关注比较得比较多的,是i n t e r n e t 上的技术社区,比如i b m 中国、s u n 技术社区、c s d n 、5 1 j s 等。但这些研究成果相对零散和独立,难以整合。 在基于w e b 丌发框架的研究方面,目前国内外的研究成果还是很显著的,如最著名的 也是最常被谈及自匀m v c 的开放源码体现之一的s t r u t s ,s u n 积极倡导和推荐的j s f ,轻量级 框务卧e b w o r k ,权限瞄# 框架t u r b i n e ,s p r i n g ,c o c o o f l 等。在本项目研究中,借鉴了相当 多成熟的、广受好评f f 铀e b 丌发框架的思想。c b e n 框架与这些框架相比较,其特色在于, 它主要关注大型w e b 应用系统中可复用程度高、大粒度的w e b 构件的实现和封装,利用该框 架使得类似的应用系统的丌发变得简单。 1 4 论文的章节安排 本文共分五章,第章绪论介绍课题提出的背景、国内外的研究情况、课题研究的主 要内容和重要意义,第二章介绍构件和可复用构件的思想,并介绍基于构件的软件丌发方 6 基于构仆的w e b 开发框架的研究、设计和实现 法,在此基础上介绍了三种主流的构件模型,即c o r b a 、c o m 、j a v a b e a n ,第三章介绍了 软件体系结构、设计模式和框架的思想,比对目前常用的w e b 丌发框架进行了详细分析, 第四章介绍c b e a n 框架的工作和设计原理、详细设计以及和其它w e b 开发框架之间的整合 方法,第五章通过电信大客户管理系统的开发实例说明了c b e a n 框架的具体使用。第六章 对本框架的进一步研究提出了方向和展望。 7 基丁构什的w e b 开发框架的研究、设计羽i 实现 第二章基于构件的开发方式 2 1 软件复用 早在匕个世纪7 0 年代,就提出了“软件复用”的口号。软件工程学家认为这是个 解决“软件危机”的有效途径。近年来,软件丌发企业也逐渐意识到,设计或选择合理、 便于复用的软件丌发框架,要比数据结构、算法重要得多。 所谓软件复用,指的是一种重复使用软件资产或过程的软件开发方法 1 。其主要意 义主要体现在以下几个方面。 ( 1 ) 提高软件生成率; 软件复用能够提高软件生产率,从而减! 开发代价。曾有人这样形容基于构件的软件 丌发方式一“就象搭积木一j 羊简单”,虽然略有夸张,但也从一个方面说明了如果能选 用可复用性高、经过实践检验的构件,将大大降低软件生产的难度,提高丌发效率。 ( 2 ) 缩短丌发周期: ( 3 ) 刚氏软件开发和维护费用; 软件复用能够减少系统的维护代价。可维护性是衡量软件质量的一个重要标准,采用 经过实践检验的软件构件,减少系统出错的可能性,系统的可维护性得到提高。例如,对 于访问数据库的操作,可以设计一个数据库访问管理器,如果数据源发生了更改,则只需 对数据库访问管理器修改一次,而不需要对所有访问数据的程序都作修改。 ( 4 ) 使生产的软件更加标准化; ( 5 ) 提高软件丌发质量; ( 6 ) 增强软件系统的互操作性; 软件复用能够提高系统间的互操作性。由于系统使用的构件具有统一的接口,所以系 统与系统之问的通信将更加透明和方便,其协作性和互操作性也大大增强。例如,若多个 通讯系统都采用同个软件包来实现s 0 啷协议,那么它们之脚的交互将更为方便。 ( 7 ) 对快速原型设计提供了强有力的支持: 利用可复用构件和构架可以快速有效地构造出应用程序的原型,从而快速获得用户对 系统功能的反馈,。 ( 8 ) 软件复用还可以大幅度减少软件丌发人员数量,并能够减少培训l 开销。软件工程 师对构件熟悉以后,重复使用时将会变得简单,也更容易使丌发人员能比较容易地适应不 同性质的项目丌发。 从不同的角度理解软件复用,软件复用可以进行不同的分类。 ( 1 ) 依据可复用信息进行复用的方式,可以将软件复用分为黑盒复用和白盒复用。黑 盒复用是指对已有构件不需做任何修改,直接复用。这是理想的方式。白盒复用是指已有 构件并不能完全符合用户需求,要根据用户需求进行适应性修改后方可使用。而在大多数 应用的组装过程中,构件的j 置应性修改是必需的。 ( 2 ) 依据复用的对象,可以将软件复用分为产品复用和过程复用。产品复用是指复用 8 基丁构仆的w e b 开发框架的研究、设计乖i 实现 已有的软件陶件,通过构件集成组装得到新系统。过程复用是指复用已有的软件丌巷浏程, 使用可复用的应用生成器来自动或半自动地生成所需系统。过程复用依赖于软件自动化技 术的:猥,目自职适用于_ 燃的应用领域,而产品复用则是目自慨实的、主流的途径。 软件复用的形式千并艮多,根据复用级别的大小,大致有以下形式 2 : ( 1 ) 基于源代码的复用 这种形式首先要求程序员阅读原系统的源代码,在掌握原系统的丌发思想的基础上, 根据目标系统的实际情况,重新改写代码。这是最低级的复用方式,也是最基本的复用方 式。它的缺点在于程序员必须要花大量的精力去阅读源代码,并且由于要进行重新编译和 调试,时问耗费巨大,影响丌发效率。 ( 2 ) 基于目标代码的复用 、 基于目标代码的复用是对上述基于源代码的复用的改进。它一般以函数库的方式束体 现,函数库是一个实现接口的集合,定义了原系统中常用的功能实现。软件丌发人员无须 推侄l 以a h 的系统而仅汉需要对现有的函数进行璐和使用,这样减少了程宁员研究源代 码的时间,使用方便,而且函数库经过编译,不会发生因丌发者错误地改动源代码,而出 明模型运行结果不正确的情况。 一般的丌发语言都支持这种方式,函数库包括静抽奎接库和动念连接库两种,二者的 区别是动态链接不是在连接生成可执行文件时把库函数链入应用程序,而是在程序运行中 需要的时候爿错接。 目标代码重用的缺点在于,目 ;j 代码本身对于软件丌发人员柬说是透明的,软件丌发 人员无法知道函数内部的实现过程,也无法对函数内部进行修改,因而使灵活性大大刚氐: 此外,与源代码重用类似的缺点是重用受限于语言,不能做到与丌发平台无关,它最根本 的缺点是无法与数据结台在一起,从而使程序员无法大规模的使用。 ( 3 ) 基于类库的复用 类库与函数库样,都是经过特定开发语言编译后的二进制代码,但它与函数库有本 质的区别,主要表现在类库是采用面向对象的丌发方式实现的,具备类的继承性、封装胜 和派生等特性,从而使用和丌发也更加方便,也使得大规模的软件重用得以实现,并使软 件的重用性及可维护性得到大大的增强。例如在j a v a 应用丌发中,s u n 公司给丌发者提 供了丰富的 丌发包,应用这些丌发包,就可以丌发功能强大的各类应用。然而,类库也与 函数库有样有受限于丌发语言的缺点,因为它也是经特定丌发语言编译而成的。 2 2 构件 2 2 1 构件的定义 目前,软件构件复用已成为软件资产复用的主流技术。构件技术也成为软件复用的 核心技术。软件构件的概念产生于软件复用。近年来,随着分布式对象、i n t e r n e t , j a v a ,c l i e n t s e r v e r 等技术以及基于构件的软件丌发技术的发展,对构件的认识和软件 构件的定义很多,目日u 还没有一个统一的一致的定义,其q ,l v , 较有代表性的有以下几种 9 基丁构什的w e b 开发框架的研究、设计和实现 1 1j : ( 1 ) 著名的b r o w n 和w a l1 n a u 描述构件为“一个非平儿的、几乎独立的、可替换的 系统组成部分,它在定义完善的体系结构环境中实现某一清晰的功能”( an o n t r i v i a l , n e a r l yi n d e p e n d e n t ,a n dr e p l a c e a b l ep a r to fas y s t e mt h a tf u i f i i sac l e a rf u n c t i o n i nt h ec o n t e x to faw e l ld e f i n e da r c h i t e c t u r e ) 。同时他们进一步认为软件构件只能 是“一个说明了合同并且明显地与语境无关的组合单元”( au n i t o fc o m p o s i t i o nw i t h c o n t r a c t u a l l ys p e c i f i e da n de x p l i c i tc o n t e x td e p e n d e n c i e so n l y ”) 。 ( 2 ) c l e m e n s 认为:构件是一个独立部署的的单元,是一个第三方合成的单元,构件 没有一致性的状态( ac o m p o n e n ti sau n i t o fi n d e p e n d e n td e p l o y m e n t ac o m p o n e n t i sau n i to ft h i r d - p a r t yc o m p o s i t i o n ac o n 脚n e n th a sn op e r s i s t e n ts t a t e ) 。 ( 3 ) o m g 的定义更通俗、详细一些,在m o d e li n gl a n g u a g e s p e c i f i c a t i o n ( r e v i s i o n l 3 ) 写道:构件是一个物理的、可替换的系统组成部分,它包装 了实现体目提供了对组接口的实现方法。构件表示了系统实现体的一个物理片段,包括 软件代码( n 4 t 码、二进制代码或可执行代码) ,或者等同体,例如脚本或命令文件。出 之,构件自身必须相容于接口且实现接口,接口表示了驻留在构件内的成分所实现的服务。 这些服务定义了的一个整合的行为,从一些构件实例提供给其它客户端构件实例。u 地罩, 构件是一个分类器( c l a s s i f i e r ) ,是一个建模成分的聚集,它也许实现了接口,有着可 执行行为和状态,在执行时驻留在个节点上。 ( 4 ) g a r t n e rg r o u p 定义:运行时软件构件是一个可动态绑定的、含一个或多个程序 的软件包,它作为一个独立单位,通过运行时可辨别的文档化接口加以管理和存取( a r u n t i m es o f t w a r ec o m p o n e n ti sad y n a m i c a l l yb i n d a b l ep a c k a g eo fo n eo rm o r e p r o g r a m sm a n a g e da sau n ita n da c c e s s e dt h r o u 【g hd o c u m e n t e di n t e r f a c e st h a tc a d b ed i s c o v e r e da tr u n t i m o ) 。 ( 5 ) 欧洲面向对象编程( e c o o p ) 会议的定义:软件构件是一个具有规范接口和确定的 上下文依赖的组装单元。软件构件能够被独立部署和被第三方组装; ( 6 ) s z y p e r s k i 等的定义:软件构件是可单独生产、获取、部署的二进制单元,它们 之间可以互相作用构成一个功能系统( f u n c t i o n i n gs y s t e m ) ( 7 ) 卡内基梅隆大学软件工程研究所的定义:软件构件是一个不透明( o p a q u e ) 的功 能实现:能被第三方组装:符合个构件模型。 ( 8 ) g u i j u nw a n g 等( 美国波音公司) :构件是一个带有契约化接口和显式上下文依赖 的组装单元,它能被独立发机并且可以被第三方组装。 ( 9 ) d e s m o n d 等的定义:软件构件是一个可以独立交付的软件单元,封装了设计和实 现的内容,并向外提供接口,通过接口与其它构件组装成更大的整体。 ( 1 0 ) m i c h a e l 等的定义:构件代表一个自包含的实体,能够向其环境输出功能并可通 过定义明确的开放接口从环境输 功能。 ( i1 ) f r a n z 等的定义:构件由个动念变化的对象集合妇成,这些对象既可以在构件 1 0 基丁构什的w e b 开发框架的研究、设计和实现 的内部也可以是其接口的部分。构件之间可以直接交互,也可以通过独立的对象进行胶 合。 ( 1 2 ) m i c r o s o f tc o r p o r a t i o n 的定义:构件是个通过接口向外界提供服务的软件 包。 综上所述,一般我们可以认为构件是封装了设计和实现的细节而仅向外部提供接口独 立的可重用软件单元,该构件可以与其他构件组成更大觇模的构件。对于构件,应当按照 可重用的要求进行设计、实现、打包、编写文档。构件应当是内聚的,并具有相当稳定的 公丌接口。 2 2 2 构件的性质和特征 基本上说,构件具有以下l 生硬 5 : ( 1 ) 粒度: 构件是种软件单元,与面向对象语言中的类相比,构件在概念和功能上都大于一个 单个的类。通常个构件可以由组协作的类构成。 ( 2 ) 可重用; 构件是对系统中相对稳定的实体的种抽象,把抽象的结果表示成构件,可重用于其 它应用。 ( 3 ) 相对独立; 构件相对独立于其它构件,它与其它构件的关系是松散连接。 ( 4 ) 封装性: 构件封装了内部的设计和实现细节,而仅向外部提供接口。外部只能通过构件的接口 来实现对构件的访问。 ( 5 ) 可组装陡 构件可以与其它构件组合构成更大的构件,支持协同工作。 ( 6 ) 构件可以完成特定的功能。 ( 7 ) 构件遵循套接口标准。 以上定义的共同要素是:软件构件是单独丌发并具有特定功能的软件单元,用于与其 它构件及支撑环境组装成应用系统。这共同要素反映了构件的三个基本特征: ( 1 ) 单元特征:构件不是个完整的应用,多个构件可以通过组装构造一个应用: ( 2 ) 复用特征:构件支持对象意义上的封装、多态和继承,它可以在跨越地址空问、 网络、语言。、操作系统的异构环境下被调用或与其它构件协同工作: ( 3 ) 商品特征:构件是预制的知识服务,需要封装。由构件的特点可以看出,它是 实现分布式计算的基础单元。 2 2 3 构件的分类 为了检索和重用构件,需要对构件进行分类,目日“对构件的分类有很多种方式,一 基丁构仆的w e b 开发框架的研究、设计和实现 般地来说,分类通常按某个侧面进行,具体如下 1 : ( 1 ) 根据软件构件的重用方式分为两类,类是黑匣构件( b l a c kc o n k t ) 0 n e n t ) :另类 是白匣构件( w h i t ec o n 啪n e n t ) ; 黑匣构件指的是只知道接口,公共界而,而不知道其内部结构( 如数据结构、算法) 的构件,它对于使用者来说是透明的,白匣构件则明确标出了该构件的内部结构。 ( 2 ) 根据构件的使用范围分为通用构件( c o m m o nc o n p o n e n t ) 和专用构件( s p e c i a l c o m p o n e n t ) : 通用构件是与领域无关的,它可以应用于多个领域,如文件选取构件,可以应用于 各个与文件操作相关的领域:而专用构件是与领域相关的,只限定于某种特定领域,如地 理信息构件、电子商务应用构件等。 ( 3 ) 根据构件粒度的大小分为小型( s m a llc o m p o n e n t ) 、基本数据结构类构件,中型 ( m e d i u mc o m p o n e n t ) 、功能构件,煺j ( l a r g ec o m p o n e n t ) 、子系统级构件。 ( 4 ) 根据功能用途分为系统构件( s y s t e mc o n d o n e n t ) :支撑构件( s u p p o r tc o m p o n e n t ) 领域构件( 吣i l a i nc o m p o n e n t ) : 系统构件是与操作系统打交道的,在系统级相关的构件,如文件系统构件:支撑构件 指的是在系统中起主导支撑作用的构件:领域构件则是指用于特定领域的构件。 ( 5 ) 根据构件的结构分为原子构件( a t o mc o m p o n e n t ) 和组合构件( a s s e m b l e c o m p o n e n t ) ; 原予构件为最小的可重用单位,不再能划分为更小的构件,因而它的功能较为简单: 组合构件即复合构件,它是若干个构件的组合。 ( 6 ) 根据构件重用时的状念分为动念构件( d y n a m i cc o m p o n e n t ) 和静态构件( s t a t i c c o m p o n e n t ) ; 动态构件本身支持动奁演化,它会自动调整自身的状态,如同样的输入会有不同的 输出:而静态构件本身永远不会变化,输入输出都是确定的。 2 2 4 可复用构件 构件是指应用系统中可以明确识别的构成成分,而可复用构件是指具有相对独立的 功能并具有可复用价值的构件。 可复用构件应具备以下属性: ( 1 ) 有用性:! 澎j 页j 是供有用的功能: ( 2 ) 可用性:必须易于理解和使用: ( 3 ) 质量:自身及其变形必须能乖确工作: ( 4 ) 适应性:应该易于通过参数化等方式在不同语境中配置: ( 5 ) 可移植性:应能在不同的硬件平台和软件环境中工作。 随着对软件复用概念理解的深入,构件的概念己不再局限于源代码级的构件,而是 延伸到软件工程的各个阶段诸如需求分析、系统设计和软件需求规约、系统和软件的构架、 1 2 基丁构什的w e b 开发框架的研究、设计和实现 文档和数据以及其他对开发活动有用的信息。 2 2 5 构件设计时要考虑的问题 在实际的应用丌发中,可以选择已丌发好的成熟的构件,也可以自行设计构件,在 设计软件构件的时候应注意以下几点 2 : ( 1 ) 软件构件的设计应具有较高的抽象程度 软件构件的重用程度是指软件构件在丌发各种软件时可以重用的难易程度。软件构 件越具体,其重用程度越低。为了提高软件构件的可重用度,应尽量把构件一般化,使软 件开发人员能眵有效地重用这些构件及其设计思想。 ( 2 ) 软件构件应易于调整,可重用构件应该具有较高的通用性。然而,丌发特定软 件时,必须把这些软件构件具体化,以用于具体的环境。因此,必须提供软件构件的具体 化机制以及调整机制。 ( 3 ) 软件构件应易于组装 基于可重用构件的丌发方式一般来说是从可重用构件库中选出若干构件组装成所需 要的软件。因此,构件组装软件的难易程度是影响软件重用大规模实用化的重要因素之一。 所以,为了易于组装,除构件之问应具有松散的耦合度之外,还应提供便于组装的机制。 ( 4 ) 软件构件必须具有可检索性 软件构件必须

温馨提示

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

评论

0/150

提交评论