通過閱讀,了解了架構的相關知識,作者通過人類社會的分工問題形象的說明了什麼是架構,解釋了什麼是「有關軟體整體結構與元件的抽象描述,用於指導大型軟體系統各個方面的設計」。應運而生的架構師則是「乙個最終確認和評估系統需求,給出開發規範,搭建系統實現的核心構架,並澄清技術細節、掃清主要難點的技術人員。主要著眼於系統的「技術實現」。因此他/她應該是特定的開發平台、語言、工具的大師,對常見應用場景能給出最恰當的解決方案,同時要對所屬的開發團隊有足夠的了解,能夠評估自己的團隊實現特定的功能需求需要的代價。 系統架構師負責設計系統整體架構,從需求到設計的每個細節都要考慮到,把握整個專案,使設計的專案盡量效率高,開發容易,維護方便,公升級簡單等。」
根據架構的定義,要做好架構所首先必須具備的能力,就是能夠正確的認識概念,能夠發現概念背後所代表的問題,進而才能夠認識目標領域所需要解決的問題,這樣才能夠為做好架構打好基礎。使用這些概念來解釋問題,甚至發明新的概念都是很容易的事。為什麼強調這個呢,因為做架構的時候,很多時候都是在乙個新的領域解決問題,必須要快速進入並掌握這個領域,然後才能夠正確的解決問題。如果缺乏足夠的認識和了解,在解決一些問題上就不能看清問題的本質,再多的努力也是杯水車薪,無濟於事。因此善於認識問題的概念對解決問題至關重要。
要做好架構之間的識別問題。要去思考真正的問題是什麼,不能正確認識什麼是問題,以及通過直覺出現的解決方案或者急於求成都是不可取的。要想識別問題,首先要搞清楚問題的主體是誰,要解決誰的問題,這就需要架構師對問題把握的準確性以及靈敏度了。當分析出問題的主體,便可以通過合理的方式分析主體存在的問題以便於問題的解決。並不是所有問題都有解決的方案,這時便從其他方面入手,將該問題帶來的損失降低。
自然社會中存在分工,軟體架構亦然。良好的分工即合作,達到物盡其用人盡其才、整體利益大於部分利益之和的效果。軟體架構切分的四個原則:
1.必須在連續時間內發生的乙個活動,不能切分。
2.切分出來的部分的負責人,對這個部分的權利和義務必須是對等的。為什麼必須是這樣呢? 因為如果權利和義務是不對等的話,會傷害每個個體的利益,分出來執行的效率會比沒有分出來還要低,實際上也損害了整體的利益,這違背了提公升整體利益的初衷。
3.切分出來的部分,不應該超出乙個自然人的負載。當然對於每個人的能力不同,負載能力也不一樣,需要不斷的根據實際情況調整,這實際上就是運營。
4.切分是內部活動,內部無任怎麼切,對整個系統的外部應該是透明的。如果因為切分導致整個系統解決的問題發生了變化,那麼這個變化不屬於架構的活動。當然很多時候當我們把問題分析的比較清楚的時候,整個系統的邊界會進一步的完善,這就會形成螺旋式的進化。但這不屬於架構所應該解決的問題。進化的發生,也會導致新的架構的切分。
實際上切分的過程就是建模的過程,每次對大問題的切分都會生成很多小問題,每個小問題就形成了不同的概念。理解這些概念進而被背後所代表的人的利益,使其利益得以滿足。架構切分的輸出實際上就是乙個系統的模型,對於乙個整體問題,有多少的相關方,每個相關方需要承擔哪些權利和義務,不同的相關方是如何結合起來完成系統的整體任務的。有的時候是從上往下切(企業),有的時候是從下往上合併,有的時候兩者皆有之(人類社會的發展)。而切分的結果最終都會體現在組織架構上,因為我們切分的實際上就是人的利益。發現利益點開發的軟體才有利可圖。
架構師要解決的是別人的問題,不是自己完成工作的問題,架構師需要有領導能力,也需要軟體開發的相關知識,才能在這個崗位上游刃有餘。
《架構漫談》閱讀筆記
在每個人都必須自己完成所有生活必須品的生產的時候,是沒有架構的 當然在個人來講,同一時刻只能做有限的事情,在時間上還是可能會產生架構的 一旦產生的分工,就把所有的事情,切分成由不同角色的人來完成,最後再通過交易,使得每個個體都擁有生活必須品,而不需要每個個體做所有的事情,只需要每個個體做好自己擅長的...
《架構漫談》閱讀筆記
架構漫談是由資深架構師王概凱執筆的系列專欄,通過對其閱讀,我從中逐步認識到了什麼是架構,怎樣做好架構,軟體架構如何落地等內容。一 什麼是架構 在軟體行業,對於什麼是架構一直有很多的爭論。事實上,架構在軟體發明時的n多年以前,就已經存在了,這個詞最早出現在建築上。架構產生的五個動力可以概括為 由個人執...
《架構漫談》閱讀筆記
軟體架構師如何工作?不同於軟體工程中只需要編碼的 低階 碼農,一名合格的軟體架構師首先要對架構有深刻的理解。那麼什麼是架構?從建築的角度解釋,架構是計畫 設計和建造建築物 物理結構的過程和生產活動。從這個定義上看,架構像乙個過程,但又不明確。為了弄清這個問題,我們首先要了解為什麼會產生架構?在最早期...