我看《架構漫談》——1

    我記得我剛報選這個專業的時候,個人一個大我一屆的朋友問我學什麼專業的,我告訴他是軟件工程。他聽見後和我說軟件好啊,好工做掙的錢多,尤爲是「價購」師!這就是我當時理解的架構,我記得我當時還像個傻子同樣給別人解釋啥是「價購」,終於在後來的上課才理解是「架構」,如今想一想還難免臉紅。架構師這個職業其實並不實在軟件中來的,全部工科專業應該都會發展架構師這個職業,不過最早出自建築工程。程序員

    今讀《架構漫談》,其實對我敲代碼,在我的編程能力上沒有任何幫助,由於他不是告訴咱們怎麼去敲代碼,什麼語法怎麼用;他是更深層次的東西,會敲代碼是專業基礎,也是最低級的東西;做爲程序員應該懂得一個項目中怎麼去敲代碼,怎麼讓本身的代碼更合理更符合用戶的想法,這就用到了軟件工程中重要的職業——架構師。編程

  1. 1.    欲聊架構師,先理解架構。

架構,早在好久之前就出現了,因人而現。三個和尚沒水喝的故事告訴咱們,當有三個和尚的時候,就應該把每一個人的分工協調開,這樣既不會讓你們沒水喝,還能提升你們的工做效率。雖然不是特別貼切,可是大體有這個意思。想象一下,在最先期,每一個人都徹底獨立生活,衣、食、住、行等等所有都本身搞定,整我的類都是獨立的個體,不相往來。爲了解決人類的延續的問題,天然而然就有男女羣居出現,這個時候就出現了分工了,男性和女性所作的事情就會有必定的分工,但是人天天生活的基本需求沒有發生變化,仍是衣食住行等生活必須品。可是一旦多人分工配合做爲生存的總體,力量就顯得強大多了,因此也天然的造成了族羣:有些人種田厲害,有些人制做工具厲害,有些地方適合產出糧食,有些地方適合產出棉花等,就天然造成了人的分羣,地域的分羣。當分工發生後,實際上每一個人的生產力都獲得了提升,由於作的都是每一個人擅長的事情。架構

若是在方式上表述,架構就是將任務劃分,分工解決並在最後再將結果有機結合,從而完成任務。簡單地說:架構實際上解決的是人的問題。工具

  1. 2.  架構師作什麼?怎麼作?

架構師都充當什麼角色呢?妻子和丈夫的例子很好的給了一個介紹。在一個正常工做的團體中,每一個人都會對同一問題有不一樣的見解,關照角度不一樣,也就致使結果不能有機的結合,架構師在這裏的作法就是提出第一個問題,固然他須要真的明白用戶需求,提出惟一的一個角度,統一你們的目的這樣就促成了任務的行進。效率

由上面的分析能夠看出,找出問題的主體,是作架構的首要問題。這也是我一再強調的,咱們要解決的問題,必定都是人的問題。更進一步,架構師要解決的,基本都是別人的問題,不是本身的問題。再進一步,咱們必定要明白,任何找上架構師的問題,絕對都不是真正的問題。爲何呢? 由於若是是真正的問題的話,提問題過來的人確定都可以本身解決了,不須要找架構師。架構師都要有這個自覺:發現問題永遠都比解決問題來的更加劇要。基礎

明確目標問題以後,就是開工了,那問題又來了:如何開工?問問架構師吧!工做的劃分就是你們利益劃分,由於必需要讓每一個人在時間和空間上都不能由太大的負載,並且還要協調你們的權利和義務等等。由上述兩個緣由咱們能得出劃分的原則:軟件

a)   必須在連續時間內發生的一個活動,不能切分。好比孕婦懷孕,必需要 10 月懷胎,不可以切成 10 我的一個月完成。語法

b)   切分出來的部分的負責人,對這個部分的權利和義務必須是對等的。比方說媽媽 10 月懷胎,媽媽有權利處置小孩的出生和撫養,一樣也對小孩的出生和撫養負責。爲何必須是這樣呢? 由於若是權利和義務是不對等的話,會傷害每一個個體的利益,分出來執行的效率會比沒有分出來還要低,實際上也損害了總體的利益,這違背了提高總體利益的初衷。軟件工程

c)    切分出來的部分,不該該超出一個天然人的負載。固然對於每一個人的能力不一樣,負載能力也不同,須要不斷的根據實際狀況調整,這實際上就是運營。程序

d)   切分是內部活動,內部無任怎麼切,對整個系統的外部應該是透明的。若是由於切分致使整個系統解決的問題發生了變化,那麼這個變化不屬於架構的活動。固然不少時候當咱們把問題分析的比較清楚的時候,整個系統的邊界會進一步的完善,這就會造成螺旋式的進化。但這不屬於架構所應該解決的問題。進化的發生,也會致使新的架構的切分。

e)   架構切分的結果必定是一個樹狀,這也是爲何會產生分層。層數越多溝通越多,效率越低,分層要越少越好。儘量變成一顆平衡樹,才能讓整個系統的效率最大化。

相關文章
相關標籤/搜索