系統設計心得

初做系統設計,積累一些心得,大家一起討論。

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、 開放封邊原則

歸根結低,就是要足夠抽象,足夠開放,足夠易擴展。

另外一個原則是在系統設計的時候就要充分考慮編碼問題,以及代碼框架,風格等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章