摘 要: 構件化軟件的設計集中于軟件體系結構設計,,其最主要的特征在于目標系統(tǒng)由大量可復用構件組成,,這就要求在設計階段應當設計出滿足需求的軟件體系結構。以一個門診部信息管理系統(tǒng)軟件架構為例,介紹了面向構件的軟件架構方法,,并對系統(tǒng)架構選型進行分析,,提出了本系統(tǒng)的軟件架構,為基于構件技術的系統(tǒng)實現提供良好的依據,。
關鍵詞: 構件,; 軟件架構; 三層體系結構
自從構件技術提出以來,,如何有效地劃分構件,、進行最大化的軟件復用成為研究的熱點。構件化軟件的最主要特征[1]在于目標系統(tǒng)由大量可復用構件組成,,從系統(tǒng)化構件復用過程來看,,傳統(tǒng)軟件開發(fā)方法中的詳細設計被劃分到了構件制作階段,與基于構件開發(fā)目標系統(tǒng)屬于相對獨立的不同階段,。構件化軟件的設計是傳統(tǒng)軟件開發(fā)方法中的總體設計或高層設計,,要求設計階段就應設計出滿足需求的軟件體系結構。
1 面向構件的軟件架構
軟件架構[2]是指某個軟件或計算機系統(tǒng)的軟件架構,即組成該系統(tǒng)的一個或多個結構,構成軟件的各個部分,,形成該構件的外部可見屬性及相互間的關系,。基于構件的軟件架構,,更加強調構件的概念,,架構時考慮兩個方面:(1)與軟件基礎設施有關,(2)與構件在基礎設施上的操作有關,?;谶@兩方面的考慮,通常在架構時考慮技術架構和應用架構兩個方面,。
1.1技術架構
技術架構[3]定義了技術環(huán)境和軟件基礎設施,,是支持組織以實現運作(非功能)需求(尤其是組織的應用程序和信息體系結構)的硬件和軟件基礎設施的體系結構。它描述了所使用的技術的結構和內部關系,,以及這些技術如何支持組織的運作需求,。
技術架構包括技術環(huán)境和技術基礎設施兩個部分。技術環(huán)境解決不同軟硬件平臺之間的差異性問題,。技術基礎設施包括在應用中可以被標準化的部分,。標準化使得通用代碼從面向業(yè)務的構件中移出,放到一個獨立的可復用的軟件基礎設施中,。軟件基礎設施可以通過預先構建的構件框架的方式提供,,它處理構件行為中已經標準化的方面。
1.2 應用架構
應用架構[3]包括了構件開發(fā)者和組裝者面臨的架構問題,。是自服務的體系結構,,用于支持和實現這樣的業(yè)務需求,,包括該業(yè)務與其他應用程序之間的接口。它描述了應用程序的結構以及該結構如何實現組織的功能需求,。圖1所示為面向構件的軟件構架模型[4],。
2 典型系統(tǒng)架構分析
以一個門診部信息管理系統(tǒng)為例,對基于構件技術的系統(tǒng)架構進行分析,。
2.1 架構選型
根據需求分析過程中得到的用例模型,,進行了如下選型過程[5]:
(1) 選擇套裝軟件還是自行開發(fā)
先考慮了市場上套裝軟件的產品,希望借助成熟的產品加快實施進度,,確保軟件的質量和穩(wěn)定性,。但是通過考察,發(fā)現套裝軟件存在以下問題:
?、購墓δ芙嵌确治觯菏忻嫔犀F有的系統(tǒng)雖然提供了豐富且強大的功能,,但與本系統(tǒng)的需求交集只占了大約60%,此部分之外的需求需要花費很大的代價定制,,而軟件中約有50%的特性是本系統(tǒng)所不需要的,。
②從實施周期角度分析:由于客戶化的內容比較多,,包括前期的需求映射和套裝軟件的模型調整,,要完成實施,經過評估需要2年左右的時間,,超出了用戶的預期,。
③從成本角度分析:套裝軟件相對比較昂貴,,另外需要購買相應的咨詢,、實施服務,這樣使得成本更大,。
④從擴展性角度分析:套裝軟件集成了一套強大的模型,,通過模型的配置,,基本上可以滿足業(yè)務上的變化,但是在條件不能滿足的情況下,由于系統(tǒng)實現非常復雜,,采用的技術手段包含了很多自由的標準,,難于進行二次開發(fā),不利于移植和維護,。
基于以上的分析,,選擇了自行開發(fā)軟件。
(2) 技術平臺的選擇
所謂“平臺”就是能夠獨立運行并自主存在,,為其所支撐的上層系統(tǒng)和應用提供運行所依賴的環(huán)境,。
技術平臺是一套完整的、嚴密的服務于研制應用的軟件產品及相關文件。真正的技術平臺應該是選擇合適的技術體系(如J2EE,、.NET等),,技術架構(一組設計模式如MVC的集合),充分發(fā)揮技術體系及技術架構的優(yōu)勢,能夠大大提高應用軟件開發(fā)速度,,指導并規(guī)范應用軟件分析,、設計、編碼,、測試,、部署各階段工作,提煉用戶真正需求,,提高代碼正確性,、可讀性、可維護性,、可擴展性,、伸縮性等軟件工具。優(yōu)秀的技術平臺還包括一套高效的底層通用的代碼,,甚至還包括代碼生成器,、代碼安全漏洞檢查工具等。
2.2 三層軟件架構
在總結基于構件的軟件架構方法和進行架構選型分析后,,在本系統(tǒng)中引入三層結構的設計思想,,采用構件化的開發(fā)方法,將系統(tǒng)業(yè)務邏輯封裝在應用服務器上,,客戶端應用程序自動從應用服務器上下載和更新業(yè)務邏輯,,達到“應用邏輯與程序代碼分離,數據與應用分離,,應用與流程分離”,,最大化地支持業(yè)務的靈活開展。圖2所示為系統(tǒng)軟件架構,。
系統(tǒng)采用三層體系結構設計,。所謂三層體系結構[6],即用戶層,、應用層和數據庫服務器,。用戶層主要指用戶界面,要求盡可能地簡單,,使最終用戶不需要進行任何培訓就能方便地訪問信息,;第二層是應用服務器,也就是常說的中間層,,即組件層,,所有的應用系統(tǒng),、應用邏輯、控制都在這一層,,系統(tǒng)的復雜性也主要體現在應用層,;最后的數據存儲層中,數據庫服務器存儲大量的數據信息和數據邏輯,,所有與數據有關的安全,、完整性控制、數據的一致性,、并發(fā)操作等都是在第三層完成,。
在系統(tǒng)中,用戶層采用Delphi7編制,,為最終用戶提供操作界面,。用戶在操作界面上可以輸入信息,顯示查詢結果,。具有操作簡單,,信息顯示方式多樣等特點。
業(yè)務邏輯層也采用Delphi7編制,。這一層是整個系統(tǒng)的關鍵,,系統(tǒng)每個功能的具體實現算法,各服務構件均在本層實現,。
數據庫服務器為Windows2003 Server+SQL Server2000模式,。在數據庫服務器上通過大量使用視圖、觸發(fā)器和存儲過程實現數據的完整性控制,、數據的一致性和并發(fā)操作,。
采用三層體系結構設計可以有效降低開發(fā)和維護成本,簡化管理,,可適應不斷變化的業(yè)務需求,,有效提高系統(tǒng)安全性。這樣的好處顯而易見:
(1)由于數據訪問是通過中間層進行的,,因此客戶端不再與數據庫直接建立數據連接,。即建立在數據庫服務器上的連接數量將大大減少;
(2)可維護性得以提高,。因為業(yè)務規(guī)則、合法性校驗存在于中間層,,因此當業(yè)務規(guī)則發(fā)生改變時,,只需更改中間層服務器上的某個組件(如某個DLL文件),而客戶端應用程序不需做任何處理,,有些時候,,甚至不必修改中間層組件,,只需要修改數據庫中的某個存儲過程就可以了;
(3)良好的可重用性,;
(4)事務處理更加靈活,,可以在數據庫端、組件層,、MTS(或COM+)管理器中進行事務處理,。
本文以一個門診部信息管理系統(tǒng)軟件架構為例,分析研究了基于構件技術的系統(tǒng)軟件架構,,為下一步系統(tǒng)設計與實現提供了重要依據,。與傳統(tǒng)軟件開發(fā)方法按照設計進行編程以實現目標系統(tǒng)不同,構件化軟件的基本功能單元已經以可復用構件的方式實現,,所以按照設計好的軟件架構來復用構件,,如何盡可能充分、正確,、有效地復用軟件框架,,成為了下一步構件化軟件實現的主要工作之一。
參考文獻
[1] 軟件構件技術概述[EB/OL].http://dev.csdn.net/develop/article/13/13254.html.2007.
[2] Len Bass.軟件架構實踐[M].車立紅,譯.北京:清華大學出版社,2004.
[3] BROWN A W著.大規(guī)?;跇嫾能浖_發(fā)[M].趙文耘,張志,,譯.北京機械工業(yè)出版社,2003.
[4] Katharine Whitehead 著.基于組件的開發(fā)[M].王海鵬譯.北京:人民郵電出版社,2003.
[5] 黃柳青,王滿紅.構件中國[M].北京:清華大學出版社,2006.
[6] 閻宏.軟件的架構與設計模式[EB/OL].http://soft.yesky.com/lesson/495/2012495.shtml.2005.