詳細(xì)設(shè)計(jì)作為軟件開發(fā)的基礎(chǔ)性工作,其對(duì)互聯(lián)網(wǎng)發(fā)展的重要性不言可喻,因此在進(jìn)行詳細(xì)設(shè)計(jì)之前,做好充分的準(zhǔn)備工作是必須的。中培偉業(yè)《軟件詳細(xì)設(shè)計(jì)最佳實(shí)踐》程老師指出,要做好軟件詳細(xì)設(shè)計(jì),離不開一份概要設(shè)計(jì)文檔。雖然詳細(xì)設(shè)計(jì)是軟件開發(fā)的主要工作,但系統(tǒng)架構(gòu)無(wú)疑有更加重要的作用。
除此之外,在開始詳細(xì)設(shè)計(jì)之前,還應(yīng)該做好以下準(zhǔn)備條件:
1)應(yīng)針對(duì)全部需求(包括功能性和非功能性的需求),系統(tǒng)需要有整體上的考慮,也就是前文提到的架構(gòu)設(shè)計(jì)。
詳細(xì)設(shè)計(jì)需要考慮類、類的內(nèi)部細(xì)節(jié)、類之間接口等,這些是需要符合系統(tǒng)的總體架構(gòu)和分層架構(gòu)的。
2)應(yīng)有數(shù)據(jù)庫(kù)設(shè)計(jì)。
如果沒有數(shù)據(jù)庫(kù)設(shè)計(jì),建筑在數(shù)據(jù)庫(kù)之上的代碼是很難寫的。當(dāng)然如果你是用“由中間到上下”的設(shè)計(jì)方法的話(什么是“由中間到上下”?請(qǐng)參考前面的文章),數(shù)據(jù)庫(kù)設(shè)計(jì)沒有,只要有中間層的建模的話,表現(xiàn)層和邏輯層的代碼還是可以寫的,但數(shù)據(jù)庫(kù)操作層的代碼還是依賴于數(shù)據(jù)庫(kù)設(shè)計(jì)的。
3)部分情況下,還應(yīng)該有部分或全部的用戶體驗(yàn)設(shè)計(jì)(用戶體驗(yàn)設(shè)計(jì)下一篇會(huì)分享)。
用戶體驗(yàn)設(shè)計(jì)主要考慮的是軟件的表現(xiàn)層,最能充分體驗(yàn)“由頂而下”的設(shè)計(jì)思路,將會(huì)直接影響具體的代碼實(shí)現(xiàn)。
一般情況下我們應(yīng)該在架構(gòu)設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì)的基礎(chǔ)上進(jìn)行詳細(xì)設(shè)計(jì),否則很可能會(huì)讓我們僅僅關(guān)注了局部的問題,而沒有抓住其他更加重要的問題和全局的問題。如果沒有架構(gòu)設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì),直接詳細(xì)設(shè)計(jì)是不是一定不可行呢?有以下的一些特殊情況(不限于此噢):
1)如果果你的情況是在原有系統(tǒng)上升級(jí)改造,系統(tǒng)原有的架構(gòu)和數(shù)據(jù)庫(kù)設(shè)計(jì)基本不變,那么直接進(jìn)行詳細(xì)設(shè)計(jì)是合適的做法;
2)有時(shí)候有些局部問題雖然很“局部”但又相當(dāng)特殊或重要,哪怕沒有來(lái)得及完成架構(gòu)設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì),也可以先進(jìn)行詳細(xì)設(shè)計(jì)的。