做軟件架構設計,你應該這樣去考慮

今天Relax想跟大家聊聊軟件架構設計方面的內容,很多程序員小夥伴們都將架構師或者技術專家作爲自己的職業發展目標,但是大家有沒有想過這樣的一個問題呢?如果現在讓你給你們公司將要開發的一個新產品做一個架構設計或者系統分析,你將會從哪些方面去思考呢?大家不妨先花個兩三分鐘好好想一想這個問題。

Relax不準備直接聊這個話題,讓我們先聊一下生活中大家都比較熟悉的一個場景–蓋房子。有人肯定會說Relax,你要聊房價我還是挺感興趣的,但是我是一個程序員,你跟我聊蓋房子幹啥啊,哈哈,別急,且聽Relax下面慢慢道來。

如果上面的問題大家沒啥思路,那我們就把這個問題換成蓋房子,如果讓你設計建設一個小區樓盤,你會從哪些方面去考慮。Relax想了一下,覺得可以從這樣幾個方面去考慮:

1、確定小區的地理位置及周邊環境,它在哪座城市哪個區的具體地方,樓盤周圍是什麼樣的環境,旁邊是否有學校、地鐵、醫院等等。

2、確定小區的組成要素以及具體分佈,組成要素包含比如小區樓棟、配套幼兒園、綠化帶、廣場、停車場等等,還有這些組成要素各自分佈在小區的具體位置,以及小區的出口分佈,消防通道的設計等等。

3、確定2中每個要素的構造,比如樓棟的朝向、入口,一梯兩戶還是兩梯四戶等等。

4、確定使用的建築材料,鋼筋、混凝土、水泥、石灰和沙子等等。

5、確定小區的戶型設計,是別墅還是複式,是高層還是低層等等。

6、確定小區外部資源的接入以及廢物排出,天然氣、電力、自來水以及電信網絡的接入,生活垃圾和污水的排出等等。

7、確定6中資源接入的具體線路,比如天然氣管道從小區到每家每戶的鋪設線路。

好了,就列這麼幾條吧,下面還是回到我們最初的問題上,就是進行軟件架構設計時,我們應該從哪些方面去考慮。Relax就順着蓋房子的思路去想一想:

1、確定小區的地理位置及周邊環境—那我們是不是得考慮一下我們這個系統或者產品運行時所處的位置以及上下游對接的系統呢,比如一款網絡產品,它處在網絡的哪個位置,與之相連的網絡設備有哪些。

2、確定小區的組成要素以及具體分佈—那我們是不是得考慮一下我們這個系統的一個整體組成,現在的系統大多都是分佈式的,我們這個系統可以分成哪幾個子系統,每個子系統之間是如何對接工作的,系統需要提供哪些接口與外部對接。

3、確定每個要素的構造—那我們是不是得考慮一下每個子系統的內部功能的劃分以及對外的接口

4、確定使用的建築材料—那我們是不是要考慮一下每一個子系統能夠被劃分成哪些組件,由每個組件去完成一個最最基本的功能。

5、確定小區的戶型設計—那我們是不是應該考慮一下系統的硬件部署,任何一個軟件系統都是依賴於硬件平臺的,我們的系統是放在FPGA/ARM硬件平臺還是通用x86服務器上,是分佈式部署還是集中部署。

6、確定小區外部資源的接入以及廢物排出—那我們是不是得考慮一下系統的輸入活動或者說是自身任務,一個系統最基本的輸入最少有兩個,一個是用戶的管理,因爲軟件系統必須需要管理員的配置操作,另外一個就是系統完成自身功能需要的輸入,比如攝像頭的輸入就是聲音和圖像,網絡設備的輸入就是報文,還有一個就是系統本身自發設定的系統任務,比如某些定時任務等等。

7、確定6中資源接入的具體線路—那我們是不是得考慮一下,當系統從外界接受到某種類型的輸入時,系統內部的子系統之間或者組件模塊之間是如何協同處理這個輸入的,也就是說對於某個特定的輸入,系統內部模塊的處理流程是怎樣的。

上面的類比肯定有不嚴謹的地方,Relax只是希望通過這種方式去引發那些希望日後走架構師或者技術專家路線的程序員小夥伴的思考,如果你看完這篇文章能開始思考這個問題或者能認同這篇文章中的哪怕是部分觀點,Relax寫這篇文章的目的就達到了。

好了,軟件架構設計之思想篇就聊到這兒了,後面Relax還想通過幾篇文章再深入的聊聊這個話題,敬請關注。

想要Relax寫出更精彩的文章?那麼希望老鐵別吝嗇你的三連擊哦
1、點贊,可以讓更多的人看到這篇文章
2、關注我的原創微信公衆號『Relax聊技術』,第一時間閱讀我的文章。
3、也歡迎關注我的博客哦。
Relax聊技術

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章