長(cháng)久以來(lái),身為“軟件開(kāi)發(fā)商”的微軟的名聲并不太好,倒不是人們對微軟的軟件產(chǎn)品不滿(mǎn)意,而是其更新周期太過(guò)漫長(cháng),比如Office、Windows、SQL Server和Exchange等主打產(chǎn)品的更新周期都長(cháng)達3年左右,這其中的主要原因就是微軟在軟件項目的開(kāi)發(fā)中采用了瀑布式開(kāi)發(fā)模式。但隨著(zhù)用戶(hù)對軟件的需求越來(lái)越苛刻,瀑布式開(kāi)發(fā)模式已經(jīng)難以滿(mǎn)足新型軟件的開(kāi)發(fā)要求,而微軟也不得不改變自己的軟件研發(fā)策略。
國外科技媒體Arstechnica日前發(fā)文對微軟軟件研發(fā)策略的轉變之路進(jìn)行了分析。
以下是文章的主要內容:
在大部分人的印象里,微軟的新版本軟件好像很少按照既定時(shí)間發(fā)布(Windows 95、Windows 2000和Windows Vista均延期發(fā)布),而微軟本身也很少就軟件延期發(fā)布正式的官方聲明,所以此時(shí)關(guān)于微軟的各種傳聞、假設和猜測似乎已經(jīng)成了慣例。盡管如此,微軟仍然取得了巨大的成功,因為許多競爭對手的情況也大同小異,大家針對付費軟件的更新速度都比較慢,所以微軟也就顯得沒(méi)有那么突兀了。
瀑布式開(kāi)發(fā)模式
客觀(guān)地講,延期發(fā)布在大型軟件項目的開(kāi)發(fā)中非常普遍,畢竟這其中充滿(mǎn)了各種未知的復雜因素,而目前尚未出現一套行之有效的方法來(lái)對此進(jìn)行管理,所以許多軟件項目最終都很難在既定的時(shí)間和預算內完成開(kāi)發(fā)。針對這種情況,許多計算機領(lǐng)域的科學(xué)家和工程師嘗試了多種正規化的方法來(lái)改善軟件開(kāi)發(fā)的流程,這其中就包括微軟和大部分軟件企業(yè)普遍使用的瀑布式開(kāi)發(fā)模式。
瀑布式開(kāi)發(fā)模式將軟件開(kāi)發(fā)的過(guò)程分為系統計劃、需求分析、系統設計、系統編碼、系統測試、系統運行和維護6個(gè)階段,每一階段工作的完成是下一階段工作開(kāi)始的前提,每一階段都要進(jìn)行嚴格的評審,保證各階段的工作做得足夠好時(shí)才允許進(jìn)入下一階段。
瀑布式開(kāi)發(fā)模式在上世紀70年代被正式命名之后就備受爭議,盡管有不少公司在軟件開(kāi)發(fā)中使用該模型,但它一直未能獲得業(yè)界的廣泛認可,相反,還有許多業(yè)內人士該模型是造成軟件開(kāi)發(fā)延期或失敗的主要原因。
盡管如此,瀑布式開(kāi)發(fā)模式在如今的制造業(yè)和建筑業(yè)領(lǐng)域中應用仍然非常廣泛,因為這兩個(gè)行業(yè)中的項目進(jìn)度大多是不可逆的,所以使用這套略顯刻板的模型反而能夠避免一些不必要的成本支出。
相比之下,軟件項目在后期進(jìn)行修改的成本要比一棟樓簡(jiǎn)單許多,同時(shí)軟件開(kāi)發(fā)過(guò)程中的不確定因素也要更多一些,所以許多軟件項目往往會(huì )在某一階段的開(kāi)發(fā)完成之后再對需求做出修改,這顯然與瀑布式開(kāi)發(fā)模式的理念是相悖的。
瀑布式開(kāi)發(fā)模式在微軟的應用
雖然微軟在軟件開(kāi)發(fā)中并沒(méi)有使用純粹意義上的瀑布式開(kāi)發(fā)模式(部分開(kāi)發(fā)過(guò)程有所反復),但總體上來(lái)說(shuō)還是沿用了瀑布式開(kāi)發(fā)流程,其中的一個(gè)代表作的就是Visual Studio。
相對于Windows和Office等軟件3年的更新周期來(lái)說(shuō),Visual Studio的版本更新速度要稍快一些,為兩年左右。這兩年通常會(huì )被分成若干個(gè)階段,其中軟件的規劃和設計工作要占到4到6個(gè)月,之后是6到8周的代碼編寫(xiě)和為期4個(gè)月的測試階段,接下來(lái)如果出現較大的需求變更,就需要6到8周的時(shí)間來(lái)進(jìn)行第二輪的代碼編寫(xiě)和4個(gè)月的第二輪測試,如果無(wú)需大的調整,則進(jìn)入到4個(gè)月的穩定期直到產(chǎn)品最終發(fā)布。
從中不難看出,即便在需求發(fā)生變更的情況下,軟件代碼的編寫(xiě)時(shí)間也不過(guò)只有4個(gè)月,而軟件測試階段所需的時(shí)間卻是代碼編寫(xiě)的兩倍左右,多少有些本末倒置。
其實(shí)微軟的組織結構也符合瀑布式開(kāi)發(fā)模式的要求,其在軟件開(kāi)發(fā)項目中主要有三個(gè)角色,分別是負責功能說(shuō)明和設計的項目經(jīng)理、負責代碼編寫(xiě)的開(kāi)發(fā)人員以及負責功能實(shí)現的質(zhì)保人員,這三個(gè)角色在管理架構上屬于平級,三方相互合作和制約來(lái)完成一個(gè)軟件項目的開(kāi)發(fā)。
上述的這種開(kāi)發(fā)流程和架構看似很是嚴謹,但操作起來(lái)卻不甚理想。舉例來(lái)說(shuō),當某個(gè)用戶(hù)安裝了Visual Studio的Beta版本并進(jìn)行了1個(gè)月的測試之后發(fā)現并提交了其中的一個(gè)Bug,而此時(shí)對于開(kāi)發(fā)人員來(lái)說(shuō),是應該對這個(gè)Bug進(jìn)行修復的,但由于此時(shí)軟件的開(kāi)發(fā)已經(jīng)進(jìn)入尾聲,所以如果這個(gè)Bug比較嚴重的話(huà),可能就只能到下一個(gè)版本的開(kāi)發(fā)階段再對其進(jìn)行修復,這顯然會(huì )影響該軟件的最終質(zhì)量。
敏捷開(kāi)發(fā)模式
網(wǎng)絡(luò )的逐漸興起開(kāi)始對軟件交付模式產(chǎn)生巨大影響,用戶(hù)是在體驗某款軟件時(shí)無(wú)需再將其安裝到本地計算機上,只需訪(fǎng)問(wèn)某個(gè)網(wǎng)站就能夠體驗到具體的外觀(guān)和功能,這對于軟件測試來(lái)說(shuō)無(wú)疑是非常方便的。也正是在這個(gè)時(shí)候,“敏捷開(kāi)發(fā)”模式開(kāi)始出現在軟件開(kāi)發(fā)領(lǐng)域之中。
“敏捷開(kāi)發(fā)”一詞最早出現在上世紀的90年代,并在2001年被正式定名,當時(shí)一組開(kāi)發(fā)人員公布了所謂的“敏捷開(kāi)發(fā)宣言”:“個(gè)體和交互勝過(guò)過(guò)程和工具、可以工作的軟件勝過(guò)面面俱到的文檔、客戶(hù)合作勝過(guò)合同談判、響應變化勝過(guò)遵循計劃、雖然右邊的項也具有價(jià)值,但我們認為左邊的項具有更大的價(jià)值。”
簡(jiǎn)單的說(shuō),敏捷開(kāi)發(fā)是一種以用戶(hù)需求進(jìn)化為核心、迭代、循序漸進(jìn)的開(kāi)發(fā)方法。在敏捷開(kāi)發(fā)中,軟件項目的構建被切分成多個(gè)子項目,各個(gè)子項目的成果都經(jīng)過(guò)測試,具備集成和可運行的特征。換言之,就是把一個(gè)大項目分為多個(gè)相互聯(lián)系,但也可獨立運行的小項目,并分別完成,在此過(guò)程中軟件一直處于可使用狀態(tài)。
很顯然,敏捷開(kāi)發(fā)與瀑布式開(kāi)發(fā)有著(zhù)質(zhì)的區別,前者采用了“迭代式”的開(kāi)發(fā)模式,事先并不先入為主地確定用戶(hù)的需求,而是先做一些原型試驗品來(lái)讓那些關(guān)鍵用戶(hù)去體驗,然后再根據用戶(hù)的反饋意見(jiàn)不斷做修改和調整。在整個(gè)研發(fā)流程中,產(chǎn)品的最初設想和最終設計往往是不相同的。
敏捷開(kāi)發(fā)模式在微軟的應用
微軟的Visual Studio團隊是公司內部首個(gè)采用敏捷開(kāi)發(fā)模式的研發(fā)團隊,盡管最初微軟內部仍然以使用瀑布式開(kāi)發(fā)模式,但由于Visual Studio的第三方開(kāi)發(fā)者強烈要求使用敏捷開(kāi)發(fā)模式,所以微軟的研發(fā)部門(mén)不得不做出改變,這也為敏捷開(kāi)發(fā)模式在Visual Studio中的應用鋪平了道路。
Visual Studio 2010是首個(gè)因敏捷開(kāi)發(fā)模式而受益的Visual Studio版本,該軟件發(fā)布于2010年4月,當時(shí)同樣耗費了兩年的時(shí)間完成開(kāi)發(fā),但隨后研發(fā)團隊就發(fā)現軟件中的許多模板對于敏捷開(kāi)發(fā)者來(lái)說(shuō)太過(guò)籠統,幾乎沒(méi)有太大的實(shí)際意義。針對這種情況,微軟的研發(fā)部門(mén)推出了鼎鼎大名的Team Foundation Server(TFS),這個(gè)功能強大的服務(wù)器平臺能為微軟的產(chǎn)品提供源代碼管理、數據收集、定義工作流程和管理項目進(jìn)度等,而微軟的軟件研發(fā)策略也就從此開(kāi)始發(fā)生巨大變化,以往兩到三年的產(chǎn)品更新周期逐漸變得更短,軟件開(kāi)發(fā)的流程也變得更加靈活高效,而敏捷開(kāi)發(fā)模式也開(kāi)始在微軟內部流行開(kāi)來(lái)
盡管敏捷開(kāi)發(fā)模式已被證明是非常高效的軟件開(kāi)發(fā)模式,但在微軟這種規模龐大的公司中推行起來(lái)還是頗為困難的,微軟擁有大量的軟件開(kāi)發(fā)者,其中僅研發(fā)部門(mén)的員工就在3000人以上,同時(shí)還有數百個(gè)研發(fā)團隊,所以要想讓大家從早已習以為常的瀑布式開(kāi)發(fā)模式轉換為敏捷開(kāi)發(fā)模式,其難度不亞于“壯士斷腕”。
然而,微軟的管理層已經(jīng)意識到敏捷開(kāi)發(fā)模式對于公司未來(lái)發(fā)展的重要性,于是開(kāi)始積極地制定各種措施來(lái)推動(dòng)這一模式在各個(gè)研發(fā)團隊進(jìn)行普及,其中包括知識培訓、改變研發(fā)團隊組織結構、建立新的層級匯報機制等等,這都在一定程度上盤(pán)活了微軟內部的研發(fā)資源,明顯提升了產(chǎn)品的研發(fā)進(jìn)度。以Visual Studio為例,目前的版本更新速度已經(jīng)縮短至一個(gè)季度左右,這在瀑布式開(kāi)發(fā)模式下是難以想象的。
“保守”的微軟Office
Office應該算是微軟最為傳統的應用軟件了,由于該軟件擁有非常廣泛的用戶(hù)群,所以微軟在Office的開(kāi)發(fā)策略上相對比較保守,而Office用戶(hù)也大多不喜歡比較頻繁的版本更新,因為這樣可能會(huì )打亂他們既有的工作流程。
但是,微軟另辟蹊徑地鼓勵用戶(hù)轉向Office 365訂閱服務(wù),該服務(wù)為用戶(hù)提供定期的版本更新以及新的功能。同時(shí),微軟的iPad版Office團隊在進(jìn)行產(chǎn)品研發(fā)時(shí)也采用了敏捷開(kāi)發(fā)模式,通過(guò)定期產(chǎn)品迭代來(lái)為用戶(hù)帶來(lái)更棒的使用體驗。
就目前情況而言,微軟是否會(huì )將敏捷開(kāi)發(fā)模式應用到桌面版Office的研發(fā)中還不確定,但至少微軟已經(jīng)主動(dòng)進(jìn)行了若干嘗試,雖然公司并未改變Office為期3年的產(chǎn)品更新周期,但微軟也承認如今的用戶(hù)期待獲得更多的功能,所以未來(lái)微軟會(huì )通過(guò)其他方式來(lái)滿(mǎn)足用戶(hù)的需求。由此不難看出,一旦微軟發(fā)現敏捷開(kāi)發(fā)模式能夠為用戶(hù)帶來(lái)更棒的使用體驗的話(huà),那么完全有可能在未來(lái)數年內拋棄瀑布式開(kāi)發(fā)模式。
結語(yǔ)
對于微軟的用戶(hù)來(lái)說(shuō),敏捷開(kāi)發(fā)模式為Visual Studio的開(kāi)發(fā)而帶來(lái)的改進(jìn)是顯而易見(jiàn)的,每隔數月該產(chǎn)品就能進(jìn)行一些版本更新(網(wǎng)絡(luò )版的更新速度更快),這無(wú)疑將會(huì )吸引更多的開(kāi)發(fā)者積極加入到Visual Studio的陣營(yíng)中來(lái),從而實(shí)現良性循環(huán)。
而微軟也在內部大力推動(dòng)敏捷開(kāi)發(fā)模式的進(jìn)展,畢竟這種模式明顯提升了軟件項目研發(fā)的速度和質(zhì)量,同時(shí)該模式所帶來(lái)的優(yōu)質(zhì)體驗也讓用戶(hù)變得更加忠誠,所以我們有理由相信敏捷開(kāi)發(fā)模式未來(lái)將會(huì )在微軟逐漸普及,并推動(dòng)這家軟件巨頭打造出更為優(yōu)秀的應用軟件。譯者:璞玉