初做系統設計,積累一些心得,大家一起討論。
1、 關於需求:
初做系統設計,容易先入爲主,收集需求的時候就考慮人力,技術等原因,在很前面的就把某些功能砍掉。
如果這樣分析問題,整個系統就沒有全貌,容易出現需求遺漏,設計不清楚,整個系統不完全,後續無法擴展。
A、 收集需求時,應該梳理系統全景圖,業務場景,輸入,輸出,流程描述等。
B、 儘量用客戶的語言,而不是抽象後的設計語言。用客戶化的語言方便和客戶做需求澄清,同時避免過早提煉設計導致需求變形。
C、 做需求排序。
D、 需求收集清楚後,映射到具體的系統架構/功能組件上,評估工作量。
E、 工作量評估出來之後,根據工作量和需求排序裁剪功能和需求。
2、 關於系統架構:
A、 需求澄清之後,抽象成系統架構,常用UML,0/1層架構圖等工具。
B、 根據需求列出功能全景。
C、 列出關鍵技術點。
D、 做競爭分析,業界是否有開源項目分析。
E、 對業務在做系統架構時,對功能和技術要做足夠的抽象,抽象層次不充分,後續考慮系統的擴展性會極大受限。
3、 技術選擇:
選擇合適的技術,這塊需要經驗積累。有經驗積累才瞭解每種技術的優劣以及和業務的適合度。而同時因爲設計師本身對某項技術有積累,而傾向於選擇熟悉的技術。
這塊建議重點參考業界經驗。每項技術有優勢,也必然有坑。
A、 編程語言方面:
對系統性能要求高,優先考慮C/C++。
企業級應用,優先考慮JAVA。
要求快速開發,可以考慮PYTHON。
B、 組件/框架:
各種開源框架很多Spring,OSGi,MVC,ESB等。
要充分考慮系統的擴展性,選用成熟的組件框架。這塊對於JAVA程序員來說,比較容易理解,C/C++程序員需要轉變思路。
C、 系統
選擇比較少,一般就是windows/linux,而且往往根據系統的應用很早就確定了。如果要支持多系統,就要考慮代碼移值性,越是高級預言,一般來說,移值性越好。
4、 編碼:
業界這方面很多思想,如
A、 面向接口編程
B、 組件化/模塊化
C、 設計模式
D、 開放封邊原則
歸根結低,就是要足夠抽象,足夠開放,足夠易擴展。
另外一個原則是在系統設計的時候就要充分考慮編碼問題,以及代碼框架,風格等。
系統設計心得
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
寫給自己的2015
jiezhu2007
2020-06-20 23:00:41
初識微服務
jiezhu2007
2020-02-23 09:06:33
博客導讀
jiezhu2007
2018-12-07 19:26:42
元數據的作用
jiezhu2007
2018-12-07 19:26:42
爲什麼寫《大數據架構詳解》這本書
jiezhu2007
2018-12-07 19:26:42
喜大普奔,《大數據架構詳解》一書 登陸 噹噹,京東熱賣榜
jiezhu2007
2018-12-07 19:26:42
搜索簡史
jiezhu2007
2018-12-07 19:26:42
基於元數據驅動的ETL
jiezhu2007
2018-12-07 19:26:42
閒聊GitHub
jiezhu2007
2018-11-28 13:08:05
ETL調度介紹
jiezhu2007
2018-11-26 04:20:52