架構的定義
定義架構的最短形式是:“架構是一種結構”,這是一種正確的理解,但世界還沒太平。若做一個比喻,架構就像一個操作系統,不同的角度有不同的理解,不同的關切者有各自的著重點,多視點的不同理解都是架構需要的,也只有通過多視點來考察才能演化出一個有效的架構。
從靜態的角度,架構要回答一個系統在技術上如何組織;從變化的角度,架構要回答如何支持系統不斷產生的新功能、新變化以及適時的重構;從服務質量的角度,架構要平衡各種和用戶體驗有關的指標;從運維的角度,架構要回答如何充分利用計算機或網絡資源及其擴展策略;從經濟的角度,架構要回答如何在可行的基礎上降低實現成本等等
軟件系統架構(SoftwareArchitecture)是關于軟件系統的結構、行為、屬性、組成要素及其之間交互關系的高級抽象。任何軟件開發項目,都會經歷需求獲取、系統分析、系統設計、編碼研發、系統運維等常規階段,軟件系統架構設計就位于系統分析和系統設計之間。做好軟件系統架構,可以為軟件系統提供穩定可靠的體系結構支撐平臺,還可以支持最大粒度的軟件復用,降低開發運維成本。如何做好軟件系統的架構設計呢?
軟件系統架構設計方法步驟
基于體系架構的軟件設計模型把軟件過程劃分為體系架構需求、設計、文檔化、復審、實現和演化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模式實現軟件多層結構,層和層之間要做到職責清晰、互相獨立、耦合關系松散;在模塊設計原則上,要盡量體現“高內聚、低耦合”的思想。
高度重視軟件設計模式。軟件設計模式是設計人員在長期開發實踐中總結出來的,其他設計人員可借助這些模式加快軟件設計進程,降低開發風險。所以,設計人員應高度重視設計模式思想,切勿滯留在編碼的層面,應不斷總結經驗,積極嘗試運用軟件設計模式的思想去提出問題、分析問題、解決問題,提高自身開發軟件的水平。
形成自身的軟件架構風格,軟件系統架構設計的核心目標是實現體系架構級別的軟件復用。這就需要設計人員一方面不斷學習鉆研不同應用領域中軟件架構的慣用模式、思維、風格;另一方面要借鑒吸收先進理念,積極探索實踐,最終形成自身獨特的軟件架構風格。
充分了解用戶需求,做好全局架構設計。要做好軟件系統的架構設計,不能急于求成,首先,要全面準確地收集到用戶需求,對整個系統功能形成清晰完整的認識;其次,針對整個軟件系統做好全局架構設計工作,從而避免因考慮不周或片面理解帶來的失誤。