首頁 > 易卦

打造敏捷實踐、保證程式碼規範,如何透過自動化工具避免技術債?

作者:由 飛算SoFlu軟體機器人 發表于 易卦日期:2023-01-10

報表結構怎麼複製

交付第一次程式碼就像陷入債務。債務可以加快開發速度,只有透過重寫程式碼,才能及時償還債務。如果不償還債務,就會發生危險。花在寫一些不正確程式碼上的每一分鐘都是該債務的利息。整個軟體專案可能因未合併程式碼部署、面向物件設計或其他方面的債務問題而陷入停頓。

——Ward Cunningham(沃德·坎寧安)

打造敏捷實踐、保證程式碼規範,如何透過自動化工具避免技術債?

1992年,著名程式設計師沃德·坎寧安首次將技術的複雜比作為負債,“技術債”由此誕生,也被稱為“設計負債”或“程式碼負債”。是程式設計及軟體工程中借鑑財務債務的系統隱喻。指開發人員為了加速軟體開發,在應該採用最佳方案時進行了妥協,改用短期內能加速軟體開發的方案,從而在未來給自己帶來的額外開發負擔。

技術債的不良後果

與其他債務一樣,技術債本身也是一種透支行為,透過犧牲長遠的利益來滿足當下的需求。

同樣的,技術債也會產生利息,在未來也需要償還,也就是說,由於之前的不良設計,需要在未來的開發工作中付出更多成本。

如果技術債過高,對專案後期的影響是多方面的——bug多、進度慢,甚至導致公司技術破產,也就是沃德·坎寧安所說的“整個工程組織可能會因為未整合實施的債務負擔而停滯不前”。

這會讓整個團隊都苦不堪言:

l 研發:一方面開發新的程式碼,另一方面又需要維護之前遺留的程式碼和系統,所有的問題,最終都會回到研發人員進行再次開發、修復,由此迴圈往復;

l 運維:頻繁的bug修復;

l 運營:不合理的介面設計、缺失的文件、演算法或系統響應慢等讓運營工作如履薄冰;

l 管理層:因bug、延期等問題而遭到多方抱怨;

l 客戶:經常被bug纏繞、長期缺失的feature不能上線。

實際上,沒有人願意產出低質量的產品,更沒有人願意接手滿是坑的程式碼,那麼技術債究竟是怎麼產生的呢?

技術債的產生原因

軟體開發方面的著作者、國際知名演說家Martin Fowler(馬丁·福勒)將技術債按照Reckless(魯莽的)、Prudent(謹慎的)、Deliberate(故意的)和Inadvertent(無心的)劃分到4個不同的象限中。

打造敏捷實踐、保證程式碼規範,如何透過自動化工具避免技術債?

(圖片來源:Martin Fowler的部落格)

謹慎的且故意的

經過深思熟慮,為了讓產品快速投入市場,獲得更大的收益,團隊可能會選擇犧牲質量換取速度。一般來說,這種情況下的技術債在團隊的掌控之下,後果是可估量的,甚至已經安排好了未來的改進計劃。

魯莽的且故意的

團隊面臨緊急狀況時,只能先顧及眼前,而沒有更多選擇,來不及對方案進行細緻分析,因此對遺留技術債可能產生的影響是未知的,也來不及做相應的改進方案,只能明確知道目前的方案是有問題的。

魯莽的且無心的

和上一種情況相比,團隊並不能判斷當前的方案會不會對未來造成不良影響。在實際中,這種原因產生的技術債佔比很高,團隊經常在手忙腳亂之時無意中留下技術債。

謹慎的且無心的

雖然經過深思熟慮,但有時還是會在無意間引入技術債。最典型的是,隨著技術的進步和發展,當初選擇的最優方案的弊端和問題會慢慢顯露出來,從而形成技術債。

何如避免產生技術債?

從技術債產生的原因可知,想要徹底規避技術債不可能的。技術在不斷進步,產品也需要不斷升級,程式碼一旦寫出來就需要花費成本來維護,因此很難保證系統一直處於完全的“無債”狀態。

但這並不意味著,我們要任由技術債不斷產生而無動於衷。透過一些手段,在最開始把技術債產生的可能降到最低是完全可行的。

打造敏捷實踐

和傳統開發相比,敏捷開發的特點是以快速迭代的方式建立和釋出新產品。隨著新版本的交付,各種問題也會不斷得到解決,這使技術債務積累的可能性大大降低。

打造敏捷實踐、保證程式碼規範,如何透過自動化工具避免技術債?

打造敏捷實踐,最重要的在於開發和測試之間的溝通和協作,為了解決這一問題,市面上出現了許多敏捷開發專案管理工具。比如:

禪道:第一款國產的開源專案管理軟體,其核心管理思想基於敏捷方法scrum,可以將軟體研發中的需求、任務、bug、用例、計劃、釋出等要素有序地跟蹤管理起來,完整覆蓋專案管理的核心流程。

TAPD:騰訊敏捷協作平臺( Tencent Agile Product Development )是一款由騰訊公司自主研發的協作及軟體研發管理平臺,支援敏捷需求規劃、迭代計劃跟蹤、測試與質量保證、持續構建交付等全過程研發實踐。

飛算SoFlu軟體機器人:一款覆蓋軟體開發全生命週期的全自動軟體開發工具,使用者只要在視覺化介面透過拖拉拽的方式輸入程式設計流程圖,平臺就能完成自動開發、自動測試和自動運維。做到一“人”全棧解決:後端開發、前端開發、測試、運維。使開發測試一體化,完美落地敏捷開發。

保證程式碼規範

團隊統一程式碼規範,有助於提升程式碼可讀性以及工作效率,同時,程式碼規範也是保證產品質量的有效方式之一,能夠在很大程度上避免無意中引入的技術債。

和人力相比,工具可以更有效地執行嚴格的程式碼規範,比如上文中提到的飛算SoFlu軟體機器人,就在平臺內建了自己的程式碼規範,比如,限定每行程式碼的寫法、有些地方不允許SQL拼接、Join不允許超過三次等。

據瞭解,飛算SoFlu軟體機器人的質量管理平臺上已經有上千條標準,並且新的規則也在不斷被加入其中。

如此一來,只需人為制定規則,而規則的執行則完全交給平臺,不但保證準確,而且能極大提高效率。

可以看出,無論是打造敏捷實踐,還是保證程式碼規範,使用工具都會更加簡便高效。

結語

如今數字化時代,使用者對軟體快速交付迭代的需求不斷提升,如果犧牲質量換取速度,確有可能解眼前之急,但技術債一旦遺留,在快速迭代的要求下,就難以得到解決,甚至會不斷滾雪球,以至於“負債”越來越多,最後“資不抵債”,造成企業技術破產,並進一步導致業務破產。

所以,為了企業長久發展,打造敏捷實踐和保證程式碼規範的工具或將成為企業軟體專案研發的不錯選擇。