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