架构漫谈读后感之软件架构师如何工作
這學(xué)期開始學(xué)習(xí)軟件架構(gòu),通過閱讀王概凱架構(gòu)漫談九篇博客,對軟件架構(gòu)有了進(jìn)一步的了解。感覺學(xué)習(xí)了架構(gòu)之后,能對自己的學(xué)習(xí)和實踐有更大的幫助。架構(gòu)漫談主要從什么是架構(gòu)、認(rèn)識概念是理解架構(gòu)的基礎(chǔ)、如何做好架構(gòu)之識別問題、如何做好架構(gòu)之架構(gòu)切分、什么是軟件、軟件架構(gòu)到底是要解決什么問題、不要空設(shè)架構(gòu)師這個職位,給他實權(quán)、從架構(gòu)的角度看如何寫好代碼、理清技術(shù)、業(yè)務(wù)和架構(gòu)的關(guān)系這九個方面來介紹軟件架構(gòu)。
首先要了解到底什么是架構(gòu)。在剛開始是沒有架構(gòu)的,在社會發(fā)展的過程中就逐漸形成了社會的架構(gòu)。把一個整體切分成不同的部分,由不同角色來完成這些分工,并通過建立不同部分相互溝通的機(jī)制,使得這些部分能夠有機(jī)的結(jié)合為一個整體,并完成這個整體所需要的所有活動,這就是架構(gòu)。總的來說架構(gòu)就是:根據(jù)要解決的問題,對目標(biāo)系統(tǒng)的邊界進(jìn)行界定。并對目標(biāo)系統(tǒng)按某個原則的進(jìn)行切分。切分的原則,要便于不同的角色,對切分出來的部分,并行或串行開展工作,一般并行才能減少時間。并對這些切分出來的部分,設(shè)立溝通機(jī)制。根據(jù),使得這些部分之間能夠進(jìn)行有機(jī)的聯(lián)系,合并組裝成為一個整體,完成目標(biāo)系統(tǒng)的所有工作。
只有熟悉了架構(gòu)的概念才能更好的理解架構(gòu)。每個概念實際上所解決的,還是人遇到的某個特定的問題,我們把解決問題的解決方案,給定了一個名字,這個名字就是對應(yīng)的某個特定的概念。抽象這個概念是很重要的,在做架構(gòu)師的群體中,不談抽象好像就不是一個合格的架構(gòu)師。根據(jù)架構(gòu)的定義,要做好架構(gòu)所首先必須具備的能力,就是能夠正確的認(rèn)識概念,能夠發(fā)現(xiàn)概念背后所代表的問題,進(jìn)而才能夠認(rèn)識目標(biāo)領(lǐng)域所需要解決的問題,這樣才能夠為做好架構(gòu)打好基礎(chǔ)。在做架構(gòu)的時候,很多時候都是在一個新的領(lǐng)域解決問題,必須要快速進(jìn)入并掌握這個領(lǐng)域,然后才能夠正確的解決問題。
作為軟件工程師或者架構(gòu)師,我們大部分時候是要去解決別人的問題。架構(gòu)師在解決問題時候,找出問題的主體,是做架構(gòu)的首要問題。更進(jìn)一步,架構(gòu)師要解決的,基本都是別人的問題,不是自己的問題。架構(gòu)師都要有這個自覺:發(fā)現(xiàn)問題永遠(yuǎn)都比解決問題來的更加重要。一旦確定了主體,剩下的就是去搞明白主體有哪些問題。這個就比較直接了,常用的方式就是直接面對主體進(jìn)行訪談,深入到主體的工作生活當(dāng)中,體驗并感受這些問題,甚至通過數(shù)據(jù)的反饋來定位問題。從問題暴露的點,一點點去溯源查找,一定會找出來誰的問題,以及是什么問題。總的來說要正確的認(rèn)識問題,需要問兩個問題:這是誰的問題?有什么問題?
在識別出是誰的問題之后,需要做調(diào)整,那么就必須要有所動作,做相應(yīng)的調(diào)整。這個調(diào)整就是架構(gòu)的切分。切分就是利益的調(diào)整。所有的切分決策都不能夠違背這一點,這是大方向。切分要掌握必要的一些原則:確保我們不能違反人性,因為維護(hù)自己的利益,是每個人的本性。只有權(quán)利和義務(wù)對等才能做到這一點。所有的架構(gòu)分拆,都應(yīng)該是形成樹狀的結(jié)果,不應(yīng)該變成有向圖,更不應(yīng)該是無向圖實際上切分的過程就是建模的過程,每次對大問題的切分都會生成很多小問題,每個小問題就形成了不同的概念。軟件架構(gòu)師了解清楚架構(gòu)之后也要認(rèn)識什么是軟件。軟件其實就是在計算機(jī)上以模擬人為目標(biāo),在計算機(jī)硬件上編寫出的,用來控制硬件行為的程序。有了軟件之后,實際上,我們是把我們?nèi)粘I钪兴龅氖虑?#xff0c;包括我們自己本人都一起虛擬化到了計算機(jī)中。而人則演化成了,通過計算機(jī)的輸入輸出設(shè)備,控制計算機(jī)中的自己,來完成日常的工作,以及與其他人的溝通。成本是我們使用軟件的主要動力,可以減少大量的人員培訓(xùn),減少雇員的數(shù)目。不管如何發(fā)展,模擬人的所有行為都是一個大的趨勢。軟件實際上是對現(xiàn)實生活的模擬,虛擬化。也就是說,軟件的主要目的,還是把人類的生活模擬化,提供更低成本,高效率的新的生活。從這個角度來看,軟件主要依賴的還是人類的生活知識。軟件工程師的職責(zé)在這個浪潮中,不堪重負(fù),自然而然就分拆為不同的角色,形成了一個獨特的架構(gòu)體系。
軟件架構(gòu)實際上包括了:代碼架構(gòu),以及承載代碼運行的硬件部署架構(gòu)。從架構(gòu)的角度寫好代碼,邏輯的出現(xiàn)要分對地方。技術(shù)總是在人類解決對業(yè)務(wù)的要求不斷提高的情況下產(chǎn)生,目的也是為了獲取更大更好的利益。技術(shù)是為了解決業(yè)務(wù)的問題而產(chǎn)生的,沒有了業(yè)務(wù),技術(shù)就沒有了存在的前提。也就是說,一般是先有技術(shù),才會有架構(gòu)。
軟件架構(gòu)師在工作中是要去平衡別人的利益,甚至?xí){(diào)整別人的利益的。一旦架構(gòu)師是全心全意的為別人的利益服務(wù),自然而然的架構(gòu)師就擁有了強有力的影響力,肯定會是一個leader。架構(gòu)師必須是一個組織的領(lǐng)導(dǎo)人,有權(quán)利調(diào)動這個組織的架構(gòu),才能夠更好的發(fā)揮架構(gòu)師的作用,更好的把利益的調(diào)整落到實處。架構(gòu)師的義務(wù)就是發(fā)現(xiàn)問題并且解決問題。架構(gòu)師還必須要明白,所給出的解決方案架構(gòu)的分拆、合并方案,只有讓問題的主體的權(quán)責(zé)對等,才能夠真正的解決別人的問題。一般明白了問題的主體,以及主體的利益所在,做到這一點也沒有問題。架構(gòu)師對于技術(shù)和語言也要熟悉。因為技術(shù)和語言,都是用來識別和解決所服務(wù)的主體的權(quán)責(zé),保護(hù)并提升所服務(wù)的主體的權(quán)利的。最后準(zhǔn)確識別采用什么技術(shù)的能力,也是架構(gòu)師所要具備的能力之一。考慮的主要因素也是長期的成本和收益。通過這九篇博客,對于架構(gòu)師有了進(jìn)一步的了解。我總結(jié)了架構(gòu)師在工作中應(yīng)該注意的問題。和架構(gòu)師在工作中應(yīng)該如何解決問題。
?
轉(zhuǎn)載于:https://www.cnblogs.com/kangy123/p/8524985.html
總結(jié)
以上是生活随笔為你收集整理的架构漫谈读后感之软件架构师如何工作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js数组中foEach和map的用法详解
- 下一篇: VMware vSphere学习整理