?? hnxxcxg架構(gòu)的一些關(guān)點.txt
字號:
12.5日晚,我和兩位同事又來到KFC,來幾杯可樂,找一個靠窗的位置,就開始天南海北的神吹。這是我們一些簡單的樂趣,高升橋那家KFC是我們常去的地方。
在項目中,平常我們都會談?wù)撽P(guān)于構(gòu)架的話題,然而“到底什么是構(gòu)架?”,有人提出來。是啊,到底什么 是構(gòu)架呢?有人說構(gòu)架是項目的關(guān)鍵問題的決策,有人說構(gòu)架軟件邏輯結(jié)構(gòu)的高級抽象;RUP中的構(gòu)架是4+1視圖,XP認為構(gòu)架可以用隱喻(Metaphor)來表示,F(xiàn)DD看重領(lǐng)域模型在架構(gòu)中的位置,也就是說,軟件開發(fā)者時常掛在嘴邊的“架構(gòu)”(Architecture)并不容易找到一個標準的概念。
我個人比較同意“構(gòu)架是項目的關(guān)鍵問題的決策”的觀點,它應(yīng)當有多個剖面(Profile),也就存在不同的對于架構(gòu)的描述,取決于關(guān)注者的重點。
我們開始在各個方面討論關(guān)于構(gòu)架的一些概念,以及對項目的影響。后來張瑋把它整理出來,這便是這篇小文的由來。
======================================================================
從某種程度上說,系統(tǒng)本身就是架構(gòu),那為什么還需要提出架構(gòu)這種概念甚至由某個或某幾個專門的架構(gòu)工程師或小組來負責主要制作并維護這些架構(gòu)呢? 實際上,不論是否有架構(gòu)工程師、專門的制作架構(gòu)的活動或架構(gòu)文檔,任何一個系統(tǒng)都是有它的架構(gòu)的。 就好象大多數(shù)文章,不管它是否有目錄,是否有導(dǎo)讀,它都是有自己的結(jié)構(gòu)的。架構(gòu)是系統(tǒng)的形或系統(tǒng)的神;同時架構(gòu)(在大多數(shù)情況下)還可能影響項目組成員的組織;架構(gòu)可以起到提綱契領(lǐng)的作用。
人們需要架構(gòu)來:
了解系統(tǒng)--了解架構(gòu)的目的就是(從某一個角度)了解系統(tǒng),因此從這個角度上來說,架構(gòu)就是為了交流(比如說某人對房子最關(guān)心的就是它的建筑面積),既然是為了交流,當然需要一個頂層的描述,從而建立起對系統(tǒng)的總體映象。
做出并表達重大決策--描述架構(gòu)是為了描述系統(tǒng),但只有重大的決策才被列入架構(gòu)。而這種決策是否重大,實際上從決定本身而言,項目中每個決定都是一樣重要的,因此我們說某個決策是否重大,實際上是說這個決策對受眾影響的重大程度及影響的范圍是否更廣,或者說要改變這種決策的難度的大小。
平衡協(xié)調(diào)--預(yù)先制作架構(gòu)是因為架構(gòu)影響的范圍廣,程度深。范圍廣就意味著需要多方協(xié)調(diào),同時架構(gòu)還意味著對多方進行權(quán)衡(平衡),比如對多種需求多種技術(shù)進行權(quán)衡等。架構(gòu)還可以用于多個小組之間的協(xié)調(diào),它是多個小組之間的協(xié)議,同時它還包含多個小組共同的守則。
有專門架構(gòu)小組或?qū)iT架構(gòu)師是因為架構(gòu)是對多方面需求多種涉眾要求進行權(quán)衡并做出的重大決定,而這些因素互相約束,互相牽制并互相影響,因此需要有專門的人進行統(tǒng)一的協(xié)調(diào)(集中制),當然也可能所有影響深遠的決定由團隊所有成員一起做出,統(tǒng)一進行協(xié)調(diào)(民主制)或有一種解決沖突并協(xié)調(diào)的機制(如隱喻,民主集中制等)。
屏蔽影響--架構(gòu)穩(wěn)定就意味著影響深遠及需要多個地方都發(fā)生改變的變化不會頻繁出現(xiàn)。
目錄--就象一本書,需要一節(jié)前言來說明書的結(jié)構(gòu)及表達的方式,如果你要想快速找到文章中關(guān)心的某一項內(nèi)容,一般來說,你需要先查目錄,架構(gòu)也可以起到目錄的作用。
認識到架構(gòu)的這些特點,我們可以在應(yīng)用中更好地使用架構(gòu):
架構(gòu)就是系統(tǒng),系統(tǒng)就是架構(gòu)
既然描述架構(gòu)就是描述系統(tǒng)(中的重要元素),因此一切描述系統(tǒng)的手段都可用于描述及表達架構(gòu)。
架構(gòu)是重大決定,因為它影響深遠
因此架構(gòu)的確定方法與組織中確定大事的文化應(yīng)相符,比如組織是一種民主制,則宜用民主制的架構(gòu)方式,組織是集中制,則宜用集中制,如是民主集中制,則宜用民主集中制
架構(gòu)元素應(yīng)撿重要的元素說,所謂重要的元素,是指
共同的元素,
變化涉及多個部分的。
架構(gòu)用于交流
因此描述架構(gòu)的方法應(yīng)用易于理解的方式來表達架構(gòu),比如簡單,直接的方式,圖畫甚至動畫等一切手段。
因此架構(gòu)應(yīng)該是面向不同受眾的,比如用戶和設(shè)計人員看待架構(gòu)的角度就不會一樣,他們的關(guān)注點也不會一樣。比如一幢房子,用戶可能比較關(guān)心地段、戶型、面積等,而開發(fā)商可能更關(guān)心成本及收益等,而建筑商可能更關(guān)心其中的通用件是否多,是否容易施工。換句話說,如果給你十分鐘對初次接觸系統(tǒng)的人描述系統(tǒng),對用戶和對設(shè)計人員,編碼人員,測試人員等你所講的話肯定會不一樣,但是它們又都是描述同一個東西的。
架構(gòu)用于平衡協(xié)調(diào)
因此架構(gòu)中應(yīng)包含這兩部分內(nèi)容:劃分的部分及各部分之間的接口,各部分之間共同的約定。
如果項目組本身成員之間的關(guān)系就比較和諧,協(xié)調(diào)比較方便,重大事項的決定可以集體決定,就可以沒有專門的人負責維護架構(gòu)(但并不是沒有人維護架構(gòu),沒有人維護和所有人維護是完全不同的)。
架構(gòu)工程師需要有(技術(shù)上及人員組織協(xié)調(diào)的)經(jīng)驗。
各種技術(shù)的平衡及協(xié)調(diào)也是架構(gòu)工程師所需要做的一件重要的事情。
屏蔽影響
一個好的架構(gòu)應(yīng)使系統(tǒng)趨于收斂,意即架構(gòu)使系統(tǒng)變化引起的改變及影響越來越小
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -