迷途書童

          敏感、勤學、多思
          隨筆 - 77, 文章 - 4, 評論 - 86, 引用 - 0
          數據加載中……

          軟件架構設計(一)——軟件架構的概念和表述

          做了好幾年架構設計的事了,一直沒有好好的總結。實在不好,花點時間總結一下,寫出來,有興趣的朋友可以一起探討。

          軟件架構設計的主題狠深狠難,本文打算從架構的概念,架構的表述方法,架構設計的過程三個方面來講一下我的理解。

          一、什么是軟件架構?

                溫昱在《軟件架構設計》一書中,給了下面的定義:

                組合派:軟件系統的架構將系統描述為計算組件及組件之間的交互。
                決策派:架構是一系列重要決策的集合,這些決策與以下內容有關:軟件的組織,構成系統的結構元素及其接口的選擇,這些元素在相互協作中明確表現出的行為,這些結構元素和行為元素進一步組合所構成的更大規模的子系統,以及指導這一組織--包括這些元素及其接口、它們的協作和它們的組合--架構風格。

                在我看來,決策派的定義更為具體和準確,注意決策派用了元素這一詞而沒有用組件,組件是有具體含義的,指一個可獨立替換的物理單元,而架構需要能夠指導涉眾,如開發人員、用戶、部署人員等等,對開發人員來講,開發過程中如何分包、如何將包打包為組件,架構師需不需要提供指導呢,答案是肯定的。因此,如果將架構限定在組件和組件的交互上,是不完整的。

          二、架構的表述方法

               這個現在都有共識,就是4+1視圖表述法:邏輯視圖,實現視圖,進程視圖,部署視圖,用例視圖。 參見下圖RUP 4+1視圖:

          82250175980 

                用例視圖關注系統的人、事、物、規則,人是指系統的Actor,包括業務主角和業務工人,事是指系統用例,物是指業務實體,規則指做事情的前置條件、后置條件,做事情過程中的規則。下面這個圖很精辟:

            image

                用例視圖是4+1視圖中的+1,它定義需求標準,跟其它視圖描述系統某一方面的結構有很大的不同。

                邏輯視圖關注系統的邏輯功能模塊和領域模型,不僅包括用戶可見的功能模塊,還包括實現用戶功能而必須提供的“輔助功能模塊”;它們可能是邏輯層、功能模塊、類等。

                實現視圖關注程序包,不僅包括要編寫的源程序,還包括可以直接使用的第三方SDK和現成框架、類庫,以及開發的系統將運行于其上的系統軟件或中間件。開發架構和邏輯架構之間可能存在一定的映射關系:比如邏輯架構中的邏輯層一般會映射到實現架構中的多個程序包;再比如實現架構中的源碼文件可以包含邏輯架構中的一到多個類(在C++里一個源碼文件可以包含多個類,即使在Java里一個源碼文件也可以同時包含一個類和幾個內部類)。

                進程視圖關注進程、線程、對象等運行時概念,以及相關的并發、同步、通信等問題。

                進程視圖和實現視圖的關系:實現視圖一般偏重程序包在編譯時期的靜態依賴關系,而這些程序運行起來之后會表現為對象、線程、進程,進程視圖比較關注的是這些運行時單元的交互問題。

                物理視圖關注“目標程序及其依賴的運行庫和系統軟件”最終如何安裝或部署到物理機器,以及如何部署機器和網絡來配合軟件系統的可靠性、可伸縮性等要求。物理架構和運行架構的關系:運行架構特別關注目標程序的動態執行情況,而物理架構重視目標程序的靜態位置問題;物理架構還要考慮軟件系統和包括硬件在內的整個IT系統之間是如何相互影響的。

                上面幾個視圖是最典型的視圖,不管你是通信中間件,還是依賴于數據庫的企業應用都需要的。對于依賴數據庫的企業應用,通常還需要數據視圖,數據視圖關注對象如何存儲,如數據庫表等

                 4+1視圖不僅僅是軟件架構的表述方法,它們各自從不同的視角去展現架構,因此,還是一種比較好的思維方式,引導我們從不同的視角去思考,從而做出比較系統的架構設計。

          posted on 2012-06-28 23:29 迷途書童 閱讀(1311) 評論(0)  編輯  收藏 所屬分類: 系統設計

          主站蜘蛛池模板: 无为县| 井冈山市| 德令哈市| 舟山市| 科技| 金川县| 临潭县| 星座| 许昌县| 竹溪县| 新昌县| 长丰县| 乐安县| 萍乡市| 林甸县| 蛟河市| 锡林浩特市| 泉州市| 沽源县| 扶风县| 方城县| 临漳县| 屏山县| 浑源县| 双流县| 柏乡县| 襄城县| 定西市| 长沙市| 武威市| 射阳县| 小金县| 区。| 胶南市| 固始县| 三穗县| 松潘县| 毕节市| 龙门县| 都匀市| 蒙山县|