青鸟可复用构件库的设计与实现Word格式文档下载.docx
《青鸟可复用构件库的设计与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《青鸟可复用构件库的设计与实现Word格式文档下载.docx(52页珍藏版)》请在冰豆网上搜索。
Abstract
Atpresent,withthescaleofsoftwaresystembecominglargerandsoftwareanditsdevelopmentprocessbecomingmorecomplex,itisstillafarwaytosolvethesoftwarecrisis.Softwarereuseisregardedasapracticalandfeasibleapproachtosolvethesoftwarecrisis,therefore,moreandmoresoftwareorganizationsandenterprisescometoadoptthemethodofComponentBasedSoftwareDevelopment(CBSD),aneffectivewaytosupportsoftwarereuse.TheCBSDmethodusuallyinvolvescomponents'
acquirement,storage,management,andcomposition,ofwhichthestorageandmanagementofcomponentsplayakeyroleduringtheprocessofcomponentdevelopmentandsoftwaredevelopmentbasedoncomponent.Asaresult,itisimportanttoresearchthecomponentclassificationandretrievingstrategies,thecomponentmodel,andthebuildingandmanagementofcomponentlibrary.
Thisthesisisbasedontheauthor'
sworkintheNational9thFive-YearPlanProject“JBIIISystem--ApplicationSoftwareIntegrationEnvironmentBasedonComponent-ArchitecturePattern”.ThekernelsubsystemofJBIIIsystemistheJBComponentLibraryManagementSystem,whichconsistsofareusablecomponentlibraryandlibrarymanagementtoolset.ThethesisfocusesonthedesignandimplementationofJBreusablecomponentlibrary,thekeypartoftheJBComponentLibraryManagementSystem.
TheJBreusablecomponentlibrarysupportstheclassification,storage,retrievingandmanagementofcomponentsthatconformtotheJBComponentModel,andemploysthefacetedmethodasthemainclassificationstrategysupportedbyotherclassificationmechanism.Afterbuildingcomponentlibrary'
sconceptualmodelbasedontheJBComponentModelandtherequirementoftheclassificationstrategies,Thethesistransformstheconceptualmodeltorelationaldatamodel,andthenoptimizesthedatamodelduringtheimplementationsessiontoimprovethecomponentlibrary'
sperformance.TohidethedetailsofnetworkplatformsandDBMS,JBreusablecomponentlibraryoffersasetofinterfacestothelibrarymanagementtoolsetconsistingoftheclassificationtool,thequerytool,andthelibrarymanagementtool.Theinterfacesareimplementedthroughspecially-designeddataaccesscommands(DAC)tomeetthecharacteristicofcomponentlibraryaccess,therebyreducingthetimeofretrievingcomponentsandimprovingtheperformanceandefficiencyofthecomponentlibrary.
Keyword
softwarereuse,component,componentmodel,componentlibrary,database
图目录
表目录
第一章引言
1.1软件复用
自从1968年NATO软件工程会议以来,软件工程的发展已有三十年历史。
其间,众多的科研人员和工程技术人员付出了艰辛的努力,取得了丰硕成果。
软件工程思想和技术的普及,使软件生产率稳步上升,软件质量得到很大改善。
但是随着软件系统的规模和复杂性日益增加,软件工程研究还是远远不能满足软件产业发展的需求,离彻底解决“软件危机”还有相当大的距离〖Boeh87,Cox90〗。
近十年来,人们开始认识到,要真正实现软件的工业化生产方式,达到软件产业发展所需要的软件生产率和质量,软件复用是一条现实可行的途径〖Mili95〗。
对软件复用技术的研究已成为软件工程学科的主攻方向之一。
被视为解决软件危机的现实可行的途径。
软件复用的概念是由McIlroy在1968年的NATO软件工程会议上正式提出的,此后三十年中,软件复用在技术研究上已取得了较大进展,同时也对软件产业产生了深刻的影响。
软件复用将造成软件产业的合理分工,专业化的构件生产将成为独立的产业而存在,而软件系统的开发将通过集成组装现有构件的方式来完成。
这种产业分工将促使软件产业真正走上工程化、工业化的发展轨道〖杨芙清97〗。
而软件产业的组织结构也将随之发生变革〖Shaw84,Cox90,Basili91〗,一般来说,需要在传统项目组织结构之外,增加一个专门负责构件开发、管理和维护的部门。
Caldieri和Basil提出了一种理想的工厂化的软件生产方式〖Cald91〗,如图1-1所示:
图1-1理想的工厂化软件生产方式
青鸟工程提出的软件生产线思想〖杨芙清96b〗集中体现了软件复用的本质及软件工业化生产的模式。
图1-2给出了青鸟软件生产线图示。
青鸟工程一直是国家重点支持的科技攻关课题,已有十余年的发展历程。
“七五”、“八五”期间,青鸟工程面向我国软件产业基础建设的需求,以实用的软件工程技术为依托,研究开发具有自主版权的软件工程环境,为软件产业提供基础设施—软件工具、平台和环境,建立工业化生产的基本手段,促进我国软件开发由手工作坊式转向用计算机辅助开发,以提高软件开发效率,改善软件产品质量。
大型软件开发环境-青鸟Ⅱ系统〖杨芙清95b〗便是这一阶段攻关工作的成果。
图1-2青鸟软件生产线
“九五”期间,青鸟工程的任务是在前期攻关工作的基础上,为形成我国软件产业规模提供技术支持。
重点是研究青鸟软件生产线,为软件开发提供整体解决方案,推行软件工业化生产模式,促进软件产业规模的形成。
青鸟工程“九五”目标分两期实施,第一期目标是初步实现青鸟软件生产线系统,用以装备软件企业,支持软件构件的生产和应用系统集成,并推出示范工程。
第二期目标是针对软件产业规模经济的需求,根据软件产业由于构件技术的日趋成熟而出现的产业重组分工趋势(即分成专门的软件构件生产业和应用系统集成业),为其提供相应的技术支撑和装备,适应并推进产业分工和形成规模,使我国软件产业真正走上工程化、工业化的道路。
1.2现状及其问题
软件复用概念出现以来的三十年中,已有了许多成功的复用实践,如针对FORTRAN,COBOL,VisualBasic等语言的复用〖Gris95〗。
软件复用作为现实可行的克服软件危机,实现软件工业化生产方式的技术途径在近几年来受到普遍关注,成果斐然,然而离成功的复用仍有较大距离,原因有多方面。
从组织机构与管理角度看,现有的组织管理模式已成为推行复用技术的障碍。
首先应改革现有的由一个项目组从头至尾完成整个系统开发的方式,应该涌现出大量的构件厂商生产大量可复用构件,使项目组和构件厂商间构成消费者——生产者的关系,生产者只负责开发各类可复用构件,项目组只消费构件〖Basi92,Basi94〗。
从思想观念角度看,存在一种“NotInventedHere”(不是自己发明的)综合症。
软件工程师喜欢创造性的劳动,不愿意复用也往往并不信任别人开发的软件。
应当改变这种传统观念,转而遵循FredBrooks所提出的“用购买代替建造”(buy,don’tbuild)的思想〖Broo87〗。
从工程学角度看,软件工程学科的发展尚处于不成熟期,缺少对软件开发和软件复用的合适训练,缺少有效方法学支持等。
从技术角度看,软件复用主要涉及构件的获取、构件存储管理和构件组装等方面,这几个环节在软件复用过程中都处于非常重要的地位,而且都与构件密切关联。
无论是从可复用构件的开发角度、还是从基于构件的复用角度来看,可复用构件的数量、种类和质量都是成功地进行软件复用的关键所在。
这就对可复用构件的分类、存储、管理、检索以及相应的工具支持提出了需求。
必须有一个合理而高效的可复用构件库管理系统提供强有力的支持,才能使成功的软件复用成为现实。
成功的软件复用需要在组织机构与管理、思想观念、工程学和技术等方面的协同支持。
本文主要从软件复用的技术角度展开讨论,尤其着重于对可复用构件分类、存储、管理和检索的支持。
1.3相关工作及解决途径
早期的软件复用主要注重于代码复用〖Free87,Krue92〗及其支持,如FORTRAN,COBOL,C语言将常用的函数保存在函数库中。
面向对象语言由于其新的特性,如封装、继承、多态等,能更好地支持复用,而面向对象语言的开发环境也对代码复用提供了有效的支持,主要是提供了强大的类库,如MicrosoftVisualC++4.0〖Micr94〗的类库,程序员可以直接使用类库中的类或从中派生自己的类。
随着软件复用的发展,复用的对象从早期的代码复用扩展到对软件开发过程中一切有价值的信息的复用,出现了多种可复用构件,如分析件、设计件、测试件以及程序文档。
而可复用构件在数量上也日趋增大。
为了更好地支持多形式、大数量构件的复用,必须有一个支持构件复用的环境。
当前软件界对可复用构件库及其相关问题进行了深入研究,并提出了不少的复用标准及环境。
RIG〖RIG94〗和NATO〖NATO〗提出了一系列标准;
ALOAF〖STARS92〗对构件模型进行了大量的研究。
复用库可互操作性组织RIG(ReuselibraryInteroperabilityGroup)为软件复用库间共享软件构件,考察了软件库之间的可互操作性问题,并开发了一个数据模型UDM(UniformDataModelforReuseLibraries),其中定义了在支持可互操作性的库之间交换软件构件所需要的信息。
它提供了一个标准的数据模型,各个库可以将它作为自己的数据模型的中间表示,用来和其它库交换使用符合各自数据模型的数据。
NATO(NorthAtlanticTreatyOrganization)提出了一组标准,包括《可复用软件构件开发指南》、《可复用软件构件库管理指南》和《软件复用过程指南》三个文档,分别针对于软件生命周期的不同阶段〖NATO〗。
其中《可复用软件构件库管理指南》讨论了有关构件库建立与管理的问题。
构件库管理的关键在于分类,NATO采用刻面对构件库进行分类。
NATO刻面分类模式中的刻面不必彼此独立,也不必适用于所有的构件。
一组典型的刻面可能包括:
对象、功能、算法、类型、语言和环境。
在对一个构件进行分类时,不一定所有的刻面都出现。
刻面术语具有同义词关系,一组同义词表达同一个概念,术语空间由这些术语构成,术语之间没有一般/特殊关系(即术语空间是非结构化的)。
美国军方发起的STARS(SoftwareTechnologyforAdaptable,ReliableSystems)项目考虑了在构件库之间共享资源和实现无缝互操作的问题,于92年提出了开放体系结构的构件框架ALOAF(AssetLibraryOpenArchitectureFramework)。
该文档包括构件库框架的参考模型(ALF-RM)、互交换构件的所需的数据模型和约定格式的规约以及一个在ALF-RM上支持构件互交换和构件描述的框架服务规约。
ALOAF强调数据建模的作用,考虑元模型层、模型层和数据层三个层次,认为统一的数据元模型是互操作和数据共享的基础。
在理论研究的同时,已有不少的构件库系统在软件产业界得到了实际应用。
最为典型的有REBOOT〖Jean93〗系统。
REBOOT(ReuseBasedonObjectOrientedTechniques)是一个包括储存可复用构件的数据库和一组产生、认证、插入、提取、评价和适配可复用构件的工具的环境〖Lars93〗。
其中在对构件进行分类时采用了刻面的分类策略,这一分类策略主要针对面向对象的构件。
美国国防部也推出了若干构件库,如:
美国空军电子系统中心(ESC)的CARDS〖CARDS96〗、STARS项目的ASSET(AssetSourceforSoftwareEngineeringTechnology)〖STARS92〗和DISA(DefenseInformationServicesAgency)的SRP(SoftwareReuseProgram)。
青鸟可复用构件库是青鸟基于构件-构架模式的软件复用支持系统的核心,其建模过程中研究分析了国外软件复用的最新成果、尽量遵循国际主流,并且具有自己的特色。
青鸟构件库对宽谱系粒度的构件提供支持,有足够能力存储、处理多层次多粒度的各种构件;
提供以刻面分类策略为主、多种分类策略相结合的分类检索机制,采用正交的五个刻面对构件进行刻划,刻面彼此独立且适用于所有的构件,在对一个构件进行分类时,所有的刻面都必须关联相应术语;
而且青鸟构件库还率先提出了以树型层次结构组织术语空间的策略。
1.4相关术语定义
为了讨论和叙述的方便,下面给出在本文中经常用到的一些关键术语的简要定义:
复用
(Reuse)
在一个新的语境(context)中(同一系统的其它地方或另一个系统中)使用已有的为复用目的而开发的软件构件。
构件(Component)
软件系统中一切可以被明确标识的有机构成成分(软件实体);
它可以是需求分析、设计、代码、测试数据或软件开发过程的其它产品。
可复用构件
(ReusableComponent)
具有可复用价值的软件构件。
构件模型
(ComponentModel)
构件的本质特征以及构件间关系的抽象描述。
可复用构件库
(ComponentLibrary)
可复用软件构件的集合,包括向用户提供构件时所需的过程和功能。
基于构件的软件开发
Component-BasedSoftwareDevelopment
通过组装现有软件构件的方式来建造大型软件系统的软件开发方法。
刻面(Facet)
一个单词或短语的固定集合,用于描述构件的某个方面或视角
术语空间(TermSpace)
术语的结构化集合,术语空间的结构反映了术语间的语义关系。
刻面分类策略
(FacetedClassificationScheme)
一个刻面分类模式由一组描述构件特征的刻面所组成,每个刻面从不同的侧面对库中构件进行分类。
数据模型
(DataModel)
数据模型是数据库系统中用于提供详细表示和操作手段的形式构架,通常由数据结构、数据操作和完整性约束三部分组成。
概念模型
(ConceptalModel)
从现实世界的客观事务中抽象出来的一种不依赖于具体计算机系统的信息结构。
关系模型
(RelationalModel)
以关系表示实体及实体之间联系的一种数据模型。
领域
(Domain)
指一类相关的软件应用。
一般来说,构件在某个特定的领域内复用潜力最大。
表1-1相关术语定义
1.5论文的组织
本文涉及了青鸟可复用构件库的组织存储及检索等方面的研究。
第二章主要讨论了基于构件的软件开发及构件库对基于构件的软件开发的支持,并且介绍了“基于构件/构架模式的软件开发支持系统”---青鸟III型,由此给出本文研究的工作背景。
第三章介绍了青鸟III型的核心---青鸟构件库管理系统的体系结构、分类检索机制及应具有的功能,并由此导出青鸟构件库的设计目标与原则。
第四章在讨论青鸟构件模型之后,用实体关系模型描述青鸟构件库的概念模型,并把概念模型转换为关系数据模型。
第五章主要讨论构件库管理工具集接口的设计。
在简单介绍构件库管理工具集之后,讨论了工具集与构件库之间的接口的设计目标、组成结构及详细设计。
第六章主要讨论青鸟构件库及其工具集接口实现上的各种细节。
第二章基于构件的软件开发
基于构件的软件开发是一种有效实际的复用途径。
本章先讨论复用的几种形式并给出可复用构件的定义;
接着,介绍基于构件的软件开发并阐述构件库对基于构件的软件开发的支持。
最后,阐述基于构件/构架模式的软件开发支持系统—青鸟III型从而,给出本文研究的工作背景。
2.1可复用构件
可复用构件(ReusableComponent)指所有具有可复用价值的构件,在本文中简称为构件(Component)。
软件复用是指应用已有的为复用目的而开发的软件构件构造新的软件系统,以提高系统开发效率及软件质量。
复用的形式多种多样,可以是规约复用、设计复用、代码复用、测试复用和文档复用〖NATO〗。
由于复用的种类不同,不同的复用研究人员对构件给出的定义也不尽相同,目前国际上对构件并无统一的标准定义。
NATO在其颁布的《构件开发标准》中将构件笼统地定义为:
构件是用于复用的软件实体〖NATO〗。
STARS拓广了构件的范围,将广义构件(Asset)定义为:
任何在当前或将来对于开发和维护软件系统的企业和组织有价值的信息单元。
这一概念比狭义的软件构件意义更为广泛。
构件可以包括软件工作产品、软件子系统、软件构件(STARS的软件构件是与分析件、设计件等相并列的)、专家联系名单、构架、领域分析、设计、文档、个案分析、经验教训、研究成果、以及有创见的软件工程思想与表述等等〖STARS92〗。
Mili等在〖Mili95〗一文中将软件复用分为两类:
产品复用(productreuse)和过程复用(processreuse)。
产品复用是指将对软件开发过程中生成的各种产品作为构件进行复用,一般而言有两种形式:
直接复用和间接复用。
直接复用针对的构件可以表示为某种程序设计语言代码,这类构件的复用可以直接产生可执行的应用程序。
间接复用是指对需求规约、设计、模式、测试计划等文档型知识的复用。
虽然这类非代码构件的复用不能直接得到可执行的应用程序,但可以对系统开发的效率和质量带来极大的好处。
过程复用是指复用以前软件开发的过程,一般表现为对软件开发某一阶段提供自动化支持的工具,典型的过程复用例子有程序生成器、程序变换器和可执行规约语言等。
本文的研究重点是产品复用,将构件定义为:
构件是软件系统中一切可以被明确标识和的有机构成成分(软件实体),可以是需求分析、设计、代码、测试数据或软件开发过程的其它产品。
2.2基于构件的软件开发
随着构件技术的发展,软件开发方式也发生了巨大变化。
基于构件的软件开发(CBSD,Component-BasedSoftwareDevelopment),成为软件工程学科的焦点之一。
CBSD有时也被称为基于构件的软件工程(CBSE)〖Brow96〗,它致力于通过组装现有软件构件的方式来建造大型软件系统。
通过增强系统的灵活性和可维护性,这种方法可以降低软件开发成本,加快系统开发的速度,减轻大型系统支持和升级所带来的维护负担。
CBSD是建立在这样一个前提之上的,即大型软件系统的某些部分具有共性,因此将该部分制作成构件,类似系统通过复用构件来实现。
在基于构件的软件开发过程中,原来系统开发中的重点---程序设计,将被组装现有软件构件所取代。
构件