第一次接觸軟件架構這門課程,首先閱讀了架構漫談這一系列博客的前三篇,初步瞭解了什麼是架構、認識概念是理解架構的基礎以及如何作好架構之識別問題。架構
要談軟件架構,首先要了解什麼是架構,這對我來講是一個新概念。所謂架構,起先源於建築學,後來廣而用之,在社會各個方面行業中多多少少都用到這個詞彙。而在咱們軟件行業中,這個概念也存在很多解釋,對於我而言,比較好理解的是:首先,對目標系統的邊界進行界定;其次,並對目標系統按某個原則的進行切分。切分的原則,要便於不一樣的角色,對切分出來的部分,並行或串行開展工做,通常並行才能減小時間;最後, 根據上2,使得這些部分之間可以進行有機的聯繫,合併組裝成爲一個總體,完成目標系統的全部工做。博客
簡單來講,架構就是肯定邊界、切分系統、有機合併系統三個步驟。若是沒法肯定系統的邊界,咱們就不知道這個系統有多大,有什麼內容從而沒法進行準確的切分,而若是沒法進行切分天然也就無從去談合併。或許你會說,切了又合,不是畫蛇添足麼。天然不是,這是架構必然的結果。基礎
由於架構之因此產生,是由於如下5種條件:一、必須由人執行的工做; 二、每一個人的能力有限(每一個人都有本身的強項,我的的產出受限於最短板,而且因爲人的結構限制,同時只能專一於作好一件事情); 三、每一個人的時間有限; 四、人對目標系統有更高的要求; 五、目標系統的複雜性使得單我的沒法完成這個系統,知足條件2,3。軟件
這5個條件也就決定了當一個系統沒法僅僅由某一個個體完成時,它就面臨着要被多人分工合做來解決的命運。所以要對系統進行切分,由不一樣角色來完成這些分工,此爲切分;但光完成這些肢解的工做是沒法知足系統總體的須要的,所以就有了有機合併這一步驟。並行
綜上所述,能夠獲得對架構的定義:人們根據本身對世界的認識,爲解決某個問題,主動地、有目的地去識別問題,並進行分解、合併,解決這個問題的實踐活動。時間
如今咱們初步瞭解了架構的定義,接下來要面臨的問題則是:作架構的時候,不少時候都是在一個新的領域解決問題,必需要快速進入並掌握這個領域,而後纔可以正確的解決問題。而咱們又要怎樣才能快速進入並掌握某個領域呢,這就牽涉到對「概念」的掌握和理解。行業
根據架構的定義,要作好架構所首先必須具有的能力,就是可以正確的認識概念。架構師
因此對一個軟件架構師來講,掌握對事物「概念」的理解能力是一項舉足輕重不可或缺的技能。由於,只有正確的認識概念,纔可以發現概念背後所表明的問題,進而認識目標領域所須要解決的問題,這樣纔可以爲作好架構打好基礎。工作
從上面「發現概念背後所表明的問題,進而纔可以認識目標領域所須要解決的問題」一句中咱們能夠看到,架構過程當中牢牢圍繞「問題」一詞。閱讀
如何快速的定位和識別問題,這是架構的起始。
按照個人理解,架構過程當中的「肯定目標系統的邊界」便是要識別問題定位問題,由於掌握了問題,咱們才知道面對的是什麼,從而規劃邊界。可是人人都有問題,那麼咱們就要精確到這是誰的問題,便是要找出問題的主體,才能使得問題更具備肯定性針對性,邊界才能規劃得更爲嚴格。
對於軟件構造師來講,找上門來的問題,都是別人的問題。而且,這個「問題」其實並不是真正的問題,由於若是問問題的人問的是真正的問題,那它確定能有辦法本身解決。正由於它提出的「問題」並不是真的問題,因此它沒辦法對症下藥,所以找上門來。而咱們要作的,就是識別出「問題」背後隱藏的真正須要解決的問題,這就已經解決了80%的問題。
總而言之,要作好架構師工做,首先要認識架構,其次要掌握對新事物概念的理解能力,最後就是要準確的識別問題。