自從編程界的領(lǐng)袖們發(fā)表旨在通過(guò)接受需求變更,加強同用戶(hù)合作,縮短軟件提交周期來(lái)改善軟件開(kāi)發(fā)過(guò)程的敏捷軟件開(kāi)發(fā)宣言至今已近10年之久了。
敏捷宣言制定2001年2月,當時(shí)一群軟件開(kāi)發(fā)者聚集在猶他州,他們希望能找到一種可以替代那些由文檔驅動(dòng)的、“重型”的軟件開(kāi)發(fā)模式(如當時(shí)的被當作金牌標準的瀑布模型方法)的新方法。
盡管早在猶他州會(huì )議之前,敏捷開(kāi)發(fā)方法就已經(jīng)出現,但這次會(huì )議卻被當作這種方法論推廣進(jìn)程中的一次分水嶺事件。十年以來(lái),敏捷開(kāi)發(fā)已被眾所周知,很多軟件 公司采納了Scrum和XP(極限編程)等敏捷開(kāi)發(fā)實(shí)施方案。盡管還存在著(zhù)不可預知的問(wèn)題,敏捷方法領(lǐng)域里的專(zhuān)家都認為,總的來(lái)說(shuō),敏捷方法的實(shí)施會(huì )給軟 件開(kāi)發(fā)活動(dòng)帶來(lái)益處。
“我說(shuō)過(guò),我們改變了這個(gè)行業(yè),”一位宣言的簽署者、目前在Tektronix工作的Ward Cunningham這樣說(shuō)。由于敏捷的出現,關(guān)于計算機編程的沒(méi)落和編程危機的討論逐漸消失,他說(shuō):“我們已經(jīng)再也聽(tīng)不到人們談?wù)撨@個(gè)話(huà)題了。”
敏捷宣言比實(shí)際預期要成功的多,IBM Rational部門(mén)的首席敏捷和Lean方法論導師Scott Ambler這樣說(shuō)。
“它對我們整個(gè)行業(yè)有著(zhù)重大的影響,”Ambler說(shuō)。“如今你已經(jīng)很難找到有不想去試試敏捷方法的人了。跟傳統的開(kāi)發(fā)方法相比,人們希望使用敏捷開(kāi)發(fā)和迭代開(kāi)發(fā)來(lái)使項目獲得成功的愿望要強烈的多。“
但是Kent Beck,同樣也是一位宣言的簽署者,并且是XP的創(chuàng )始人,在宣言簽署的10年后,對敏捷開(kāi)發(fā)所帶來(lái)的好處去并不是那么認可:“對于這個(gè)問(wèn)題我沒(méi)有一個(gè)幾句話(huà)的答案。”
“敏捷開(kāi)發(fā)是讓人們更加認真仔細的思考如何開(kāi)發(fā)軟件,”Beck說(shuō)。然而,并不是每個(gè)人都在敏捷開(kāi)發(fā)上走對了路,他提示說(shuō)。“仍然有很多人喜歡把讀來(lái)的一些建議指導應用到他們的項目上,其實(shí)那些根本不是所謂的敏捷開(kāi)發(fā),“Beck說(shuō)。
敏捷開(kāi)發(fā)的條件
敏捷開(kāi)發(fā)很難學(xué),Cunningham說(shuō);”在你能夠使用這套方法論前你必須掌握精通各種技巧。“
敏捷開(kāi)發(fā)需要你扎實(shí)的技術(shù)功底,Cunningham強調道。”有很多人闖進(jìn)這個(gè)領(lǐng)域后發(fā)現編程枯燥乏味,不再想學(xué)。“Cunningham說(shuō):”你要有興趣做它,想把它做好,這樣才有助于你成功。“
“來(lái)自企業(yè)組織的阻礙會(huì )在敏捷方法論的實(shí)施過(guò)程中顯現出來(lái)。敏捷開(kāi)發(fā)鼓勵更加頻繁的交付軟件,鼓勵把事情分解成小塊,而不是把整個(gè)項目看成一 塊。”Skip Angel — 工作于BigVisible Solutions的一位敏捷顧問(wèn)這樣說(shuō)。”我想這些對于一些企業(yè)是個(gè)挑戰,這些企業(yè)的運營(yíng)方式并不能使他們可以做敏捷的交付。“
項目在一些耗時(shí)的過(guò)程中很可能會(huì )陷入泥潭,Angel補充道,開(kāi)發(fā)人員應該使用持續集成來(lái)避免這種瓶頸。
敏捷開(kāi)發(fā)不是銀彈,Ian McLeod–做應用軟件生命周期管理工具的SmartBear Software公司的執行副總裁這樣說(shuō)。”你需要把事情做對 … 你的敏捷開(kāi)發(fā)可能做的很失敗,“ 他說(shuō)。
Beck回憶起1997年用敏捷開(kāi)發(fā)方法成功的開(kāi)發(fā)出JUnit Java單元測試工具。他們團隊使用短周期迭代,大量的單元測試,緊密和客戶(hù)進(jìn)行溝通。
”它使我們開(kāi)發(fā)的更快,使我們更好的清楚需要去做的事情,“Wade Weston — 開(kāi)發(fā)標準化交流系統的AttainResponse公司的CEO 這樣說(shuō)。”AttainResponse每周進(jìn)行開(kāi)發(fā)工作的sprints。我們的sprints周期很短,我們把精力高度的集中于本周要做的工作。 “Weston說(shuō)。
“‘可是讓每個(gè)人都能上手仍然是個(gè)問(wèn)題,’我的一個(gè)兄弟經(jīng)常對我這樣說(shuō),他喜歡更詳細明確的需求。我一直告訴他,我們之所以開(kāi)發(fā)的這么快,就是因為我們沒(méi)有明確的需求,”Weston說(shuō)。等待核心的需求說(shuō)明基本上是浪費時(shí)間。他補充道。
”有些時(shí)候,一些開(kāi)發(fā)人員說(shuō)他們在做敏捷開(kāi)發(fā),可事實(shí)他們根本不是,“Damon Poole — 提供敏捷開(kāi)發(fā)項目管理軟件的AccuRev公司的CTO 這樣說(shuō)。“有些開(kāi)發(fā)人員2周都不能把開(kāi)發(fā)的東西(或“故事”)完整的編譯集成,”他說(shuō)。“如果你真的是做敏捷開(kāi)發(fā),那2周的時(shí)間足夠把用戶(hù)故事發(fā)布 了。”Poole說(shuō)。
敏捷編程的多種實(shí)施方案
Scrum 和 XP 是兩個(gè)最具有代表性的敏捷方法論。Beck把XP描述為更注重開(kāi)發(fā)的技術(shù)方面的方法。“XP說(shuō)的更多的是告訴程序員應該做什么,相對比,Scrum是一種項目管理方法論”他說(shuō)。
”XP的與眾不同之處在于它是一種體系,而不是一種解決方案。“Cunningham — 一位推動(dòng)X(jué)P發(fā)展的貢獻者這樣說(shuō)。”它是一種有計劃的編程方式。“
Scrum專(zhuān)注于如何管理和交付你的產(chǎn)品,而XP卻是考究于如何去做你的工作,Angel說(shuō)。
Poole指出,”很明顯Scrum和XP是目前兩種主要的方法論,你經(jīng)常能看到Scrum團隊會(huì )采納XP技巧,而XP團隊也會(huì )使用Scrum概念。“
另外一種敏捷方法論是Kanban,它起源于制造業(yè)生產(chǎn)流程和Lean軟件開(kāi)發(fā)概念,Poole說(shuō)。Kanban里的約束很少,它關(guān)注于如何使價(jià)值反饋給客戶(hù)的過(guò)程,他解釋說(shuō)。Lean關(guān)注于組織效能優(yōu)化,價(jià)值優(yōu)化,降低浪費,確保正確的好的生產(chǎn)過(guò)程,Angel補充說(shuō)。
RUP(Rational Unified Process)也被人們稱(chēng)作為一種敏捷方法,盡管這種說(shuō)法有待商榷,McLeod說(shuō)。RUP的特點(diǎn)是有一大堆的文檔,它可能是針對敏捷方法中的各個(gè)步驟 的,他解釋說(shuō)。RUP可以是一種敏捷方法,Ambler說(shuō):”RUP給予我們的是流程上的架構準則。它完全依賴(lài)于你是如何制定的。“
Ambler同時(shí)提到了DSDM — Dynamic Systems Development Method — 一個(gè)敏捷領(lǐng)域里的失敗的案例。SDSM有點(diǎn)像RAD [rapid application development],但在里面增加了一下額外的處理。RAD跟敏捷開(kāi)發(fā)的不同之處在于它只關(guān)注開(kāi)發(fā)迭代,而不考慮促進(jìn)合作,他指出。
McLeod認為各種敏捷方法論和迭代開(kāi)發(fā)過(guò)程很相似。”它們之間沒(méi)有太多的區別,“他說(shuō)。
“敏捷”這個(gè)術(shù)語(yǔ),Cunnigham說(shuō),是在猶他州會(huì )議上選出的一個(gè)詞,人們通常把它引用為”輕量級“的方法,他回憶到。但”輕量級“這個(gè)詞從表面意思上看也承載著(zhù)一些負面的含義,他說(shuō)。
聯(lián)系客服