孔祥艷
(中國電子科技集團公司第五十四研究所,河北石家莊050081)
當(dāng)前,企業(yè)信息系統(tǒng)需求呈井噴狀態(tài),軟件規(guī)模越來越大,而人們對于軟件開發(fā)周期的要求卻越來越短。使用傳統(tǒng)的信息系統(tǒng)開發(fā)方法,大量的重復(fù)勞動導(dǎo)致開發(fā)效率的降低。而使用構(gòu)件化技術(shù)開發(fā)信息系統(tǒng)不僅能顯著提高軟件的質(zhì)量,降低開發(fā)人員的勞動強度,而且能隨著系統(tǒng)業(yè)務(wù)流程的變化而變化。因此,基于構(gòu)件技術(shù)開發(fā)企業(yè)信息化系統(tǒng)方法受到了業(yè)內(nèi)人士的普遍關(guān)注。
軟件構(gòu)件是指具有相對獨立功能和可復(fù)用價值的軟件成分,是粗粒度、相對獨立、可替換的軟件系統(tǒng)組成部分,能夠完成明晰功能的軟件實體,可獨立部署并易于第三方組裝。它的使用同開發(fā)、生產(chǎn)無關(guān),構(gòu)件其實就是對一組類的組合進(jìn)行封裝,并完成1個或多個功能,為用戶提供多個接口。整個構(gòu)件隱藏了具體的實現(xiàn),只通過接口對外提供服務(wù)。
信息系統(tǒng)是穩(wěn)定性和可變性相統(tǒng)一的實體。其穩(wěn)定性特征表明,大部分信息系統(tǒng)在信息模型和功能上有類似之處,盡管不同領(lǐng)域?qū)π畔⑾到y(tǒng)的功能需求各異,但在一定范圍內(nèi)系統(tǒng)所處理的信息結(jié)構(gòu)是相對穩(wěn)定的,變化的只是其內(nèi)容;同時,信息系統(tǒng)所涉及到的業(yè)務(wù)種類有限,處理過程也具有相似性,不同的只是其運作和控制方式上的差異。正是基于信息系統(tǒng)的穩(wěn)定性和基礎(chǔ)業(yè)務(wù)的相似性,從而可以將相同的操作進(jìn)行抽象,將實體信息及其處理處理過程封裝在不同的構(gòu)件中。
基于構(gòu)件的信息系統(tǒng)開發(fā)與傳統(tǒng)開發(fā)方式不同之處在于分析、設(shè)計和實現(xiàn)等各個階段中所充實的工作不再是從零開始,而是從開發(fā)轉(zhuǎn)變?yōu)橄到y(tǒng)集成,可以看成是一個以組裝構(gòu)件為主的軟件開發(fā)過程。一種可行的構(gòu)件化企業(yè)信息系統(tǒng)開發(fā)框架如圖1所示。
上述方法可以快速建立信息系統(tǒng),其核心部分是構(gòu)件。根據(jù)構(gòu)件處理信息的不同,可將其分為3類:
①通用基本構(gòu)件:是特定于計算機系統(tǒng)的構(gòu)成成分,如基本的數(shù)據(jù)結(jié)構(gòu)、用戶界面元素等;
圖1 企業(yè)信息系統(tǒng)的構(gòu)件化開發(fā)框架
②領(lǐng)域共性構(gòu)件:是企業(yè)信息系統(tǒng)所屬領(lǐng)域的共性構(gòu)成成分,它們存在于該領(lǐng)域的各個應(yīng)用系統(tǒng)中;
③應(yīng)用專用構(gòu)件:是每個應(yīng)用系統(tǒng)的特有構(gòu)成成分。信息系統(tǒng)開發(fā)中的重復(fù)勞動主要指前兩類構(gòu)成成分的重復(fù)開發(fā)。
因此,通過凝結(jié)共性,通用基本構(gòu)件和領(lǐng)域共性構(gòu)件將具有良好的可復(fù)用性,由此可將開發(fā)者的主要精力聚集在系統(tǒng)專用構(gòu)件的開發(fā)及各構(gòu)件的組裝工作中。
企業(yè)信息系統(tǒng)的構(gòu)件化方法摒棄“一切從零開始”的開發(fā)模式,而是以已有工作為基礎(chǔ),充分利用積累的知識和經(jīng)驗,通過用戶需求和問題域的詳細(xì)分析發(fā)掘可重用的成分,在舊系統(tǒng)中提煉或新開發(fā)通用基本構(gòu)件和領(lǐng)域共性構(gòu)件。開發(fā)者的精力投入專屬新系統(tǒng)功能的構(gòu)件開發(fā)過程。所有構(gòu)件經(jīng)過測試、標(biāo)準(zhǔn)化、描述和分類后導(dǎo)入構(gòu)件庫,從而新系統(tǒng)的開發(fā)是構(gòu)件開發(fā)、組裝和系統(tǒng)測試的過程。
在實際的開發(fā)中,軟件的復(fù)用程度并不理想?;跇?gòu)件的軟件開發(fā)將開發(fā)的重點由原來的軟件編程轉(zhuǎn)變?yōu)槔靡延袠?gòu)件組合集成新的軟件系統(tǒng)。由于建立一個應(yīng)用需要復(fù)用很多已有的軟件構(gòu)件,這些構(gòu)件可能是在不同的時間、由不同的人員開發(fā)的,并且有不同的用途,因此需要將它們組裝在一起。除了良好的軟件架構(gòu)和合理的軟件開發(fā)過程指導(dǎo)外,程序員對構(gòu)件的正確理解和準(zhǔn)確利用至關(guān)重要。軟件復(fù)用面臨一個矛盾:一方面存在大量的可復(fù)用構(gòu)件,另一方面程序員很難找到真正需要的構(gòu)件。要解決這個問題,就需要對構(gòu)件的靜態(tài)特性和動態(tài)行為做出準(zhǔn)確、全面的描述,并建立構(gòu)件庫對構(gòu)件進(jìn)行合理的分類和組織,提供良好的檢索方法支持。
基于上述軟件復(fù)用中的實際問題可以看出,構(gòu)件的描述技術(shù)作為構(gòu)件化軟件設(shè)計中的關(guān)鍵技術(shù)之一,在基于構(gòu)件軟件開發(fā)(CBSD)的應(yīng)用實踐中占有重要地位。構(gòu)件描述是指以構(gòu)件模型為基礎(chǔ),解決構(gòu)件的精確描述、理解及組裝的問題。它規(guī)定了一個軟構(gòu)件所需的結(jié)構(gòu)和內(nèi)容,不僅用于指導(dǎo)軟件構(gòu)件的設(shè)計、開發(fā)、管理、組裝和測試等活動,而且可用于構(gòu)件庫的組織、存儲、檢索和瀏覽。
面向?qū)ο蠡赪eb的.NET技術(shù)是企業(yè)信息系統(tǒng)開發(fā)中經(jīng)常采用的開發(fā)平臺。.NET平臺非常適合于構(gòu)件化布署,采用構(gòu)件化工程方法,將代碼與邏輯和業(yè)務(wù)對象的剝離能夠?qū)崿F(xiàn)軟件復(fù)用。一個.NET平臺下采用C#語言提煉、開發(fā)和加工構(gòu)件的過程示意圖如圖2所示。C#是面向構(gòu)件的編程語言,對構(gòu)件開發(fā)有很好的支持。XML描述能嵌入C#構(gòu)件注釋中。傳統(tǒng)構(gòu)件描述中采用數(shù)學(xué)符號(難以理解、實現(xiàn)、維護(hù)及推廣)或直接使用自然語言(很難保證構(gòu)件質(zhì)量),而XML具有良好的擴展性和自描述性,因此可將XML作為構(gòu)件描述語言。
圖2 .NET平臺下C#語言構(gòu)件開發(fā)過程
用C#等語言開發(fā)的源代碼,構(gòu)成各個功能模塊。將能夠復(fù)用的功能模塊提取出來,通過標(biāo)準(zhǔn)的接口定義,解耦合(構(gòu)件與數(shù)據(jù)庫、應(yīng)用環(huán)境等分離,真正意義上實現(xiàn)獨立,以適用于其他應(yīng)用系統(tǒng)),并通過XML描述對構(gòu)件進(jìn)行良好的注釋。VSTS(Visual Studio Team System,Microsoft開發(fā)工具)編譯源碼后,生成2個文件,DLL程序集(構(gòu)件)和含有構(gòu)件描述數(shù)據(jù)的XML文檔。通過XML構(gòu)件描述解析工具的解析將XML文檔轉(zhuǎn)換為構(gòu)件描述元數(shù)據(jù),最后,構(gòu)件源碼、程序集和構(gòu)件描述元數(shù)據(jù)3類形式的文件通過構(gòu)件入庫管理系統(tǒng)一起入構(gòu)件庫。
這樣,使用者在構(gòu)件庫中搜索到所需構(gòu)件時,通過閱讀詳細(xì)的描述信息能夠清楚地了解構(gòu)件的基本功能,正確地應(yīng)用于企業(yè)信息系統(tǒng)的開發(fā),而且當(dāng)構(gòu)件升級為新版本時,其描述信息也能隨之更新,避免了描述與實體的脫節(jié)。
企業(yè)信息系統(tǒng)構(gòu)件化開發(fā)方法的框架具有通用意義,可用于基于構(gòu)件開發(fā)軟件的過程中。上述提出的.NET平臺下C#語言開發(fā)構(gòu)件的過程已應(yīng)用于工程實踐中,構(gòu)件的XML描述能夠自動載入構(gòu)件庫,實現(xiàn)了構(gòu)件體與描述的一體化,提高了構(gòu)件的精確描述度和理解力。
[1]楊芙清,梅 宏.構(gòu)件化軟件設(shè)計與實現(xiàn)[M].北京:清華大學(xué)出版社,2008.
[2]王志堅,費玉奎,婁淵清.軟件構(gòu)件技術(shù)及應(yīng)用[M].北京:科學(xué)出版社,2005.
[3]LOWY J.Programming.NET Components[M].Gravenstein Highway North Sebastopol:O'Reilly Media,2005.