10年感觸 架構是什麼? 消滅架構!

2021-09-23 07:21:04 字數 3131 閱讀 2476

架構是什麼?昨天下午我坐飛機從西安到太原的路上,不禁在思考這個問題。我做c#開發已經11年了,做過很多專案,經歷了很多專案開發過程中的折磨,在小企業兼職過不靠譜的「技術總監」,在大公司也當過碼工,見識過很多牛人,分析過牛人的**,並且也和團隊設計了osgi.net框架和iopenworks外掛程式倉庫平台。回想這麼多年的軟體開發經驗,我發現自己一直在追逐如何使軟體開發做的更好,如何讓乙個團隊開發出乙個像樣的軟體產品,而不是像大多數的國人生產的醜陋不堪、經常出現各種古怪問題的企業軟體。

目前除了做軟體開發平台,我們還深入到熱力、能耗監測等能源監控領域,進入這個領域之後,發現傳統的幾個大廠家,做的軟體都極其的爛,那軟體簡直醜的不能再醜了,送給我我都不要。這些廠家那麼有錢,他們做不出好軟體?真是不可思議。因此,我跟我的合作夥伴放出豪言,我們要做這個行業最好的軟體,要做到這個領域的第一。

哈哈,話說出來容易!當我在乙個特定環境下,帶領乙個新的、剛剛成立的團隊嘗試來開發這麼乙個軟體的時候,我卻發現我們軟體的第乙個版本也是其醜無比。這才恍然大悟,或許那些廠家的軟體開發也是這麼的方式來生產的。這樣生產出來的軟體要滿足使用者的需求,那這些開發人員得遭多少罪,才能夠在乙個不靠譜的軟體修修補補使其稍稍靠譜。

因此,我開始反思,怎麼能使乙個新團隊開發乙個好的軟體產品?

答案和我的標題是一樣的,我要依靠架構。那麼架構是什麼?

架構是乙個約定,乙個規則,乙個大家都懂得遵守的共識。那這是什麼樣的約定、什麼樣的規則、什麼樣的共識呢?

我以包為例,我經常出差,雙肩揹包裡裝了不少東西。膝上型電腦、電源、2個上網絡卡、滑鼠、usb線、一盒大的名片、一盒小的名片、口香糖、mini-displayport轉vga介面、u盤、幾根筆、小螺絲刀、洗漱用品、乾淨衣服、襪子、香水、老婆給我帶的抹臉膏(她嫌我最近累,臉有點黃)、錢包、token卡、耳機、紙巾、usb線、u盤等。這個包有很多格仔,最外面的格仔我放常用的,比如筆、紙、一盒小的名片等;中間的格仔一般放的是衣服、襪子、洗漱用品、香水等;靠背的那個大格仔放了膝上型電腦,和膝上型電腦相近的小格仔放的是兩個上網絡卡、mini-displayport轉vga介面、大盒名片、記事本,和膝上型電腦相近的大格仔放的是電源、滑鼠、口香糖等。

我閉著眼睛都可以將我的東西從包裡掏出來,閉著眼睛都可以將東西塞到包裡!但是,非常不幸的是,一旦我老婆整理過我的包,那我就很慘了,老是因為找不到東西而變得抓狂!更不幸的,要是我那個不到兩歲的「小可愛」翻過,就更不得了了。

這個包就是我放所有物品的「架構」,每乙個東西放置的位置就是我的「約定、規則、共識」。倘若我老婆也知道我的「架構」、我的「約定、規則、共識」,那麼不管她怎麼動我的包,我都照樣能夠輕易的拿東西或者放東西。進一步,如果我的同事也知道我的「架構」,知道我的「約定、規則、共識」,那麼他們什麼時候動我的包,我也毫無所知!

