敏捷開(kāi)發(fā)
有一種敏捷開(kāi)發(fā),就叫敏捷開(kāi)發(fā)。你可以認(rèn)為這種是“狹義”敏捷開(kāi)發(fā),而本文標(biāo)題所說(shuō)的敏捷開(kāi)發(fā)是泛指所有帶有敏捷特點(diǎn)的開(kāi)發(fā)模式。
這種敏捷開(kāi)發(fā)有這樣的特點(diǎn):
1.個(gè)體和交互勝過(guò)過(guò)程和工具。
以人為本,注重編程中人的自我特長(zhǎng)發(fā)揮。
2.可以工作的軟件勝過(guò)面面具到的文檔。
強(qiáng)調(diào)軟件開(kāi)發(fā)的產(chǎn)品是軟件,而不是文檔。文檔是為軟件開(kāi)發(fā)服務(wù)的,而不是開(kāi)發(fā)的主體。
3.客戶(hù)合作勝過(guò)合同談判。
客戶(hù)與開(kāi)發(fā)者的關(guān)系是協(xié)作,不是合約。
開(kāi)發(fā)者不是客戶(hù)業(yè)務(wù)的“專(zhuān)家”,也不是為了開(kāi)發(fā)軟件,把開(kāi)發(fā)人員變成客戶(hù)業(yè)務(wù)的專(zhuān)家。
要適應(yīng)客戶(hù)的需求,就要通過(guò)客戶(hù)合作來(lái)闡述實(shí)際的需求細(xì)節(jié)。
4.響應(yīng)變化勝過(guò)遵循計(jì)劃。
設(shè)計(jì)周密是為了最終軟件的質(zhì)量,但不表明設(shè)計(jì)比實(shí)現(xiàn)更重要。
要適應(yīng)客戶(hù)需求的不斷變化,設(shè)計(jì)也要不斷跟進(jìn),所以設(shè)計(jì)不能是“閉門(mén)造車(chē)”、“自我良好”。
要不斷根據(jù)環(huán)境的變化,修改自己的設(shè)計(jì),指導(dǎo)開(kāi)發(fā)的方向。
你可能會(huì)感覺(jué)到這些特點(diǎn)與極限編程的相似與不同之處,同時(shí)你也會(huì)感覺(jué)到這些特點(diǎn)很多與傳統(tǒng)的重型開(kāi)發(fā)針?shù)h相對(duì)的。
RUP
統(tǒng)一軟件過(guò)程,英文全寫(xiě)為:Rational Unified Process。
要精確理解RUP的意思還是有點(diǎn)難度的,簡(jiǎn)單談?wù)勎覍?duì)RUP的理解。
按照時(shí)間順序,項(xiàng)目分為初始(inception)、細(xì)化(Elaboration)、構(gòu)造(Construction)、交付(Transition)四個(gè)階段,每個(gè)階段會(huì)有很多個(gè)小迭代。這四個(gè)階段其實(shí)很難說(shuō)有明顯界限的,我覺(jué)得大家大概了解每個(gè)階段的工作內(nèi)容就可以了。
按照工作的性質(zhì),項(xiàng)目的工作可以分為以下幾類(lèi):
商業(yè)建模(Business Modeling)
需求(Requirements)
分析和設(shè)計(jì)(Analysis & Design)
實(shí)現(xiàn)(Implementation)
測(cè)試(Test)
部署(Deployment)
配置管理與變更管理(Configuration & Change Mgmt)
項(xiàng)目管理(Project Management)
環(huán)境(Environment)
以上這些工作,在項(xiàng)目的不同時(shí)期工作量分布是不太一樣的,如:商業(yè)建模、需求這些工作往往是頭大尾小,分析與設(shè)計(jì)、實(shí)現(xiàn)等是中間大兩頭小,項(xiàng)目管理、環(huán)境方面的工作一直都會(huì)持續(xù)進(jìn)行。
RUP的思想打破了“需求-設(shè)計(jì)-編碼-測(cè)試”這樣的傳統(tǒng)瀑布模式,需求、設(shè)計(jì)、編碼、測(cè)試這些工作其實(shí)一直都在進(jìn)行的,只是不同時(shí)間比重不一樣。這個(gè)思想是很符合“敏捷”的特點(diǎn),也和實(shí)際情況非常吻合。
大家理解這個(gè)意思后,我覺(jué)得完全可以按照自己公司的實(shí)際情況重新定義時(shí)間上的階段,也可以自己重新定義項(xiàng)目的各類(lèi)工作,以及思考各類(lèi)工作在項(xiàng)目不同時(shí)間的工作量分布。
關(guān)于敏捷開(kāi)發(fā)的流派還有很多,如:自適應(yīng)軟件開(kāi)發(fā)、水晶方法、實(shí)用編程等等,我覺(jué)不同流派其實(shí)本質(zhì)還是很類(lèi)似的,這里就不一一介紹了。
敏捷開(kāi)發(fā)的實(shí)質(zhì)是什么?
什么是敏捷?我想大家各有各的說(shuō)法,我覺(jué)得敏捷過(guò)程應(yīng)該是這樣的:
1.一個(gè)項(xiàng)目目標(biāo)明確的過(guò)程。
2.有利于實(shí)現(xiàn)項(xiàng)目目標(biāo)的事情,一定要做。
3.對(duì)項(xiàng)目目標(biāo)沒(méi)有幫助的事情,一律不做。
4.有效和高效是最重要的項(xiàng)目管理原則。
5.敏捷的過(guò)程是讓人愉快、工作起來(lái)有戰(zhàn)斗力的過(guò)程。
敏捷開(kāi)發(fā)簡(jiǎn)單說(shuō)就是有有效的辦法去做有用的事情,過(guò)程的目的是讓項(xiàng)目做得更好,不是為了過(guò)程而過(guò)程,不是用過(guò)程來(lái)“框死”項(xiàng)目,過(guò)程是為項(xiàng)目服務(wù)的。
各家各派的敏捷方法論,其實(shí)基本道理都是這樣的,只是各自從不同的角度來(lái)闡述如何