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