架構漫談(一):什麼是架構?

緣起

一直以來,在軟件行業,對於什麼是架構,都有很多的爭論,每個人都有自己的理解。甚至於很多架構師一說架構,就開始談論什麼應用架構、硬件架構、數據架構等等。我曾經也到處尋找過架構的定義,請教過很多人,結果發現,沒有大家都認可的定義。套用一句關於bigdata流行的笑話,放在架構上也適用:

Architecture is like teenage sex,everybodytalks about it,nobodyreally knows what is it。

事實上,架構在軟件發明時的N多年以前,就已經存在了,這個詞最早是跟隨着建築出現的。所以,我覺得有必要從源頭開始,把架構這個概念先討論清楚,只有這樣,軟件行業架構的討論纔有意義。

什麼是

架構的英文是Architecture,Wikipedia,架構是這樣定義的:

Architecture (Latin architectura, from theGreek ἀρχιτέκτων arkhitekton"architect", from ἀρχι- "chief"and τέκτων "builder") is both the process and the product ofplanning, designing, and constructing buildings and other physical structures。

從這個定義上看,架構好像是一個過程,也不是很清晰。爲了講清楚這個問題,我們先來看看爲什麼會產生架構。

爲什麼

想象一下,在最早期,每個人都完全獨立生活,衣、食、住、行等等全部都自己搞定,整個人類都是獨立的個體,不相往來。爲了解決人類的延續的問題,自然而然就有男女羣居出現,這個時候就出現了分工了,男性和女性所做的事情就會有一定的分工,可是人每天生活的基本需求沒有發生變化,還是衣食住行等生活必須品。

但是一旦多人分工配合作爲生存的整體,力量就顯得強大多了,所以也自然的形成了族羣:有些人種田厲害,有些人制作工具厲害,有些地方適合產出糧食,有些地方適合產出棉花等,就自然形成了人的分羣,地域的分羣。當分工發生後,實際上每個人的生產力都得到了提高,因爲做的都是每個人擅長的事情。

整個人羣的生產力和抵抗環境的能力都得到了增強。爲什麼呢?因爲每個人的能力和時間都是有限的,並且因爲人的結構的限制,人同時只能專心做好一件事情,這樣不得已就導致了分工的產生。既然分工發生了,原來由一個人幹生存所必需的所有的事情,就變成了很多不同分工的角色合作完成這些事情,這些人必須要通過某些機制合在一起,讓每個人完成生存所必需的事情,這實際上也導致了交易的發生(交易這部分就不在這裏展開了,有機會再討論)。

在每個人都必須自己完成所有生活必須品的生產的時候,是沒有架構的(當然在個人來講,同一時刻只能做有限的事情,在時間上還是可能會產生架構的)。一旦產生的分工,就把所有的事情,切分成由不同角色的人來完成,最後再通過交易,使得每個個體都擁有生活必須品,而不需要每個個體做所有的事情,只需要每個個體做好自己擅長的事情,並具備一定的交易能力即可。

這實際上就形成了社會的架構。那麼怎麼定義架構呢?以上面這個例子爲例,把一個整體(完成人類生存的所有工作)切分成不同的部分(分工),由不同角色來完成這些分工,並通過建立不同部分相互溝通的機制,使得這些部分能夠有機的結合爲一個整體,並完成這個整體所需要的所有活動,這就是架構。由以上的例子,也可以歸納出架構產生的動力:

1.   必須由人執行的工作(不需要人介入,就意味着不需要改造,也就不需要架構了)

2.   每個人的能力有限(每個人都有自己的強項,個人的產出受限於最短板,並且由於人的結構限制,同時只能專注於做好一件事情,比如雖然有兩隻眼睛,但是隻能同時專注於一件事物,有兩隻手,無法同時做不同的事情。ps.雖然有少部分人可以左手畫圓右手畫框,但是不是普遍現象)

