日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
換個(gè)角度,重新理解架構(gòu)

?什么是軟件架構(gòu)?

“系統(tǒng)設(shè)計(jì)”可以用來(lái)描述我在系統(tǒng)中定義的某些規(guī)則或設(shè)計(jì)的明確的模塊?還是說(shuō),它就是我定義的具體的類和函數(shù)?

如果我們從敏捷軟件開(kāi)發(fā)的角度來(lái)看軟件架構(gòu),我們很快就會(huì)得出這樣的結(jié)論:在實(shí)際實(shí)施之前,幾乎不可能在詳細(xì)級(jí)別上定義類和模塊,因?yàn)樾枨罂赡軙?huì)隨著Sprint的進(jìn)行而快速變化,而應(yīng)用程序本身也會(huì)隨著時(shí)間的推移而不斷變化。

那么,在開(kāi)始正式實(shí)現(xiàn)軟件系統(tǒng)之前,用來(lái)具象化我們將要開(kāi)發(fā)的系統(tǒng)的軟件架構(gòu)到底是什么?

根據(jù)Ralph Johnson的說(shuō)法,軟件架構(gòu)被定義為:“架構(gòu)是非常重要的東西,不管它是什么!”

這個(gè)定義一開(kāi)始肯定會(huì)讓人清醒下來(lái),然而它卻蘊(yùn)含著許多真理。

一個(gè)軟件架構(gòu)基本上代表了一個(gè)軟件團(tuán)隊(duì)所做的決定。它不是關(guān)于記錄或畫圖,而是關(guān)于開(kāi)發(fā)團(tuán)隊(duì)一起為軟件設(shè)計(jì)做出的決定。軟件開(kāi)發(fā)者、設(shè)計(jì)者、產(chǎn)品經(jīng)理因此在具體的架構(gòu)決策上達(dá)成一致,如REST或GraphQL、Python或JavaScript、開(kāi)發(fā)兩個(gè)服務(wù)或只寫一個(gè)服務(wù)。

這也使軟件架構(gòu)師的角色有了完全不同的意義。你不是在黑暗的柜子里用UML和BPMN設(shè)計(jì)一個(gè)軟件架構(gòu),然后把圖交給軟件團(tuán)隊(duì)。這個(gè)角色的目的是指出軟件架構(gòu)的不同觀點(diǎn),并與團(tuán)隊(duì)一起為軟件架構(gòu)做出決定,而不是替團(tuán)隊(duì)做出架構(gòu)設(shè)計(jì)。畢竟,團(tuán)隊(duì)最終會(huì)實(shí)施它。

那么,什么是最好的軟件架構(gòu)?

有幾種軟件架構(gòu)風(fēng)格,如微服務(wù)或基于空間的架構(gòu)。但顧名思義,它們只是可以用于決策的風(fēng)格。

這實(shí)際上很快就回答了什么是最好的軟件架構(gòu)的問(wèn)題,從來(lái)沒(méi)有最好的軟件架構(gòu)這一說(shuō)。一個(gè)團(tuán)隊(duì)齊心協(xié)力、盡己所能地為這個(gè)軟件考慮作出的決定,是為整個(gè)團(tuán)隊(duì)和軟件需求所能給出的最佳軟件架構(gòu)。這是因?yàn)樗械膱F(tuán)隊(duì)資源都被用來(lái)讓團(tuán)隊(duì)的每個(gè)個(gè)體都參與到?jīng)Q策過(guò)程中,以現(xiàn)有的人員開(kāi)發(fā)出最好的架構(gòu)。

如果完全相同的需求提供給另一個(gè)團(tuán)隊(duì),可能會(huì)做出完全不同的架構(gòu)策略。然而,這些策略又會(huì)是整個(gè)團(tuán)隊(duì)的最佳決定。這是全體軟件開(kāi)發(fā)人員能夠?qū)崿F(xiàn)所要開(kāi)發(fā)的軟件的唯一方法。

盡管如此,在我的職業(yè)生涯中,有一種架構(gòu)風(fēng)格是我所了解的,并且經(jīng)得起時(shí)間的考驗(yàn)。最重要的是,我?guī)缀鯖](méi)有再開(kāi)發(fā)過(guò)不是這種架構(gòu)風(fēng)格的應(yīng)用程序。

我們談?wù)摰氖穷I(lǐng)域驅(qū)動(dòng)的六邊形架構(gòu),或者也叫領(lǐng)域驅(qū)動(dòng)的六邊形。這種架構(gòu)風(fēng)格是Eric Evans的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)、Robert C. Martin的Clean Architecture和Clean Coder以及Alistair Cockburn的六邊形架構(gòu)(也叫Ports and Adapters)的混合體。在這里,來(lái)自知名程序員的不同概念被結(jié)合起來(lái),以實(shí)現(xiàn)清晰的規(guī)則和清晰的應(yīng)用結(jié)構(gòu),但仍將個(gè)別架構(gòu)的決定,如REST或GraphQL,Python或NodeJS,留給團(tuán)隊(duì)。

這里有一張領(lǐng)域驅(qū)動(dòng)六邊形的圖片,它很好地說(shuō)明了如何定義清晰的規(guī)則,但又為架構(gòu)決策留下了足夠的空間。

  領(lǐng)域驅(qū)動(dòng)六邊形

這可以用道路交通的一個(gè)例子來(lái)作比較。讓道路上的每個(gè)人都遵守同樣的規(guī)則,比讓少數(shù)人遵守類似的規(guī)則,然后讓其他人都跟著這少部分人來(lái)做要好。在道路交通中,人們做出什么樣的決定取決于每個(gè)個(gè)體,但車流的方向卻是明確規(guī)定的。那么,其實(shí)我們只要遵守最終得到的規(guī)則就好了。

放到架構(gòu)設(shè)計(jì)的案例中:從長(zhǎng)遠(yuǎn)來(lái)看,整個(gè)團(tuán)隊(duì)對(duì)架構(gòu)的“編排”比起團(tuán)隊(duì)中部分人對(duì)架構(gòu)進(jìn)行“協(xié)調(diào)”會(huì)具有更好的表現(xiàn):這些人確實(shí)能夠快速推動(dòng)架構(gòu)的決策和演進(jìn),但其余的團(tuán)隊(duì)成員卻被忽略了。

因此,從長(zhǎng)遠(yuǎn)來(lái)看,協(xié)調(diào)得到的軟件架構(gòu)在長(zhǎng)期的波動(dòng)中無(wú)法承受簡(jiǎn)單的變更和較短的開(kāi)發(fā)實(shí)施時(shí)間,而“編排”的軟件架構(gòu)即使最初會(huì)因?yàn)閳F(tuán)隊(duì)成員之前的高同步成本而變得遲緩,但持久地卻能產(chǎn)生高效的結(jié)果,抵御波動(dòng)。總的來(lái)說(shuō),相互之間的開(kāi)發(fā)比相互之間的競(jìng)爭(zhēng)要有趣得多。


標(biāo)題名稱:換個(gè)角度,重新理解架構(gòu)
地址分享:http://www.5511xx.com/article/dpoided.html