軟件開發(fā)流程
作者:濟(jì)南雷鳴科技 文章來源:本站原創(chuàng) 更新時(shí)間:2023-11-07
1. 傳統(tǒng)開發(fā)流程的問題
傳統(tǒng)的軟件開發(fā)流程是一個(gè)文檔驅(qū)動(dòng)的流程,它將整個(gè)軟件開發(fā)過程劃分為順序相接的幾個(gè)階段,每個(gè)階段都必需完成全部規(guī)定的任務(wù)(文檔)后才能夠進(jìn)入下一個(gè)階段。如必須完成全部的系統(tǒng)需求規(guī)格說明書之后才能夠進(jìn)入概要設(shè)計(jì)階段,編碼必需在系統(tǒng)設(shè)計(jì)完成之后才能夠進(jìn)行。這就意味著只有當(dāng)所有的系統(tǒng)模塊全部開發(fā)完成之后,我們才進(jìn)行系統(tǒng)集成,對(duì)于一個(gè)由上百個(gè)模塊組的復(fù)雜系統(tǒng)來說,這是一個(gè)非常艱巨而漫長(zhǎng)的工作。
隨著我們所開發(fā)的軟件項(xiàng)目越來越復(fù)雜,傳統(tǒng)的瀑布型開發(fā)流程不斷地暴露出以下問題:
(1)需求或設(shè)計(jì)中的錯(cuò)誤往往只有到了項(xiàng)目后期才能夠被發(fā)現(xiàn)例如:系統(tǒng)交付客戶之后才發(fā)現(xiàn)原先對(duì)于需求的理解是錯(cuò)誤的,系統(tǒng)設(shè)計(jì)中的問題要到測(cè)試階段才能被發(fā)現(xiàn)。
(2)對(duì)于項(xiàng)目風(fēng)險(xiǎn)的控制能力較弱項(xiàng)目風(fēng)險(xiǎn)在項(xiàng)目開發(fā)較晚的時(shí)候才能夠真正降低,往往是經(jīng)過系統(tǒng)測(cè)試之后,才能確定該設(shè)計(jì)是否能夠真正滿足系統(tǒng)需求。
(3)軟件項(xiàng)目常常延期完成或開發(fā)費(fèi)用超出預(yù)算項(xiàng)目開發(fā)進(jìn)度往往會(huì)被意外發(fā)生的問題所打亂,需要進(jìn)行返工或其他一些額外的開發(fā)周期,造成項(xiàng)目延期或費(fèi)用超支。
(4)項(xiàng)目管理人員專注于文檔的完成和審核來估計(jì)項(xiàng)目的進(jìn)展情況所以項(xiàng)目經(jīng)理對(duì)于項(xiàng)目狀態(tài)的估計(jì)往往是不準(zhǔn)確的,當(dāng)他回答系統(tǒng)已完成了80%的開發(fā)任務(wù)時(shí),剩下20%的開發(fā)任務(wù)實(shí)際上消耗的是整個(gè)項(xiàng)目80%的開發(fā)資源。
在傳統(tǒng)的瀑布模型中,需求和設(shè)計(jì)中的問題是無法在項(xiàng)目開發(fā)的前期被檢測(cè)出來的,只有當(dāng)?shù)谝淮蜗到y(tǒng)集成時(shí),這些設(shè)計(jì)缺陷才會(huì)在測(cè)試中暴露出來,從而導(dǎo)致一系列的返工:重新設(shè)計(jì)、編碼、測(cè)試,進(jìn)而導(dǎo)致項(xiàng)目的延期和開發(fā)成本的上升。
2. 采用迭代化開發(fā)控制項(xiàng)目風(fēng)險(xiǎn)
為了解決傳統(tǒng)軟件開發(fā)流程中的問題,我們建議采用迭代化的開發(fā)方法來取代瀑布模型。在瀑布模型中,我們要完成的是整個(gè)軟件系統(tǒng)開發(fā)這個(gè)大目標(biāo)。在迭代化的方法中,我們將整個(gè)項(xiàng)目的開發(fā)目標(biāo)劃分成為一些更易于完成和達(dá)到的階段性小目標(biāo),這些小目標(biāo)都有一個(gè)定義明確的階段性評(píng)估標(biāo)準(zhǔn)。迭代就是為了完成一定的階段性目標(biāo)而所從事的一系列開發(fā)活動(dòng),在每個(gè)迭代開始前都要根據(jù)項(xiàng)目當(dāng)前的狀態(tài)和所要達(dá)到的階段性目標(biāo)制定迭代計(jì)劃,整個(gè)迭代過程包含了需求、設(shè)計(jì)、實(shí)施(編碼)、部署、測(cè)試等各種類型的開發(fā)活動(dòng),迭代完成之后需要對(duì)迭代完成的結(jié)果進(jìn)行評(píng)估,并以此為依據(jù)來制定下一次迭代的目標(biāo)。
與傳統(tǒng)的瀑布式開發(fā)模型相比較,迭代化開發(fā)具有以下特點(diǎn):
(1)允許變更需求
需求總是會(huì)變化,這是事實(shí)。給項(xiàng)目帶來麻煩的常常主要是需求變化和需求"蠕變",它們會(huì)導(dǎo)致延期交付、工期延誤、客戶不滿意、開發(fā)人員受挫。通過向用戶演示迭代所產(chǎn)生的部分系統(tǒng)功能,我們可以盡早地收集用戶對(duì)于系統(tǒng)的反饋,及時(shí)改正對(duì)于用戶需求的理解偏差,從而保證開發(fā)出來的系統(tǒng)真正地解決客戶的問題。
(2)逐步集成元素
在傳統(tǒng)的項(xiàng)目開發(fā)中,由于要求一下子集成系統(tǒng)中所有的模塊,集成階段往往要占到整個(gè)項(xiàng)目很大比例的工作量(最高可達(dá)40%),這一階段的工作經(jīng)常是不確定并且非常棘手。在迭代式方法中,集成可以說是連續(xù)不斷的,每一次迭代都會(huì)增量式集成一些新的系統(tǒng)功能,要集成的元素都比過去少得多,所以工作量和難度都是比較低的。
(3)盡早降低風(fēng)險(xiǎn)
迭代化開發(fā)的主要指導(dǎo)原則就是以架構(gòu)為中心,在早期的迭代中所要解決的主要問題就是盡快確定系統(tǒng)架構(gòu),通過幾次迭代來盡快地設(shè)計(jì)出能夠滿足核心需求的系統(tǒng)架構(gòu),這樣可以迅速降低整個(gè)項(xiàng)目的風(fēng)險(xiǎn)。等到系統(tǒng)架構(gòu)穩(wěn)定之后,項(xiàng)目的風(fēng)險(xiǎn)就比較低了,這個(gè)時(shí)候再去實(shí)現(xiàn)系統(tǒng)中尚未完成的功能,進(jìn)而完成整個(gè)項(xiàng)目。