恍然大悟!我前乙個公司sybase,所有的產品都是基於乙個統一的外掛程式開發平台,每乙個產品都是乙個外掛程式,每乙個外掛程式都按照名字約定好了bo(controller)、go(view)、so(model/dataaccessor),定義好propertypage、propertydialog、wizard。我記得當我確定工作角色後,我就拿到乙個開發文件,裡面描述了這些目錄、名字的規則,有ui文字陳述規則、文字的大小規則等,一周內我就能夠修bug,乙個月之後我就能做new feature,然而,我此時對我們的平台、框架依然一無所知。過了1年後,產品依然遵守約定不斷進行改進,在維護過程中,我們竟然絲毫沒有感覺到累。基於這樣的框架做產品,我發現不管是什麼人,開發的樣式都完全一致。我以前竟然絲毫沒有覺得驚訝!

在公司混了兩年之後,有點成為老鳥了,還很得瑟的整了乙個《flex ui composition sdk》,就是基於flex的介面組合元件,搞的老漂亮了,**寫的好看,文件搞的正式,而且這個小sdk功能強大且很靈活。老大很給面子,讓我給美國的架構組show一下。我很激情的在半夜裡用**會議和那幫很牛的架構師、專家級工程師展示我的sdk。完事後,印象很深刻,乙個很資深的老外架構師提了一句,他覺得這個sdk有點複雜。

以前我不太理解為什麼他會說複雜。原因很簡單,以他的技術,使用這個sdk我覺得沒有太大的問題,只要稍稍學習就好了。後來,我終於慢慢想通了。這個sdk不好的地方在於太靈活了,靈活到無法構建乙個統一標準的、容易讓人遵守的「約定、規則、共識」。在沒有「共識」的支撐下,這樣的系統經過若干人維護後,那絕對玩完了,成「萬人坑」了,誰改**就坑誰,以後什麼事情都有可能發生的。

於是,我有一點點想明白了,架構就是這麼的乙個共識。當共識普遍傳遞的時候,架構就消失了,開發好的軟體就成為了習慣。

這就是為什麼有高人提出「消滅架構」!哦,天啊,這幫人太**了,他們這麼早就想通了!

談到這,我也有必要繼續分享一下,我在新的團隊是如何消滅架構的。方法很簡單,和sybase的前同事學習!

第一步:使用外掛程式架構

第二步:定製統一的介面框架

這個介面框架如下所示。

該框架約定了統一的介面樣式,比如按鈕、磁貼、標籤頁、導航條、進度條、form等等。

第三步:定製外掛程式的統一架構

每乙個外掛程式都建立5個目錄:controllers、dataaccessors、models、viewmodels、views,如下所示。每乙個目錄存放的**通過名字都知道是什麼了。

在主程式模板可以保護統一資料訪問、統一安全管理等功能模組。

哈哈,這個方法終於能使新團隊開發出具有較為統一風格、較高質量的軟體產品了!這時候,你會發現,所有人都不需要關心架構了,我們只有共識。

這樣,架構被成功消滅了,架構的目標就是消滅架構!但是,如果架構被消滅了,架構師不也被消滅了嗎?這個搞笑的問題留給讀者吧。

概念架構是什麼

概念架構是什麼 概念架構是直指系統目標的設計思想 重 擇,因而非常重要。方案建議書 技術 和市場彩頁中,都有它的身影,以說明產品 專案 方案的技術優勢。也因此,有人稱它為 市場架構 大量軟體企業,招聘系統架構師 sa 系統工程師 se 技術經理 售前技術顧問 方案經理時,職位能力中其實都包含了對 概...

概念架構是什麼

概念架構是什麼 概念架構是直指系統目標的設計思想 重 擇,因而非常重要。方案建議書 技術 和市場彩頁中,都有它的身影,以說明產品 專案 方案的技術優勢。也因此,有人稱它為 市場架構 大量軟體企業,招聘系統架構師 sa 系統工程師 se 技術經理 售前技術顧問 方案經理時,職位能力中其實都包含了對 概...

SOA架構是什麼

最近在與朋友聊天的時候聊到一些關於soa的話題,一直在做soa架構軟體,卻從來沒去翻閱過soa架構的標準定義,專門在網上查閱了很多 基本上對於soa架構的定義如下 soa架構 service oriented architecture,面向服務的體系結構,也叫面向服務架構 是指為了解決在intern...