李瑞華,李 霞
(1.陽(yáng)泉師范高等??茖W(xué)校,河北 陽(yáng)泉 045200;2河北省石家莊經(jīng)濟(jì)學(xué)院 信息工程學(xué)院,河北 石家莊 050031)
“保證軟件質(zhì)量”和“提高軟件開發(fā)效率”是軟件工程的主要目標(biāo),軟件工程領(lǐng)域的很多新技術(shù)、新方法、新工具的出現(xiàn)都是為了達(dá)到這兩個(gè)目標(biāo),軟件復(fù)用技術(shù)就是其中主要的技術(shù)之一.近十幾年來(lái),軟件復(fù)用研究重新成為熱點(diǎn),被視為解決軟件危機(jī),提高軟件生產(chǎn)效率和質(zhì)量的現(xiàn)實(shí)可行的途徑[1].其實(shí)程序設(shè)計(jì)出現(xiàn)后人們就有了復(fù)用的思想,隨著面向?qū)ο蠹夹g(shù)的發(fā)展,把軟件復(fù)用技術(shù)推向一個(gè)發(fā)展高潮.軟件復(fù)用的關(guān)鍵技術(shù)有很多,其中最主要、最核心的就是構(gòu)件技術(shù)[2].構(gòu)件是應(yīng)用系統(tǒng)中可以明確辨識(shí)的構(gòu)成成份,而可復(fù)用構(gòu)件是具有相對(duì)獨(dú)立的功能和可復(fù)用價(jià)值的構(gòu)件[3].構(gòu)件化的軟件開發(fā)過程可以提高軟件復(fù)用程度,提高開發(fā)效率,并且便于維護(hù),提高質(zhì)量.
隨著計(jì)算機(jī)的普及以及地理信息科學(xué)的發(fā)展,地理信息系統(tǒng)(Geographical Information System,GIS)因其強(qiáng)大的功能得到日益廣泛和深入的應(yīng)用,因此GIS的開發(fā)工作日益重要[4].如何利用現(xiàn)有資源和開發(fā)工具開發(fā)出高效實(shí)用的地理信息產(chǎn)品,以滿足不同行業(yè)的需求,是需要思考和亟待解決的問題.本文討論了構(gòu)件式軟件復(fù)用技術(shù)在GIS開發(fā)中的應(yīng)用.
1968年NATO軟件工程會(huì)議,Mcllroy在提交會(huì)議的論文《大量生產(chǎn)的軟件構(gòu)件》中,提出了“軟件組裝生產(chǎn)線”的思想.從那以后,采用構(gòu)件技術(shù)實(shí)現(xiàn)軟件復(fù)用,采用“搭積木”的方式生產(chǎn)軟件,成為軟件開發(fā)人員長(zhǎng)期的夢(mèng)想.
軟件復(fù)用是指兩次或多次不同的軟件開發(fā)過程中重復(fù)使用相同或相似軟件元素的過程.軟件元素包括程序代碼、測(cè)試案例、設(shè)計(jì)文檔、設(shè)計(jì)過程、需求分析文檔甚至領(lǐng)域知識(shí).軟件復(fù)用是在軟件開發(fā)中避免重復(fù)勞動(dòng)的解決方案,其出發(fā)點(diǎn)是應(yīng)用系統(tǒng)的開發(fā)不再采用一切“從零開始”的模式,而是采用過去應(yīng)用系統(tǒng)開發(fā)中積累的知識(shí)和經(jīng)驗(yàn),從而將開發(fā)的重點(diǎn)集中于應(yīng)用的特有構(gòu)成部分.
從20世紀(jì)60年代后期的第一次“軟件危機(jī)”,到20世紀(jì)80年代中后期的第二次“軟件工程危機(jī)”,發(fā)展到現(xiàn)在,軟件系統(tǒng)的規(guī)模、復(fù)雜度不斷提高,軟件的生成效率和產(chǎn)品質(zhì)量的要求也不斷提高;因此如何找到有效的軟件生產(chǎn)方式,保證軟件產(chǎn)品質(zhì)量、提高軟件生成效率已經(jīng)是非常棘手的問題.軟件復(fù)用的出現(xiàn)使得軟件的開發(fā)真正工程化、工業(yè)化.在早期的結(jié)構(gòu)化軟件分析時(shí)代,軟件復(fù)用由于受到技術(shù)發(fā)展水平的限制,常常局限在代碼層次或者函數(shù)包的復(fù)用.隨著技術(shù)的變革,包括面向?qū)ο笳Z(yǔ)言和方法帶來(lái)的更好的面向應(yīng)用領(lǐng)域的抽象能力、各種分布式構(gòu)件方法與標(biāo)準(zhǔn)的提出、過程方法的成熟,軟件復(fù)用的技術(shù)越來(lái)越成熟,應(yīng)用范圍也越來(lái)越廣泛.
軟件復(fù)用的優(yōu)點(diǎn)是顯而易見的,軟件復(fù)用提高了軟件生產(chǎn)率,保證了軟件產(chǎn)品的質(zhì)量,同時(shí)也提高了軟件產(chǎn)品的可維護(hù)性,降低了開發(fā)成本,避免開發(fā)人員的重復(fù)勞動(dòng),節(jié)約了人力、物力和財(cái)力.軟件復(fù)用是現(xiàn)代軟件工程的一個(gè)主要目標(biāo),因此軟件工程領(lǐng)域的很多新技術(shù)都是為了實(shí)現(xiàn)軟件復(fù)用,提高軟件工程開發(fā)效率.實(shí)現(xiàn)軟件復(fù)用的主要技術(shù)有:軟件構(gòu)件技術(shù)、軟件構(gòu)架技術(shù)、開放系統(tǒng)技術(shù)、領(lǐng)域工程、軟件再工程技術(shù)、CASE技術(shù)、軟件過程管理等[5].
構(gòu)件是一個(gè)高內(nèi)聚的、通過一組約定的接口完成明晰的功能、符合業(yè)界認(rèn)可的模型標(biāo)準(zhǔn)的、可復(fù)用軟件包.構(gòu)件是可復(fù)用的軟件組成成份,可被用來(lái)構(gòu)造其他的軟件.
構(gòu)件的基本特征有:可復(fù)用性、自包含性、一致性、耦合性、內(nèi)聚性和適應(yīng)性.其中可復(fù)用性包括有用性(Usefulness)和易用性(Usability).有用性指構(gòu)件完成的功能是有用的,也就是其功能可出現(xiàn)在很多應(yīng)用軟件中.易用性指構(gòu)件要有很好的包裝,能方便地使用它.
構(gòu)件的分類有很多種,按照開發(fā)過程可分為:分析件、設(shè)計(jì)件、程序件和數(shù)據(jù)件.按功能分為:基礎(chǔ)層的基本數(shù)據(jù)類構(gòu)件和系統(tǒng)支撐構(gòu)件、中間層的各種通用中間件、頂層的針對(duì)領(lǐng)域的專用構(gòu)件.按使用方式分為:白盒構(gòu)件和黑盒構(gòu)件.另外還有各種專用的商業(yè)構(gòu)件.
軟件構(gòu)件化就是要讓軟件開發(fā)像機(jī)械制造工業(yè)一樣,可以用各種標(biāo)準(zhǔn)和非標(biāo)準(zhǔn)的零件來(lái)進(jìn)行組裝,或者像建筑業(yè)一樣,用各種建筑材料搭建成各式各樣的建筑.軟件構(gòu)件化和集成技術(shù)的目標(biāo)是:軟件可以由不同廠商提供,用不同語(yǔ)言開發(fā),在不同硬件平臺(tái)上實(shí)現(xiàn)的軟件構(gòu)件,可以方便地、動(dòng)態(tài)地集成.
軟件構(gòu)件技術(shù)(Software Component Technology)是支持軟件復(fù)用的核心技術(shù).可復(fù)用構(gòu)件是指具有相對(duì)獨(dú)立的功能和可復(fù)用價(jià)值的構(gòu)件,可以使被封裝的對(duì)象類、類樹、一些功能模塊、軟件框架、軟件架構(gòu)、文檔、分析件、設(shè)計(jì)模式等.但是基于構(gòu)件的軟件復(fù)用更多的是指的狹義上的滿足某些特征的軟件模塊,這些特征包括具有明確的功能邊界、規(guī)約化的接口、可獨(dú)立構(gòu)造和部署等.軟件復(fù)用包括兩個(gè)相關(guān)過程:
第一步:可復(fù)用軟件(構(gòu)件)的開發(fā)(Development for Reuse).
要解決的主要問題有:如何定義一個(gè)新的構(gòu)件;構(gòu)件之間的相互通信、數(shù)據(jù)共享必須符合的標(biāo)準(zhǔn);構(gòu)件的分類、構(gòu)件庫(kù)的管理等.
第二步:基于可復(fù)用軟件(構(gòu)件)的應(yīng)用系統(tǒng)構(gòu)造(集成和組裝)(Development with Reuse).
要解決的主要問題有:可復(fù)用構(gòu)件的檢索;已有構(gòu)件在應(yīng)用系統(tǒng)構(gòu)造過程中如何集成和裝配;基于構(gòu)件的系統(tǒng)開發(fā)如何與非構(gòu)件化的系統(tǒng)進(jìn)行集成,如何實(shí)現(xiàn)它們之間的過渡和轉(zhuǎn)變.
目前GIS開發(fā)模式可分為4種:①利用VC++,VB等程序設(shè)計(jì)語(yǔ)言進(jìn)行基礎(chǔ)開發(fā);②借助GIS軟件商提供的二次開發(fā)工具,如MapInfo的MapBasic等開發(fā);③采用OLE自動(dòng)化進(jìn)行GIS軟件開發(fā);④利用組件技術(shù)開發(fā).
組件式GIS軟件開發(fā)是目前較為流行、高效和快速的開發(fā)模式.可以說(shuō)組件式GIS軟件開發(fā)模式就是采用了軟件復(fù)用技術(shù),這里的組件就是構(gòu)件.
利用軟件復(fù)用開發(fā)GIS的過程:
第一步:可復(fù)用構(gòu)件的開發(fā).
在GIS領(lǐng)域里,已經(jīng)有可以檢索到的商業(yè)可復(fù)用構(gòu)件,常用的有MapInfo公司的MapX,ESRI公司的Map-Object,Blue Marble Geographics公司的Geo-View,Visual Component公司的GeoPoint和Intergraph公司的Geomedia等.其中,MapX的功能較強(qiáng),性價(jià)比較高.除了這些構(gòu)件外,在GIS開發(fā)過程中,我們還可以根據(jù)功能、應(yīng)用領(lǐng)域等開發(fā)可以復(fù)用的構(gòu)件,比如:可以把大部分GIS地圖操作中的鷹眼功能開發(fā)為一個(gè)獨(dú)立的構(gòu)件,還可以把智能交通系統(tǒng)中常用的測(cè)距、地點(diǎn)查找等功能模塊,開發(fā)獨(dú)立的可以復(fù)用的構(gòu)件.另外在開發(fā)構(gòu)件過程中,還要注意這些構(gòu)件之間能夠通信,也就是說(shuō)要符合相應(yīng)的標(biāo)準(zhǔn),并且能夠適用于不同的開發(fā)平臺(tái),這樣才能保證構(gòu)件的通用性.這些構(gòu)件開發(fā)完成后,可以對(duì)外公布標(biāo)準(zhǔn)接口,放到構(gòu)件庫(kù)中以便可以檢索使用.
第二步:基于可復(fù)用構(gòu)件的GIS軟件開發(fā).
隨著長(zhǎng)時(shí)間的積累,GIS構(gòu)件庫(kù)就會(huì)越來(lái)越豐富,在GIS軟件開發(fā)中,我們就可以在構(gòu)件庫(kù)中根據(jù)需要檢索相應(yīng)的構(gòu)件,然后掌握這些構(gòu)件對(duì)外提供的標(biāo)準(zhǔn)接口,最后把這些構(gòu)件在開發(fā)平臺(tái)上進(jìn)行集成和裝配,另外,還要注意構(gòu)件式的開發(fā)與非構(gòu)件式開發(fā)之間的如何集成.我們可能在GIS領(lǐng)域?qū)崿F(xiàn)真正的基于構(gòu)件的復(fù)用技術(shù)的軟件開發(fā),可以縮短開發(fā)周期,降低成本,可以脫離大型商業(yè)GIS軟件平臺(tái)獨(dú)立運(yùn)行,并且對(duì)開發(fā)者的GIS專業(yè)背景要求不高.因此,能夠推動(dòng)基于構(gòu)件的軟件復(fù)用開發(fā)方法的推廣,這也將會(huì)是一個(gè)非常好的良性循環(huán).
軟件復(fù)用是軟件工程開發(fā)過程工程化、工業(yè)化發(fā)展的主要技術(shù)之一,能夠提高軟件開發(fā)效率、降低開發(fā)和維護(hù)成本、提高軟件質(zhì)量.軟件構(gòu)件技術(shù)是實(shí)現(xiàn)軟件復(fù)用的核心技術(shù),構(gòu)件化的軟件開發(fā)是未來(lái)軟件開發(fā)的主要方法.文中以GIS軟件開發(fā)為例,說(shuō)明了基于構(gòu)件的軟件復(fù)用開發(fā)方法在該領(lǐng)域的應(yīng)用和推廣,相信在不久的將來(lái),軟件復(fù)用將得到更加廣泛的應(yīng)用,軟件開發(fā)將實(shí)現(xiàn)真正的工程化、工業(yè)化的生產(chǎn).
參考文獻(xiàn):
[1]楊芙清,梅宏,李克勤.軟件復(fù)用與軟件構(gòu)件技術(shù)[J].電子學(xué)報(bào),1999,27(2):68-75.
[2]武偉,張明新.基于構(gòu)件的軟件復(fù)用技術(shù)應(yīng)用研究[J].山西大同大學(xué)學(xué)報(bào),2009,25(1):8-10.
[3]楊芙清,王千祥,梅宏.基于復(fù)用的軟件生產(chǎn)技術(shù)[J].中國(guó)科學(xué),2001,31(4):721-732.
[4]劉爽,陳鵬.基于MapX的組件式GIS開發(fā)研究[J].微計(jì)算機(jī)信息,2007,34(12):182-184.
[5]PRESSMAN R S.Software engineering:a practitioner's approach[M].北京:機(jī)械工業(yè)出版社,2005.