迷途書童

          敏感、勤學(xué)、多思
          隨筆 - 77, 文章 - 4, 評(píng)論 - 86, 引用 - 0
          數(shù)據(jù)加載中……

          軟件架構(gòu)設(shè)計(jì)(一)——軟件架構(gòu)的概念和表述

          做了好幾年架構(gòu)設(shè)計(jì)的事了,一直沒有好好的總結(jié)。實(shí)在不好,花點(diǎn)時(shí)間總結(jié)一下,寫出來,有興趣的朋友可以一起探討。

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

          一、什么是軟件架構(gòu)?

                溫昱在《軟件架構(gòu)設(shè)計(jì)》一書中,給了下面的定義:

                組合派:軟件系統(tǒng)的架構(gòu)將系統(tǒng)描述為計(jì)算組件及組件之間的交互。
                決策派:架構(gòu)是一系列重要決策的集合,這些決策與以下內(nèi)容有關(guān):軟件的組織,構(gòu)成系統(tǒng)的結(jié)構(gòu)元素及其接口的選擇,這些元素在相互協(xié)作中明確表現(xiàn)出的行為,這些結(jié)構(gòu)元素和行為元素進(jìn)一步組合所構(gòu)成的更大規(guī)模的子系統(tǒng),以及指導(dǎo)這一組織--包括這些元素及其接口、它們的協(xié)作和它們的組合--架構(gòu)風(fēng)格。

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

          二、架構(gòu)的表述方法

               這個(gè)現(xiàn)在都有共識(shí),就是4+1視圖表述法:邏輯視圖,實(shí)現(xiàn)視圖,進(jìn)程視圖,部署視圖,用例視圖。 參見下圖RUP 4+1視圖:

          82250175980 

                用例視圖關(guān)注系統(tǒng)的人、事、物、規(guī)則,人是指系統(tǒng)的Actor,包括業(yè)務(wù)主角和業(yè)務(wù)工人,事是指系統(tǒng)用例,物是指業(yè)務(wù)實(shí)體,規(guī)則指做事情的前置條件、后置條件,做事情過程中的規(guī)則。下面這個(gè)圖很精辟:

            image

                用例視圖是4+1視圖中的+1,它定義需求標(biāo)準(zhǔn),跟其它視圖描述系統(tǒng)某一方面的結(jié)構(gòu)有很大的不同。

                邏輯視圖關(guān)注系統(tǒng)的邏輯功能模塊和領(lǐng)域模型,不僅包括用戶可見的功能模塊,還包括實(shí)現(xiàn)用戶功能而必須提供的“輔助功能模塊”;它們可能是邏輯層、功能模塊、類等。

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

                進(jìn)程視圖關(guān)注進(jìn)程、線程、對(duì)象等運(yùn)行時(shí)概念,以及相關(guān)的并發(fā)、同步、通信等問題。

                進(jìn)程視圖和實(shí)現(xiàn)視圖的關(guān)系:實(shí)現(xiàn)視圖一般偏重程序包在編譯時(shí)期的靜態(tài)依賴關(guān)系,而這些程序運(yùn)行起來之后會(huì)表現(xiàn)為對(duì)象、線程、進(jìn)程,進(jìn)程視圖比較關(guān)注的是這些運(yùn)行時(shí)單元的交互問題。

                物理視圖關(guān)注“目標(biāo)程序及其依賴的運(yùn)行庫和系統(tǒng)軟件”最終如何安裝或部署到物理機(jī)器,以及如何部署機(jī)器和網(wǎng)絡(luò)來配合軟件系統(tǒng)的可靠性、可伸縮性等要求。物理架構(gòu)和運(yùn)行架構(gòu)的關(guān)系:運(yùn)行架構(gòu)特別關(guān)注目標(biāo)程序的動(dòng)態(tài)執(zhí)行情況,而物理架構(gòu)重視目標(biāo)程序的靜態(tài)位置問題;物理架構(gòu)還要考慮軟件系統(tǒng)和包括硬件在內(nèi)的整個(gè)IT系統(tǒng)之間是如何相互影響的。

                上面幾個(gè)視圖是最典型的視圖,不管你是通信中間件,還是依賴于數(shù)據(jù)庫的企業(yè)應(yīng)用都需要的。對(duì)于依賴數(shù)據(jù)庫的企業(yè)應(yīng)用,通常還需要數(shù)據(jù)視圖,數(shù)據(jù)視圖關(guān)注對(duì)象如何存儲(chǔ),如數(shù)據(jù)庫表等

                 4+1視圖不僅僅是軟件架構(gòu)的表述方法,它們各自從不同的視角去展現(xiàn)架構(gòu),因此,還是一種比較好的思維方式,引導(dǎo)我們從不同的視角去思考,從而做出比較系統(tǒng)的架構(gòu)設(shè)計(jì)。

          posted on 2012-06-28 23:29 迷途書童 閱讀(1310) 評(píng)論(0)  編輯  收藏 所屬分類: 系統(tǒng)設(shè)計(jì)

          主站蜘蛛池模板: 嵩明县| 河北区| 芮城县| 乐至县| 宝鸡市| 鹰潭市| 施甸县| 德安县| 宜兰县| 岳池县| 东丽区| 收藏| 巴林左旗| 德安县| 仁怀市| 都江堰市| 丰台区| 锡林浩特市| 马鞍山市| 乳山市| 常宁市| 葫芦岛市| 涿鹿县| 南木林县| 衡南县| 磐安县| 昌江| 桂阳县| 万全县| 铅山县| 江城| 丰城市| 兴安县| 景泰县| 颍上县| 岑溪市| 开阳县| 崇左市| 察哈| 高碑店市| 宁国市|