0. 軟件開發(fā)需要過程么歌径?
寫了再改,不挺好么亲茅?不需要太多其他準備或相關(guān)知識回铛,無需文檔,無需規(guī)劃克锣,無需質(zhì)量保障茵肃,上來就寫代碼;也許就能寫出來袭祟,寫不出來就改验残,也許能改好。但是這種寫法適用的場合有限:
- “只用一次”的程序
- “看過了就扔” 的原型
- 一些不實用的演示程序
但是要開發(fā)一個復(fù)雜的軟件巾乳,這個方法的缺點就太大了您没,現(xiàn)實中基本毫無用處。
1. 黑盒與白盒過程
-
黑盒測試
- 概念:測試者
不了解
程序的內(nèi)部情況胆绊,不需具備應(yīng)用程序的代碼氨鹏、內(nèi)部結(jié)構(gòu)和編程語言的專門知識。只知道程序的輸入压状、輸出和系統(tǒng)的功能喻犁,這是從用戶的角度針對軟件界面、功能及外部結(jié)構(gòu)進行測試何缓,而不考慮程序內(nèi)部邏輯結(jié)構(gòu)。測試案例是依應(yīng)用系統(tǒng)應(yīng)該做的功能还栓,照規(guī)范碌廓、規(guī)格或要求等設(shè)計。測試者選擇有效輸入和無效輸入來驗證是否正確的輸出剩盒; - 適用場合:大部分測試谷婆,如整合測試和系統(tǒng)測試。
-
存在的問題:要求開發(fā)之前需求被充分理解辽聊;與客戶的交互只在開始(需求)和最后(發(fā)布)——類似于產(chǎn)品制造過程纪挎;而實際情況往往不是如此。
black box
- 概念:測試者
-
白盒測試
- 概念:在白盒測試時跟匆,以
編程語言的角度
來設(shè)計測試案例异袄。測試者輸入數(shù)據(jù)驗證數(shù)據(jù)流在程序中的流動路徑,并確定適當(dāng)?shù)妮敵雎瓯郏愃茰y試電路中的節(jié)點烤蜕。測試者了解待測試程序的內(nèi)部結(jié)構(gòu)封孙、算法等信息,這是從程序設(shè)計者的角度對程序進行的測試讽营。 - 適用場合:白盒測試可以應(yīng)用于單元測試虎忌、集成測試和系統(tǒng)的軟件測試流程,可測試在集成過程中每一單元之間的路徑橱鹏,或者主系統(tǒng)跟子系統(tǒng)中的測試膜蠢。盡管這種測試的方法可以發(fā)現(xiàn)許多的錯誤或問題,它可能無法檢測未使用部分的規(guī)范莉兰。
- 優(yōu)點:通過改進
可見性
來減少風(fēng)險挑围;在開發(fā)過程中,通過不斷地獲得顧客的回饋允許變更——類似于服務(wù)過程贮勃。
white box
- 概念:在白盒測試時跟匆,以
2. 典型的軟件過程模型
-
瀑布模型
也叫做鮭魚模型贪惹,向前一階段回溯,很難寂嘉,特點:- 上一個階段結(jié)束奏瞬,下一個階段才能開始;
- 每個階段均有里程碑和提交物泉孩;
- 上一階段的輸出是下一階段的輸入硼端;
- 每個階段均需要進行V&V;
- 側(cè)重于文檔與產(chǎn)出物寓搬。
優(yōu)點:簡單珍昨、易懂、易用句喷、快速镣典;為項目提供了按階段劃分的檢查點,項目管理比較容易唾琼⌒执海總之,追求效率
锡溯。
??缺點:用戶難以清楚地確定所有需求赶舆,需求的錯誤很難在開發(fā)后期糾正,因此難以快速響應(yīng)用戶需求變更祭饭;開發(fā)人員與用戶之間缺乏有效的溝通芜茵,開發(fā)人員的工作幾乎完全依賴規(guī)格說明文檔,容易導(dǎo)致不能滿足客戶需求倡蝙【糯總之,過于理想化
寺鸥。
- 增量過程模型
在很多情況下蒸辆,由于初始需求的不明確征炼,開發(fā)過程不宜采用瀑布模型。這時增量過程模型應(yīng)運而生躬贡。其分為兩種:增量模型
和RAD
谆奥。
??增量模型:軟件被作為一系列的增量來設(shè)計、實現(xiàn)拂玻、集成和測試酸些,每一個增量是由多種相互作用的模塊所形成的提供功能的代碼片段構(gòu)成。本質(zhì):以迭代的方式運用瀑布模型
檐蚜。
??RAD:側(cè)重于短開發(fā)周期(一般為60~90天)的增量過程模型魄懂,是瀑布模型的高速變體,通過基于構(gòu)件的構(gòu)建方法實現(xiàn)快速開發(fā)闯第。
增量模型是串行的瀑布模型市栗,RAD是并行的瀑布模型。
- 演化過程模型
軟件系統(tǒng)會隨著時間的推移而發(fā)生變化咳短,在開發(fā)過程中填帽,需求經(jīng)常發(fā)生變化生變化,直接導(dǎo)致產(chǎn)品難以實現(xiàn)咙好;本質(zhì):循環(huán)篡腌、反復(fù)、不斷調(diào)整當(dāng)前系統(tǒng)以適應(yīng)需求變化
勾效。其分成兩種:快速原型法
和螺旋模型
嘹悼。

-
敏捷過程模型
詳情參考:淺談「敏捷」開發(fā)
3. 對比總結(jié)
我個人認為這些方法都有各自適應(yīng)的情況,瀑布模型追求效率层宫,增量過程模型適用用戶需求不斷增加杨伙,但是核心計劃不變,而演化過程模型較為復(fù)雜萌腿,是在不斷迭代缀台,重新策劃中進行。
??在短期哮奇、項目小、人員有限的情況下睛约,敏捷過程模型是最恰當(dāng)不過了鼎俘。