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