3.   每個人的時間有限(爲了減少時間的投入,必然會導致把工作分解出去,給擅長於這些工作的角色來完成,見2,從而縮短時間)

4.   人對目標系統有更高的要求(如果滿足於現狀,也就不需要進行架構了)

5.   目標系統的複雜性使得單個人完成這個系統,滿足條件2,3(如果個人就可以完成系統的提高,也不需要別的人參與,也就不需要架構的涉及,只是工匠,並且一般這個工作對時間的要求也不迫切。當足夠熟練之後,也會有一定的架構思考,但考慮更多的是如何提高質量,提高個人的時間效率)

有人可能會挑戰說,如果一個人對目標系統進行分解,比如某人建一棟房子,自己採購材料,自己搭建,難道也不算架構嘛?如果對於時間不敏感的話,是會出現這個情況的,但是在這種情況下,並不必然導致架構的發生。如果有足夠的自覺,以及足夠的熟練的話,也會產生架構的思考,因爲這樣對於提高生產力是有幫助的,可以縮短建造的時間,並會提高房子的質量。事實上建築的架構就是在長期進行這些活動後,積累下來的實踐。

當這5個條件同時成立,一定會產生架構。從這個層面上來說,架構是人類發展過程中,由懵懵懂懂的,被動的去認識這個世界,變成主動的去認識,並以更高的效率去改造這個世界的方法。以下我們再拿建築來舉例加強一下理解。

最開始人類是住在山洞裏,住在樹上的,主要是爲了躲避其他猛獸的攻擊,以及減少自然環境的變化,對人類生存的挑戰。爲了完成這些目標,人類開始學會在平地上用樹木和樹葉來建立隔離空間的設施,這就是建築的開始。但是完全隔離也有很多壞處,慢慢就產生了門窗等設施。

建築的本質就是從自然環境中,劃出一塊獨佔的空間,但是仍然能夠通過門窗等和自然環境保持溝通。這個時候架構就已經開始了。對地球上的空間進行切分,並通過門窗,地基等,保持和地球以及空間的有機的溝通。當人類開始學會用火之後,茅棚裏面自然而然慢慢就會被切分爲兩部分,一部分用來燒飯,一部分用來生活。當人的排泄慢慢移入到室內後,洗手間也就慢慢的出現了。這就是建築內部的空間切分。

這個時候人們對建築的需求也就慢慢的越來越多,空間的切分也會變成很多種,組合的方式也會有很多種,比如每個人住的房子,羣居所產生的宗教性質的房子,集體活動的房子等等。這個時候人們就開始有意識的去設計房子,架構師就慢慢的出現了。一切都是爲了滿足人的越來越高的需求,提升質量,減少時間,更有效率的切分空間,並且讓空間之間更加有機的進行溝通。這就是建築的架構以及建築的架構的演變。

小結

總結一下,什麼是架構,就是:

1.   根據要解決的問題,對目標系統的邊界進行界定。

2.   並對目標系統按某個原則的進行切分。切分的原則,要便於不同的角色,對切分出來的部分,並行或串行開展工作,一般並行才能減少時間。

3.   並對這些切分出來的部分,設立溝通機制。

4.   根據3,使得這些部分之間能夠進行有機的聯繫,合併組裝成爲一個整體,完成目標系統的所有工作。

同樣這個思考可以展開到其他的行業,比如企業的架構,國家的架構,組織架構,音樂架構,色彩架構,軟件架構等等。套用三國演義的一句話,合久必分,分久必合。架構實際上就是指人們根據自己對世界的認識,爲解決某個問題,主動地、有目的地去識別問題,並進行分解、合併,解決這個問題的實踐活動。架構的產出物,自然就是對問題的分析,以及解決問題的方案:包括拆分的原則以及理由,溝通合併的原則以及理由,以及拆分,拆分出來的各個部分和合並所對應的角色和所需要的核心能力等。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章