需求變更是因?yàn)樾枨蟀l(fā)生變化。根據(jù)軟件工程思想,需求說(shuō)明書(shū)一般要經(jīng)過(guò)論證,如果在需求說(shuō)明書(shū)經(jīng)過(guò)論證以后,需要在原有需求基礎(chǔ)上追加和補(bǔ)充新的需求或?qū)υ行枨筮M(jìn)行修改和削減,均屬于需求變更。
需求變更的出現(xiàn)主要是因?yàn)樵陧?xiàng)目的需求確定階段,用戶往往不能確切地定義自己需要什么。用戶常常以為自己清晰,但實(shí)際上他們提出的需求只是依據(jù)當(dāng)前的工作所需,而采用的新設(shè)備、新技術(shù)通常會(huì)改動(dòng)他們的工作方式;或要研發(fā)的系統(tǒng)對(duì)用戶來(lái)說(shuō)也是個(gè)未知數(shù),他們以前沒(méi)有過(guò)相關(guān)的使用經(jīng)驗(yàn)。隨著研發(fā)工作的不斷進(jìn)展,系統(tǒng)開(kāi)始展現(xiàn)功能的雛形,用戶對(duì)系統(tǒng)的了解也逐步深入。于是,他們可能會(huì)想到各種新的功能和特色,或?qū)σ郧疤岢龅男枨筮M(jìn)行改動(dòng)。他們了解得越多,新的需求也就越多,需求變更因此不可避免地一次又一次出現(xiàn)。
團(tuán)隊(duì)包括一般軟體公司狀況是:
需求:定義模糊,我們一般是以客戶為導(dǎo)向,參差不齊的客戶,所以,很多團(tuán)隊(duì)對(duì)需求變化的適應(yīng)力差。
架構(gòu):幾乎一半的團(tuán)隊(duì)沒(méi)喲架構(gòu)師。我原來(lái)的公司沒(méi)有?,F(xiàn)在的公司有,但是,我還沒(méi)有感覺(jué)到他的價(jià)值,感覺(jué)更像是需求分析師。
測(cè)試:這個(gè)就不說(shuō)了。。。
評(píng)審:不知道大家對(duì)這個(gè)怎么理解,我覺(jué)得應(yīng)該是很重要的,時(shí)發(fā)現(xiàn)、糾正問(wèn)題的一個(gè)環(huán)節(jié)。
過(guò)程:在CMMI中,雖然只占30%,但是,我覺(jué)得很重要,開(kāi)發(fā)文檔、注解、單元測(cè)試、項(xiàng)目進(jìn)度跟蹤。
客戶:這一塊不熟,因?yàn)槲乙恢泵鎸?duì)公司內(nèi)部客戶,所以比較好搞定。
在三者中,
CMMI是標(biāo)準(zhǔn),他描述,量化了團(tuán)隊(duì)的成熟度,和不足的地方,但是沒(méi)有告訴你怎么改進(jìn);
SPI是對(duì)目標(biāo)的檢測(cè)和過(guò)程的優(yōu)化。
AP是過(guò)程,包括XP,RUP等等。
我們來(lái)看看Xp,應(yīng)該是很多程序員喜歡的,但是,有多少團(tuán)隊(duì)導(dǎo)入了XP開(kāi)發(fā)。
XP:開(kāi)發(fā)周期采用動(dòng)態(tài)迭代式。
關(guān)鍵做法有:1.現(xiàn)場(chǎng)客戶;2.計(jì)劃博弈;3.系統(tǒng)隱喻;4.簡(jiǎn)化設(shè)計(jì);5,集體擁有代碼;6.結(jié)對(duì)編程;7.測(cè)試驅(qū)動(dòng);8.小型發(fā)布;9.重構(gòu);10.持續(xù)集成;11.每周40小時(shí)工作制;12.代碼規(guī)范
計(jì)劃博弈:
XP要求結(jié)合業(yè)務(wù)和技術(shù)情況,快速確定下一次發(fā)布的范圍。在項(xiàng)目計(jì)劃的4要素(費(fèi)用、時(shí)間、質(zhì)量和范圍)中,由客戶選擇3個(gè),而程序員可以選擇剩下的1個(gè)。
通常客戶從業(yè)務(wù)角度確定項(xiàng)目范圍、需求優(yōu)先級(jí)和開(kāi)發(fā)進(jìn)度,開(kāi)發(fā)人員則做出具體的成本和技術(shù)估計(jì)。
XP強(qiáng)調(diào)簡(jiǎn)短和突發(fā)性的計(jì)劃,有時(shí)只用幾個(gè)小時(shí)甚至幾分鐘就能完成,而且可以隨時(shí)按需進(jìn)行多次計(jì)劃。
系統(tǒng)隱喻:
XP通過(guò)一個(gè)簡(jiǎn)單的關(guān)于整個(gè)系統(tǒng)如何運(yùn)作的隱喻性描述(story)來(lái)指導(dǎo)全部開(kāi)發(fā)。
隱喻可以看作是一種高層次的系統(tǒng)構(gòu)想,通常包含了一些可以參照和比較的類和模式,它還給出了后續(xù)開(kāi)發(fā)所使用的命名規(guī)則。
XP不需要事先進(jìn)行詳細(xì)地架構(gòu)設(shè)計(jì)。
重構(gòu):重構(gòu)是指在不改變系統(tǒng)行為的前提下,重新調(diào)整、優(yōu)化系統(tǒng)的內(nèi)部結(jié)構(gòu)以減少?gòu)?fù)雜性、消除冗余、增加靈活性和提高性能。
測(cè)試驅(qū)動(dòng):先寫測(cè)試,后編碼
結(jié)對(duì)編程:
由兩名程序員在同一臺(tái)電腦上結(jié)成對(duì)子共同編寫解決同一問(wèn)題的代碼。
通常一個(gè)人寫代碼,另一個(gè)人同時(shí)負(fù)責(zé)保證代碼的正確性和可讀性,比如編寫單元測(cè)試程序、進(jìn)行代碼走查。
PP可以看作是一種非正式的持續(xù)進(jìn)行的同行評(píng)審(peer review)。
哎呀,看到這些,我就有點(diǎn)感慨了,是不是這些東西太理論化了,和實(shí)際情況相差太多了。
實(shí)際情況,項(xiàng)目來(lái)了,馬上開(kāi)需求會(huì),分任務(wù),然后需求評(píng)審,然后系統(tǒng)設(shè)計(jì),數(shù)據(jù)建模,系統(tǒng)框架,