基于构件的软件复用及在GIS中的应用
2012-02-15李瑞华
李瑞华,李 霞
(1.阳泉师范高等专科学校,河北 阳泉 045200;2河北省石家庄经济学院 信息工程学院,河北 石家庄 050031)
1 引言
“保证软件质量”和“提高软件开发效率”是软件工程的主要目标,软件工程领域的很多新技术、新方法、新工具的出现都是为了达到这两个目标,软件复用技术就是其中主要的技术之一.近十几年来,软件复用研究重新成为热点,被视为解决软件危机,提高软件生产效率和质量的现实可行的途径[1].其实程序设计出现后人们就有了复用的思想,随着面向对象技术的发展,把软件复用技术推向一个发展高潮.软件复用的关键技术有很多,其中最主要、最核心的就是构件技术[2].构件是应用系统中可以明确辨识的构成成份,而可复用构件是具有相对独立的功能和可复用价值的构件[3].构件化的软件开发过程可以提高软件复用程度,提高开发效率,并且便于维护,提高质量.
随着计算机的普及以及地理信息科学的发展,地理信息系统(Geographical Information System,GIS)因其强大的功能得到日益广泛和深入的应用,因此GIS的开发工作日益重要[4].如何利用现有资源和开发工具开发出高效实用的地理信息产品,以满足不同行业的需求,是需要思考和亟待解决的问题.本文讨论了构件式软件复用技术在GIS开发中的应用.
2 软件复用
1968年NATO软件工程会议,Mcllroy在提交会议的论文《大量生产的软件构件》中,提出了“软件组装生产线”的思想.从那以后,采用构件技术实现软件复用,采用“搭积木”的方式生产软件,成为软件开发人员长期的梦想.
软件复用是指两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程.软件元素包括程序代码、测试案例、设计文档、设计过程、需求分析文档甚至领域知识.软件复用是在软件开发中避免重复劳动的解决方案,其出发点是应用系统的开发不再采用一切“从零开始”的模式,而是采用过去应用系统开发中积累的知识和经验,从而将开发的重点集中于应用的特有构成部分.
从20世纪60年代后期的第一次“软件危机”,到20世纪80年代中后期的第二次“软件工程危机”,发展到现在,软件系统的规模、复杂度不断提高,软件的生成效率和产品质量的要求也不断提高;因此如何找到有效的软件生产方式,保证软件产品质量、提高软件生成效率已经是非常棘手的问题.软件复用的出现使得软件的开发真正工程化、工业化.在早期的结构化软件分析时代,软件复用由于受到技术发展水平的限制,常常局限在代码层次或者函数包的复用.随着技术的变革,包括面向对象语言和方法带来的更好的面向应用领域的抽象能力、各种分布式构件方法与标准的提出、过程方法的成熟,软件复用的技术越来越成熟,应用范围也越来越广泛.
软件复用的优点是显而易见的,软件复用提高了软件生产率,保证了软件产品的质量,同时也提高了软件产品的可维护性,降低了开发成本,避免开发人员的重复劳动,节约了人力、物力和财力.软件复用是现代软件工程的一个主要目标,因此软件工程领域的很多新技术都是为了实现软件复用,提高软件工程开发效率.实现软件复用的主要技术有:软件构件技术、软件构架技术、开放系统技术、领域工程、软件再工程技术、CASE技术、软件过程管理等[5].
3 构件技术
构件是一个高内聚的、通过一组约定的接口完成明晰的功能、符合业界认可的模型标准的、可复用软件包.构件是可复用的软件组成成份,可被用来构造其他的软件.
构件的基本特征有:可复用性、自包含性、一致性、耦合性、内聚性和适应性.其中可复用性包括有用性(Usefulness)和易用性(Usability).有用性指构件完成的功能是有用的,也就是其功能可出现在很多应用软件中.易用性指构件要有很好的包装,能方便地使用它.
构件的分类有很多种,按照开发过程可分为:分析件、设计件、程序件和数据件.按功能分为:基础层的基本数据类构件和系统支撑构件、中间层的各种通用中间件、顶层的针对领域的专用构件.按使用方式分为:白盒构件和黑盒构件.另外还有各种专用的商业构件.
软件构件化就是要让软件开发像机械制造工业一样,可以用各种标准和非标准的零件来进行组装,或者像建筑业一样,用各种建筑材料搭建成各式各样的建筑.软件构件化和集成技术的目标是:软件可以由不同厂商提供,用不同语言开发,在不同硬件平台上实现的软件构件,可以方便地、动态地集成.
4 基于构件的软件复用技术及其在GIS开发中的应用
4.1 基于构件的软件复用技术
软件构件技术(Software Component Technology)是支持软件复用的核心技术.可复用构件是指具有相对独立的功能和可复用价值的构件,可以使被封装的对象类、类树、一些功能模块、软件框架、软件架构、文档、分析件、设计模式等.但是基于构件的软件复用更多的是指的狭义上的满足某些特征的软件模块,这些特征包括具有明确的功能边界、规约化的接口、可独立构造和部署等.软件复用包括两个相关过程:
第一步:可复用软件(构件)的开发(Development for Reuse).
要解决的主要问题有:如何定义一个新的构件;构件之间的相互通信、数据共享必须符合的标准;构件的分类、构件库的管理等.
第二步:基于可复用软件(构件)的应用系统构造(集成和组装)(Development with Reuse).
要解决的主要问题有:可复用构件的检索;已有构件在应用系统构造过程中如何集成和装配;基于构件的系统开发如何与非构件化的系统进行集成,如何实现它们之间的过渡和转变.
4.2 GIS开发中的软件复用技术应用
目前GIS开发模式可分为4种:①利用VC++,VB等程序设计语言进行基础开发;②借助GIS软件商提供的二次开发工具,如MapInfo的MapBasic等开发;③采用OLE自动化进行GIS软件开发;④利用组件技术开发.
组件式GIS软件开发是目前较为流行、高效和快速的开发模式.可以说组件式GIS软件开发模式就是采用了软件复用技术,这里的组件就是构件.
利用软件复用开发GIS的过程:
第一步:可复用构件的开发.
在GIS领域里,已经有可以检索到的商业可复用构件,常用的有MapInfo公司的MapX,ESRI公司的Map-Object,Blue Marble Geographics公司的Geo-View,Visual Component公司的GeoPoint和Intergraph公司的Geomedia等.其中,MapX的功能较强,性价比较高.除了这些构件外,在GIS开发过程中,我们还可以根据功能、应用领域等开发可以复用的构件,比如:可以把大部分GIS地图操作中的鹰眼功能开发为一个独立的构件,还可以把智能交通系统中常用的测距、地点查找等功能模块,开发独立的可以复用的构件.另外在开发构件过程中,还要注意这些构件之间能够通信,也就是说要符合相应的标准,并且能够适用于不同的开发平台,这样才能保证构件的通用性.这些构件开发完成后,可以对外公布标准接口,放到构件库中以便可以检索使用.
第二步:基于可复用构件的GIS软件开发.
随着长时间的积累,GIS构件库就会越来越丰富,在GIS软件开发中,我们就可以在构件库中根据需要检索相应的构件,然后掌握这些构件对外提供的标准接口,最后把这些构件在开发平台上进行集成和装配,另外,还要注意构件式的开发与非构件式开发之间的如何集成.我们可能在GIS领域实现真正的基于构件的复用技术的软件开发,可以缩短开发周期,降低成本,可以脱离大型商业GIS软件平台独立运行,并且对开发者的GIS专业背景要求不高.因此,能够推动基于构件的软件复用开发方法的推广,这也将会是一个非常好的良性循环.
5 小结
软件复用是软件工程开发过程工程化、工业化发展的主要技术之一,能够提高软件开发效率、降低开发和维护成本、提高软件质量.软件构件技术是实现软件复用的核心技术,构件化的软件开发是未来软件开发的主要方法.文中以GIS软件开发为例,说明了基于构件的软件复用开发方法在该领域的应用和推广,相信在不久的将来,软件复用将得到更加广泛的应用,软件开发将实现真正的工程化、工业化的生产.
参考文献:
[1]杨芙清,梅宏,李克勤.软件复用与软件构件技术[J].电子学报,1999,27(2):68-75.
[2]武伟,张明新.基于构件的软件复用技术应用研究[J].山西大同大学学报,2009,25(1):8-10.
[3]杨芙清,王千祥,梅宏.基于复用的软件生产技术[J].中国科学,2001,31(4):721-732.
[4]刘爽,陈鹏.基于MapX的组件式GIS开发研究[J].微计算机信息,2007,34(12):182-184.
[5]PRESSMAN R S.Software engineering:a practitioner's approach[M].北京:机械工业出版社,2005.