當前位置:編程學習大全網 - 編程語言 - [敏捷開發:人比流程重要] 軟件敏捷開發流程

[敏捷開發:人比流程重要] 軟件敏捷開發流程

 與傳統軟件開發方法相比,敏捷開發更重視人在軟件開發中的作用,強調快速叠代、持續集成以及測試驅動開發等,從而滿足不斷變化的業務需求。  20世紀60年代開始的軟件危機引發了人們對軟件開發的思考,並由此誕生了《軟件工程》這門學科。它將軟件開發分為需求分析、設計、編碼、測試、維護等幾個階段的瀑布式開發軟件方法至今仍然在大多數軟件開發組織沿用。然而,《軟件工程》學及其瀑布式開發方法並沒有徹底解決軟件危機。如何滿足不斷變化的軟件需求壹直就是傳統軟件開發方法無法解決的難題。

而敏捷開發正是為了解決上述問題而提出,從2001年敏捷開發方法正式出現以來,越來越多的開發人員開始接受這壹方法,市場也出現了壹批以敏捷開發為主要方法的軟件開發和咨詢服務公司。ThoughtWorks公司就是其中的佼佼者,日前,本報記者專訪了ThoughtWorks公司中國區總經理郭曉,請他就如何實施敏捷開發等問題進行介紹。

顛覆

傳統軟件開發方法

敏捷開發作為壹種開發方法始於2001年,當時全球非常有名的10多位軟件開發的大師集中在壹起,對當時出現的壹些新的編程方法進行歸納,並用敏捷這個詞來概括這幾種類似的方法流程。

“只要妳的軟件開發方法遵循敏捷的四條原則(即個體和交互勝過過程和工具、工作的軟件勝過面面俱到的文檔、客戶合作勝過合同談判、響應變化勝過遵循計劃),就算是敏捷壹類的開發方法。比如ThoughtWorks自身的實踐就集成了Scrum和極限編程,是這兩種方法的組合體。” 郭曉告訴記者。

郭曉從20世紀90年代開始接觸極限編程等敏捷開發方法,其後的10多年壹直從事敏捷開發,後來又從事軟件開發的管理工作,這使得他可以從更高的層次上來看敏捷這種對大多數程序員仍然比較陌生的開發方法。郭曉認為,敏捷宣言最為核心的思想有兩點。

壹個是人比流程重要。敏捷和傳統的開發方式最大的不同點在於,傳統的軟件開發方式遵循了20世紀大規模工業化生產的思路: 每個人在這個流水線上負責壹項工作,只要流程設計得完美,人就不重要,這也是《軟件工程》學所追求的壹種境界。而實際上,軟件開發是壹個知識性、創造性的工作,是不可能完全模仿流水線的。敏捷開發強調壹批有軟件開發能力的人組成壹個團隊,至於團隊使用哪種敏捷方法,完全由團隊根據自己的特點來決定。它強調流程是為人服務的,重視發揮人最大的創造力。

另壹個是能夠工作的軟件其價值要比文檔重要。傳統的軟件開發方法分為需求分析、設計、編碼等不同的階段,分別由不同的人負責,文檔在其中扮演驅動力的角色,不同角色通過文檔來進行知識傳遞和交互。而敏捷開發認為文檔是為軟件服務的,強調通過快速叠代和持續集成,讓各種不同角色的人員可以基於目前已經開發出的軟件進行直接溝通交流。這就帶來了兩個好處: 快速反饋和緊密的協作。

“重視交付、緊密協作、快速反饋正是敏捷的特殊之處,這些特點保證了敏捷開發能夠滿足變化的需求。”郭曉說,“而用傳統的軟件開發方法開發出的軟件成功與否很大程度上建立在需求分析是否有足夠的遠見,能把未來的需求都考慮在內,而實際上,這幾乎是不可能的。”

結對編程

有必要嗎?

說起敏捷開發也就不能不提到它的結對編程,敏捷開發要求代碼的編寫應該同時有兩人參與,兩人***同使用同壹臺電腦、壹個鍵盤和壹個鼠標。在采訪過程中,記者特意向郭曉提出了這壹疑問: 結對編程有必要嗎?

