最近有學弟問我,拿到一個軟件需求,但是卻不知道怎麼才能更好地架構好整個系統,在此,我簡單地根據我的經驗介紹一下我是怎麼設計一個軟件系統的吧。當然,這只是我的一個簡單的思路而已,真正涉及到一個大的軟件項目,可能還要複雜很多很多。
要設計一個面向對象的系統,建議遵循如下思路:
1. 調研,完成一份詳細的需求文檔
(1)系統要實現什麼功能
(2)性能上有什麼特別的要求
(3)哪些是技術難點,可以的話對技術難點首先測試攻關
2. 確定系統的運行環境
(1)系統運行的操作系統:widows,linux,unix等
(2)使用何種編程語言:c/c++,java,C# 等
(3)使用何種界面交互環境:console,MFC,WTL等等
(4) 需要使用哪些第三方庫:如 openCV,STL,Boost等
3. 劃分系統模塊,設計總體框圖
(1)整個系統從大的方向來劃分的話,可以分爲哪幾個模塊,每個模塊又可以繼續劃分爲哪幾個小模塊。
(2)每個模塊的提供的功能是什麼
(3)模塊之間怎麼交互
4. 分析模塊的需求,抽象出實現模塊功能的各個類
(1)本模塊可以設計哪些類,哪些類是作爲本模塊對外的接口?
(2)模塊內部的類之間怎麼交互?模塊間的類之間怎麼交互?
(3)類的設計時,需要考慮是否可以通過繼承、組合等方式簡化設計
(4)畫出簡單的UML設計圖
5. 設計每個類的屬性和方法
(1)每個類有哪些成員變量?提供哪些功能函數?
(2)哪些功能通過繼承獲取,哪些功能需要用到重載,哪些功能需要利用多態?
(3)完成類的頭文件的定義
6. 實現每個類的功能及集成測試
(1) 編碼實現每個類的功能
(2) 根據前面的設計,完成類之間的交互代碼,實現系統所需要的功能
(3)集成和測試,優化代碼,修改bug