架構在軟體發明的很多年前就已經存在了,但是架構的定義一直不是很明确。
由于産生分工把所有事情劃分為由不同角色的人來完成然後再進行交易,這實際上就形成了社會的架構。對于不同的行業,都可以有同樣的思考,根據自己對世界的認識,為解決某個問題,主動地、有目的地去識别問題,并進行分解、合并,解決這個問題的實踐活動。架構實際上解決的是人的問題,而概念是認識這個世界的基礎。根據架構的定義,能夠正确的認識概念,能夠發現概念背後所代表的問題,進而才能夠認識目标領域所需要解決的問題,這樣才能夠為做好架構打好基礎。做好架構首先要識别出需要解決的問題,這個能力基本上決定了架構師的水準。架構師應該問的第一個正确的問題就是目标問題是誰的問題。找出問題的主體是做架構的首要問題,要明白是誰的問題,有什麼問題。
切分就是利益的調整,由于利益,人們認識到要主動的去切分一個系統。構架切分的最終結果都會展現在組織構架上,隻有這樣才能夠讓構架落地并推進,構架切分的結果一定是樹狀。軟體就是在硬體上編寫的程式,用來控制硬體的行為。利用軟體使每個人能夠負擔的工作越來越多,成本越愛越低。軟體工程師不堪重負,自然而然就分拆為不同的角色,形成了一個獨特的架構體系。軟體實際上就是把現實生活模拟到計算機中,需要解決業務以及計算機問題。軟體架構的落地,需要軟體的組織架構和流程來保障,不管怎麼分拆,所達到的目标沒有任何變化,就是完成業務在計算機中的虛拟化。
要成為架構師,必須要明白解決的是别人的問題,而不是自己完成工作的問題,成本越低越号,并且這個成本是長期成本。明白如果問題不解決,究竟誰會有利益的損失? 如果問題解決了,究竟誰會有收益,誰的收益最大?這兩個問題才能知道問題的主體 。架構師是要去平衡别人的利益,甚至去調整别人的利益,但是架構師也一定要了解一定的技術以及語言的知識。結合每個部署單元所承擔的責任,可以拆分成表達業務邏輯的代碼、對使用者提供通路并儲存業務邏輯運作結果的代碼。技術是為了解決業務的問題而産生的,沒有業務就沒有技術存在的前提,對于架構師來說專注計算機相關的技術,忽略業務本身,可能會産生技術和業務沖突的問題,架構師應該承擔起解決業務問題的角色來,專注于Business Domain和軟體本身的架構,讓技術人員緻力于為業務在計算機中跑起來而努力。隻有把這兩者很好的結合起來,才能更好地完成業務的目标,才會讓軟體更好地服務于大家。架構師要具備準确識别采用什麼技術的能力,考慮的主要因素也是長期的成本和收益。
這就是看完架構漫談之後對于架構的認知。