郭曉告訴記者,結對編程在大多數情況下是適合的。在正常情況下,壹個程序員並不是整天都在敲鍵盤輸代碼,他要思考,實際上真正敲鍵盤的時間只有20%~30%。因此,兩個人***同使用同壹套電腦,並不意味著效率下降。敏捷開發要求壹個人在編寫代碼的同時,另壹個人對這個代碼進行評審,評估代碼是否正確、是否有更佳的編寫方法,然後相互溝通交流。這樣寫出的代碼質量要遠遠高於單個人寫。

結對編程的另壹個好處是降低了項目風險。現代軟件開發分工很細,每個軟件開發人員獨立負責壹部分,壹旦程序員離職或者換崗對於軟件開發會很不利。而結對編程時,每段代碼都至少有兩個人了解,人員變動給項目帶來的風險要低得多。

結對編程還有壹個好處是有助於傳、幫、帶。通過結對編程,項目新來者可以很容易地融入進來,而這個過程不損失代碼數量,還能夠帶來知識的***享等好處。

郭曉補充說,雖然敏捷開發強調敏捷編程,但並不是機械地要求任何代碼都要結對完成。對於壹些很簡單、眾所周知的代碼,也可以只由壹個人負責。

實際上,記者曾參觀過ThoughtWorks公司的軟件開發現場。記者看到,在大多數公司常見的格子間不見了,取而代之的是壹個個長方形的大圓桌。這裏的開發人員以兩個人為壹組,雖然兩個人面前各有壹個顯示器,但都接在同壹個主機上,其中壹個人在編代碼,另壹個在進行評審。

“我們的實際經驗也證明了這種方法的先進性。我們有員工反映說,結對編程增加了他們的工作壓力,因為結對時,兩人幾乎不再會做與工作無關的事情了。” 郭曉笑著說。

敏捷開發

能走多遠?

敏捷作為壹種軟件開發方法其先進性和合理性毋庸置疑,但是這種方法的適用範圍如何?它適合大型軟件開發組織采用嗎?

“敏捷開發從2001年正式提出來的時候就有人提出,它不適合於大型軟件開發團隊、不適合於周期長的項目。事實上,這些年來,這些說法正在不斷地被突破。”郭曉說,“當然敏捷本身也在不斷擴展,從而能夠適應越來越廣的領域。”

郭曉介紹說,ThoughtWorks公司自己就曾在100人的項目上采用過敏捷開發。實際上,ThoughtWorks就是因此才和敏捷開發結緣的。

1999年的ThoughtWorks還只是壹個從事軟件開發的公司。當時有壹個100多人參與的大項目陷入了被動,不得已請來了業界頗負盛名、後來被稱為敏捷開發“教父”的Martin Fowler和Ward Cunningham來做咨詢工作。他們通過引入敏捷開發讓公司擺脫了困境。這也讓ThoughtWorks感受到敏捷開發方法的魔力。另壹個例子是英國電訊(BT),它在印度有壹個1.8萬人的開發團隊,在英國本土和其他地方也有幾萬人的開發團隊,它現在幾乎所有的軟件項目都是用敏捷的方法來開發的。

當然,敏捷開發作為壹種軟件開發方法也並不是萬能的,也存在壹些局限。換句話說,要保證敏捷開發成功需要壹些前提條件。

郭曉說: “敏捷開發要和客戶緊密地溝通,才能夠不斷地獲得客戶的反饋。而實際上,通常客戶很忙,抽不出這麽多時間。另外,還有壹些產品開發依賴於產品經理來了解需求,而他其實並不是真正的客戶,這給敏捷開發帶來困難。”

此外,客戶對開發方的充分信任也是敏捷開發成功很有必要的壹個條件。敏捷開發最佳的應用場景是用戶不斷提出新的需求,而項目合同價格也隨著需求不斷調整。郭曉說,這在實際開發過程就是壹個問題,特別是第壹次合作時,客戶就會很擔心項目的最終成本。而如果是公司自己的開發隊伍,這將不是問題。從這個角度上說,敏捷開發最大的市場是公司內部的開發團隊。

“不管怎麽說,這幾年我們已經明顯感受到接受敏捷開發思想的人越來越多,從要求我們提供咨詢服務的客戶數量可以看出這種趨勢。我們相信,敏捷開發壹定會確立自己在軟件開發領域的壹席之地的。”郭曉信心十足地說。

  • 上一篇:槌翠汉鐨勬瓕鍚嶈嚦浠娿??
  • 下一篇:幼兒園小班周教學計劃表8篇
  • copyright 2024編程學習大全網