农行基于TFS工具的敏捷转型实践
“春天工程”項(xiàng)目組是應(yīng)用開發(fā)二部最早采用敏捷模式的項(xiàng)目組,項(xiàng)目組在項(xiàng)目推進(jìn)過程中使用Scrum框架,結(jié)合“看板+站會”形式,積極探索項(xiàng)目推進(jìn)新措施。結(jié)合TFS工具逐步實(shí)現(xiàn)了電子工具與物理看板的有機(jī)融合,并在過程管理、版本管理、交付質(zhì)量三大方面取得了突破。
”物理看板作為“春天工程”項(xiàng)目組日常管理的核心工具,實(shí)現(xiàn)了從“影響地圖”出發(fā)的需求研制與分析,利用“用戶故事地圖”將需求拆分成用戶故事及任務(wù),以兩周一迭代的頻度交付產(chǎn)品。
截至目前,項(xiàng)目組已完成15輪迭代。“春天工程”團(tuán)隊(duì)依據(jù)自身特點(diǎn),逐步摸索形成更加合理的團(tuán)隊(duì)組織結(jié)構(gòu),并明確了Scrum 主管、產(chǎn)品負(fù)責(zé)人(PO)、產(chǎn)品設(shè)計負(fù)責(zé)人、開發(fā)團(tuán)隊(duì)負(fù)責(zé)人(TL)等角色的職責(zé)定義。
敏捷宣言中有這樣一句話:“個體和互動高于流程和工具”。物理看板有助于團(tuán)隊(duì)的互動和協(xié)作,有助于褒優(yōu)貶劣,營造競爭氛圍。將物理看板置于工作區(qū)內(nèi),所有人高度可見,以清晰把控和推進(jìn)工作進(jìn)度。尤其在試點(diǎn)初期,項(xiàng)目組基于項(xiàng)目具體情況,對看板系統(tǒng)作出變化調(diào)整。項(xiàng)目組在敏捷試點(diǎn)中深刻體會到物理看板的強(qiáng)大優(yōu)勢。
為進(jìn)一步節(jié)約人力成本,沉淀歷史數(shù)據(jù),項(xiàng)目組不斷摸索,結(jié)合TFS工具提供的強(qiáng)大功能,逐步實(shí)現(xiàn)了電子工具與物理看板的有機(jī)融合,在工作項(xiàng)、拉入請求、部署工作流等方面持續(xù)研究實(shí)踐,最終通過七項(xiàng)措施,在過程管理、版本管理、交付質(zhì)量三大方面取得了新的突破。
物理看板具有易于實(shí)施、直觀靈活、溝通快捷等特點(diǎn),但也存在一些不便:
為了改進(jìn)上述問題,充分發(fā)揮物理看板的優(yōu)勢,項(xiàng)目組啟用了TFS工作項(xiàng)來管理需求和用戶故事,在需求、用戶故事和代碼間建立了清晰的關(guān)聯(lián),過程數(shù)據(jù)的收集也變得更加容易。
使用TFS工作項(xiàng)管理需求和用戶故事后,在積壓工作中,可以清晰的展現(xiàn)需求與故事的對應(yīng)關(guān)系。通過累積流圖,可以清晰的統(tǒng)計出需求與故事的交付情況,便于及時發(fā)現(xiàn)問題,精準(zhǔn)把控迭代進(jìn)度。
每日站會時,PO會根據(jù)物理看板上需求和故事的完成情況,拖動電子看板上對應(yīng)工作項(xiàng),及時更新工作項(xiàng)狀態(tài)。PO只需在TFS中建立簡單的查詢,迭代評審回顧會時便可及時統(tǒng)計出迭代故事的完成情況,無需再進(jìn)行人工統(tǒng)計。
需要對用戶故事復(fù)盤時,可以直接按迭代序號,查找出要復(fù)盤的需求和故事,操作簡單、且清晰明了。
通過TFS工作項(xiàng)維護(hù)需求和用戶故事以后,開發(fā)人員只需輸入工作項(xiàng)ID選擇關(guān)聯(lián)工作項(xiàng),便可實(shí)現(xiàn)用戶故事和代碼的關(guān)聯(lián)。在構(gòu)建程序版本進(jìn)行分支合并時,也能夠清晰地知道本次提交的代碼實(shí)現(xiàn)了哪些需求及用戶故事。
項(xiàng)目組前期使用git庫進(jìn)行代碼管理,遇到以下瓶頸:
為了解決上述瓶頸,項(xiàng)目組做了以下實(shí)踐。
項(xiàng)目組按模塊對代碼庫進(jìn)行了拆分,將原來的一個git庫拆分為17個獨(dú)立的git庫,實(shí)現(xiàn)了不同模塊代碼的隔離,便于各模塊獨(dú)立更新代碼,易于版本匹配。同時,基于Master分支分離出測試分支,實(shí)現(xiàn)開發(fā)、測試、投產(chǎn)代碼的全隔離。
項(xiàng)目組在dev與rel,rel與Master分支間分別設(shè)置TFS拉取請求,在迭代中使用拉取請求的diff功能進(jìn)行代碼評審。代碼經(jīng)過評審并完成集成測試后合并至rel測試分支,進(jìn)而完成部署版本的構(gòu)建。
以dev分支為例,當(dāng)開發(fā)人員提交本地代碼至dev分支時,在拉入請求中可以清晰的看到上次合并以來所有的分支提交情況。同時,拉取請求還為代碼評審工作提供了清晰的對比界面,在界面中評審人員可以直接在代碼中添加評審意見,并設(shè)置意見的狀態(tài)。代碼的作者或其他評審人員可以直接對意見進(jìn)行回復(fù)。程序作者可以根據(jù)實(shí)際情況把評審問題的狀態(tài)置為“已解決”、“不是問題”、“已關(guān)閉”等。
結(jié)合TFS分支策略,強(qiáng)制要求代碼經(jīng)過評審且審閱者批準(zhǔn)后才能完成拉取請求,進(jìn)行分支合并操作,保證了代碼的質(zhì)量。
在測試過程中遇到問題時,項(xiàng)目組會基于測試分支(rel分支)新建一個BUG分支,BUG修復(fù)完成后提交至測試分支時創(chuàng)建一個拉取請求,通過拉取請求將修復(fù)后的代碼提交至REL分支。代碼歸并至rel分支后,通過diff將完成修復(fù)的代碼回退至dev分支,保證各環(huán)境代碼版本的準(zhǔn)確無誤。
在部署過程中,項(xiàng)目組陸續(xù)發(fā)現(xiàn)了以下不便:
1、開發(fā)、測試和投產(chǎn)代碼構(gòu)建缺乏隔離機(jī)制,可能會將開發(fā)中未經(jīng)測試的代碼帶入生成分支;
2、項(xiàng)目組前期采用的是IDE手動構(gòu)建WAR包,部署三個模塊耗時較多,影響項(xiàng)目組的開發(fā)效率。
為優(yōu)化部署流程,項(xiàng)目各模塊在自己的git庫中通過拉取請求將迭代完成的代碼匹配成正確的版本,歸并至rel分支,同時觸發(fā)自動構(gòu)建和自動部署,持續(xù)集成,保證了發(fā)布版本的正確性。部署過程自動化,釋放了人力成本,保證了版本正確,提高了部署效率。
項(xiàng)目組rel分支自動構(gòu)建和部署的基礎(chǔ)上,對dev分支配置了每日構(gòu)建和部署,并在項(xiàng)目首頁添加了構(gòu)建情況一覽,可以清晰的看到每日構(gòu)建的完成情況。
通過上述七項(xiàng)措施,春天工程項(xiàng)目組實(shí)現(xiàn)了需求和用戶故事的的電子化跟蹤,結(jié)合物理看板的使用,項(xiàng)目進(jìn)度有了清晰的把控,度量數(shù)據(jù)的收集變得更加容易。通過代碼庫的拆分、需求及故事同代碼的關(guān)聯(lián)、TFS拉取請求及分支策略的運(yùn)用,項(xiàng)目組建立了代碼版本管理機(jī)制。通過自動構(gòu)建及部署流水線的運(yùn)用,提高了團(tuán)隊(duì)的持續(xù)集成和交付能力。
項(xiàng)目管理辦公室與應(yīng)用開發(fā)二部密切協(xié)作,持續(xù)深化產(chǎn)品經(jīng)理思維,努力實(shí)現(xiàn)任務(wù)驅(qū)動型團(tuán)隊(duì)向自組織團(tuán)隊(duì)轉(zhuǎn)變。目前應(yīng)用開發(fā)二部敏捷試點(diǎn)項(xiàng)目已推廣至8個,每個項(xiàng)目根據(jù)自身特點(diǎn),增加電子看板試點(diǎn),結(jié)合影響地圖、用戶故事地圖、TFS、AXURE等一系列方法和工具,不斷探索改進(jìn),團(tuán)隊(duì)分工更加明確,組織結(jié)構(gòu)更加合理,研發(fā)效率穩(wěn)步提升。
我們將會繼續(xù)探索實(shí)踐,堅持總結(jié)分享,希望所有試點(diǎn)團(tuán)隊(duì)能夠少走彎路,盡快找到適合自己的敏捷模式。
原文地址:https://mp.weixin.qq.com/s/0uwqLiyGBcQ1sY4AQhPMmg
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的农行基于TFS工具的敏捷转型实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core调用WCF的最佳实践
- 下一篇: 分布式高性能消息处理中心HPMessag