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

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

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

文档简介

摘要 随着i n t e r n e t 的快速发展和企业级网络应用广泛使用,软件的规模越来越 大,传统的软件开发越来越不适应潮流的发展。由于w e b 应用的基础是以文档为 中心,面向对象的成熟软件方法无法有效的应用到w e b 应用的开发中。基于构件 的软件工程( c b s e ) 是随着软件编程语言由面向过程发展到面向对象技术,并不 断衍化的产物。它顺应软件复用的需求在近年来褥到广泛关注与应用。它的基本 目标是让软件产品成为一个个可以重用,可以互操作的构件,通过市场或其它的 方式获得这些构件。并由它们快速地组装成为一个应用系统。 本文系统地介绍了基于构件的软件工程,对分布式构件模型进行了阐述和比 较,研究了基于构件的软件工程在进行w e b 应用开发中出现的闽题,提出了完善 的解决方案。其中通过分析了软件系统中的横切关注点问题,介绍了实现横切关 注点模块化的方法- a o p ,并应用a o p 实现了w e b 项目中系统级服务。然后对基于 构件的项目管理体系结构的进行分析,提出了项目管理构件库来处理企业级w e b 应用项目中的业务组件的组件依赖和系统演化等问题。还探讨了使用项目构件库 和项目配置管理系统来按构件粒度的不同进行软件配置管理。 在上述研究的基础上,通过在大型的企业w e b 应用项目中实践验证了本文研 究成果的可行性与有效性。 关键词:构件;软件复用;项目管理体系结构;构件库;面向方面编程 西北人学信息科学与技术学院硕士研究生论文 a b s t r a c t w i t ht h ed m s t i cd e v e l o p m e n to fi n t e m e tt e c h n 0 1 0 9 ya 1 1 dm o r ee n t e r p r i s ew e b a p p l i c a t i o n s ,s o f | w a r es c a l eh a sb e c o m em o r ec o m p l i c a t e d s ot r a d i t i o n a ls o f t w a r e d e v e l o p m e n tm e t h o dh a sb e c o m eo u to fd a t e b e c a u s et h eb a s i co fw e b 印p l i c a t i o ni s d o c u m e m , i ti sd i m c u l it o a p p l yo b j e c t o r i e n t e d w e l l 一e s t a b l i s h e ds o r w a r e d e v e l o p m e n tm e t h o d st ow 曲a p p l i c a t i o n s c o m p o n e n t b a s e ds o 脚a r ee n g i n e e r i n g i sa 1 1e v o l u t i o n a r yr a m e rt h a nr e v o l u t i o n a r y 印p r o 虬h b yu s i n gc b s ea p p r o a c h , s y s t e md e v e l o p m e n tb e c o m e st h es e l e c t i o n ,r e c o n n g i l r a t i o n ,a d a p t a t i o n ,a s s e m b l i n g a 1 1 dd e p l o m e mo f e n c 印s u l a t e d ,r 印1 a c e a b l ea n dr e u s a b l ec o m p o n e l l t s 1 nt h i sp a p e r s o 矗w a r ec o m p o n e n tt e c l l i l 0 1 0 9 yi si n 仃o d u c e d 证d e t a i l b yt h e a 1 1 a l y s i so fe x i s tp r o b l 锄so fw e ba p p l i c a t i o n ,w ep r o v i d ef b 髂i b l er e s o l u t i o n s t h r o u 曲t h ei n 订0 d u c t i o no fa s p e c t o r i e n t e dp m f 猢i n g ,i m p o r t a n ts e n ,i c e so fw c b 印p l i c a t i o n 盯ei m p l e m e n t e d f o re x a m p l e 把m s a c t i o ns e i c e t h e nc o m p o n e n t - b a s e d p r o j e c tm a l l a g e ra r c h i t e c 讥r ei sa i l a l y z e d ,p r o j e c tm a n a g e rc o m p o n e n tr 印o s i t o r yi s p r o v i d e dt or e s 0 1 v ec o m p o n e n td 印e n d e n c yb e 押e e nb u s 抽e s sc o m p o n e n t sa i l ds y s t e m e v o l v e m e n t b ym eu s eo fp 删e c tm a n a g c rc o 珂p o n e n tr 印o s i t o r y a n ds o 疗w a r e c o n f i g u r a t i o ns y s t e m ,i n t e g r a t i o ns o f | w a r ec o n f i g i l r a t i o nm a i l a g 锄e n ts t r 锄e g y i s a p p l i e d b a s e do nt l l er e s e a r c h ,m m u g h 印p l y i n gt l l er e s u l tt op r a c t i c eo n 也ed e s i g na 1 1 d p m 盯a m m i n go f c n t e r p r i s ea p p l i c a i i o n ,t e s t i f ym e r e s e a r c h sf e a s i b i l i t ya n dv a l i d i t y f k e yw o r d s :c o m p o n e n t ;s o f t w a r er e u s a b i l i t y ;p r o j e c tm a n a g e r 盯c h i t e c t u r e ; c o m p o n e n tr e p o s i t o r y ;船p e c t o r i c n t e dp r o 可a m m i n g 西北大学信息科学与技术学院硕士研究生论文 i i 西北大学学位论文知识产权声明书 本人完全了解学校有关保护知识产权的规定,即:研究生在校攻读 学位期间论文工作的知识产权单位属于西北大学。学校有权保留并向国 家有关部门或机构送交论文的复印件和电子版。本人允许论文被查阅和 借阅。学校可以将本学位论文的全部或部分内容编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。同 时,本人保证,毕业后结合学位论文研究课题再撰写的文章律注明作 者单位为西北大学。 保密论文待解密后适用本声明。 学位论文作者签名: 堡叠指导教师签名:董i 查固! 沙露辱6r5b泸f 年疑q 日 f 匿北大学学位论文独创性声明 本人声明:所呈交的学位论文是本人在导师指导下进行的研究工作 及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外, 本论文不包含其他人已经发表或撰写过的研究成果,也不包含为获得西 北大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的 同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢 意。 学位论文作者签名:绎祷 p 年6 只sb 1 1 研究背景 第一章绪论 今天,软件已经渗透到我们生产生活的方方面面,商业、制造业、服务业中 无处不见软件的巨大影响。软件正改变着我们生活方式。然而,与其他产业相比, 软件产业却远远不够成熟。无法满足的软件需求,延期甚至失败的项目,不可靠、 难以升级、缺乏安全性的软件产品这些都时时提醒着我们软件产业还处于它的 婴儿期。 面对上述软件危机,人们提出了种种解决方案,其中包括软件复用( s o f t w a r e r e u s e ) 。软件复用技术的出项,对于解决软件系统不能快速适应经常变化的行业 需求,系统的开发滞后于行业需求发展的新软件危机问题提供了很好的技术手 段。 软件复用的基本思想是,对于软件系统中共享的功能,能充分利用或者借鉴 以往的成功软件去解决,而不必一切从零开始。( 1 ) 而构件技术正是软件复用 技术中一个成功的典范。将构件复用技术应用于软件系统的开发中,能提高系统 开发效率,能较好保证软件质量。近年来,由于得到了面向对象等新技术的支持, 软件构件复用技术已成为当前软件复用研究的焦点。基于构件的软件开发( c b s d ) 将软件开发的重点由原来的软件编程转移为利用已有构件组合集成新的软件系 统。软件构件有着广泛的应用前景,特别是在i n t e r n e t i n t r a n e t 环境下分布式 企业应用和开源社区的兴起,使得基于构件的软件开发将成为流行的w e b 应用软 件开发方式。 1 2 研究意义 当前,如果能将软件复用的思想引入软件构件开发,为w e b 应用程序提供 系统化的复用机制,即有目的的创建、管理、支持和复用,将大大提高系统 西北大学信息科学与技术学院硕士研究生论文 1 开发的效率,缩减开发周期。 基于构件的软件开发从根本上改变了软件生产方式。f 是福特公司创造 了汽车的流水线制造法,才开创了工业化规范大生产的新纪元。福特制造的 精髓就是将汽车生产的重点从制造每一个零件转到装配,汽车制造者不必自 己设计制造每一个零件,大部分零件由外购而来。过去的软件开发方式与旧 的汽车生产方式十分相似,开发者往往要编写程序中的绝大多数代码,w e b 应 用犹甚。因此,如果能将w e b 应用分解成不同的构件和业务组件,像组装汽车 或机器一样地进行开发,将是一大进步。 w e b 应用开发需要考虑很多问题,例如:多线程、事务管理等。使用软件 构件技术可以使开发者将更多的注意力放到业务流程和业务规则上去,他们 可以摆脱编程的细节问题,将更多的精力投入到与用户交流。另外,业务管 理者也可以在更高的层次上,用偏进于业务而不是偏向于计算机语言进行讨 论。 目前国内的软件开发企业的过程管理水平比较低,许多管理者和开发者不知 道在提高软件开发效率和软件质量方面应该做些什么、如何去做。基于业务组件 的项目管理体系结构描述通过大型团队经济地构建可伸缩和高性能地系统所需 地概念、原则、方针、政策和工具。这种项目管理体系结构可以节省时间,能够 实施更敏捷的开发,具有很强的实用性。 1 3 论文的主要工作 论文的主要工作体现在理论和实践两方面的工作: i 在理论上,本文作者通过对基于构件的项目管理体系结构的进行分析,提 出了项目管理构件库来处理企业级w e b 应用项目中的组件依赖和系统演化等问 题。还探讨了使用项目构件库和项目配置管理系统来对不同构件粒度的进行软件 配置管理。具体工作如下: ( 1 ) 分析了基于构件的项目管理体系结构的基本概念和原则。 ( 2 ) 分析了项目管理构件库的提出原因,描述了项目管理构架库的工作过程, 对项目构件描述进行阐述。 ( 3 ) 探讨了使用项目构件库和项目配置管理系统来对不同构件粒度的进行软 西北大学信息科学与技术学院硕士研究生论文 2 件配置管理。 1 i 在实践方面,对分布式构件模型进行了阐述和比较,研究了基于构件的 软件工程在进行w 朗应用开发中出现的问题,提出了完善的解决方案。具体内容 包括: ( 1 ) 对w 髓应用的持久层进行介绍,阐述必要性。 ( 2 ) 通过控制反转模式来解决业务对象管理问题。 ( 3 ) 介绍了实现横切关注点模块化的方法一a o p ,并应用a o p 实现了w e b 项目 中一些系统级服务。 ( 4 ) 讨论了w e b 页面缓存机制。 1 4 论文的组织 全文共分六章: 第一章绪论 介绍了本文研究的背景、研究的目的及现状、主要工作。 第二章软件复用技术 对软件复用技术进行了介绍,主要介绍了软件复用中可复用的软件制品以及 软件复用的相关技术简要介绍了软件复用的思想。 第三章基于构件的软件工程 本章首先阐述了基于构件软件工程中的一些主要概念和概念之间的逻辑关 系;然后阐述了构件模型和如何获取构件,分析了c b d 与传统方法的区别,最后 介绍了c b s e 的生命周期模型。 第四章w e b 开发中的问题 概述了w e b 应用方式的发展历史;分析了当前主要的三种w e b 分布式构件模 型并进行比较;最后分析了现行w e b 应用中存在的常见问题,给出了合适的解决 方案。 第五章c b d 项目管理体系结构 本章首先介绍了组件库,然后使用x m l 配置文件的方式对项目所需的组件的 组装处理。 第六章开发实践 西北大学信息科学与技术学院硕士研究生论文 3 通过一个基于b s 的大型网络应用进行基于构件的软件开发实践。首先介绍 项目背景,然后对其体系结构和应用框架进行分析,最后依次介绍了各层结构的 设计。 第六章结论与展望 总结本文的研究和实践成果,指出了需要进一步开展的工作。 西北大学信息科学与技术学院硕士研究生论文 4 第二章软件复用技术 可复用性是人类解决问题时普遍使用的一个概念,比如说机械行业的螺钉生 产,螺钉一般是在专业制造螺钉的标准件机械工厂中生产的,而且该类机械工厂 本身并不需要生产出来的所有螺钉,生产的最主要目的是为了将螺钉销售给其他 机械行业的机器制造企业用来装配机器。当然机械行业比软件行业成熟得多,而 且生产软件产品过程和工艺要比生产螺钉的工程和工艺复杂的多,但这恰恰正是 我们用成熟的分工专业的机械行业的经验来思考目前软件行业的作坊式的生产 流程的理由,几个世纪前的人们正是在手工作坊里加工这些机械零件的。目前的 软件行业状况是一方面有大量的软件需要开发和维护,软件危机依然严重存在, 另一方面是有大量的重复工作存在;例如美国一所大学i 9 9 1 年的一项调查报告 发现,该校图书管理系统的5 0 多个分类程序中,重复实现同一个算法的有十几 个。现在越来越多的人己认识到,解决软件危机一个重要途径是采用软件复用技 术。因此,对软件复用方法的研究已经是软件工程中的重点和热点,被视为解决 软件危机,提高软件生产效率和质量的现实可行的途径( 2 , 3 , 4 ) 。 2 1 软件复用技术产生的历史背景 随着计算机应用的逐步扩大,软件需求量迅速增加,规模也日益增长,软件 规模的快速增长,带来了软件的复杂程度的增加和程序代码的几何级增长。即使 是富有经验的程序员,也难免对编写数万行的软件顾此失彼,其结果是:大型软 件的开发费用经常超出预算,完成时间也常常超过预期。庞大的软件开发和维护 费用,加上不可避免的软件质量下降,对计算机应用的继续扩大构成巨大的威胁。 面对这种严峻的形势,软件界的有识之士发出了软件危机的警告。 1 9 6 8 年北大西洋公约组织( n a t o ) 的计算机科学家在前联邦德国召开的国际 学术会议上第一次提出了“软件危机”( s o f t w a r ec r i s i s ) 这个名词。概括来 说,软件危机包含两方面问题:一、如何开发软件,以满足不断增长,目趋复杂 的需求;二、如何维护数摄不断膨胀的软件产品。 具体地说,软件危机主要表现有以下表现( 5 ) : 西北大学信息科学与技术学院硕士研究生论文 5 对软件开发成本和进度估计不准确: 用户对“已完成”系统不满意的现象发生; 软件产品的质量不稳定: 软件的可维护程度低: 软件没有适当的文档资料; 软件的成本不断提高; 软件开发生产率的提高赶不上硬件的发展和人们需求的增长。 针对日趋复杂的软件需求的挑战,软件业界研究了软件复用技术。作为针对 “软件危机”的最佳对策,软件复用技术已经引起人们的普遍关注。 2 2 软件复用的定义 目前,对于软件复用还没有一个形式化的概念,许多研究人员从各自不同的 角度对软件复用这个概念作了说明,b i g g e r s t a f f 和r i t c h e r 认为软件复用是在新 的开发项目中使用以前已获得的概念和对象;t r a c z 认为软件具有事先性,复用 特别为复用目的而设计的软件过程,而把使用不是特别为复用目的而设计的软件 称为软件挽救( 6 ) ;g a m b h i r 把在多个应用中使用相同的构件称作为软件复用和 软件挽救之间的区别。 本文中,软件复用是指重复使用“为了重复使用目的而设计的软件( 可复用 软件) ”的过程( 7 ) 。在软件演化的过程中,重复使用的行为可能发生在三个维 上: 时间维:使用以前的软件版本作为新版本的基础,加入新功能,适应新需 求,即软件维护。 平台维:以某平台上的软件为基础,修改其和运行平台相关的部分,使其 运行于新平台,即软件移植。 应用维:将某软件( 或其中构件) 用于其他应用系统中,新系统具有不同功 能和用途,即真正的软件复用。 软件复用的目的是要使软件开发工作进行得更快更好更省。在市场环境中满 足市场时间上面的要求,开发出来的产品更可靠、易于维护和节约成本。 西北大学信息科学与技术学院硕士研究生论文 6 2 3 软件复用的分类 软件复用不仅是对软件程序的复用,还包括对软件生产过程中其他劳动成果 的复用,如项目计划书、可行性报告、需求分析、概要设计、详细设计、编码( 源 程序 、测试用例、文档与使用手册等等( 8 ) 。软件复用的分类方法很多,一种 方法是把软件复用分为横向复用和纵向复用( 9 ) 。横向复用( h o r i z o n t a l r e u s e ) 是指重用不同应用领域中的软件元素,例如数据结构、分类算法、人机 界面构件等,标准函数库就是一种原始的横向复用机制。纵向复用是指在一类具 有较多公共性的应用领域之间进行软件重用。因为在两个截然不同的应用领域之 间实施软件复用的潜力很小,所以纵向复用才广受瞩目,并成为软件复用技术的 真正所在。 另一种分类方法是由北大青乌工程提出的,它把软件复用分为两类:产品复 用和过程复用 9 。产品复用指对软件开发过程中生成的各种产品( 需求规约、 设计、程序、测试计划和数据等) 构件的复用,这涉及可复用构件的建造( 从现 有系统中获取或者有目的的生产) 及可复用构件的使用( 对知识性资源的参考和 对程序代码级资源的复合组装) 两个方面,通过专业性的构件开发和基于构件复 用的系统集成实现软件的工业化生产。过程复用指通过采用自动化技术,复用关 于软件系统生成或变换的知识,从而使得可以从需求描述出发,通过生成或变换, 自动生成最终所需的系统。应用生成器、程序变换器和可执行规约语言均是过程 复用的例子。完全通用的过程复用意味着软件生产的自动化,这在目前还是不现 实的想法。当前过程复用的实践大多和领域相关,是非常理想的软件复用方式, 但在目前技术发展水平下,仍是难以企及的目标,产品复用也成为主要的研究课 题。 就产品复用而言,又可分为直接复用和间接复用两类,这是由被复用产品本 身的性质和内容所决定的。直接复用是指对那些可表示为某种程序设计语言代码 的构件的复用,这类构件的复用及其通过一定机制的复合( 组装) 可直接产生可 执行的应用程序,这是我们开发软件的最终目标。间接复用是指对需求规约、功 能规约、设计思想、测试计划等文档型知识的复用,这类非代码构件的复用虽然 不能直接得到最终可运行的系统,但可以对系统开发的效率和质量带来极大的好 处,这类构件的复合( 组装) 缺乏形式化和机械化的机制,通常只能由开发者在 西北大学信息科学与技术学院硕士研究生论文 7 分析理解后进行手工复合。 对已有软件资源的复用存在两种情形,一是不作修改的全部采用,这类构件 恰好能满足使用者的需求,这种复用成为黑盒复用;另一种是所复用的构件只能 满足使用者部分需求,需要对构件进行适应性修改爿可采用,这种复用称为白盒 复用。在大多数情况下,对构件的复用均是白盒复用。 2 4 可复用的软件制品 c o p p e rj o n e s 定义了可复用的十种软件制品( 1 ) : 1 项目计划。软件项目计划的基本结构和许多内容均是可以跨项目复用的, 这样减少了用户指定项目计划的时间,也降低了建立进度表、风险分析和其他特 征相关的不确定性。 2 成本估计。因为经常不同项目中含有类似的功能,所以有可能在极少修 改或不修改的情况下,复用对该功能的成本估计。 3 体系结构。即使当考虑不同的应用领域时,也很少有截然不同的程序和 数据体系结构。因此,有可能建立一组类属的体系结构模板,并将那些模板作为 可复用的设计框架。 4 需求模型和规约。类和对象的模型和规约是明显的复用候选者,此外, 用传统软件工程方法开发的分析模型也是可复用的。 5 设计的复用。设计结果比源程序的抽象级别更高,因此它的复用受现实 环境的影响较少,从而使可复用构件被复用的机会更多,并且所需的修改更少。 这种复用有三种途径,第一种途径是从现有系统的设计结果中提取一些可复用的 设计构件,并把这些构件应用于新系统的设计;第二种途径是把一个现有系统的 全部设计文档在新的软硬件平台上重新实现,也就是把一个设计运用于多个具体 的实现;第三种途径是独立于任何具体的应用,有计划的开发一些可复用的设计 构件。 6 代码的复用。包括目标代码和源代码的复用。其中目标代码的复用级别 最低,历史也最久,当前大部分编程语言的运行支持系统都提供了连接( l i n k ) 、 绑定( b i n d i n g ) 等功能来支持这种复用。源代码的复用级别略高于目标代码的复 用,程序员在编程时把一些想复用的代码段复制到自己的程序中,但这样往往会 西北大学信息科学与技术学院硕士研究生论文 8 产生一些新旧代码不匹配的错误。想大规模的实现源程序的复用只有依靠含有大 量可复用构件的构件库。如“对象链接及嵌入”( o l e ) 技术,既支持在源程序级 定义构件并用以构造新的系统,又使这些构件在目标代码的级别上仍然是一些独 立的可复用构件,在运行时被灵活的得新组合为各种不同的应用。 7 分柝的复用。这是比设计结果更高级别的复用,可复用的分析构件是针 对问题域的某些事物或某些问题的抽象程度更高的解法,受设计技术及实现条件 的影响很少,所以可复用的机会更大。复用的途径也有三种,即从现有系统的分 析结果中提取可复用构件用于新系统的分析:用一份完整的分析文档作输入产生 针对不同软硬件平台和其它实现条件的多项设计;独立于具体应用,专门开发一 些可复用的分析构件。 8 用户界面。可能是最广泛的复用产品。g u i 软件经常被复用。因为它可以 占到一个应用的6 0 的代码量,复用效果非常明显。 9 数据。在多数被复用的软件制品中,数据包括内部表、列表和记录结构, 以及文件和完整的数据库。 l o 测试信息的复用。主要包括测试用例的复用和测试过程信息的复用。前 者是把一个软件的测试用例在新的软件测试中使用,或者在软件做出修改时在新 的一轮测试中使用。后者是在测试过程中通过软件工具自动地记录测试的过程信 息,包括测试员的每一个操作、输入参数、测试用例及运行环境等一切信息。这 种复用的级别,不便和分析、设计、编程的复用级别作准确的比较,因为被复用 的不是同一事物的不同抽象层次,而是另一种信息,但从这些信息的形态看,大 体处于与程序代码相当的级别。 由于软件生产过程主要是正向过程,即大部分软件的生产过程是使软件产品 从抽象级别较高的形态向抽象级别较低的形态演化,所以较高级别的复用容易带 动较低级别的复用,因而复用的级别越高,可得到的回报也越大,因此分析结果 和设计结果在目前很受重视。用户可购买生产商的分析件和设计件,自己设计或 编程,掌握系统的剪裁、扩充、维护、演化等活动。 2 5 软件复用的关键技术 实现软件复用的关键因素 技术和非技术因素) 主要包括:软件构件技术 西北大学信息科学与技术学院硕士研究生论文 9 ( 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 ) 、领域工程( 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 j 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 ep r o c e s s ) 、c a s e 技术等以及 各种非技术因素,且各种因素是互相联系、互相影响的,如图2 1 所示,它们结 合在一起,共同影响软件复用的实现( 1 0 ) 。 软 件 过 程 应用系统领域li 遗产软件系统 领域工程ll 软件再工程l【软件构架技术li 开放系统技术 构件、构 架获取 构件标准 化与描述构嚣、构件组装 软件构件技术 c a s e 技术 非 技 术 因 素 图2 一l 实现软件复用的关键因素 1 软件构件技术 软件构件技术是支持软件复用的核心技术,是近几年来迅速发展并受到高度 重视的一个学科分支。软件构件( s o f t w a r ec o m p o n e n t ) 将在下一章中重点讲述。 2 软件构架 软件构架是对系统整体结构设计的刻画,包括全局组织与控制结构,构件间 通讯、同步和数据访问的协议,设计元素间的功能分配,物理分布,设计元素集 成,伸缩性和性能,设计选择等。 研究软件构架对于进行高效的软件工程具有非常重要的意义:通过这一研 究,有利于发现不同系统在较高级别上的共同特性;获得正确的构架对于进行正 确的系统设计非常关键;对各种软件构件的深入了解、使得软件工程师可以根据 一些原则在不同的软件构架之间做出选择;从构架的层次上表示系统,有利于系 统较高级别性质的描述和分析。特别重要的是,在基于复用的软件开发中,为复 用而开发的软件构架可以作为一种大粒度的、抽象级别较高的软件构件进行复 西北夫学信息科学与技术学院硕士研究生论文 1 0 用,而且软件构架还为构件的组装提供了基础和上下文,对于成功的复用具有非 常重要的意义。 3 领域工程 领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的 过程,它覆盖了建立可复用软件构件的所有活动。领域是指一组具有相似或相近 软件需求的应用系统所覆盖的功能区域。领域工程包括三个主要的阶段:领域分 析、领域设计和领域实现。 4 软件再工程 软件复用中的一些问题与现有系统密切相关,如:现有软件系统如何适应当 前技术的发展及需求的变化,采用更易于理解的、适应变化的、可复用的系统软 件构架并提炼出可复用的软件构件? 现存大量的遗产软件系统由于技术的发展, 正逐渐退出使用,如何对这些系统进行挖掘、整理,得到有用的软件构件? 已有 的软件构件随着时间的流逝会逐渐变得不可使用,如何对它们进行维护,以延长 生存期,充分利用这些可复用构件? 等等,软件再工程正是解决这些问题的主要 技术手段。 软件再工程是一个工程过程,它将逆向工程、重构和正向工程组合起来,将 现存系统重新构造为新的形式。再工程的基础是系统理解,包括对运行系统、源 代码、设计、分析、文档等的全面理解。但在很多情况下,由于各类文档的丢失, 只能对源代码进行理解,即程序理解。 5 开放系统技术 开放系统技术的基本原则是在系统的开发中使用接口标准,同时使用符合接 口标准的实现。这些为系统开发中的设计决策,特别是对于系统的演化,提供了 一个稳定的基础,同时,也为系统( 予系统) 间的互操作提供了保证。开放系统技 术具有在保持( 甚至是提高) 系统效率的前提下降低开发成本、缩短开发周期的 可能。对于稳定的接口标准的依赖,使得开放系统更容易适应技术的进步。当前, 以解决异构环境中的互操作为目标的分布对象技术是开放系统技术中新的主流 技术。 开放系统技术为软件复用提供了良好的支持。特别是分布对象技术使得符合 接口标准的构件可以方便地以“即插即用”的方式组装到系统中,实现黑盒复用。 两北大学信息科学与技术学院硕士研究生论文 l l 这样,在符合接口标准的前提下,构件就可以独立地进行开发,从而形成独立的 构件制造业。 6 软件过程 软件过程又称软件生存周期过程,是软件生存周期内为达到一定目标而必须 实施的一系列相关过程的集合。一个良好定义的软件过程对软件开发的质量和效 率有着重要影响。当前,软件过程研究以及企业的软件过程改善已成为软件工程 界的热点,并已出现了一些实用的过程模型标准,如c 埘等。 然而,基于构件复用的软件开发过程和传统的一切从头开始的软件开发过程 有着实质性的不同,探讨适应于软件复用的软件过程自然就成为个迫切的问 题。 7 c a s e 技术 随着软件工程思想的日益深入人心,以计算机辅助开发软件为目标的 c a s e ( c 0 1 i 】p u t e ra i d e ds o f t w a r ee n g in e e r i n g ) 技术越来越为众多的软件开发人 员所接受,c a s e 工具和c a s e 环境得到越来越广泛的应用。c a s e 技术对软件工程的 很多方面,例如分析、设计、代码生成、测试、版本控制和配置管理、再工程、 软件过程、项目管理等等,都可以提供有力的自动或半自动支持。c a s e 技术的应 用,可以帮助软件开发入员控制软件开发中的复杂性,有利于提高软件开发的效 率和质量。 软件复用同样需要c a s e 技术的支持。c a s e 技术中与软件复用相关的主要研究 内容包括:在面向复用的软件开发中,可复用构件的抽取、描述、分类和存储; 在基于复用的软件开发中,可复用构件的检索、提取和组装;可复用构件的度量 等等。 8 非技术因素 除了上述的技术因素以外,软件复用还涉及众多的非技术因素,如:开发人 员如何组织;开发工作如何管理;开发人员知识的更新;创造性和工程化的关系: 开发人员的心理障碍:知识产权问题:保守商业秘密的问题;复用前期投入的经 济考虑;标准化问题等等。 西北大学信息科学与技术学院硕士研究生论文 1 2 第三章基于构件的软件工程 基于构件的软件工程( c o m p o n e n t b a s e ds o f t w a r ee n g i n e e r ) 集软件复用、 分布式对象计算和企业级应用程序开发等技术为一体,以软件构架为组装蓝图, 以可复用构件为组装块,支持组装式软件复用,是提高软件生产效率和产品质量、 缩短产品交付时间的现实有效的途径之一。本章首先阐述了基于构件软件工程中 的一些主要概念和概念之间的逻辑关系;然后阐述了构件模型和如何获取构件, 分析了c 肋与传统方法的区别,最后介绍了c b s e 的生命周期模型。 3 1 基本概念 3 1 1 构件 构件,有些地方又叫做组件,是基于构件的软件开发中的最基本的概念。对 于它的定义,界内没有确切统一的定义,不同的作者在不同角度下过多种不同的 定义。其中,l ( r z y s z o fc z a r n e c k i 和u l r i c he i s e n e c k e r 在文献 1 1 中描述到: 构件可以简单地定义为构造块,不同的软件系统能够由它们组装而成。它们经常 设计为插接兼容的,并且能够以尽可能多的方式进行组合,使开发者获得最小的 代码复制并最大化重用。 c l e m e n ss z y p o e r s k i 在文献 1 2 中将软件构件定义成一种可构成一个功能 型系统且具有独立性的产品、产物、部署的二进制单元。 可以看出,构件强调其接口和实现的分离,构件仅仅通过接口见之于其他构 件。构件必须具有清晰定义的接口,而具体的实现则封装在构件内部,这样构件 才能成为第三方部署和使用的单元。构件具有独立于第三方应用系统的生命周 期,其自身的演化不应影响使用它的第三方应用系统。 以上只是构件的狭义理解,随着对软件复用理解的深入,从广义上说,构件 的概念已不再局限于源代码构件,而是延伸到需求、系统和软件的需求规约、系 统和软件的构架、文档、测试计划、测试案例和数据以及其他对开发活动有用的 信息。 构件可分为可复用构件和不可复用构件。可复用构件是指具有相对独立的功 西北大学信息科学与技术学院硕士研究生论文 1 3 能和可复用价值的构件。可复用构件应具备以下属性:有用性:必须提供有用 的功能:可用性:必须易于理解和使用;质量:自身及其变形必须能正确工 作:适应性:应该易于通过参数化等方式在不同语境中进行配置;可移植性: 应能在不同的硬件平台和软件环境中工作。 剖析一个应用软件系统,可以发现其中有三类构成成分:( 1 ) 通用的基本构 件,如:数据结构,用户界面元素等等:( 2 ) 领域共性构件,指仅在该应用软件所 属领域内经常出现的构件:( 3 ) 应用专有构件,指仅在该应用软件中出现的特定构 件。可复用构件指前两者,通常情况下软件构件是指可复用构件。 3 1 2 接口 互操作性是两个及以上构件相互通信和协作的能力,尽管构件之间的语言、 执行平台是异构的。为了能达到这种目标,构件应该对接口有相同的理解。 构件的接口定义了构件的访问人口( a c c e s sp o i n t ) 。构件的客户( c l i e n t ) 通过接口访问构件提供的服务。接口与实现的分离给我们提供了以下灵活性:( 1 ) 可以更换构件的实现而不用更改接口,因此不会影响构件的客户:( 2 ) 可以为构件 增加新的接口( 包括相应的实现) 而不影响现有的接口和实现。( 1 3 ) 3 1 3 构件与对象 在过去的三十年中,人们一直在试图改进编程语言的设计,以便在表达问题 的面向业务的概念和使用编程语言来描述解决方案的面向技术的概念之间建立 一个更紧密的、更自然的联系。这些尝试促使产生了一系列关于软件结构和行为 的原则,这些原则称为面向对象编程语言( 0 b j e c t o r i e n t e dp r o g r a m m i n g l a n g u a g e , 0 0 p l ) 面向对象的主要概念如下:( 1 4 ) ( 1 ) 对象:软件对象是面向对象系统运行过程中的基本实体,它既包括属性, 也包括作用于属性的行为。对象是由属性和行为所构成的一个封闭整体。 ( 2 ) 类:类是对一组对象的抽象,它将改组对象所具有的共同特征( 包括操作 特征和存储特征) 集中起来,以说明该组对象的能力和性质。 ( 3 ) 继承:继承是自动共享类、子类和对象中的方法和数据的机制。 ( 4 ) 封装:也叫信息隐藏,它指的是把对象的外部特征与内在实施细节分开, 使得一个对象的外部特征对其他对象来说是可访问的,而它的内在实施细节对其 西北大学信息科学与技术学院硕士研究生论文 1 4 他对象来说则是隐藏的。 ( 5 ) 多态:既一个名字具有多种语义。在面向对象语言中多态引用表示可以 引用多个类的实例。 在过去的十年里,面向对象原则己经在很多软件领域中得到应用,特别是数 据库和设计方法。它们已经成为分布式计算领域很多进展的基础,并且作为种 支持对分布式应用程序的不同部分进行集成的方法。但是,面向对象的软件开发 设计并没有完全发挥出它应有的最大力量,因为还不存在一个标准的框架,使得 不同开发商所提供的软件对象能够在同地址空间里互相交互合作,更不用说是 跨越线程空间、网络空间、或者机器结构的边界了。于是,面向对象的软件设计 带来的是一个个分离在应用程序的孤立的对象体。从理论上说,面向对象技术是 应能支持软件的复用和集成的,但在实际上,面向对象技术只是提供了一种基础。 构件技术的概念和思想滋生于封装和模块化的原则、模块化编程和面向对象 技术。在近几年,由于互联网和企业应用的快速发展,面向构件的软件开发被看 成是及时、高质量的开发解决方案。 通过以上分析,构件可以认为是一种包装对象实现的简便方法,并且可以使 它们组装成一个更大的软件系统。构件可以看作是在构件模型的环境中的一个或 多个对象的实现。一种构件模型定义了一套构件必须遵守的规则,使其他对象可 以访问那些对象实现。对象和构件的关系如图2 1 所示。 巳如 皂r 翊 巳寸、 ; 翅 睁寸一 图3 。l 构件和对象的关系 总的来说,构件和对象的区别主要体现在以下四个方面: ( 1 ) 一个对象是源代码的一部分或者是一个规范,用来执行应用程序的一部 分:而部件不仅仅是一个规范,也不一定是需要编译才能使用的部分源代码, 西北大学信息科学与技术学院硕士研究生论文 1 5 而是可以实际运行的软件模块。 ( 2 ) 构件担当一个部署单元的作用,它是基予构件模型的,这种模型定义了 符合这种模型的构件所要遵循的规则。 ( 3 ) 构件提供了对一个或多个对象实现的包装。 ( 4 ) 构件是个集成单元,它用于从很多独立创建的功能部分设计和构造系 统,每一个部分都潜在地使用一种面向对象编程语言或某种其他技术创建。 3 1 4 框架 框架是当前软件工程领域中的个重要概念。c b s e 强调的是通过构件来搭 建软件系统,但是作为该系统的基本单元,构件需要被有效的组织在具体的上下 文( c o n t e x t ) 环境中才能发挥效用。框架其实实际上就是一个上下文环境的提 供者。 事实上,有两种不同类型和层次的框架,分别是构件框架( c o m p o n e n t f r a m e w o r k ) 和应用框架( p p l i c a t i o nf r a m e w o r k ) 。 构件框架与构件模型紧密相关。构件模型定义的是组构件开发者必须遵从 的规范,而构件框架则是支撑构件模型的基础结构( i n f r a s t r u c t u r e ) 的提供者。 构件框架往往被称为“容器”,比如在e j b 构件模型中,e j b 容器就是e j b 构件 的框架。叮b 构件部署、运行在e j b 容器中,容器为e j b 构件提供服务,并负责 管理e j b 构件的生命周期:在c o r h a 规范中,c o r b as e r v e r 就是c o r b a 构件的框 架:而在c o h l 规范中,扮演框架角色的是w i n d o w s 操作系统。 应用框架通常指的是一个可复用的结构和设计。它一般提供一个应用的骨 架,由开发者根据实际情况进行定制。一个有代表性的应用框架是a p a c h e 组织 的s t r u t sf r a m e w o r k 。s t r u t sf ra i i l e w o r k 致力于规范化和简化w e b 应用的开发, 采用s t r u t s 开发w e b 应用的时候,我们需要重载s t r u t s 提供的些抽象类来完 成具体的业务操作,而整个w e b 应用的流程由s t r u t sf r a m e w o r k 根据我们的配 置信息来执行。 构件根据是否由框架提供运行时服务( r u n t i m es e r v i c e ) 分为两种:重量级 的构件( h e a v yw e i 曲tc o m p o n e n t ) 和轻量级的构件( l i g h tw e i g h tc o m p o n e n t ) 。 比如e j b 构件就是一种重量级的构件,而j a v a b e a n 构件则是一种轻量级构件。 ( 1 5 , 1 6 ) 西北火学信息科学与技术学院硕士研究生论文 1 6 下图表示了上述概念之间的关系 细1 飘 匕己n | 垡剑r 叠近复拘交互_ 一 挎件 对象 图3 2 概念之间的关系 构件是比对象更大粒度的单元,它往往是由对象组合而成的。构件的访问人 口是通过接口来定义的,这是构件和对象的关键区别。构件需要在框架上运行, 框架给构件提供上下文环境,而构件和环境间的关系是通过契约来定义的。 3 1 5 构件库 构件库是管理构件的工具。构件库( c o m p o n e n tr e p o s i t o r y ) 是按照一定的语 义和组织结构形成的个构件集合。构件库也是软件构件开发重要的共享资源。 基于构件的开发过程中开发人员必须与构件库打交道,因此,构件库管理工作平 台不仅要提供对构件的自动检索,还要提供对构件的查询、测试、扩充的功能, 同时还要提供编写构件文本的编辑程序,以及构件的语言编译程序,以便生成、 调试、裁剪、组装构件。构件库作为一个管理用户构件的工具,对于构件库的分 类检索、实现过程、组织和维护的方法必须要遵循一定的规范。( 1 7 ) 2 构件模型和构件描述语言 随着构件技术的不断发展,构件复用者想要在浩如烟海的构件库中查询到自 己需要的构件,的确不是一件容易的事,而构件复用者成功识别某构件正是符合 自己的需求构件的方法是通过构件描述语言( c d l ) 。 构件模型定义了构件的本质属性,规定了构件接口的结构以及构件与软件体 系结构、构件与构件之间的交互机制。构件模型通常还提供创建和实现构件的指 导原则。c b s d 工具可以识别和组装来自不同开发者的符合同一构件模型的构件。 一个被所有构件生产者和构件复用者所接受的构件模型实际上起到了构件标准 化的作用。在学术界和产业界已经出现了多种构件模型,其中3 c 模型是学术界 西北大学信息科学与技术学皖硕士研究生论文 1 7 普遍认同的一个具有指导性作用的构件模型。该模型从概念( c o n c e p t ) 、内容 ( c o n t e n t ) 和语境( c o n t e

温馨提示

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

评论

0/150

提交评论