超全!嵌入式軟件開發(fā)常用的開發(fā)模型(附詳細(xì)流程圖)
瀑布模型
該模型是由上至下一次性完成整個(gè)項(xiàng)目的開發(fā)方式。該模型一共分為6個(gè)階段,如圖所示:在瀑布模型的開發(fā)過(guò)程中需要嚴(yán)格的按照這條線執(zhí)行,只有完成當(dāng)前階段之后才能夠進(jìn)行下一階段的開發(fā)任務(wù)。
優(yōu)點(diǎn)
- 該模型劃分出了每個(gè)階段的檢查點(diǎn),當(dāng)一個(gè)階段開發(fā)完成之后,開發(fā)人員的精力可以全部的投入下個(gè)階段,有利于提高開發(fā)效率,便于項(xiàng)目的管理。
- 比較適用于前期的軟件開發(fā)與小型軟件系統(tǒng)的開發(fā)中。
缺點(diǎn)
- 無(wú)法評(píng)估項(xiàng)目進(jìn)度。因?yàn)椴恢滥膫€(gè)階段會(huì)造成項(xiàng)目的延期
- 無(wú)法適應(yīng)用戶的需求變更,只能等到項(xiàng)目完成后,用戶才能夠看到項(xiàng)目結(jié)果
快速原型模型
快速原型模型與瀑布模型相反,項(xiàng)目初期根據(jù)用戶的需求快速構(gòu)建一個(gè)可以運(yùn)行的系統(tǒng)原型,之后向用戶展示,由用戶進(jìn)行審核,提出意見,然后逐步豐富項(xiàng)目需求。當(dāng)需求真正確定后,才正式進(jìn)行項(xiàng)目開發(fā)。模型如圖所示:優(yōu)點(diǎn)
- 解決需求不明確帶來(lái)的風(fēng)險(xiǎn),適用于不能提前確定項(xiàng)目需求的項(xiàng)目
缺點(diǎn)
- 不利于開發(fā)人員對(duì)產(chǎn)品進(jìn)行擴(kuò)展
迭代模型
迭代模型又被稱作為增量模型或演化模型,它將一個(gè)完整的軟件拆分成不同的組件,之后對(duì)每個(gè)組件進(jìn)行逐步的開發(fā)測(cè)試,每當(dāng)完成一個(gè)組件就會(huì)向客戶進(jìn)行展示,讓客戶確認(rèn)該組件功能與性能是否達(dá)到要求,最終確定無(wú)誤,將組件集成到軟件體系結(jié)構(gòu)中。整個(gè)開發(fā)工作被分為為一系列短期、簡(jiǎn)單的小項(xiàng)目,稱為一系列迭代,每一個(gè)迭代都需要經(jīng)過(guò)需求分析、軟件設(shè)計(jì)、編碼、測(cè)試這幾項(xiàng)過(guò)程,其開發(fā)過(guò)程如圖所示:優(yōu)點(diǎn)
- 第一個(gè)可交付版本的軟件所需的成本與時(shí)間較小
- 能夠適應(yīng)客戶的需求變更,當(dāng)需求變化時(shí),只需要修改某一個(gè)組件即可。
缺點(diǎn)
- 如果對(duì)用戶需求的變更沒(méi)有整體的規(guī)劃,可能會(huì)變化為"邊做邊開發(fā)"的模式。
- 最終集成各個(gè)組件時(shí),可能會(huì)出現(xiàn)集成失敗的風(fēng)險(xiǎn)。
噴泉模型
該模型主要采用面向?qū)ο蠹夹g(shù)。當(dāng)客戶需求基本類似時(shí),在開發(fā)過(guò)程中可以采用面向?qū)ο蟮拈_發(fā)方式,將相同的模塊全部封裝起來(lái),以便于下次功能開發(fā)時(shí)使用。模型如圖所示:優(yōu)點(diǎn)
- 支持軟件重用,并且開發(fā)過(guò)程無(wú)間隙性,分析、設(shè)計(jì)編碼無(wú)明顯邊界,可交叉迭代進(jìn)行。使軟件在無(wú)法排除重大風(fēng)險(xiǎn)時(shí)有機(jī)會(huì)停止,以減小損失。
缺點(diǎn)
- 由于噴泉模型在各個(gè)階段是重疊的,即每個(gè)對(duì)象都有分析、設(shè)計(jì)和編碼階段,所以需要大量開發(fā)人員。
- 大量開發(fā)人員不利于項(xiàng)目的管理。
- 該模型需要嚴(yán)格管理文檔,會(huì)增加審核的難度增大。
螺旋模型
螺旋模型融合了瀑布模型,快速原型模型,該模型最大的特點(diǎn)就是引入了其他模型所沒(méi)有的風(fēng)險(xiǎn)分析。螺旋模型將開發(fā)過(guò)程都分為幾個(gè)螺旋周期,每個(gè)螺旋周期大致和瀑布模型相符合,在每個(gè)周期開始之前都會(huì)進(jìn)行風(fēng)險(xiǎn)分析。在每個(gè)迭代階段構(gòu)建原型是螺旋模型用以減小風(fēng)險(xiǎn)的途徑。模型如圖所示:
該模型共有四個(gè)象限,每個(gè)象限的含義如下:
- 制訂計(jì)劃:確定軟件目標(biāo),制訂實(shí)施方案,并且列出項(xiàng)目開發(fā)的限制條件。
- 風(fēng)險(xiǎn)分析:評(píng)價(jià)所制訂的實(shí)施方案,識(shí)別風(fēng)險(xiǎn)并消除風(fēng)險(xiǎn)。
- 實(shí)施工程:開發(fā)產(chǎn)品并進(jìn)行驗(yàn)證。
- 客戶評(píng)估:客戶對(duì)產(chǎn)品進(jìn)行審核評(píng)估,提出修正建議,制訂下一步計(jì)劃。
優(yōu)點(diǎn)
- 螺旋模型強(qiáng)調(diào)風(fēng)險(xiǎn)分析,對(duì)每個(gè)演化層出現(xiàn)的風(fēng)險(xiǎn)都所了解,繼而做出應(yīng)有反應(yīng)。因此特別適合用于龐大、復(fù)雜并且具有高風(fēng)險(xiǎn)的系統(tǒng)。螺旋模型支持用戶需求的動(dòng)態(tài)變化有助于提高產(chǎn)品的適應(yīng)能力。
缺點(diǎn)
- 過(guò)多的迭代次數(shù)會(huì)增加開發(fā)成本,延遲提交時(shí)間。
敏捷模型
在現(xiàn)代社會(huì)的開發(fā)中,由于業(yè)務(wù)會(huì)經(jīng)??焖俚淖兓?,因此會(huì)導(dǎo)致在軟件開發(fā)之前經(jīng)常是無(wú)法得到詳細(xì)完整的開發(fā)需求,沒(méi)有完整的開發(fā)需求,傳統(tǒng)的軟件開發(fā)模型也就無(wú)法適用。敏捷開發(fā)模型的提出就是為了解決該問(wèn)題。該模型以客戶的需求為核心,采用迭代,循序漸進(jìn)的方法進(jìn)行開發(fā)。
軟件項(xiàng)目在構(gòu)建初期會(huì)被拆分為多個(gè)相互聯(lián)系而又獨(dú)立運(yùn)行的子項(xiàng)目,然后迭代完成各個(gè)子項(xiàng)目。開發(fā)過(guò)程中,各個(gè)子項(xiàng)目都要經(jīng)過(guò)開發(fā)測(cè)試。當(dāng)客戶有需求變更時(shí),敏捷模型能夠迅速地對(duì)某個(gè)子項(xiàng)目做出修改以滿足客戶的需求。在這個(gè)過(guò)程中,軟件一直處于可使用狀態(tài)。
該模型更重視人在軟件開發(fā)中的作用。軟件開發(fā)過(guò)程中,各個(gè)部門需要緊密的合作溝通,為適應(yīng)軟件需求的頻繁改變,客戶可以全程參與到開發(fā)過(guò)程中。
敏捷開發(fā)模型的價(jià)值與原則
- 個(gè)體和交互重于過(guò)程和工具
- 可用軟件重于完備文檔
- 客戶協(xié)作重于合同談判
- 響應(yīng)變化重于遵循計(jì)劃
優(yōu)點(diǎn)
- 用戶很快可以看到一個(gè)基線架構(gòu)版的產(chǎn)品
- 敏捷注重市場(chǎng)快速反應(yīng)能力,客戶前期滿意度高。
缺點(diǎn)
- 注重人員的溝通
- 忽略文檔的重要性
- 如果項(xiàng)目人員流動(dòng)大太,會(huì)增加項(xiàng)目維護(hù)難度
- 軟件之前版本的可重現(xiàn)性、可回溯性較低
- 對(duì)于較大的項(xiàng)目,人員越多,面對(duì)面的有效溝通越困難。因此,該模型適用于小型項(xiàng)目的開發(fā)。
END
來(lái)源:嵌入式基地,作者:嵌入式基地版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除。
▍