|
最近有學(xué)弟問我,拿到一個軟件需求,但是卻不知道怎么才能更好地架構(gòu)好整個系統(tǒng),在此,我簡單地根據(jù)我的經(jīng)驗介紹一下我是怎么設(shè)計一個軟件系統(tǒng)的吧。當(dāng)然,這只是我的一個簡單的思路而已,真正涉及到一個大的軟件項目,可能還要復(fù)雜很多很多。
要設(shè)計一個面向?qū)ο蟮南到y(tǒng),建議遵循如下思路:
1. 調(diào)研,完成一份詳細(xì)的需求文檔
(1)系統(tǒng)要實現(xiàn)什么功能
(2)性能上有什么特別的要求
(3)哪些是技術(shù)難點,可以的話對技術(shù)難點首先測試攻關(guān)
2. 確定系統(tǒng)的運行環(huán)境
(1)系統(tǒng)運行的操作系統(tǒng):widows,linux,unix等
(2)使用何種編程語言:c/c++,java,C# 等
(3)使用何種界面交互環(huán)境:console,MFC,WTL等等
(4) 需要使用哪些第三方庫:如 openCV,STL,Boost等
3. 劃分系統(tǒng)模塊,設(shè)計總體框圖
(1)整個系統(tǒng)從大的方向來劃分的話,可以分為哪幾個模塊,每個模塊又可以繼續(xù)劃分為哪幾個小模塊。
(2)每個模塊的提供的功能是什么
(3)模塊之間怎么交互
4. 分析模塊的需求,抽象出實現(xiàn)模塊功能的各個類
(1)本模塊可以設(shè)計哪些類,哪些類是作為本模塊對外的接口?
(2)模塊內(nèi)部的類之間怎么交互?模塊間的類之間怎么交互?
(3)類的設(shè)計時,需要考慮是否可以通過繼承、組合等方式簡化設(shè)計
(4)畫出簡單的UML設(shè)計圖
5. 設(shè)計每個類的屬性和方法
(1)每個類有哪些成員變量?提供哪些功能函數(shù)?
(2)哪些功能通過繼承獲取,哪些功能需要用到重載,哪些功能需要利用多態(tài)?
(3)完成類的頭文件的定義
6. 實現(xiàn)每個類的功能及集成測試
(1) 編碼實現(xiàn)每個類的功能
(2) 根據(jù)前面的設(shè)計,完成類之間的交互代碼,實現(xiàn)系統(tǒng)所需要的功能
(3)集成和測試,優(yōu)化代碼,修改bug
好了,就簡單地寫這么些了,僅僅提供一個思路,希望對新手有用。當(dāng)然,具體情況還是要具體分析的,順祝大家學(xué)習(xí)順利。有任何疑問或者建議歡迎留言或者來信lujun.hust@gmail.com交流,或者關(guān)注我的新浪微博@盧_俊 獲取最新的文章和資訊。
|
|