導(dǎo)語
常見的軟件開發(fā)過程方法有:瀑布模型鸟廓、迭代增量開發(fā)、敏捷開發(fā)等。本文對以上三種加以介紹弃酌,同時還會介紹這兩年火熱的DevOps。
1 - 傳統(tǒng)瀑布模型
瀑布模型將軟件生命周期劃分成計劃儡炼、需求妓湘、設(shè)計、實現(xiàn)乌询、測試榜贴、運維六個階段,并規(guī)定它們嚴格自上而下妹田、相互銜接的固定次序唬党,如同瀑布流水一樣。由于前一階段的輸出將作為下一階段的輸入鬼佣,所以瀑布模型要求每一個階段都做到最好初嘹,尤其是項目前期設(shè)計。然而在每個項目中需求變更都是無法避免的沮趣,瀑布模型的嚴格分級導(dǎo)致其無法較好應(yīng)對需求變更且代價高昂屯烦。此外瀑布模型十分強調(diào)文檔的重要性,導(dǎo)致開發(fā)人員需要在文檔上付出大量的時間和精力房铭。
2 - 迭代增量開發(fā)
迭代增量開發(fā)彌補了瀑布模型嚴格分級驻龟、缺少階段間反饋的缺點。在迭代增量開發(fā)中缸匪,項目被分割成一系列時間較短的迭代翁狐,同時整個工程被分成了不同的小部分,每一次迭代后都比上一次增加一些功能凌蔬。這些小迭代中都會包括需求分析露懒、設(shè)計、實現(xiàn)砂心、測試懈词。通過這種方法,開發(fā)可在需求被完整定義前啟動辩诞,并在每次迭代完成后坎弯,通過用戶反饋來細化進一步需求,并開始新一輪迭代。迭代增量開發(fā)是基于瀑布模型的抠忘,但它不要求每一次迭代出來完美的結(jié)果撩炊,而是先把主要功能構(gòu)建出來,通過反饋不斷完善崎脉。
迭代增量開發(fā)仍然是一種過程模型拧咳,只是從瀑布模型的線性關(guān)系轉(zhuǎn)變成迭代關(guān)系,因此它仍然十分強調(diào)文檔的重要性囚灼。
3 - 敏捷方法
上面兩種方法都是傳統(tǒng)的軟件開發(fā)過程骆膝,對于大型團隊開發(fā)大型項目,這種強調(diào)過程規(guī)范的方法論是有必要的啦撮,但對于較小的開發(fā)團隊,敏捷開發(fā)會是一個更好的選擇汪厨。
到這里還沒解釋什么是敏捷開發(fā)赃春,因為我覺得了解敏捷開發(fā)最好的方法就是閱讀敏捷宣言和敏捷軟件的十二條原則,直接看敏捷宣言可能會有點無法理解劫乱,所以先看敏捷軟件的十二條原則會是一個更好的選擇织中。我個人的理解是:提出敏捷宣言的人對傳統(tǒng)軟件開發(fā)方法不滿,提倡一種更輕便衷戈、更現(xiàn)代的方法狭吼。而他們的不滿可以總結(jié)如下:
- 過于強調(diào)嚴格的工作流程、方法論殖妇,團隊成員之間溝通不足
- 過于強調(diào)文檔的重要性刁笙,與客戶交互中往往給出臃腫的文檔,而不是直觀可用的軟件谦趣。
- 客戶參與不足疲吸,忽視客戶協(xié)作的重要性,無論是需求還是反饋都應(yīng)該讓客戶參與進來前鹅。
- 過于依賴計劃摘悴,無法快速響應(yīng)需求變化。
總結(jié)來說舰绘,敏捷開發(fā)就是:強調(diào)能夠應(yīng)對需求變更的開發(fā)能力蹂喻,強調(diào)開發(fā)人員和業(yè)務(wù)人員之間的緊密協(xié)作,強調(diào)面對面的溝通(比書面的文檔更有效)捂寿,強調(diào)能夠頻繁交付新的軟件版本的開發(fā)能力口四,并且更注重軟件開發(fā)進程中人的作用而不是文檔。
敏捷開發(fā)實踐
- 結(jié)對編程
- 站會
- 任務(wù)板 Task board
常用的敏捷軟件開發(fā)框架有 Scrum 和 XP