張娜 嚴(yán)健
在國內(nèi)外研究現(xiàn)狀評述中,將從遺留代碼的研究現(xiàn)狀和企業(yè)信息網(wǎng)格的研究現(xiàn)狀兩方面來闡述此問題。
一、遺留代碼的研究現(xiàn)狀
遺留軟件都是面向?qū)ο蠹夹g(shù)在工業(yè)中廣泛使用之前編寫的,它們使用集中式體系結(jié)構(gòu),編寫遺留軟件的遺留代碼講究的是面向過程、逐步求精的編程理念。這些代碼通常被組織為子程序或函數(shù)的集合。每個子程序提供系統(tǒng)功能的一部分,并且按照需要由其它子程序調(diào)用。面向過程的設(shè)計策略為自頂向下的設(shè)計,將程序分解成交互的函數(shù)或子程序的集合并且由這些函數(shù)共享集中式的系統(tǒng)狀態(tài)如圖1.1。這種設(shè)計策略隱藏了函數(shù)的實現(xiàn)細(xì)節(jié),使之對于其它函數(shù)來說是透明的,但其內(nèi)部算法的改變(如共享變量值的改變),卻容易導(dǎo)致數(shù)據(jù)不一致性。
當(dāng)今,隨著分布式的廣泛應(yīng)用,遺留軟件系統(tǒng)也逐漸由采用集中式體系結(jié)構(gòu)進(jìn)化為采用分布式的體系結(jié)構(gòu),其原因有:
①硬件花費,購買分布式客戶/服務(wù)器系統(tǒng)以及后期維護(hù)的費用通常比購買同等能力的大型機(jī)的費用要小。
②用戶接口的需求,遺留軟件系統(tǒng)通常采用字符、文本的界面。新的趨勢要求系統(tǒng)具有用戶容易理解的、美觀和便于交互的圖形用戶界面。這種界面需要更多的本地計算,只有在客戶/服務(wù)器系統(tǒng)中才能提供這種功能。
③對系統(tǒng)分布式訪問的需求,由于企業(yè)在發(fā)展的過程中逐漸將組織分布在各個地方,客戶和企業(yè)員工希望可以訪問位于公司不同地方的軟件系統(tǒng)。
遷移遺留系統(tǒng)到分布式體系結(jié)構(gòu)中,并開發(fā)有效的接口以減少硬件花費,從而以更為現(xiàn)代的“感觀”方式來支持分布式工作。當(dāng)然在遷移過程中,不可避免的對系統(tǒng)有一些改變使之適合于面向?qū)ο蟮哪P汀?/p>
但是這些集中式的軟件系統(tǒng)經(jīng)過多年的維護(hù),其用戶接口、服務(wù)、數(shù)據(jù)庫之間已經(jīng)錯綜復(fù)雜,造成了遺留系統(tǒng)體系結(jié)構(gòu)進(jìn)化過程中最實質(zhì)性的困難。針對這種情況,對遺留系統(tǒng)的解決方案也各不相同,在新的體系結(jié)構(gòu)中重用遺留代碼就是其中一種解決方案。
1996年Sneed提出一種使用中間件技術(shù)整合遺留系統(tǒng)到異構(gòu)分布式計算機(jī)環(huán)境的方法,此方法主要是封裝遺留系統(tǒng)使之在客戶/服務(wù)器平臺使用。Sneed使用CORBA作為中間件封裝匯編語言編寫的代碼和COBOL語言編寫的代碼驗證此方法的可行性。
1999年Canfora提出了一種標(biāo)識用戶接口組件語句的程序切片算法,但是此算法只適用于非遞歸程序,且是由RPG、COBOL和FORTRAN所編寫的程序。
2001年,Chia提出把遺留系統(tǒng)從大型機(jī)遷移到以用戶為中心的分布式對象計算環(huán)境中。此方法直接在大型機(jī)上包裝遺留系統(tǒng)并且暴露遺留系統(tǒng)的接口給遠(yuǎn)程客戶。作者實現(xiàn)了使用COBRA技術(shù)整合遺留系統(tǒng)到分布式計算環(huán)境,其主要通過ORB-ORB之間的訪問完成。但是,中間件將成為整個系統(tǒng)的瓶頸。同年Y.Bi等人提出了一種以XML的方法重用遺留代碼,主要集中在用戶接口的XML化處理上,通過集中研究最本質(zhì)的,必不可少的用戶交互以及基于字符接口和圖形用戶界面字段之間的關(guān)系,整合這些關(guān)系到新的圖形接口,從而實現(xiàn)遷移遺留應(yīng)用到瘦客戶/服務(wù)器平臺的目的。文章中作者提出了以下幾個關(guān)鍵的步驟,理解遺留系統(tǒng)功能、通過跟蹤基于字符接口的交互區(qū)分信息和處理邏輯、由前面步驟提供的信息來決定目標(biāo)系統(tǒng)、使用XML作為客戶端產(chǎn)生新的圖形接口、通過JNI技術(shù)包裝原始系統(tǒng)的功能、遷移遺留應(yīng)用到目標(biāo)系統(tǒng)。同年,Emmerich定義了基于XML DTD增量代碼移動的方法,此方法能夠增加、減少、替換代碼的某些部分。作者在增量代碼移動的實現(xiàn)中考慮了最簡單的程序設(shè)計語言Karel,為我們解決遺留代碼的重用提供了一種新的思路。
2003年Bodhuin 針對的是那些不可分割的遺留系統(tǒng)提出了遷移遺留系統(tǒng)到Web平臺的工具。但是此工具只適合COBOL語言開發(fā)的軟件系統(tǒng),而且對于不同版本COBOL需要開發(fā)不同的解析器。Yan Huang 提出了一種由C語言編寫的科學(xué)計算程序到基于Triana的計算服務(wù)(面向服務(wù)的的分布式體系結(jié)構(gòu),類似于網(wǎng)格計算)的半自動化轉(zhuǎn)化方法。
2005年Delatittre提出的GEMLCA(Grid Execution Management for Legacy CodeArchitecture)是一種通用的體系結(jié)構(gòu),可以部署遺留應(yīng)用作為網(wǎng)格服務(wù),而不需要重建代碼。GEMLCA由四個基本組件構(gòu)成,被設(shè)計為三層,第一層作為前端層,提供網(wǎng)格服務(wù)的功能;第二層為核心層,負(fù)責(zé)管理每個遺留代碼進(jìn)程和遺留代碼作業(yè);最后一層為后端層,被連接到GEMLCA體系結(jié)構(gòu)所部署的網(wǎng)格中間件,此層可以被看作是一個插入層。但是這種體系結(jié)構(gòu)只適合于GT3和GT4,而且對于它們GEMLCA的后端層都要發(fā)生相應(yīng)的改變。
二、企業(yè)信息網(wǎng)格研究現(xiàn)狀
國內(nèi)研究企業(yè)信息網(wǎng)格的中科院計算所提出的織女星企業(yè)信息網(wǎng)格的主要特色是Vega,即通用服務(wù)、輔助智能、全局一體、自主控制。西安交通大學(xué)的基于Internet的信息網(wǎng)格的軟件框架研究參照計算網(wǎng)格的開放式網(wǎng)格服務(wù)構(gòu)架,實現(xiàn)了信息搜索、登記、發(fā)現(xiàn)、預(yù)定等功能。南京航空航天大學(xué)的基于Web Service信息網(wǎng)格的研究和應(yīng)用是一個基于Web Service的協(xié)同查詢系統(tǒng)的設(shè)計和實現(xiàn)技術(shù)。但是它們都沒有解決在企業(yè)信息網(wǎng)格中如何使用遺留系統(tǒng)的應(yīng)用功能,動態(tài)部署新、舊服務(wù),達(dá)到真正意義上的資源共享的問題。
從遺留代碼和企業(yè)信息網(wǎng)格的研究現(xiàn)狀來看,這些解決遺留問題的方法,有各自的優(yōu)缺點,2000年以前主要集中在包裝遷移遺留系統(tǒng)到基于Web的分布式平臺,隨著分布式的變化,出現(xiàn)了網(wǎng)格,現(xiàn)有的主要技術(shù)成果是GEMLCA,但它有如下缺點,①只適用于GT3或者GT4作為中間件開發(fā)的網(wǎng)格。②將整個可執(zhí)行的遺留代碼作為網(wǎng)格服務(wù),因而造成較大的花費。③需要一個計算服務(wù)器,從而增加了系統(tǒng)的冗余度。④這種方法在遺留系統(tǒng)遷移期間,必須停止遺留系統(tǒng)的使用。而這些缺點,對企業(yè)來說是很難接受的。因此,我們從代碼重用的角度,使遺留代碼成為共享信息資源,同時將其功能提供給網(wǎng)格用戶,解決遺留系統(tǒng)進(jìn)入企業(yè)信息網(wǎng)格的問題。經(jīng)測試此方法不但周期短、開銷少、難度低,而且還保證企業(yè)系統(tǒng)的正常運行。