盤(pán)點(diǎn):主流敏捷軟件研發(fā)工具平臺(tái)比較(敏捷軟件開(kāi)發(fā)工具)
無(wú)論是創(chuàng)業(yè)軟件團(tuán)隊(duì),還是企業(yè)級(jí)規(guī)?;浖邪l(fā),都會(huì)遇到提升管理能力、提升研發(fā)效率的問(wèn)題。為了解決這兩個(gè)問(wèn)題,許多軟件研發(fā)工具平臺(tái)也營(yíng)運(yùn)而生:微軟、IBM、HP、Atlassian、Rally、Collabornet、Polarion……等廠商都推出了各具特色的產(chǎn)品,而近年來(lái)新生的Slack、teambition等平臺(tái)也帶來(lái)了新的理念和產(chǎn)品,受到了許多團(tuán)隊(duì)的歡迎。作為軟件研發(fā)的團(tuán)隊(duì)或企業(yè),我們?cè)撊绾胃鶕?jù)自身發(fā)展情況,對(duì)這些產(chǎn)品和工具進(jìn)行合理的選擇?一個(gè)支撐軟件高效研發(fā)的工具平臺(tái)應(yīng)該具備哪些特點(diǎn)?未來(lái)又將向什么方向發(fā)展呢?
世界范圍內(nèi)軟件研發(fā)工具平臺(tái)產(chǎn)品發(fā)展迅速,國(guó)內(nèi)產(chǎn)品仍是空白
當(dāng)我們?cè)趯W(xué)校里用Visual Studio編寫(xiě)hello world的時(shí)候,我們就已經(jīng)開(kāi)始使用工具進(jìn)行軟件研發(fā)。只是那個(gè)時(shí)候,工具的作用還很單一,對(duì)管理能力、研發(fā)效率的整體提升還沒(méi)有特別關(guān)照。
在80年代,國(guó)內(nèi)的計(jì)算機(jī)、軟件行業(yè)剛剛萌芽的時(shí)候,國(guó)外的同行已經(jīng)開(kāi)始研究使用工具提升軟件研發(fā)效率,微軟、Rational(后來(lái)被IBM收購(gòu))推出了各自的IDE,并在不斷增強(qiáng)IDE功能的同時(shí),向需求管理和質(zhì)量管理方向拓展。
90年代,又有一些廠商加入到了開(kāi)發(fā)軟件研發(fā)工具產(chǎn)品的行列中,其中國(guó)內(nèi)同行非常熟悉的莫過(guò)于Mercury(后來(lái)被HP收購(gòu))的產(chǎn)品,90年代末和2000年前后,大家經(jīng)常使用的研發(fā)工具組合一般是:需求管理用Rational Request Pro,開(kāi)發(fā)IDE用Micosoft Visio Studio,代碼庫(kù)用collabnet subversion或Rational Clear Case,測(cè)試管理用Mercury Test Director,軟件性能測(cè)試用Mercury LoadRunner。這些工具在軟件研發(fā)的每個(gè)方面都提升了個(gè)人和團(tuán)隊(duì)的效率,也讓越來(lái)越多的人看到了工具平臺(tái)對(duì)軟件研發(fā)效率提升的重要性。
進(jìn)入21世紀(jì),敏捷思想及敏捷軟件研發(fā)方法開(kāi)始逐漸改變?nèi)藗儗?duì)軟件研發(fā)的認(rèn)識(shí)。在軟件研發(fā)工具平臺(tái)方面,ALM(Application Lifecycle Management)逐漸成為各工具廠商產(chǎn)品努力的方向。在短短的10年內(nèi),涌現(xiàn)出一大批優(yōu)秀的軟件研發(fā)工具平臺(tái)廠商,如Atlassian、Rally、Polarion、Versionone、Serena……一些老牌廠商,如微軟、IBM、HP通過(guò)收購(gòu)、合并、開(kāi)發(fā)新的工具產(chǎn)品等方式,更加完善了軟件全生命周期管理的工具平臺(tái)。有了新的軟件研發(fā)方法,配合眾多優(yōu)秀的軟件研發(fā)工具平臺(tái),軟件行業(yè)得到了快速的發(fā)展。此時(shí)國(guó)內(nèi)同行也廣泛認(rèn)識(shí)到工具平臺(tái)對(duì)提升研發(fā)效率的重要性,有條件的企業(yè)或采購(gòu),或自主研發(fā),搭建起自己的研發(fā)工具平臺(tái)。
2010年前后,隨著互聯(lián)網(wǎng)的蓬勃發(fā)展,互聯(lián)網(wǎng)軟件研發(fā)逐漸成為新的焦點(diǎn),DevOps很快成為大家普遍的共識(shí)。很多傳統(tǒng)軟件研發(fā)工具廠商打著“DevOps”的旗幟適時(shí)地推出了一些產(chǎn)品或升級(jí)版本,同時(shí)又有一些新的廠商加入競(jìng)爭(zhēng)的行列。在如何能夠更好地管理軟件研發(fā)活動(dòng)的問(wèn)題上,像Slack這樣的產(chǎn)品向“傳統(tǒng)”研發(fā)工具平臺(tái)發(fā)起了新的挑戰(zhàn),在看到越來(lái)越多的軟件研發(fā)團(tuán)隊(duì)更愿意使用Slack進(jìn)行日常研發(fā)工作時(shí),我們不禁陷入思索:未來(lái)軟件研發(fā)工具平臺(tái)將何去何從?
圖1
目前軟件研發(fā)工具平臺(tái)的對(duì)比研究有很多,但實(shí)用性低
2010年以后,多家重要的IT咨詢(xún)公司分別開(kāi)始定期發(fā)布主流軟件研發(fā)工具平臺(tái)對(duì)比研究報(bào)告,各家最近一期的報(bào)告結(jié)果匯總?cè)缦拢?/p>
圖2
這些報(bào)告每一篇報(bào)告單獨(dú)看似乎視角都很客觀,評(píng)估方法似乎都很縝密。但當(dāng)把他們放到一起比較后,會(huì)發(fā)現(xiàn)它們的結(jié)論大相徑庭,不同的廠商也會(huì)精心挑選“適合”自己產(chǎn)品的報(bào)告,懸掛于自己的產(chǎn)品網(wǎng)站首頁(yè)。而這些只有兩個(gè)維度的魔力象限對(duì)于真正需要軟件研發(fā)工具平臺(tái)的團(tuán)隊(duì)或企業(yè)來(lái)說(shuō),幫助并不是很大。
我們發(fā)現(xiàn)這些IT咨詢(xún)公司評(píng)判軟件研發(fā)工具平臺(tái)廠商,及其產(chǎn)品的視角無(wú)外乎有兩個(gè):一個(gè)是從ALM的功能視角;另一個(gè)是商業(yè)的視角。在ALM功能視角下,各家咨詢(xún)公司會(huì)分別著眼于軟件的需求、設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、發(fā)布等幾個(gè)主要環(huán)節(jié),詳細(xì)對(duì)比各個(gè)廠商的產(chǎn)品功能,看誰(shuí)的功能更強(qiáng)大,誰(shuí)的功能更全面。而在商業(yè)的視角中,他們則更多以產(chǎn)品的市場(chǎng)份額、廠商服務(wù)的覆蓋程度以及盈利的多少、來(lái)衡量哪家廠商更加優(yōu)秀。這樣就造成了功能越齊全的產(chǎn)品、體量越大廠商的在類(lèi)似的比較報(bào)告中越得到好評(píng),反之則被排在后面。
但是,對(duì)于正在尋求軟件研發(fā)工具平臺(tái)解決方案的團(tuán)隊(duì)和企業(yè)來(lái)說(shuō),尤其是正在進(jìn)行敏捷、互聯(lián)網(wǎng)轉(zhuǎn)型的團(tuán)隊(duì)或企業(yè)來(lái)說(shuō),上面的這些對(duì)比方法還是顯得陳舊、粗獷,并沒(méi)有解答哪個(gè)工具平臺(tái)更加適合我們這些正在進(jìn)行敏捷軟件研發(fā),或者互聯(lián)網(wǎng)軟件研發(fā)的團(tuán)隊(duì)。
在敏捷軟件研發(fā)的影響下,工具平臺(tái)發(fā)生了很大變化
傳統(tǒng)瀑布模式下的軟件研發(fā),注重軟件從概念到上線的流程以及每個(gè)流程節(jié)點(diǎn)上的關(guān)鍵活動(dòng),同時(shí)也重視項(xiàng)目的管理。許多支持瀑布模式開(kāi)發(fā)的軟件研發(fā)工具平臺(tái),在需求管理、質(zhì)量管理、配置管理、項(xiàng)目管理等方面的功能都十分強(qiáng)大。
圖3
敏捷思想強(qiáng)調(diào)“以人為本”,讓人們主動(dòng)、自我管理、響應(yīng)變化、互相信賴(lài)地工作。敏捷軟件研發(fā)方法,如Scrum、Kanban、XP實(shí)踐等指導(dǎo)軟件研發(fā)團(tuán)隊(duì)擁抱需求變化,快速交付客戶(hù)價(jià)值,持續(xù)改進(jìn)。要想使團(tuán)隊(duì)或組織真正敏捷起來(lái),需要在人、技、法三方面達(dá)到和諧。這就需要軟件研發(fā)工具平臺(tái)這個(gè)“技”的方面也要敏捷起來(lái)。
圖4
敏捷宣言的第一句話是:“個(gè)體和交互勝過(guò)流程和工具”,但這并不是說(shuō)敏捷不需要工具的支持。相反,如果有了更好地研發(fā)工具支持,提高團(tuán)隊(duì)的工作效率,才能真正的敏捷起來(lái)。
對(duì)照敏捷宣言的幾句話,我們大致能看到敏捷價(jià)值觀下的研發(fā)工具應(yīng)該具備的特點(diǎn):
1. 個(gè)體與交互勝過(guò)流程和工具:研發(fā)工具應(yīng)該能夠突出個(gè)人的工作,并且能夠讓團(tuán)隊(duì)更好地協(xié)作
2. 工作的軟件勝過(guò)詳盡的文檔:研發(fā)工具應(yīng)該精簡(jiǎn)文檔及審批流程,讓軟件交付更加順暢
3. 客戶(hù)合作勝過(guò)合同談判:研發(fā)工具應(yīng)該支撐快速交付可工作的軟件,并且能夠更好地幫助用戶(hù)反饋
4. 響應(yīng)變化勝過(guò)遵循計(jì)劃:研發(fā)工具應(yīng)該打通需求、設(shè)計(jì)、開(kāi)發(fā)、驗(yàn)證的循環(huán),持續(xù)交付
同時(shí),我們看到越來(lái)越多的工具平臺(tái)正在發(fā)生如下的變化:
強(qiáng)化:
1. 對(duì)敏捷軟件開(kāi)發(fā)實(shí)踐的支持
2. 對(duì)持續(xù)快速交付的支持
3. 對(duì)團(tuán)隊(duì)協(xié)作的支持
4. 對(duì)用戶(hù)反饋的支持
5. 用戶(hù)體驗(yàn)的提升
6. 單一工具解決特定問(wèn)題,平臺(tái)提升整體效率
弱化:
1. 流程及審批
2. 文檔及變更管理
3. 基于時(shí)間的任務(wù)項(xiàng)計(jì)劃管理(甘特圖)
4. 把產(chǎn)品質(zhì)量問(wèn)題交給測(cè)試人員
5. 項(xiàng)目中角色及權(quán)限劃分
6. 大而全的平臺(tái)解決所有問(wèn)題
以上的變化讓我們清楚地看到敏捷研發(fā)給工具平臺(tái)帶來(lái)的變革,我們也可以總結(jié)一下,敏捷方法下的軟件研發(fā)工具平臺(tái)應(yīng)該具備以下6個(gè)特點(diǎn):
1. 敏捷管理實(shí)踐(用戶(hù)故事地圖、故事列表、優(yōu)先級(jí)、估算、卡片墻/看板、燃盡圖/CFD、回顧數(shù)據(jù))
2. 敏捷開(kāi)發(fā)實(shí)踐-代碼(IDE集成、代碼掃描、代碼審查)
3. 敏捷開(kāi)發(fā)實(shí)踐-Dev-Test-Ops的Pipeline效率提升(編譯、CI、UT、AT、發(fā)布、部署、運(yùn)維)
4. 用戶(hù)反饋與研發(fā)流程打通
5. 注重協(xié)作與用戶(hù)體驗(yàn)
6. 團(tuán)隊(duì)能負(fù)擔(dān)的工具平臺(tái)價(jià)格
主流敏捷軟件研發(fā)工具平臺(tái)比較,各有所長(zhǎng)
圖5
上面的表格是我們基于敏捷研發(fā)方法下的工具平臺(tái)應(yīng)具備的功能,結(jié)合對(duì)每個(gè)工具平臺(tái)的深度試用或試用后做出的比較。看到在敏捷研發(fā)的場(chǎng)景下,各家平臺(tái)的功能各有所長(zhǎng)。
圖6
選擇適合自己團(tuán)隊(duì)的軟件研發(fā)工具平臺(tái)
在軟件研發(fā)工具平臺(tái)中,沒(méi)有通用的最完美的解決方案。錯(cuò)誤的選擇會(huì)讓組織的成長(zhǎng)、競(jìng)爭(zhēng)以及產(chǎn)品的成功交付受到影響。
在選擇軟件研發(fā)工具平臺(tái)時(shí),先要確定使用工具平臺(tái)想要使組織在哪方面得到提升,是快速交付的能力?還是為了支撐敏捷開(kāi)發(fā)實(shí)踐?或是敏捷管理實(shí)踐落地?還是為了更好地收集管理用戶(hù)反饋?亦或是為了加強(qiáng)團(tuán)隊(duì)協(xié)作?
確定了目標(biāo),還要結(jié)合人技法三角,綜合考慮用什么樣的工具,即“技”。要充分了解三角的其它兩個(gè)方面,也就是了解團(tuán)隊(duì)或組織的人的能力水平,和目前大家使用或?qū)⒁褂玫难邪l(fā)方法。
只有在人、技、法三方面達(dá)到和諧,才能充分地發(fā)揮工具平臺(tái)的效果,才能真正解決問(wèn)題,使組織的能力得到提升。
軟件研發(fā)工具平臺(tái)未來(lái)的發(fā)展
隨著軟件行業(yè)的迅猛發(fā)展,軟件研發(fā)工具平臺(tái)也必然會(huì)發(fā)生更多的變化。未來(lái)的軟件研發(fā)工具平臺(tái)將會(huì)更加突出如下特征:
1. 更快
在需求、設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、部署、反饋的軟件研發(fā)周期中,研發(fā)工具平臺(tái)會(huì)更多提高研發(fā)整體效率,進(jìn)一步縮短研發(fā)周期。
2. 質(zhì)量風(fēng)險(xiǎn)前移
在代碼檢查、CR、CI、單測(cè)、自動(dòng)化功能、性能測(cè)試、安全測(cè)試等方面,研發(fā)工具平臺(tái)會(huì)更注重質(zhì)量風(fēng)險(xiǎn)的前移,即在開(kāi)發(fā)階段保證質(zhì)量的優(yōu)秀實(shí)踐的落地。
3. 更多協(xié)作
在團(tuán)隊(duì)協(xié)作、客戶(hù)合作方面,研發(fā)工具平臺(tái)會(huì)更好地結(jié)合網(wǎng)絡(luò)社交、移動(dòng)互聯(lián)網(wǎng)等新業(yè)務(wù)新技術(shù),讓軟件研發(fā)這種人與人的協(xié)作活動(dòng)更順暢、更方便。
作者簡(jiǎn)介
王一男,百度研發(fā)工具平臺(tái)資深產(chǎn)品經(jīng)理。10年軟件敏捷研發(fā)管理實(shí)戰(zhàn)經(jīng)驗(yàn),先后在兩家上市企業(yè)成功實(shí)施基于信息化工具集的軟件敏捷項(xiàng)目管理,并成功實(shí)現(xiàn)了基于信息化數(shù)據(jù)的項(xiàng)目持續(xù)過(guò)程改進(jìn)。
本文選自程序員電子版2015年12月B刊,該期更多文章請(qǐng)查看這里。2000年創(chuàng)刊至今所有文章目錄請(qǐng)查看程序員封面秀。歡迎訂閱程序員電子版(含iPad版、Android版)。