轉:怎麼做好軟件系統架構

【IT168 信息化】

  軟件系統架構(Software Architecture)是關於軟件系統的結構、行爲、屬性、組成要素及其之間交互關係的高級抽象。任何軟件開發項目,都會經歷需求獲取、系統分析、系統設計、編碼研發、系統運維等常規階段,軟件系統架構設計就位於系統分析和系統設計之間。做好軟件系統架構,可以爲軟件系統提供穩定可靠的體系結構支撐平臺,還可以支持最大粒度的軟件複用,降低開發運維成本。如何做好軟件系統的架構設計呢?筆者就這一問題做如下探討分析。

  軟件系統架構設計方法步驟

  基於體系架構的軟件設計模型把軟件過程劃分爲體系架構需求、設計、文檔化、複審、實現和演化6個子過程,現逐一簡要概述如下。

  體系架構需求。即將用戶對軟件系統功能、性能、界面、設計約束等方面的期望(即“需求”)進行獲取、分析、加工,並將每一個需求項目抽象定義爲構件(類的集合)。

  體系架構設計。即採用迭代的方法首先選擇一個合適的軟件體系架構風格(如C/S、B/S、N層、管道過濾器風格、C2風格等)作爲架構模型,然後將需求階段標識的構件映射到模型中,分析構件間的相互作用關係,最後形成量身訂做的軟件體系架構。

  體系架構文檔化。即生成用戶和研發人員能夠閱讀的體系架構規格說明書和體系架構設計說明書。

  體系架構複審。即及早發現體系架構設計中存在的缺陷和錯誤,及時予以標記和排除。

  體系架構實現。即設計人員開發出系統構件,按照體系架構設計規格說明書進行構件的關聯、合成、組裝和測試。

  體系架構演化。如果用戶需求發生了變化,則需相應地修改完善優化、調整軟件體系結構,以適應新的變化了的軟件需求。

  以上6個子過程是軟件系統架構設計的通用方法步驟。但由於軟件需求、現實情況的變化是難以預測的,這6個子過程往往是螺旋式向前推進。

  軟件系統架構設計常用模式

  目前軟件領域廣泛使用的軟件系統架構模式,主要有層次化架構設計、企業集成架構設計、嵌入式架構設計和麪向服務的架構設計模式。

  層次化架構設計模式。分層設計是一種最爲常見的架構設計方案,能有效地使系統結構清晰、設計簡化。MVC模式是當今最爲流行的多層設計模式。該模式把一個應用的輸入、處理、輸出流程進行分離並抽象爲控制器(Controller)、模型(Model)、視圖(View)三個模塊,實現了業務邏輯層、數據庫訪問層和用戶界面層之間在彼此分離的同時仍保持鬆散的耦合關係,增加了靈活性和可擴展性。我們常見的C/S架構、B/S架構、N層架構都是層次化架構設計的表現形式。

  企業集成架構設計模式。該模式不僅爲企業在異構分佈式環境下(操作系統、網絡、數據庫)的業務應用提供了一致的信息訪問和交互手段,而且爲各類業務應用提供了有效的通信、信息集成、應用集成、維護開發、運行管理等服務。目前最著名的企業集成架構設計包括:CORBA、COM+、J2EE、WebService等。

  嵌入式架構設計模式。該模式具備良好的可配置性、可管理性、可擴展性、時效性等性能指標。目前業界主流的嵌入式操作系統都是特定領域專用的,其中包括:WinCE、Linux、ECOS、EPOC、LynxOS、VxWorks等。

  面向服務的架構設計模式。該模式將業務應用按照一定的粒度和原則劃分成爲統一標準和統一格式的服務,使企業可以按照模塊化的方式添加新服務或更新現有服務,有助於打破信息孤島,促進企業系統集成、資源共享。該模式包括服務註冊表模式和企業服務總線模式兩類。

  軟件系統架構設計實踐

  軟件系統架構設計是一項非常複雜的工作任務。如何才能做好軟件系統架構設計呢?筆者認爲需要做好以下幾項工作:

  樹立軟件系統架構的意識。設計人員不能侷限在算法和數據結構上,而是要樹立和不斷強化軟件系統整體架構的意識,學會運用多層架構的視角和觀念去分析設計軟件。在多層架構的實踐上,通過MVC模式實現軟件多層結構,層和層之間要做到職責清晰、互相獨立、耦合關係鬆散;在模塊設計原則上,要儘量體現“高內聚、低耦合”的思想。

  高度重視軟件設計模式。軟件設計模式是設計人員在長期開發實踐中總結出來的,其他設計人員可藉助這些模式加快軟件設計進程,降低開發風險。所以,設計人員應高度重視設計模式思想,切勿滯留在編碼的層面,應不斷總結經驗,積極嘗試運用軟件設計模式的思想去提出問題、分析問題、解決問題,提高自身開發軟件的水平。

  形成自身的軟件架構風格。軟件系統架構設計的核心目標是實現體系架構級別的軟件複用。這就需要設計人員一方面不斷學習鑽研不同應用領域中軟件架構的慣用模式、思維、風格;另一方面要借鑑吸收先進理念,積極探索實踐,最終形成自身獨特的軟件架構風格。

  充分了解用戶需求,做好全局架構設計。要做好軟件系統的架構設計,不能急於求成,首先,要全面準確地收集到用戶需求,對整個系統功能形成清晰完整的認識;其次,針對整個軟件系統做好全局架構設計工作,從而避免因考慮不周或片面理解帶來的失誤。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章