已阅读5页,还剩54页未读, 继续免费阅读
(计算机软件与理论专业论文)分布式环境下的软件组件技术研究及应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上海交通大学 学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下, 独立进行研究工作所取得的成果。除文中已经注明引用的内容外, 本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式 标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名: 季埘年 日期: 2 a r o 。- 年2 月硝日 上海交通大学 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定, 同意学校保留并向国家有关部门或机构送交论文的复印件和电子 版,允许论文被查阅和借阅。本人授权上海交通大学可以将本学位 论文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印或扫描等复制手段保存和汇编本学位论文。 保密口,在年解密后适用本授权书。 本学位论文属于 不保密口。 ( 请在以上方框内打“4 ”) 学位论文作者签名: 杏一孵 日期:训砗乙月玎日 燧名:户舷 日期e :五砣年3 月2 7 日 k 海交通大学硕士学位论文 分布式环境下的软件组件技术研究及应用 分布式环境下的软件组件技术研究及应用 摘要 r , 软件组件具有同应用程序和其他组件进行交互或协同操作的能 力:采用组件技术开发的软件具有优良的封装性。同基于源代码重 用的面向对象编程技术相比,组件技术是基于可执行代码的重用方 法。组件通过先期的接口定义加上独立的开发和后期的维护更新使 软件即插即用的黑盒组装成为可能,从而降低了软件开发的风险, 缩短了软件开发的周期,而且提高了软件的可靠性和可扩展性。 近几年的i n t e r n e t 热潮使得网络服务越来越受到各行各业的重 视,也促进了软件组件技术尤其是分布式组件技术的发展。因此, 个基于内部局域网的企业级自动语音应答服务器。通过这个语音应 答服务器,企业可以迅速实现语音接入服务,利用无处不在的电话 网为用户提供自然、便捷、丰富的信息服务。 v o i c e x m l 是一个符合x m l 格式的扩展标记语言。它隔离了用 户交互界面和具体的服务逻辑,屏蔽了底层平台相关的技术细节。 自动语音应答服务器就像是一个基于v o i c e x m l 的语音浏览器。在 这个浏览器中载入不同的v o i c e x m l 文档就会产生各种语音服务应 用。企业开发具体的语音服务时只需按照v o i c e x m l 的格式将对话 流程写成脚本文件,极大的简化了开发任务。 本文第一部分回顾了软件工程的发展,从软件开发技术的进步过 程中引出重用的概念对于提高软件开发效率的重要性。接着讨论了 软件重用的三个发展方向,并指出组件技术是不破坏软件整体性而 控制软件复杂性的行之有效的方法,然后以c o m 为例做了介绍。 第二部分将分布式计算同组件技术相结合,详细分析比较了当前主 要的三种分布式组件技术,并对组件技术的最新进展做了跟踪。第 三部分设计并实现了一个分布式环境下的自动语音应答服务器。该 服务器以v o i c e x m l 解析器组件- v x i p 为核心,配以语音识别、语 音合成和计算机电话集成等组件,为语音访问网络资源建起了服务 平台。第四部分总结了当前组件技术的发展趋势,基于组件的服务 框架将越来越容易开发企业级的应用。 组件技术正在改变应用程序的开发模式,它使得软件开发逐渐成 为一定程度上的社会化分工过程。在分布式环境下,以大量基础性 服务组件为核心的服务平台将具有更为广泛的应用领域。 第l 页 上海交通大学硕士学位论文 分布式环境下的软件组件技术研究及应用 vo 关键字:组件技术,分布式组件,v o i c e x m l ,自动语音应答服务器 r e s e a r c ha n da p p l i c a t i o no f 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 u n d e rd i s t r i b u t e de n v i r o n m e n t a b s t r a c t s o f t w a r e c o m p o n e n t s c a n e a s i l yc o o p e r a t ew i t ho t h e rc o m p o n e n t sa n d a p p l i c a t i o n s b ya d o p t i n gc o m p o n e n tt e c h n o l o g y ,s o f t w a r ew i l lh a v e g o o dp r o p e r t y o f e n c a p s u l a t i o n c o m p a r e d w i t h o b j e c t - o r i e n t e d p r o g r a m m i n g t h a ti sb a s e do nr e u s eo fs o u r c e c o d e ,c o m p o n e n t t e c h n o l o g y i sb a s e do nr e u s eo fe x e c u t a b l e b i n a r yc o d e t h r o u g h p r e d e f i n e di n t e r f a c e ,i n d e p e n d e n td e v e l o p m e n t ,r e l e a s e ,m a i n t e n a n c ea n d u p d a t e ,i ti sp o s s i b l e t or e a l i z et h ep l u g a n d p l a yo fb l a c kb o x i n t e g r a t i o n m o r e o v e r ,c o m p o n e n t s c a nr e d u c et h er i s ko fs o f t w a r e d e v e l o p m e n t , s h o r t e ni t sp e r i o da n d i m p r o v e i t sr e l i a b i l i t ya n d s c a l a b i l i t y w h i l et h ei n t e r n e tb e c o m e sm o r ea n dm o r ep o p u l a r e n t e r p r i s e sp a y m u c ha t t e n t i o nt ot h en e t w o r k s e r v i c e s t h e y i nt u r nb o o s tt h e d e v e l o p m e n to fc o m p o n e n tt e c h n o l o g ye s p e c i a l l yd i s t r i b u t e dc o m p o n e n t t e c h n o l o g y t h e r e f o r e ,a l m o s ta l l o fs e r v i c ec o m p o n e n tp r o v i d e r sa n d s o f t w a r ev e n d e r sa r ee n d e a v o r i n gt or e l e a s ep o w e r f u lb u t e a s y t o u s e s e r v i c ep l a t f o r mf o r e n t e r p r i s e i nt h i st h e s i sii n t e n dt o a p p l yt h ei d e ao fd i s t r i b u t e dc o m p o n e n t s d e s i g na n dr e a l i z ea i la u t o m a t i cv o i c er e s p o n s es y s t e m w i t ht h i ss y s t e m a n ye n t e r p r i s ec a ni m m e d i a t e l yi m p l e m e n tt h es e r v i c eo fv o i c ea c c e s s p r o v i d eu s e r sw i t hn a t u r a l c o n v e n i e n ta n dp l e n t yi n f o r m a t i o nt h r o u g h u b i q u i t o u st e l e p h o n e n e t w o r k v o i c e x m ei sam a r k u pl a n g u a g eb a s e do nx i v l l i ts e p a r a t e su s e r i n t e r a c t i o nc o d ef r o ms e r v i c el o g i c ;s h i e l d sa p p l i c a t i o na u t h o r sf r o ml o w 1 e v e l ,a n dp l a t f o r m s p e c i f i cd e t a i l s v o i c er e s p o n s es e r v e rw o r k sa sa b r o w s e rw h i c hi n t e r p r e t e rv o i c e x m lf i l e s o n l y d i f f e r e n ti n p u t o f v o i c e x m lf i l e sw i l lc o m eo u tt ob ed i f f e r e n tv o i c ea p p l i c a t i o n s s ot h e d e v e l o p m e n to fs p e c i f i ca p p l i c a t i o n i si u s tt ow r i t eav o i c e x f i l e b a s e do nt h ep r o c e s so fd i a l o gb e t w e e nu s e ra n dc o m p u t e r ,a c c o r d i n gt o t h en o r m a lf o r m a to fv o i c e x m l i t sm u c he a s i e rt od e s c r i b ead i a l o g t h a nt od e v e l o paw h o l e s y s t e m 第2 页 l 海交通大学硕士学位论文 分布式环境下的软件组件技术研究及应用 t h ef i r s tp a r to f t h i st h e s i sr e v i e w st h eh i s t o r yo fs o f t w a r ee n g i n e e r i n g f r o mt h er o u t eo f t e c h n o l o g y d e v e l o p m e n t ,w ec a l lf i n dt h ei m p o r t a n c eo f r e u s et ot h e e f f i c i e n c y o fs o f t w a r e d e v e l o p m e n t t h e n i t g i v e s a d i s c u s s i o no fs o f t w a r er e u s e ,p o i n t so u tt h a tc o m p o n e n t t e c h n o l o g yi sa l l e f f e c t i v ew a yt oc o n t r o lt h ec o m p l i c a c yo fs o f t w a r ew i t h o u tb r e a k i n gi t s i n t e g r i t ya n du s ec o m a sa ne x a m p l e i nt h es e c o n dp a r t i tc o m b i n e s d i s t r i b u t e d c o m p u t i n g a n d c o m p o n e n tt e c h n o l o g y ,d i s c u s s e s a n d c o m p a r e st h r e ec u r r e n t l yl e a d i n gd i s t r i b u t e dc o m p o n e n tt e c h n o l o g i e si n d e t a i l ,a n dt r a c e st h el a t e s te v o l u t i o no ft h e m i nt h et h i r dp a r to ft h i s t h e s i s ,i td e s i g n sa n dr e a l i z e sa na u t o m a t i cv o i c er e s p o n s es e r v e r t h e s e r v e ri sb a s e do nv x i p ,av o i c e x m li n t e r p r e t e r c o m p o n e n t b e i n g a c c o m p a n i e d w i t h s p e e c hr e c o g n i t i o nc o m p o n e n t ,t e x t - t o s p e e c h c o m p o n e n t a n dc t i c o m p o n e n t ,i t e s t a b l i s h e sas e r v i c ep l a t f o r mf o rv o i c e a c c e s st oi n f o r m a t i o na n dr e s o u r c eo nn e t w o r k t h ef o u r t hp a r ti sas u m u p i tr e v e a l st h et r e n dt h a ts e r v i c ef r a m e w o r kb a s e do nc o m p o n e n tw i l l b em o r ea n dm o r ee a s yt ob eu s e di nd e v e l o p m e n to fe n t e r p r i s el e v e l a p p l i c a t i o n s c o m p o n e n tt e c h n o l o g y i s c h a n g i n g t h e p r o d u c i n g m o d e lo f a p p l i c a t i o n s t os o m ee x t e n s i o n ,i tm a k e st h ed e v e l o p m e n to fs o f t w a r ea p r o c e s so fs o c i a l i z a t i o nw h i l ed i v i d i n gt h ew o r kt om a n yc o o p e r a t o r s t h o s es e r v i c ep l a t f o r m sb a s e do nl o t so fb a s i cs e r v i c ec o m p o n e n t sw i l l h a v eab r o a d e rd o m a i ni nd i s t r i b u t e de n v i r o n m e n t k e y w o r d s :c o m p o n e n tt e c h n o l o g y ,d i s t r i b u t e dc o m p o n e n t , v o i c e x m l ,a u t o m a t i c v o i c e r e s p o n s e s e r v e r 第3 页 上海交通大学硕士学位论文 分布式环境下的软件组件技术研究及应用 1 绪论 1 1 软件开发方法的历史 上个世纪5 0 年代,软件伴随着第一台电子计算机的问世诞生了。在计算机 系统发展的初期,硬件通常用来执行一个单一的程序。而这个程序又是为一个 特定的目的而编制的,所以当时的“软件”还不能算是真正意义上的软件。软 件同硬件密切相关,而且大多数是由使用该软件的个人或机构研制的,其通用 性十分有限。这个时期的软件开发往往带有强烈的个人色彩,也没有什么系统 的方法可以遵循,软件设计是在开发者头脑中完成的一个不可知的过程。此 外,除了最后的源代码往往没有软件说明书等文档。 从6 0 年代开始软件逐渐成为一个新兴的行业,出现了专职应别人的需求写 软件的“软件作坊”。但是软件开发的方法基本上仍然沿用早期的个体化软件 开发方式,那些以前被认为是优秀的程序常常很难被别人看懂,通篇充满了程 序技巧。随着软件需求数量的急剧膨胀,软件结构的臼趋复杂,软件维护的难 度越来越大,开发成本高得惊人,失败的软件开发项目屡见不鲜。这就是众所 周知的“软件危机”。 “软件危机”使得人们开始对软件及其特性进行更深一步的研究。针对软 件危机,n a t o ( 北约) 的科技委员会会同业界领袖在1 9 6 8 、1 9 6 9 年连续召开 的两次著名的n a t o 会议上提出了“软件工程”这一术语【1 】。从此,软件研究 人员展开了有关软件开发模型、方法以及支持工具的研究,并在以后不断发 展、完善。与此同时围绕软件项目的管理方法也在不断探索中逐步走向成熟。 软件工程包括两方面内容:软件开发技术和软件项目管理。前者从技术角 度入手,研究范围包括软件开发方法学、软件工具和软件工程环境。后者则从 管理角度入手,所研究的范围包括软件项目计划、软件项目估算、进度控制、 人员组织、资源配置管理等。 软件管理的问题通常容易被一般的软件开发人员所忽视,他们所讨论的重 点往往只是软件开发方法,对项目管理大多一笔带过。但事实上是否具有组 织有序、控制得当的管理机制对于一个软件项目,尤其是大型的软件项目的成 败是至关重要的。 软件工程在3 0 多年来的发展中,不断探索新的软件开发方法。至今已形成 p a r n a s 方法、结构化方法、面向数据结构、问题分析法、面向对象、可视化开 发、i c a s e 等多种逐步发展,相互借鉴或综合的软件开发方法。 1 1 1p a r n a s 方法 最早的软件开发方法是由d p a r n a s 在1 9 7 2 年提出的。由于当时软件在可维 护性和可靠性方面存在着严重问题,p a r n a s 主要针对这两个问题进行了研究。 首先,p a r n a s 提出了信息隐蔽原则:在概要设计时列出将来可能发生变化的 因素,并在模块划分时将这些因素放到个别模块的内部。这样,在将来由于这 第6 页 上海交通大学硕士学位论文 分布式环境下的软件组件技术研究及应用 些因素变化而需修改软件时,只需修改这些个别的模块,其它模块不受影响。 信息隐蔽技术不仅提高了软件的可维护性,而且也避免了错误的蔓延,改善了 软件的可靠性。现在信息隐蔽原则已成为软件工程学中的一条重要原则。 其次,p a m a s 提出应在软件设计时对可能发生的种种意外故障采取防范措 施。软件是很脆弱的,很可能因为一个微小的错误而引发严重的事故,所以必 须加强防范。如在分配使用设备前,应该取设备状态字,检查设备是否正常: 模块之间也要加强检查,防止错误蔓延。 p a r n a s 对软件开发提出了深刻的见解。遗憾的是,他没有给出明确的工作流 程。所以这一方法不能独立使用,只能作为其它方法的补充。 1 1 2 结构化方法 1 9 7 8 年,e y o u r d o n 和l l c o n s t a n t i n e 提出了结构化方法,即s a s d 方法, 也可称为面向功能的软件开发方法或面向数据流的软件开发方法。1 9 7 9 年t o m d e m a r c o 对此方法作了进一步的完善。 结构化方法是8 0 年代使用最广泛的软件开发方法。它首先用结构化分析 ( s a ) 对软件进行需求分析,然后用结构化设计( s d ) 方法进行总体设计,最 后是结构化编程( s p ) 。这一方法开发步骤明确,s a 、s d 、s p 相辅相成,连 贯一致。它还给出了两类典型的软件结构( 变换型和事务型) ,便于相互参 照。结构化方法使得软件开发的成功率大大提高,深受软件开发人员的青睐。 1 1 3 面向数据结构的软件开发方法 1 j a c k s o n 方法 1 9 7 5 年,m a j a c k s o n 提出了一类至今仍广泛使用的软件开发方法。这一方 法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细 节,就可得到完整的程序结构图。这一方法对输入、输出数据结构明确的中小 型系统特别有效,如商业应用中的文件表格处理。该方法也可与其它方法结 合,用于模块的详细设计。j a c k s o n 方法也因此称为面向数据结构的软件设计方 法。 2 w a m i e r 方法 1 9 7 4 年,j d w a r n i e r 提出的软件开发方法与j a c k s o n 方法类似。差别有三 点:一是它们使用的图形工具不同,分别使用w a r n i e r 图和j a c k s o n 图;第二个 差别是使用的伪码不同;最主要的差别是在构造程序框架时,w a m i e r 方法仅考 虑输入数据结构,而j a c k s o n 方法不仅考虑输入数据结构,而且还考虑输出数据 结构。 1 1 4 问题分析法p a m 问题分析法p a m ( p r o b l e m a n a l y s i sm e t h o d ) 是8 0 年代末由日立公司提出 的一种软件开发方法。 第7 页 上海交通大学硕士学位论文 分布式环境下的软件组件技术研究及应用 p a m 办法希望能兼顾y o u r d o n 方法、j a c k s o n 方法和自底向上的软件开发方 法的优点,避免它们的缺陷。它的基本思想是:先考虑输入、输出数据结构, 指导系统的分解,再在系统分析指导下逐步综合。这一方法的具体步骤是:从 输入、输出数据结构导出基本处理框;分析这些处理框之间的先后关系;按先 后父系逐步综合处理框,直到画出整个系统的p a d 图。从上述步骤中可以看 出,这一方法本质上是逐步综合的自底向上方法,但在综合之前已进行了有目 的系统分解。 p a m 方法的另一个优点是使用p a d 图。这是一种二维树形结构图,是到目 前为止最好的详细设计表示方法之一,远远优于n s 图和p d l 语卣。 这一方法在日本较为流行,软件开发的成功率也很高。但由于输入、输出 数据结构与整个系统之间存在着鸿沟,这一方法仍只适用于中小型问题【1 】。 1 1 5 而向对象的软件开发方法 丽向对象技术是软件技术的一次革命,在软件开发史上具有晕程碑的意 义。它将人们对于客观事物的认识方法引入了软件技术。 随管l f l j 向对象分析( o o a ) 、面向对象设计( o o d ) 和面向对象编程 ( o o p ) 的发展,最终了形成面向对象的软件丌发方法o m t ( o b j e c tm o d e l l i n g t e c h n i q u e ) 。这是一利t 自底向上和自顶向下相结合的方法,它以对象建模为苯 础,不仪考虑了输入、输出数据结构,同时也包含了所有对象的数据结构,实 现了p a m 没有完全实现的目标。而且,o o 技术在需求分析、可维护性和可靠 性这三个软件丌发的关键环节和质量指标上有了实质性的突破,基本解决了在 这些方i 酊存存的严重问题。 1 自底向上的归纳 o m t 的第一步是从问题的陈述入手,构造系统模型。从真实系统导出类的 体系,即对象模型。它包括类的属性和行为,类与子类、父类的继承关系,以 及类之问的关联。类足具有相似属性和行为的一组具体实例( 客观事物) 的抽 象,父类是若干予类的归纳。因此这是一种自底向上的归纳过程。在自底向上 的归纳过程中,为使子类能更合理她继承父类的属性和行为,可能需要自项向 下的修改,从而使整个类体系更加合理。由于这种类体系的构造是从具体到抽 象,i i 从抽象到具体符合人类的思维规律,因此能更快、更方便地完成任 务。这与自顶向下的y o u r d o n 方法构成鲜明的对照。在y o u r d o n 方法中构造系 统模型足最困难的一步,因为自项向下的“顶”是一个空中楼阁,缺乏颦实的 基础,而n 功能分解有相当大的任意性,因此需要开发人员有丰富的软件丌发 经验。而允o m t 中这一工作可由一般开发人员较快地完成。在对象模型建立 后,很容易在这一基础上再导出动态模型和功能模型。这三个模型一起构成最 终需要实现的系统模型。 2 自顶向下的分解 系统模型建立后的工作就是分解。与y o u r d o n 方法按功能分解不同,征 o m t 中通常按服务( s e r v i c e ) 来分解。服务是具有共同目标的相关功能的集 合,如i o 处理、图形处理等。这一步的分解通常很明确,而这些子系统的进 一步分解囚有较具体的系统模型为依据,也相对容易。所以o m t 也具有自顶 向下方法的优点,即能有效地控制模块的复杂性,同时避免了y o u r d o n 方法中 功能分解的困难和不确定性。 第l 夏 上海交通大学硕士学位论文 分布式环境下的软件组件技术研究及应用 3 0 m t 的基础是对象模型 对琢模型中的类由数据结构( 属性) 和操作( 行为) 组成所有数据结构 ( 也插输入、输出数据结构) 都是软件丌发的依据。因此o m t 中不会再出现 j a c k s o n 方法和p a m 方法中输入、输出数据结构与整个系统之间的鸿沟。更重 要的是,在j a c k s o n 方法和p a m 方法中,当它们的出发点输入、输出数据 结构( 即系统的边界) 发生变化时,整个软件必须推倒重来。但在o m t 中系 统边界的改变只是增加或减少一些对象而已,整个系统改动极小。因此o m t 可以应川 :大型系统的设计,f 发。 4 彻底的需求分析 需求分析不彻底是软件失败的主要原因之一。即使在目前,这一危险依然 存在。传统的软件丌发方法不允许在丌发过程中用户的需求发生变化,从而导 致种种问题。正是由于这一原因,人们提出了原型化方法,推出探索原型、实 验原型和进化原型,积极鼓励用户参与提出改进意见。在每次改进需求后又形 成新的进化原型供刚户试用,直到用户基本满意。这样虽然提高了软件的成功 率,但是它要求软伺:丌发人员能迅速生成这些原型,这就要求有自动生成代码 的工具的支持。 o m t 解决了需求分析不够彻底的问题。它的需求分析过程已与系统模型的 形成过程统一起来。 发人员与用户的讨论是从用户熟悉的具体事物刀:始的, 丌发人员必须搞清现实系统才能导出系统模型。这就使用户与丌发人员之州有 了j i j 的i _ 言,避免了传统需求分析中可能产生的频繁改变需求。 5 可维护性得到改善 存o m t 之前的软件开发方法都是基于功能分解的。尽管软件工程学在可维 护办而作出了极大的努力。使软件的可维护性有较大的改进。但从本质上讲, 皋丁功能分解的软件是不易维护的。因为功能要求的变化会使所7 r 发的软件系 统i f i i 临i 大的变更,甚至需要推倒重来。而且,在这种软件系统中,即使是微 小的修改也川能引入新的错误。所以传统丁l :发方法很可能会引起软件成奉增长 火控、软件质量得不到保征等一系列严重问题。正是o m t 才使软件的可维护 性有了质的改善。 o m t 的基础是目标系统的对象模型,而不是功能的分解。功能是对象的使 片;l ,它依赖于应用的细节,并可以在开发过程中不断变化。由于对象是客观存 舀:的,因此当需求变化时对象的性质要比对象的使用更为稳定,从而使建立在 列琢结构i :的软件系统也更为稳定。 在o o 语言中,了类不仪可以继承父类的属性和行为,而且也可以重载父 类的某个行为( 虚函数) 。利用这一特点,我们可以方便地进行功能修改:引 入某类的个予类,对要修改的一些虚函数进行重载,也就是对它们重新定 义。由于不用在原来的程序模块中引入修改,减少了可能引起的相关模块的修 改,所以o m t 使得程序的维护变得简单易行。此外o o 技术还提高了软件的可 靠性年健 i :性。 1 1 6 可视化开发方法 可视化丌发是9 0 年代软件界新兴的热点之一。随着图形用户界而的兴起, 片j 户界1 1 1 i 住软件系统中所占的比例也越来越大,有的甚至高达6 0 7 0 。但足 i 铡形用户界而元素的生成非常麻烦。例如w i n d o w s 提供了应用程序设计接口 第9 页 上海交通大学硕士学位论文 分布式环境下的软件组件技术研究及应用 ( a p i ) 。它包含6 0 0 多个函数,虽然极大的促进了图形用户界面的开发,但在 这批函数中,大量的函数参数和数量更多的有关常量使基于w i n d o w sa p i 的盯 发变得相当繁琐。为了简化,b o r l a n d c + + 推出了o b j e c t w i n d o w s 编程。它将 a p i 的各部分用对蒙类进行封装,提供了大量预定义的类,并定义了许多成员 函数。利刚类的继承性,以及实例对类的函数的引用,应用程序的丌发可以省 去大量拱类和成员函数的定义而只需作少量修改来定义子类。然而尽管o b j e c t w i n d o w s 提供了许多缺省的函数,大大减少了程序开发的工作量,对非专业人 员来说,要掌握它们仍是一个沉重的负担。直到可视化开发工具的出现。 可视化丌发就是在可视开发工具提供的图形用户界而上通过操作界而元 索,诸如菜单、按钮、对话框、编辑框、单选框、复选框、列表框和滚动条等 进i j :撕j 局,由可视丌发工具自动生成应用软件的相应代码。 这类应j = | j 软件的工作方式是事件驱动。对每一事件,由系统产生一个特定 的消息,洱传递给相应的消息响应函数。这些消息响应函数的框架由可视丌发 工具托生成软件时自动装入。目前的可视化开发工具一般只能提供用户界面的 可视化丌发,至于与各种应用相关的消息响应函数。则仍霈用通常的高级语言 ( 3 g ! 。) 编写。只有存数据库领域才提供4 g l ,简化消息响应函数的,i :发。 从原列! 上讲。与l 萼f 形有关的所有应用都可采用可视化丌发方式。可视化开 发是软件jj :发方式上的一场革命,它使软件人员从用户界面的显示工作中解放 f | 来,对缓解8 0 年代中后期爆发的应用软件危机有重大作用。 1 1 7 集成化的软件开发环境i c a s e 提高人类的劳动生产率,提高生产的自动化程度,一直是人类坚持不懈的 追求h 标。软件丌发电不例外。早在1 9 8 2 年美国国防部就提出了s t a r s 工 程,希望建立一个“能够支持需求定义、程序生成以及软件维护等软件生存期 全部活动的,并把它们集成在一起的整个体系”。但早期的软件丌发环境工具 很少,也不配套。而支持需求分析等软件刀:发先期阶段的工具更少,能支持某 类软件开发办法的全过程就已经很不容易了。如y o u r d o n 公司的c r a d l e 软件丌 发环境支持y o u r d o n 结构化开发方法,j a c k s o n 工具集支持j a c k s o n 开发方法。 随着软件开发工具的积累,自动化工具的增多,集成化的计算机辅助软件 ”发环境( i c a s e ) 经历了从早期的数据交换( 点到点的数据转换) 到公, 用户界而( 在一致的界而下调用众多不同的工具) ,再到目前的信息中心库办 式的发展过程。它不仅提供数据集成和控制集成,还提供了一组用户界面管理 设施承i 辅助工具,如难直工具集( 支持软件生存期各阶段,保证生成信息的完 备性和一致性) 、水平工具集( 用于不同的软件开发方法) 以及开放工具等。 i c a s e 的进一步发展是要与其它软件开发方法的结合,如与而向对象技 术、软件重用技术结合,以及智能化的i c a s e 。它的最终目标是实现应用软件 的仝自动玎发,即开发人员只要写好软件的需求规格说明书,软件丌发环境就 自z 出完成从需求分析歼始的所有的软件,i :发工作,自动生成供用户直接使用的 软件及有父文档。 第1 0 页 上海交通大学硕士学位论文 分布式环境下的软件组件技术研究及应用 1 2 软件重用和组件技术 1 2 1 软件重用 软件重用( r e u s e ) 又称软件复用或软件再用【2 】。其实在1 9 6 8 年的n a t o 软件工程会议上就已提出可复用库的思想。1 9 8 3 年,f r e e m a n 对软件重用给出 了明确的定义:“在构造新的软件系统的过程中,对已存在的软件人工制品的 重复使用”。软件人工制品可以是源代码片断、子系统的结构设计、模块的详 细设计、文档和某一方面的规范说明等。也就是说软件重用是利用已有的软件 成份来构造新的软件,它包括产品重用和过程重用两条途径。通过重用它可以 大大减少软件开发所需的费用和时间,且有利于提高软件的可维护性和可靠 性。【3 】 事实上,在整个软件开发方法的发展过程中“重用”的思想始终引导着新 技术的不断发展。为了重用,我们将线性的程序变成一个个过程,完成各自的 计算任务,以便于反复的调用:为了重用,我们将客观的事务抽象化,把数据 与相应的操作结合在一起变成一个个对象,然后再提供聚合、继承等方法进行 利用;为了重用,我们将整个软件系统细分为多个模块,把模块功能结构化, 然后“分而治之”,对各个模块分别予以实现。 软件重用目前沿着下面三个方向发展: 1 基于软件重用库的软件重用 它是种传统的软件重用技术。这类软件开发方法要求提供软件可重用成 份的模式分类和检索,且要解决如何有效地组织、标识、描述和引用这些软件 成份。重用库通常采用两种方式进行软件重用: ( 1 ) 生成方式:这是对模式的重用。由软件生成器通过替换特定参数,自 动或半自动的生成抽象软件成份的具体实例。 ( 2 ) 组装方式:通过子程序库技术、共享接口设计和嵌套函数调用等实现 软件的组装。组装方式对软件重用的成份通常不作修改,或仅作很少的修改。 2 与面向对象技术结合 面向对象技术中类的继承、聚集关系,对类的成员函数或操作的引用,以 及函数重载等使软件的可重用性有了较大的提高。而且这种类型的重用很容易 实现。所以这种方式的软件重用发展得比较快。最常见的有微软v c + + 中采用 的m f c 类库、j a v a 中基本类库和各个厂商提供的j a v a 扩展类库。 3 组件连接 这是目前发展最快的软件重用方式。在软件愈来愈复杂和专用的今天,基 于组件的开发是不破坏软件整体性而控制软件复杂性的行之有效的方法。 传统的面向对象编程语言,是基于继承机制的类的复用,它实现了源代码 级的重用,然而在源代码不可得的情况下就变得毫无意义了。而且每次重用之 后任何的修改、升级都免不了重新编译和发布新软件。此外大多数类的重用集 中于一些标准类型或者用于产生图形化用户界面的类。对于那些完成特定功能 的由第三方提供的类,即便能够得到其源代码,由于要同自己的代码一起编 译,发布后的维护和更新相当麻烦。如果全部自己来维护则又失去了重用的本 第l i 翼 t 海燮遥大擘硕士学链论义 分布式环境下韵软件组件技来研究及应用 意。更为遂簧静怒,一曼编译键接之嚣,粪酾缩鞫虢其楚个逻辑上的概念 了,不会给将来可能出现的变化提供任何方便。 缀 :避过定义套j c 垂蒙之闻豁激数疆餍接日来保证缀 孛的重躅链,蠢不像 类那样受到许多戳制。组件不仅可爨复使埔嗣挺离效率,甚至还可以节省硬件 资源。如卷采用了缎件程序设计恩想,可以随时鸷按有闷艨的模块姨更瓤升级 嚣瀚筮磐,使葵运释维护成本簿弱摄甄。骚璐诞“慰象已缎累了( t i r e d ) ,琵 组件证处予兴奋状态( w i r e d ) ”4 1 最早被人们艨接受的( 尽管不憝最早提出款 鳃件连接技术o l e1 0 ( o b j e c tl i n k i n ga n de m b e d d i n g ) 怒m i c r o s o f ! l 公弼予1 9 9 0 苹ll 舟程c o m d e x 腋魄会上十h 甜土:的。o l e1 0 的规范发表于1 9 9 0 年1 2 月,1 9 9 1 年2 月推出了第 搬支癸o l e l 。0 篾范兹疲掰程露。1 9 9 3 露5 冀发表了o l e 2 。0 。扎个起聪, 第撤支掩o l e2 0 豹应掰程序问世。 o l e 给出了软件组件( c o m p o n e n to b j e c t ) 的接目标凇。这样任佛人都可以 羧姹标准独立蘧歼发缀箨帮增值缀幢( 缎传上诿翔一些瑰能构液赣豹鳃终) , 或i j 若予自l 件集成究整的软件。在这种软件丌发方法中,威用系统的歼发人员 可以把主! 氍糖力放谯自己特有的功能模块的磺究上,匿为她们可在缀终赘场上 麴落掰霰的羹;缝大酃努逶弼键 c | 二。 软件组i 枣i :连接的另一个标准是从1 9 9 2 年,i :始,1 :发的的o p o n d o c 。这魁由 辩m 、a p p l e 、l o t u s 等公霭缀成的绦箨集成实验室( c il a b s ) 健j = l l 瓣梃准。 o p e n d o c 定义了,卜4 个多平台的与开发语言无募的对蒙模型,它在定程 度匕建立1 :l b m 的s o m 模裂。而聪者是i b m 在熊操作系统o s l 22 0 中采用的 籁攀霹象谈壁( s y s t e m so b j e c tm o d e l ) ,窀两群瞧楚一个可踌平台的独立于语 毒的对象模型,而麒同c o r b a1 1 标准兼容。但魁后来l b m 的组件战略逐渐 转移到了s u n 的j a v a 语善秘j a v a b e a n 组件技术上瓤,几乎放弃了o p e n d o c 。 缀符连接、集成翔上瓣供缀传稳软译市场给筏嚣】辩来了耱较会纯静较 牛 7 l :发方式,因此可以说是软件开发方式上的一次犬的变革。它必将极大地擞高 软缔秀发熬劳动玺产:率,大大缭短盛鼹软警粒歼发惩麓,阏对又能绦涯软 警酶 质濑,所需的,i :发费用能得到降低,软件的维护照新也更容易。_ | 搿以有a 密称 组l ,l :是软f l :n 造的大工业时代的慕础,似乎让人觉褥软件开发可以像搭积木- 稃瓣装起寒。当然,豫疆襁本一释生产较释只是一个理慧审兹境莽,绥锌懿携 装冲不是如同想象中的那么简单。 1 2 2 组髑:技术 维伴的矮体定义为:个夺墅的二避涮对象,它实现一项( 或一些) 掰确 的功能井被设计成为可以方便的同其他组件和应用程序协同或交甄操作 5 1 。 继律复建 蕈为一秘瑗蜜奏效酶较释嚣发方法拜鲶受癸越来越多约重援秘辑 究。个软件产:晶荣采用鳃件的方法开发,也密颓从设计阶段就袋进行明确的 功能划分,格的接口定义,然魅力能将嚣个组件的具体实现交绘1 :发人员或 着第三方独立实瑗。为了安现缀释之藏翡弼交互搽俸,还必须建立统一豹攘门 标准。 独立熬缀律囊发蘸盛缀遵援据准,戳傈涯软捧缀 牛黪嚣操作拣。是存遂罐 统 譬棘孺,不黼厂商韵、不同l l 寸期静、不同程謦设计风格的、不嗣编狡语言 似、不同攥作系统的、不嗣平台上的软件城软件缀件爿能避彳i :交流与翕伶。 冀1 2 羹 上海交通大学硕士学位论文 分布式环境下的软件组件技术研究及应用 卜i 而简单介绍一下目前最常见的一种组件对象模型c o m 。 1 2 2 1 微软的c o m 模型 组件对象模型c o m ( c o m p o n e n to b j e c tm o d e l ) 的前身是o l e 。最初制定 c o m 是为了在一个单一的地址空间中,动态地集成组件。c o m 可以为在一个 单一的应用程序中动态的使用二元组件提供支持【6 ,7 】。组件交互是基于o l e 2 接l l 和协议的。虽然c o m 使用o l e 2 接口和协议,但我们必须知道c o m 已经 不是o l e 了【6 】。 现在的c o m 是一个平台无关的面向对象系统,在这个基础上我们可以生成 能够互相l :疗问的二元软件组件。c o m 定义了一个应用程序如何建立可动态互访 组f l :f f , j 规范。c o m 组件通常以二进制的形式发布。这样当一个c o m 组件需要 升级时可以在不妨碍原来客户的情况下童接将新发布的组件替换以前的老版本 【8 】。 c o m 规定了一个对象模型以及为了让c o m 对象可以同其他对象进行交互 所必须的编程要求。这些对象可以在同一个进程星,也可以在不同的进程甚至 是在不同的机器里。c o m 定义了组件对象的一些基本属性。通常一个对象是i h 一个数据集合同在这个数据集合上进行操作的函数组成的。一个c o m 对象只 能通过一个或者一组称为接口的相关函数集来访问其数据,那些包括在接口罩 的函数集合称为方法。而且c o m 规范要求获得一个接口的方法的唯一途径是 通过一个指向该接口的指钭【6 】。此外规范中规定了一些所有c o m 组件都需要 支
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州铜仁市第二人民医院招聘编外合同制专业技术人员11人笔试考试备考题库及答案解析
- 2025重庆邮政管理局招聘1人考试笔试备考题库及答案解析
- 南宁市良庆区天月幼儿园2025年秋季学期临聘教师招聘笔试考试备考题库及答案解析
- 2025重庆市开州区教育事业单位面向应届高校毕业生考核招聘55人笔试考试参考试题附答案解析
- 2025十九冶(雄安)建筑工程有限公司工程项目财务管理人员招聘考试笔试备考题库及答案解析
- 湖北省中小学教师招聘考试真题2025年附答案
- 2025年河北石家庄灵寿县专项招聘服务期满特岗教师114名考试笔试备考试题及答案解析
- 南充环境集团有限责任公司2025年下半年员工招聘(一)(11人)考试笔试参考题库附答案解析
- (2025年)医美皮肤养护综合考核试题附答案
- 2025六枝特区鑫诺融资担保有限责任公司招聘考试笔试备考题库及答案解析
- 教育机构员工手册
- 浙江宁波市海曙区储能学校2024-2025学年九年级上学期10月月考科学试卷(无答案)
- 人教版一年级上册生字卡片带拼音组词可打印
- 三级安全培训教育(车间级)考试试题及答案
- KA-T 21-2024 模袋法尾矿堆坝技术规程
- 七年级数学(上)有理数混合运算100题(含答案)
- 空军飞行员职业规划
- 葡萄膜炎与红眼鉴别
- 医疗器械生产中的数据分析与统计
- 四川省面向电子科技大学选调2024届优秀大学毕业生24笔试历年高频考点-难、易错点荟萃-附带答案详解
- 发展汉语-初级读写-第一课-你好
评论
0/150
提交评论