(计算机应用技术专业论文)基于组件的软件系统构建方法的研究与应用.pdf_第1页
(计算机应用技术专业论文)基于组件的软件系统构建方法的研究与应用.pdf_第2页
(计算机应用技术专业论文)基于组件的软件系统构建方法的研究与应用.pdf_第3页
(计算机应用技术专业论文)基于组件的软件系统构建方法的研究与应用.pdf_第4页
(计算机应用技术专业论文)基于组件的软件系统构建方法的研究与应用.pdf_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

上海师范大学顾士研究生学位论文基于组件的软件系统构建方法的研究与应用 摘要 随着软件的复杂度和规模不断增长和扩大,业界对于软件的可重用性和可维 护性的要求也越来越高。基于组件的软件具有较高层次的可重用性和高度的可维 护性,因而成为了近年来软件开发的热点。本文从需求分析,组件库的管理以及 如何选择组件等三个方面研究基于组件的软件系统构建方法。 基于组件的软件开发方法同传统软件开发方法相比,一个重要的不同之处在 于提取,组件的识别贯穿于整个软件开发生命周期,当然也包括需求分析阶段。 本文参照计算机网络中的层次参考模型,使用了层次化软件构造的思想实现在开 发早期进行组件的识别,提高了基于组件软件开发方法的开发效率。 组件库的管理主要有两种方法:体系分类法和分面分类法。虽然这两种分类 方法目前部得到了广泛的应用,但是仍然存在着类目表管理困难,类目表直观性 差,标记方法复杂等不足之处。本文针对这些问题,分析了体系分类法和分面分 类法的优势和不足,并结合上述两种管理方法提出了一种改进的组件库组织方 法,该方法同时使用体系分类法和分面分类法对组件进行描述,使得类目表的管 理趋于简单化。 本文在分析可预测组件技术及其实例c o m t e k 技术,剖析c o m t e k - 技术和操作剖面的优势和不足的基础上,提出了一种称为c o m t e k o 方法 的构建方法。该方法从软件质量角度出发,合理使用冗余技术,以较低的精力和 成本来构建一个高可靠,高性能的基于组件的软件系统。 论文最后结合上海雅运纺织有限公司采购业务管理系统的实例,对本文提出 的方法进行了验证。经过分析和比较,得出以下结论:c o m t e k - o 方法是 一种性价比较高的构建方法。在成本、精力受限的情况下,该方法有利于有效地 提高基于组件的软件系统的质量。 关键字:基于组件的软件系统,分面分类法,体系分类法,可预测组件技术, 操作剖面 上海师范大学硕士研究生学位论文 基于组件的软件系统构建方法的研究与应用 a b s t r a c t w i t ht h eg r o w t ho fs o f t w a r ec o m p l i c i t ya n ds c o p e ,i tb e c o m e sm o r ea n dm o r e i m p o r t a n to fs o f t w a r er e u s a b i l i t ya n dm a i n t a i n a b i l i t y c o m p o n e n t b a s e ds y s t e m ( c b s ) h a s t h ep r o p e r t i e so fh i g hr e u s a b i l i t ya n dm a i n t a i n a b i l i t y s oi tb e c o m e st h e h o t p o i n to fs o f t w a r ed e v e l o p m e n ti nr e c e n ty e a r s w ef o c u so nr e q u i r e m e n ta n a l y s i s , c o m p o n e n tl i b r a r y 。a n dh o wt o s e l e c tt h ec o m p o n e n tt od i s c u s sh o wt oc o n s t r u c t c o m p o n e n t b a s e ds o f t w a r ew i t hh i g hq u a l i t y c o m p a r e d w i t ht r a d i t i o n a ls o f t w a r ed e v e l o p m e n tm e t h o d ,c o m p o n e n t b a s e d s o f t w a r ee n g i n e e r i n gd i f f e r si m p o r t a n t l yf r o mi t i nt h a tc o m p o n e n t sa r ee x t r a c t e d t h r o u g h o u tt h el i f e t i m e o fc 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 i n g ,o fc o u r s e i n c l u d i n gr e q u i r e m e n ta n a l y s i ss t a g e r e f e r r i n gt ot h et h e o r yo fn e t w o r kl a y e r e d r e f e r e n c em o d e l ,w eu s el a y e r e ds o f t w a r ec o n s t r u c t i o nm e t h o dt oi d e n t i f yc o m p o n e n t s i nt h ee a r l ys t a g eo fs o f t w a r ed e v e l o p m e n t ,w h i c hi m p r o v et h ed e v e l o p m e n te f f i c i e n c y o fc 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 i n g t h e r em a i n l ye x i s t t w oc l a s s i f i c a t i o n s c h e m a s , w h i e ha r e s y s t e m a t i c c l a s s i f i c a t i o na n df a c e t e dc l a s s i f i c a t i o n a 1 t h o u g ht h e yh a v eb e e nw i d e l yu s e dt o d a y 。 t h e r es t il le x i s ts o m ed i s a d v a n t a g e s ,s u c ha st h ed i f f i c u l t i e si nm a n a g i n gt h e c l a s s i f i c a t i o nt a b l e t h eb a di m m e d i a c yo f t h ec l a s s i f i c a t i o nt a b l ea n d t h e c o m p l i c a t i o n si nt a g g i n ge t c b a s e do nt h ea n a l y s i so ft h et w oc l a s s i f i c a t i o ns c h e m a s , w ec o m b i n et h et w om a n a g i n gm e t h o d sa n di m p r o v es o m ek i n do fn o v e lc o m p o n e n tl i b r a r y c l a s s i f i c a t i o ns c h e m a w h i c hi m p r o v et h em a n a g e m e n to fc l a s s i f i c a t i o nt a b l eb yu s i n g s y s t e m a t i cc l a s s i f i c a t i o na n df a c e t e dc l a s s i f i c a t i o ns i m u l t a n e o u s l y b a s e do nt h ea n a l y z i n go fc o m t e k 一 t e c h n o l o g y ,o p e r a t i v e s e c t i o n ,a n dt h e i r a d v a n t a g e sa n dd i s a d v a n t a g e s , w ei m p r o v et h em e t h o d ,n a m e dc 0 m k 一九一0m e t h o d , w h i c hf r o mt h ep o i n to fs o f t w a r eq u a l i t y ,u s e sr e d u n d a n c yt e c h n o l o g ys u i t a b l y ,a s t oc o n s t r u c th i g h e rq u a l i f i e dc o m p o n e n t b a s e ds y s t e mw i t hl o w e rc o s t f i n a l l y ,w ev a l i d a t et h em e t h o di m p r o v e di nt h i sp a p e rb yu s i n gt h ep u r c h a s i n g m a n a g e m e n ts y s t e mo fs h a n g h a iy a y u nt e x t il ec o m p a n y w eg a i nt h er e s u l tf r o mc o m p a r e a n da n a l y s i s :c o m t e k 一 一0m e t h o dp o s s e s s e sh i g hc a p a c i t y p r i c er a t i o w i t ht h e l i m i t a t i o no fc o s t ,t h i sm e t h o dc a ni m p r o v et h es o f t w a r er e l i a b i l i t yo f 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 i n g k e y w o r d s :c o m p o n e n t b a s e ds y s t e m ,s y s t e m a t i cc l a s s i f i c a t i o n ,f a c e t c l a s s i f i c a t i o n ,p r e d i c t i o n e n a b l e dc o m p o n e n tt e c h n o l o g y ,o p e r a t i v e s e c t i o n 2 上海师范大学硕士研究生学位论文基于组件的软件系统枸建方法的研究与应用 第一章绪言 1 1 论文研究背景 早在1 9 6 9 年,e w d i j k s t r a 就提出了程序设计的概念,提出用工程的概 念、方法、原理和技术来开发和维护软件。在此基础上,软件开发经过了多年的 发展,先后出现了面向过程、结构化、面向对象等开发方法和编程技术。 现在,面向对象的开发方法已成为了软件开发的主流。但是随着软件复杂度 和规模的增加和扩大,软件的可重用性和可维护性越来越受到重视“。2 0 世纪 9 0 年代中期以来,分布对象技术和软件重构工程的有机结合,形成了基于组件 的软件开发方法。基于组件的开发方法与面向对象的方法的根本区别在于:面向 对象的方法中的重用仅存在于一个单独的应用软件系统中,粒度相对较小;而基 于组件的开发方法的重用范围是某一个特定领域,可以是多个应用软件系统,粒 度大。因此,软件组件在很大程度上可以提高软件生产和开发的效率和质量。正 是由于基于组件的软件开发的种种优势,软件组件开发成为近年来开发的趋势。 但是,在实际运用组件技术进行开发、构建时,还存在着一些问题,如组件 如何划分,如何从组件库中提取组件,如何测试组件,如何构建好的组件库等问 题。而本文更加关注基于组件的软件开发方法的需求分析的方法,组件库管理的 方法以及构建基于组件的软件系统时,组件选择的方法。 本文重点对构建高性能的c b s 系统的以下三个问题展开讨论,即: ( 1 ) 需求分析同传统的软件开发方法不同。 构建c b s 系统的开发方法,同传统的软件开发方法的一个很大的不同在于其 需求分析阶段,前者从需求分析阶段就开始了组件的识别过程。因为在系统开发 的需求分析阶段进行复用是实现软件开发过程大规模软件复用的关键,这将直接 影响到后续软件开发生命周期中各种组件复用机会,即将大大增加与需求分析阶 段对应的设计级组件和代码级组件复用的可能性。本文采用层次化方法对系统进 行需求分析。 ( 2 ) 组件库的管理。 现有的组件库的管理方法中,主要应用两种分类方法:体系分类法和分面分 类法,文献 3 ,【4 】对这两种方法进行了详细的介绍。虽然这两种分类方法目前 都得到了广泛的应用,但是仍然存在这一些不足之处,比如类目表的管理困难, 类目表的直观性差,标识方法复杂等。本文在分析、研究上述两种方法的基础上, 比较了体系分类法和分面分类法的优势和不足,并结合上述两种管理方法提出一 种改进的组件库分类方法,即半体系半分面分类法。 ( 3 ) 组件的选择以及系统构建。 在保证软件质量并且开发成本受到限制的条件下,如何以较低的精力和成本 上海师范大学硕士研究生学位论文 基于组件的软件系统构建方法的研究与应用 来构建一个高质量的基于组件的软件系统是一个比较重要的问题。本文旨在从软 件性能质量以及性价比角度出发,合理使用组件预测技术。1 以及操作剖面”1 ,讨 论如何以较低的精力和成本来构建一个高质量的基于组件的软件系统并结合实 际系统,验证该构建方法。 1 2 论文主要研究内容及意义 作者于2 0 0 3 年3 月至2 0 0 4 年5 月参与了上海雅运纺织化工有限公司信息管 理系统的设计与开发,为本论文的研究提供必要的数据。本论文主要研究以下两 方面的内容: ( 1 ) 进行基于组件的软件的构建方法的研究,主要从需求分析,组件库的 管理,以及组件选择等三个方面,进行研究,寻求一种性价比较高的方法来构建 基于组件的软件系统。 ( 2 ) 结合实际系统,分析该构建方法的性能指标,如性价比,管理效率等 验证本文构建策略的效果。 随着软件业的发展,软件的规模日益扩大,软件质量成了人们越来越关注的 问题。在这样的前提下,讨论如何构建一个高质量的基于组件的软件系统,是十 分有必要的,本文研究的意义主要有以下几点: 第一,对于构建基于组件的高质量软件起一定的改进作用。基于组件的软件 开发及应用越来越广泛,现在已经出现了与之相对应的软件工程方法,包括组件 的划分、组件选取及改制、组件装配以及组件库的建立等。本文提供的方法是在 现有的基于组件的软件工程的基础上,针对基于组件的软件系统的特点,融合了 使用了c o m t e k 一 技术和操作剖面的构建方法进行系统的构建,改进原有的方 法,使之更加详细、有效、可行。 第二,对现有的组件库管理方法,体系分类法以及分面分类法进行了分析和 比较,在此基础上,提供了一种新的分类方法:半体系一半分面分类法,改进了 原有的分类模式,使得组件库的管理,组件的检索更加高效。 第三,在c b s 的需求分析阶段,采用了层次化划分的方法,提高了c b s 在需 求分析,组件划分阶段的工作效率。 1 3 论文的主要工作及章节安排 论文工作主要分为四个阶段,大致如下: 第一,资料收集阶段。笔者阅读了国内外相关的论文和书籍近百篇,较深入 地了解了基于组件的软件系统及其可靠性方面的情况。 第二,构建策略,组件库分类模式确立阶段。在分析、比较了现有的构建策 略以及组件库分类模式之后,笔者发现了现有策略,方法的一些不足,并确立了 上海师范大学硕士研究生学位论文基于组件的软件系统构建方法的研究与应用 新的构建基于组件的软件系统的策略以及组件库分类模式。 第三,评价阶段。在确立了本文的构建方法后,笔者还结合了实际软件系统 进行了可靠性、性价比方面的计算,使用这些定量的结果可以进一步比较各种构 建方法的性能。 第四,总结阶段。分析、比较了各种构建方法之后,本文针对开发中的实际 情况,给出了一些使用本文构建方法的指导性意见。并总结了本文构建方法的使 用范围以及将来的研究方向等内容。 本论文共分七个章节,各个章节的安排如下: 第章是全文的概述,介绍了本论文的撰写背景和意义: 第二章介绍了组件( c o m p o n e n t ) 、基于组件的软件系统( c b s ) 阻及基于组 件的软件系统在开发中的优势和存在的问题。 第三章概述了基于组件的软件系统( c b s ) 需求分析阶段层次化划分的方法。 第四章它先总结、比较了现有的组件库管理的分类模式,并指出了这些分类 模式的不足,最终提出了本文的组件库管理的分类模式,半体系一半分面分类方 法。 第五章介绍了可预测组件技术,并分析了其中一个实例c o m t e k - 技术。 第六章引入操作剖面的概念,分析了c o m t e k 一九技术和操作剖面优势和不 足,之后提出了本文的构建策略,c o m t e k - 九一0 方法。 第七章结合实例,验证本文提出的构建方法。 第八章对本文的工作进行了总结并提出下一步的工作。 上海师范大学硕士研究生学位论文 基于组件的软件系统构建方法的研究与应用 第二章基于组件的软件开发方法概述 2 1 组件( c o m p o n e n t ) 简介 2 1 1 组件定义 什么是软件组件? 对于这个问题,学术界目前还没有形成一致的定义或观 点。下面列举几个典型的定义: 定义1 :软件组件是具有一定的功能,能够独立工作或者能同其它组件装配 起来协调工作的程序体。组件的使用同它的开发、生产无关”3 。 定义2 :将一个庞大的应用程序分成多个模块,每个模块保持一定的功能独 立性,在协同工作时,通过相互间的接口完成实际任务,每一个这样的模块称为 组件,这些组件可以单独开发、单独编译、甚至单独调试和测试。1 。 定义3 :一个组件是一个数据单元或一个计算单元,它由组件接口和组件实 现模块组成。3 。 定义4 :组件是具有一致接口,遵循统一协议,功能固定的软件体,它具有 高度的可重用性“。 上述这些定义互相联系又相互区别,综合各个定义的观点,得到对组件的定 义如下: 组件是具有一定功能的独立程序体,能够通过接口与其它组件装配起来协同 工作;组件可以进行单独开发、编译、调试和测试;一个组件可以装配到不同的 软件系统中,以实现复用。 由这个定义可见,组件主要有以下几个特性: ( 1 ) 预制性( p r e f a b r i c a t e ) :指组件在软件系统构建之前可能已经存在( 当 然,也可能不存在) 。 ( 2 ) 可重用性( r e u s a b i l i t y ) :指一个组件可以在不同的软件系统中多次 被使用的特性。 ( 3 ) 封装性( e n c a p s u l a t i o n ) :指各组件的实现对组件外部不可见。 ( 4 ) 独立性( i n d e p e n d e n c e ) :指各组件的功能、运行以及开发是相互分 离的。 ( 5 ) 互操作性( m u t u a lm a n i p u l a t i o n ) :指各组件通过接口发送消息,实 现协同工作。 ( 6 ) 可扩充性( e x t e n s i b l e ) :组件的功能和接口是可以扩充的。 ( 7 ) 适应性( a d a p t a b i l i t y ) :指组件能在不同的软件环境下正常工作的 特性。 为了保障组件之间可以相互合作并能够并行开发,每个组件通常由组件实现 上海师范大学硕士研究生学位论文 基于组件的软件系统掏建方法的研究与应用 部分、接口部分两部分组成。 2 1 2 组件标准 组件标准包括规范的组件接口定义,组件间通信,组件组装的规范,如命名 机制,消息传递机制等。目前,软件业主要流行三种组件标准,它们分别是: ( 1 ) o m g ( o b j e c tm a n a g e m e n tg r o u p ) 提出的c o r b a ( c o m m o no b j e c tr e q u e s t b r e a k e ra r c h i t e c t u r e ) ; ( 2 ) 微软的c o m ( c o m p o n e n to b j e c tm o d e l ) d c o m ( d i s t r i b u t e dc o m ) : ( 3 ) s u n 公司的j a v ab e a n s e j b ( e n t e r p r i s ej a v ab e a n s ) 。 文献 1 1 、 1 2 给出了这三种标准的比较,见表2 - 1 。 表2 一l 三种组件标准的比较 c o i i b ac f d c o m e j b 二进制接口标准 非二进制的二进制接口标准基于c o m ,j a v a 兼容性、可移植性 与标准化语言有很强完全没有源代码级的基于j a v a 语言规范, 的结合:标准化语言绑定概念可移植性好,兼容性 可移植性不太好 略差 修改和维护使用c o r b ai d l 定义 使用m i c r o s o f ti d l不包含i d l 文件,在 组件接口,需要额外定义组件接口,需要容器与组件之间定义 的修改和维护额外的修改和维护接口,易于修改维护 提供的服务提供一整套标准化服已被一些关键服务所既不标准又缺乏实际 务;支持应用 但是缺乏实际应用 平台依赖性无 有无 语言依赖性 无无有 应用范围 适合于传统的企业级适合于传统的桌面应适合于一般的w e b 处 运算 用理 2 1 3 基于组件的软件系统 所谓基于组件的软件系统( c o m p o n e n t b a s e ds o f t w a r e ,简称c b s ) 是指由 组件装配、组合而成的软件系统,它主要由组件和连接器( c o n n e c t o r ,也可以 称为胶水代码) 组成。组件用于实现某一特定的功能,而连接器用于连接各个组 件,实现组件间接口参数的一个映射关系。当然也可以将连接器封装成一个组件。 文献【t 3 给出了基于组件的软件系统、组件、连接器三者的关系,见图2 - 1 。 上海师范大学硕士研究生学位论文 基于组件的软件系统构建方法的研究与应用 一表示组件的接口 图2 - 1 基于组件的软件系统、组件、连接器的关系 由图2 1 可见,组件和连接器共同组成了基于组件的软件系统。每个组件对 外均提供了接口,实现与其它组件的互操作。而连接器则通过对组件间的交互规 贝日的建模来实现组件间的连接。常见的连接器有客户服务器协议 ( c 1 l e n t s e r v e rp r o t o c o l s ) 、管道( p i p e ) 、过程调用( p r o c e d u r ec a l l ) 等 【】2 】 o 在研究和实际运用中,连接器常常不受重视,但实质上连接器的好坏也在很 大程度上影响各组件的工作情况。与此同时,将连接器从组件中抽取出来进行单 独的考虑是有益的“”“。这样可以提高组件的可重用性、易维护性,简化对体系 结构风格或模式的理解,为分析系统的整体行为提供更好的手段“。 2 1 4 基于组件软件系统( c b s ) 的优点 基于组件的软件系统( c o m p o n e n t b a s e ds y s t e m ,简称c b s ) 是指使用基于组 件的软件开发方法开发的软件系统。基于组件的软件开发( c o m p o n e n t b a s e d d e v e l o p ,简称c b d ) 是日益成熟起来的软件开发方法。其核心思想是指用象组 装计算机硬件一样组装计算机软件,或者说是实现计算机软件的“即插即用”。 著名的研究机构g a r t n e rg r o u p 的研发部主任m i k eb l e c h a r 曾作出“基于组件 的软件开发是软件开发的下一个浪潮。”的论断。的确,c b d 给我们一种新的开 发理念和思想,有着其它软件开发方法所没有的优势,归纳起来,主要有以下几 点: ( 1 ) 提高复用度。软件的复用是多层次的,主要可以分为:概念级复用( 知 识复用) 、逻辑级复用( 方法和标准复用) 和物理级复用( 软件成分的复用) “”“。 其中,物理级复用按复用对象的粒度大小可以分为子程序和函数复用、类库共享、 组件复用等。子程序和函数、类的复用只存在于一个软件系统中,而一个组件却 可以组装到不同的软件系统中,实现了更高粒度的软件复用。 ( 2 ) 提高软件质量。c b s 在软件质量上的主要优势在于提高可维护性和提 高可靠性。 m c c a l l 、g l a s s 、r e i f f e r 等专家均一致认为软件可维护性和可靠性是软件 1 0 上海师范大学硕士研究生学位论文基于组件的软件系统构建方法堕雯塑兰! 壅旦 质量的要素“”。软件质量的要素包括: 正确性( c o r r e c t n e s s ) :指程序满足需求说明及用户目标的能力。 可靠性( r e l i a b i l i t y ) :指程序按要求的精度完成预期功能的能力。 效率( e f f i c i e n c y ) :指程序完成其功能所需的资源及代码的数量。 完整性( i n t e g r i t y ,s e c u r i t y ) :指未经许可的人员接近软件或数据加 以控制的能力。 可使用性( u s a b i l i t y ) :指熟悉程序操作,为程序准备输入数据和翻译 程序输出所需付出的努力。 可维护性( m a i n t a i n a b i l i t y ) :指确定可运行程序中的错误所需要付出 的努力。 可测试性( t e s t a b i l i t y ) :指保证程序执行其预定的功能,在测试时所 需要付出的努力。 灵活性( f l e x i b i l i t y ) :指修改可运行程序所需要付出的努力。 可移植性( p o r t a b i l i t y ) :指移植程序至另一个硬件配置或软件系统环 境,需要付出的努力。 重复使用性( r e u s a b i l i t y ) :指在与程序的功能有关联的其他用途中, 程序可以使用的能力。 连接性( i n t e r o p e r a b i l i t y ) :指程序与其他系统耦合的能力。 在基于组件的软件中,由于组件间相互独立,又有定义良好的接口,因此进 行维护时只有修改、升级、替换有限个组件,而不影响其它组件,提高了软件的 可维护性。另外,在构建组件库和组件选取的过程中均会经过严格的筛选,而且 一个组件通常又多次被复用,即经过了反复的测试和验证。因此,组件的可靠性 可以得到保证,也有利于整体软件系统质量的提高。 ( 3 ) 提高开发效率。组件的来源是多途径的,它既可以由软件开发商自行 开发,也可以向第三方软件商购买。由软件商自行开发的组件由于相互独立,故 可以进行并行开发,节省开发时间;而对于向第三方软件商购买的组件 ( c o m m e r c i a lo f f t h es h e l fc o m p o n e n t s ,简称c o t s ) ,只需购买、使用,大 大节省了开发时间,也避免了重复开发的劳动。同时,开发者的精力也将更加集 中在业务逻辑上,而非编程的细节中,从而提高开发效率。 ( 4 ) 提高软件的可扩充性。软件可扩充性也是软件质量的要素之。一方 面,组件开发技术可以对运行已久的系统进行封装,使之成为组件,再加入新的 软件组件,将原有系统扩充成新的软件系统;另方面,各个组件只有通过接口 与其它组件进行通信,每个组件均可以方便、独立地进行功能上的扩充和改善。 c b s 还有易于学习、使用,便于实时监控等优势,本文不再赘述。值得一提 的是,由于上述这些优势与基于组件的软件工程有着极大的相关性,只有在了解 上海师范大学硕士研究生学位论文基于组件的软件系统构建方法的研究与应用 了基于组件的软件工程的方方面面之后,才+ 能更加深刻地理解上述优势。 2 2 基于组件的软件开发方法( c b d ) 和传统软件开发方法 在传统的软件工程中,软件的开发过程主要分成需求分析、总体设计( 概要 设计) 、详细设计、编码实现、软件测试、系统维护等六个阶段,常用的方法有 瀑布模型法、螺旋法、快速原型法等。而基于组件的软件开发方法与传统的方法 有着本质的区别: ( 1 ) 基于组件的软件工程不像传统方法那样,从头开始开发一个软件”1 。 传统的软件工程中,一个软件的开发总是从需求开始一步一步地向下进行的。但 是在c b d 中,由于组件可能交给第三方开发,可能从组件库中选取,也可能由旧 的系统改制而成,因此,在c b d 之前,各个组件可能已经存在。那么,c b d 就无 需从头开发这些组件了。 ( 2 ) 传统的需求分析和设计阶段变成了组件的获取、开发工具的选择以及 组件装配模型的选择”1 。在c b d 中,也有系统的分析和设计阶段,但是它是在必 须使用组件的前提下进行的,并且在系统需求和使用的组件之间进行权衡,做出 折衷的选择。同时,组件的获取、改制以及装配等方法也是传统方法中没有的。 这些方法也是基于组件软件工程( c b s e ) 中的关键和侧重点所在。 ( 3 ) 传统的软件工程方法只有单一的生命周期,而在整个c b d 中,存在了 两个生命周期,称为双重生命周期“。个是可重用组件的开发生命周期,另一 个是c b s 的生命周期。前者可以使用传统的开发方法和模型,而后者则是我们所 说的c b s e ,需要使用新的方法。图2 2 表示了传统的软件工程方法与c b s e 之间 的关系。 另外,值得一提的是,c b s 的生命周期可以由不同的开发商完成,可以是并 行的,也可以是不连续的。 ( 4 ) 即使传统方法和c b s e 中均存在了测试、维护环节,但是它们使用的方 法也是不完全相同的。如测试阶段,正是因为双重生命周期的存在,对组件的测 试也分成了多个环节:组件提供者对组件的测试,可以使用传统方法;组件使用 者分别对组件、组装后的系统的测试,则要使用为c b s 特制的方法,如基于界面 组件关联图的软件功能测试“、使用元数据对c b s 进行回归测试啪1 等。 虽然,c b s e 与传统的软件工程有着共同的目标:提高软件质量,缓解“软 件危机”,但是它们之间有着较大的差异。c b s e 与传统的软件工程在各个环节中 所采用的方式、方法均有所不同。因此,我们必须使用新的方法来开发、制造 c b s 这种软件。这也正是本文将c b s 这种软件独立出来,单独讨论如何构建c b s , 并且提高、计算其可靠性的最重要原因。 1 2 上海师范大学硕士研究生学位论文 基于组件的软件系统构建方法的研究与应用 传统的软件工程 l 一一一一一 c b s e 图2 - 2 传统的软件工程方法与c b s e 之间的关系 上海师范大学硕士研究生学位论文基于组件的软件系统构建方法的研究与应用 第三章需求分析 3 1 基于组件软件系统需求分析的特点 开发基于组件的软件系统时,在需求分析阶段所采用的方法,虽然和传统的 软件开发方法大致相同,但是两者仍然存在着不同之处,主要在于基于组件的软 件开发方法要求开发者在需求分析阶段就开始进行组件的复用。 在系统开发的需求分析阶段进行复用是实现大规模软件复用的关键,这将直 接影响到后续软件开发生命周期中各种组件复用机会,即将大大增加与需求分析 阶段对应的设计级组件和代码级组件复用的可能性。当然,同时也将大大减少需 求分析阶段所花费的时间和成本。另一方面,由于复用的需求分析组件是成熟的, 是已经得到应用的组件,所以,往往制造的软件的质量和可靠性都比较高。 在需求分析阶段复用已有的分析结果有很多优点,如: ( 1 ) 可以减少需求分析阶段的成本。 ( 2 ) 可以减少系统开发的风险。 ( 3 ) 与同类的系统保持一致性。 ( 4 ) 由于已有的分析结果已经具有一个经过验证的具体实现,从而保证了 系统需求分析结果的可实现性。 ( 5 ) 增加对组件库中设计级组件和代码级组件的复用机会。 由于需求分析的结果本身就是潜在的可复用组件,而且是可以作为组件的形 式在组件库中进行管理,并且在使用时,是能够和别的组件一样获得的。但是, 和别的组件一样,由于同待开发系统的需求以及系统现有部分相符合,这些分析 结果可能需要进行修改。 在需求分析阶段,本文采用层次化方法对系统进行需求分析。 3 2 层次化分析方法 层次化分析方法是对软件系统进行层次化分类的方法0 3 。层次化分析方法是 为了使开发人员从需求分析阶段开始就能够对系统的体系结构有一个清晰的把 握,借用计算机网络中的层次参考模型理论。 软件系统的最终目标是完成目标系统需求所要求完成的任务。为了达成这个 目标,就需要系统的各个组成部分分别完成系统中不同的任务,最后组合在一起 才能共同完成软件系统的所有任务。 这些不同部分之间有可能是纯粹的聚集关系,它们在一起只是因为系统需要 它们各自的功能来完成不同的任务。另外一种关系就可能是层次关系,实现底层 操作的部分为实现较高层操作的部分提供服务。有了底层的基本服务,高层操作 就只需要关心本层必须完成的任务。对于底层的操作,它只需要明确定义可以提 1 4 上海师范大学硕士研究生学位论文基于组件的软件系统构建方法的研究复鏖旦 供给高层的服务接口即可,其内部可以采用不同的实现方法,层与层之间是完全 透明的,它们只通过层间的服务接口进行交互。 层次化分析方法的具体步骤是对一个新开发的软件系统进行分析后首先对 它进行功能块划分,然后对划分所得的功能块进行层次化划分,然后对每一个层 次的功能块进行模块化分解。一个层次中可能有多个模块具有相似的功能,对这 些模块进行更深层次的划分,将相同部分提取出来作为低一层次来对待,而上层 的不同部分就划分到不同模块中。这样的层次划分和模块化分解一直进行下去, 直到系统所有功能都有一个明确的模块归属为止。 在上述的具体步骤中,主要的方法是对系统采用层层划分,层层细分的方法, 对软件系统进行逐步细化的过程。划分的方法可以采用先水平后垂直的划分方 法,如图3 1 所示,也可以采用先垂直后水平的划分方法,如图3 2 所示。层与层 之问的界限是明确的,但是层中的模块内部可能要进行进一步的划分,这是一个 反复迭代的递归分解过程。 这两种划分方法的区别在于功能划分和层次划分的角度不同。至于为什么不 采用先垂直后水平的划分方法是因为先垂直后水平的方法与传统的“自上而下, 逐步求精”方法类似,这种方法不易识别系统底层的公共操作,减少了底层模块 的复用机会,容易造成不必要的重复开发。 在对软件系统进行先水平后垂直的分解过程中,可能会发现同一层不同模块 的内部模块中有功能相似的予模块,对于这种情况需要将它们的公共部分进行提 取,然后对初始的层次划分进行调整,将公共部分作为它们的下一个层次,当前 层次只需要去访问公共部分提供的服务。 上海师范大学硕士研究生学位论文基于组件的软件系统构建方法的研究与应用 软件系统 水 戈u 分 r 用户界面层 特定领域层 公共服务层 物理操作层 垂 直 划 分 r 操作界面管理界面 e p , 届u 操作e r j , b d 管理 数值运算 数据库操作 划 进 分 1步 组, f z :l组件2 图3 - 1 系统先水平后垂直划分 上海师范大学硕士研究生学位论文基于组件的软件系统构建方法的研究与鏖用 j 软牛系统 垂 直 划 1,分 功功 功 能能能 123 水 平 划 1r 分 界面 数据库操作 界面 仪器接口 ( 功能1 )( 功能n ) 图3 2 系统先垂直后水平划分 完成软件系统的分解后,首先按照各模块对上层提供的服务来定义它与上层 模块之间的接口。定义好层与层之间的服务接口后,就可以对各个模块进行独立 的设计了。有了这种先进行层次化分解再进行独立设计的方法,软件开发人员就 可完全按照各模块的设计进行独立的开发,这样就不会再出现将多个层次的东西 揉合在一起的情况。 系统的两种划分方法( 先水平后垂直划分方法和先垂直后水平划分方法) 异 同点比较,如表3 1 所示。 表3 1 两种划分方法异同点比较 先水平后垂直划分方法先垂直后水平划分方法 相同点 ( 1 ) 是层次划分方法: ( 2 ) 对软件系统的划分是自顶向下,层层细分的过程,是一个反复迭代的过程; ( 3 ) 层与层之间的界限是明确的,层的内部可能可以进行进一步划分; ( 4 ) 有利于系统的维护。 不同点 ( 1 ) 划分顺序采用先水平后垂直的划分方法;( 1 ) 划分顺序采用先垂直后水平的划分 ( 2 ) 容易识别组件。方法: ( 2 ) 不易识别组件。 1 7 上海师范大学硕士研究生学位论文基于组件的软件系统构建方法的研究与应用 3 3 基于组件的层次化分析方法 与工业生产中一个大的产品由一系列零部件组装而成相类似,基于组件的软 件开发就是使用一个个定义良好的实现了的且经过严格测试的组件来搭建新的 软件系统。待开发系统需要的组件可能在以前已经开发过,所以不必让所有的组 件都从头来开发。对于过去成功软件产品中的组件,可以直接拿过来应用到新的 软件产品中,这不仅节省了设计开发时间,而且由于这些组件都经过严格的测试, 新的软件产品质量就能得到很好的保证。这就是软件复用思想的体现,组件技术 就是直接为了软件复用而在软件工程领域出现的新技术。开发组件的目的是为了 复用,而层次化软件构造方法则是为了充分利用组件技术而提出的。 当对一个软件系统进行分解并完成了各个模块的设计后,将着手把各个模块 设计成组件,以利于以后复用。这些组件中处于较高层次的组件可以认为是特定 领域的组件,因为它们与当前开发的软件系统关系相对较紧密。而处于较低层次 的组件只是与物理硬件或数据库打交道,或是提供一些通用算法的实现,它们可 被认为是公共服务组件,因为在不同软件系统中都可能使用它们。为了明确层次 化软件构造过程中不同组件所处的层次,依照软件系统的层次分解思路将组件归 属于如下几个层次: ( 1 ) 物理操作层组件。这类组件与物理硬件或数据库打交道,其主要功能 是完成物理硬件的控制或数据库操作。划分这一层组件的目的是用这一层的组件 来屏蔽底层硬件操作或数据库操作的复杂性和多样性,为上层应用提供统一的透 明的硬件或数据库操作服务接口。 ( 2 ) 公共服务层组件。这类组件专注于提供常见问题的高效解决算法,同 时提供与操作系统相关的公共服务,比如文件读写、目录管理、网络通信等。它 还对一些通用数据结构提供常见的操作支持。这类组件支持水平复用,也就是说 各种软件系统都可能使用它们提供的服务,从而避免重复劳动,节省软件开发时 间;避免重复开发过程中引入错误,提高软件产品质量。 ( 3 ) 特定领域层组件。这类组件与特定应用领域有关,它们提供该应用领 域中常用的数据结构及其操作算法,为应用领域搭建基础设施。这类组件支持垂 直复用,也就是说在同一领域中开发新的产品时可以大量复用这些组件。划分这 一层组件的目的是为了避免开发类似产品时的重复劳动,是为了开发系列产品时 重复利用原有的成果,从而缩短新产品的上市时间,赢得更多的客户支持,占有 更多的市场份额。 ( 4 ) 用户界面层组件。这类组件与软件系统的最终用户打交道。提供用户 界面操作服务,可以说它们也属于公共服务这一类。但由于这些服务有许多自身 的特点,所以将它作为单独的用户界面层组件来讨论。当前可视化开发环境中已 上海师范大学硕士研究生学位论文基于组件的软件系统构建方法的研究与应用 经提供了大量的界面组件,为软件系统的界面开发提供了有力支持。可以对这些 界面组件进行组合、改进,开发不仅使最终用户感觉友好,而且使开发人员更易 于使用的大粒度用户界面组件。 这四个组件层次是一个大粒度的划分,它们之间不具有严格意义上的上下层 关系,在各个层次组件的内部层次划分中才能看到明显的上下层依赖关系。一个 软件系统的层次化构造在粗粒度角度看是这四个层次组件的聚集,当从细粒度角 度,即从内部去观察软件系统时,就可以看到内部明显的层次关系。之所以提出 基于组件的层次化软件构造是因为组件技术在很大程度上能使软件复用思想得 到具体应用。采用基于组件的技术,有利于系统可扩展性能的提高,使系统具有 更大的灵活性。当完成一个软件系统所有组件的开发后,系统集成只须按照系统 需求将组件组合起来。要添加或删除系统功能只须将相关组件加入或从系统中去 除就行了。这大大减轻了软件系统的维护负担,并在很大程度上保证了软件系统 的可伸缩性,为开发类似产品或系列产品提供了有力的支持。 上海师范大学硕士研究生学位论文 基于组件的软件系统构建方法的研究与应用 第四章组件库管理 4 1 组件库管理方法 随着基于组件的软件开发的发展,组件库的规模日益增大,如何高效的管理 组件库成了一个急需解决的问题。为了能够快速有效的对现有组件进行检索,就 需要对组件库里的组件进行描述和组织,并且以描述和组织方法为基础建立相应 的存取机制。 可以用很多方式来描述组件,但是比较理想的描述是围绕t r a c z 提出的3 c 模型一概念( c o n c e p t ) ,内容( c o n t e n t ) 和语境( c o n t e x t ) 。为了在实际环境 中可以使用,3 c 模型必须用具体的分类模式来解释。组件库管理所选取的分类 模式对组件的管理是非常重要的。事实上,由于没有选取有效的组件分类模式, 很大程度上导致了目前组件库效率不高,实用性不强的结果。 现在已经有许多研究涉及到了组件的分类模式。这些研究所提到的方法可以 分成三大类:图书馆和信息科学方法,人工智能方法以及超文本系统。但是到目 前为止,绝大多数研究者推荐使用图书馆科学索引方法

温馨提示

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

评论

0/150

提交评论