架構的產生是因爲人的能力有限,從而產生了分工,人人各司其職,經過溝通來得到生活的必須品,這就產生了架構。架構就是把一個總體切分紅不一樣的部分,由不一樣角色來完成這些分工,並經過創建不一樣部分相互溝通的機制,使得這些部分可以有機的結合爲一個總體,並完成這個總體所須要的全部活動。架構解決的是人的問題。作好架構的能力,首先要對系統有正確的概念,有正確的理解,才能瞭解問題的本質。架構
作好架構首先須要作的就是識別出須要解決的問題,而解決問題首先要識別問題的主體,即產生問題的主體。一旦肯定了主體,就去搞明白主體有哪些問題。軟件架構就是解決別人問題的。架構須要對總體進行切分,切分就是對利益的調整。切分就是明確地去界定每一個人工做的責任和權利。當系統的利益相關人的責任和權力產生了問題,就須要構架去從新切分,從未確保每一個人的利益。切分的原則:一、必須在連續時間內發生的一個活動,不能切分。二、切分出來的部分的負責人,對這個部分的權利和義務必須是對等的三、切分出來的部分,不該該超出一個天然人的負載。四、切分是內部活動,內部無任怎麼切,對整個系統的外部應該是透明的。切分架構的輸出是一個系統的模型,明確的界定了功能的邊界,每一個相關人的權利和義務。部署
軟件就是現實世界的一個模擬,使用來解決人們平常生活中的問題的。軟件架構是將軟件的工做進行拆分、分解,以更好更快的解決人們問題的。軟件的架構分爲部署的架構和代碼的架構。部署的架構就是能夠將軟件拆分部署到不一樣的機器上,仍能夠正常運行。代碼的架構就是軟件工做人員的分工,使之能夠獨立的完成代碼的某個部分。成爲軟件架構師須要咱們有足夠的自信,克服時間恐懼和壓力,把完成別人工做當成本身的最大利益。效率
架構師是要去平衡別人的利益,甚至會調整別人的利益的。架構師須要有着對技術熟練的運用,由於須要應用技術解決別人的問題,但更重要的是對問題的分析和解決問題的能力。咱們真正想快速的完成代碼工做,就要克服本身對時間的恐懼,真正的去研究業務的問題,相關人的利益,把這個變成咱們的習慣。技術是爲了解決業務的問題而產生的,沒有了業務,技術就沒有了存在的前提。有了更好的技術,效率更差的技術,就會慢慢的被淘汰,消失,一切都聽從人類的利益訴求——也就是業務。不一樣的技術組合在一塊兒,造成一個完整的架構解決方案,共同完成業務的目標。準確識別採用什麼技術的能力,也是架構師所要具有的能力之一。考慮的主要因素也是長期的成本和收益。軟件