最后補(bǔ)充一點(diǎn)東西,一個(gè)軟件項(xiàng)目研發(fā)的設(shè)計(jì)流程是怎樣的呢?以通常標(biāo)準(zhǔn)的設(shè)計(jì)方法為
例,(不過筆者喜歡快速原型法)。
?
第一個(gè)步驟是市場調(diào)研,技術(shù)和市場要結(jié)合才能體現(xiàn)最大價(jià)值。
?
第二個(gè)步驟是需求分析,這個(gè)階段需要出三樣?xùn)|西,用戶視圖,數(shù)據(jù)詞典和用戶操作手
冊(cè)。
?
用戶視圖是該軟件用戶(包括終端用戶和管理用戶)所能看到的頁面樣式,這里面包含了
很多操作方面的流程和條件。
?
數(shù)據(jù)詞典是指明數(shù)據(jù)邏輯關(guān)系并加以整理的東東,完成了數(shù)據(jù)詞典,數(shù)據(jù)庫的設(shè)計(jì)就完成
了一半多。
?
用戶操作手冊(cè)是指明了操作流程的說明書。
?
請(qǐng)注意,用戶操作流程和用戶視圖是由需求決定的,因此應(yīng)該在軟件設(shè)計(jì)之前完成,完成
這些,就為程序研發(fā)提供了約束和準(zhǔn)繩,很遺憾太多公司都不是這樣做的,因果顛倒,順
序不分,開發(fā)工作和實(shí)際需求往往因此產(chǎn)生隔閡脫節(jié)的現(xiàn)象。
?
需求分析,除了以上工作,筆者以為作為項(xiàng)目設(shè)計(jì)者應(yīng)當(dāng)完整的做出項(xiàng)目的性能需求說明
書,因?yàn)橥阅苄枨笾挥卸夹g(shù)的人才可能理解,這就需要技術(shù)專家和需求方(客戶或
公司市場部門)能夠有真正的溝通和了解。
?
第三個(gè)步驟是概要設(shè)計(jì),將系統(tǒng)功能模塊初步劃分,并給出合理的研發(fā)流程和資源要求。
作為快速原型設(shè)計(jì)方法,完成概要設(shè)計(jì)就可以進(jìn)入編碼階段了,通常采用這種方法是因?yàn)?/span>
涉及的研發(fā)任務(wù)屬于新領(lǐng)域,技術(shù)主管人員一上來無法給出明確的詳細(xì)設(shè)計(jì)說明書,但是
并不是說詳細(xì)設(shè)計(jì)說明書不重要,事實(shí)上快速原型法在完成原型代碼后,根據(jù)評(píng)測(cè)結(jié)果和
經(jīng)驗(yàn)教訓(xùn)的總結(jié),還要重新進(jìn)行詳細(xì)設(shè)計(jì)的步驟。
?
第四個(gè)步驟是詳細(xì)設(shè)計(jì),這是考驗(yàn)技術(shù)專家設(shè)計(jì)思維的重要關(guān)卡,詳細(xì)設(shè)計(jì)說明書應(yīng)當(dāng)把
具體的模塊以最'干凈'的方式
(
黑箱結(jié)構(gòu))提供給編碼者,使得系統(tǒng)整體模塊化達(dá)到最
大;一份好的詳細(xì)設(shè)計(jì)說明書,可以使編碼的復(fù)雜性減低到最低,實(shí)際上,嚴(yán)格的講詳細(xì)
設(shè)計(jì)說明書應(yīng)當(dāng)把每個(gè)函數(shù)的每個(gè)參數(shù)的定義都精精細(xì)細(xì)的提供出來,從需求分析到概要
設(shè)計(jì)到完成詳細(xì)設(shè)計(jì)說明書,一個(gè)軟件項(xiàng)目就應(yīng)當(dāng)說完成了一半了。換言之,一個(gè)大型軟
件系統(tǒng)在完成了一半的時(shí)候,其實(shí)還沒有開始一行代碼工作。
?
那些把作軟件的程序員簡單理解為寫代碼的,就從根子上犯了錯(cuò)誤了。
?
第五個(gè)步驟是編碼,在規(guī)范化的研發(fā)流程中,編碼工作在整個(gè)項(xiàng)目流程里最多不會(huì)超過
1/ 2
,通常在
1/3
的時(shí)間,所謂磨刀不誤砍柴功,設(shè)計(jì)過程完成的好,編碼效率就會(huì)極大提
高,編碼時(shí)不同模塊之間的進(jìn)度協(xié)調(diào)和協(xié)作是最需要小心的,也許一個(gè)小模塊的問題就可
能影響了整體進(jìn)度,讓很多程序員因此被迫停下工作等待,這種問題在很多研發(fā)過程中都
出現(xiàn)過。編碼時(shí)的相互溝通和應(yīng)急的解決手段都是相當(dāng)重要的,對(duì)于程序員而言,
bug
永
遠(yuǎn)存在,你必須永遠(yuǎn)面對(duì)這個(gè)問題,大名鼎鼎的微軟,可曾有連續(xù)三個(gè)月不發(fā)補(bǔ)丁的時(shí)候
嗎?從來沒有!
?
第六個(gè)步驟是測(cè)試
?
測(cè)試有很多種:
?
按照測(cè)試執(zhí)行方,可以分為內(nèi)部測(cè)試和外部測(cè)試
?
按照測(cè)試范圍,可以分為模塊測(cè)試和整體聯(lián)調(diào)
?
按照測(cè)試條件,可以分為正常操作情況測(cè)試和異常情況測(cè)試
?
按照測(cè)試的輸入范圍,可以分為全覆蓋測(cè)試和抽樣測(cè)試
?
以上都很好理解,不再解釋。
?
總之,測(cè)試同樣是項(xiàng)目研發(fā)中一個(gè)相當(dāng)重要的步驟,對(duì)于一個(gè)大型軟件,
3
個(gè)月到
1
年的外
部測(cè)試都是正常的,因?yàn)橛肋h(yuǎn)都會(huì)又不可預(yù)料的問題存在。
完成測(cè)試后,完成驗(yàn)收并完成最后的一些幫助文檔,整體項(xiàng)目才算告一段落,當(dāng)然日后少
不了升級(jí),修補(bǔ)等等工作,只要不是想通過一錘子買賣騙錢,就要不停的跟蹤軟件的運(yùn)營
狀況并持續(xù)修補(bǔ)升級(jí),知道這個(gè)軟件被徹底淘汰為止。
?
寫這些步驟算不上賣弄什么,因?yàn)閷?shí)話講我手邊是一本《軟件工程》,在大學(xué)里這是計(jì)算
機(jī)專業(yè)的必修課程,但是我知道很多程序員似乎從來都只是熱衷于什么《
30
天精通
VC
》之
類的,他們有些和我一樣游擊隊(duì)出身,沒有正規(guī)學(xué)過這個(gè)專業(yè),還有一些則早就在混夠?qū)W
分后就把這些真正有用的東西還給了老師。
?
網(wǎng)上現(xiàn)在也很浮躁,一些
coding fans
亂嚷嚷,混淆視聽,實(shí)際上真正的技術(shù)專家很少在
網(wǎng)上亂發(fā)帖子的,如筆者這樣不知天高地厚的,其實(shí)實(shí)在是算不上什么高手,只不過看不
慣這種對(duì)技術(shù),對(duì)程序員的誤解和胡說,只好挺身而出,做撥亂反正之言,也希望那些還
沉迷于一些錯(cuò)誤人士的
coding fans
們能認(rèn)真想想,走到正途上,畢竟那些聰明的頭腦還
遠(yuǎn)遠(yuǎn)沒有發(fā)揮應(yīng)有的價(jià)值。
?