軟體設計的目標是建立適合人類思維的切片分塊 - KentBeck

banq發表於2021-01-28

軟體設計的目標是建立適合人類思維的塊或切片。軟體一直在增長,但人類的思維會達到極限,因此,如果要繼續進行軟體更改,我們必須進行切片和分塊。
這意味著軟體設計實際是人為人自己提供技術支援的過程(人類互助)。軟體設計是人類關係中的一項練習(banq注:道德倫理也是一種人類關係)。
 
眾說紛紜:
認知負擔很重要!從最小的功能程式碼塊到軟體體系結構中的最大元件,這都很重要。
 
我們的大腦處理複雜性的能力不僅僅只是分塊!我們的大腦喜歡層次結構+模式。在我們的設計中,我們可以透過分層和具有各種模式的圖式來支援層次結構。
 
在功能級別上進行切片和分塊,然後在上下文級別上進行抽象,以使不同的涉眾可以理解。

 
以我的經驗,僅僅為了切片而切片是不好的。例如,我從沒有看到從Monolith遷移到微服務的複雜性降低的情況,在大多數情況下,管理所有這些服務之間的整合比實際的Monolith困難得多。
(banq注:這種複雜性是用Monolith單體的標準來衡量的,比如原來一個團隊負責一個單體,好像很輕鬆,不復雜,到了微服務以後,一個團隊負責50個微服務,感覺複雜性增加,其實這沒有意識到人的大腦的參與過程,一個人的大腦只能負責一到幾個微服務,否則就會超過一個人的認知負擔,因此,五十個微服務可能需要幾個團隊單獨負責,從人員上看數量是增加了,但是在單體架構時期,你以為一個團隊的幾個腦袋負責一個單體就沒有認知負擔嗎?單體內部耦合在一起如同泥球,當然模組化分塊以後的單體是否只需要一個團隊的幾個腦袋就可以呢?其實模組化的單體與微服務的區別在於:微服務可以獨立開發快速測試部署,不必與其他模組組裝後再發布部署,因此,單體模組化架構只是一種過渡階段,讓你從一個團隊擴張到十個團隊很難,但是從一個團隊到三、五個團隊,再到十個團隊就感覺踏實了。)

 

相關文章