敏捷開(kāi)發(fā)之技術(shù)債務(wù)

1.什么是敏捷開(kāi)發(fā)和技術(shù)債務(wù)

敏捷開(kāi)發(fā)是一種從20世紀(jì)90年代開(kāi)始逐漸引起廣泛關(guān)注的一些新型軟件開(kāi)發(fā)方法。在國(guó)內(nèi)也是近10年來(lái)才被積極應(yīng)用到生產(chǎn)環(huán)境中,目標(biāo)是提高開(kāi)發(fā)效率和響應(yīng)能力,以應(yīng)對(duì)快速變化的需求。在當(dāng)今急速發(fā)展的互聯(lián)網(wǎng)環(huán)境下有著極高的實(shí)用性。

但隨著版本的快速迭代交付,也會(huì)出現(xiàn)一些常規(guī)軟件開(kāi)發(fā)過(guò)程中未完全暴露的問(wèn)題——技術(shù)債務(wù)。

所謂技術(shù)債務(wù)是指對(duì)不適合做法的補(bǔ)救成本的總和。通俗的講就是為了快速響應(yīng)需求而引入的非最優(yōu)或臨時(shí)性的解決方案,在之后的開(kāi)發(fā)過(guò)程中,不得不承擔(dān)因此所產(chǎn)生的副作用。

2.技術(shù)債務(wù)的主要外在表現(xiàn)

技術(shù)債務(wù)的累積會(huì)有一些較明顯的外在表現(xiàn),主要體現(xiàn)在:

● 系統(tǒng)加載的時(shí)間越來(lái)越長(zhǎng);

● 某個(gè)模塊缺陷率不斷增加;

● 相同的問(wèn)題在不同的模塊或者組件中出現(xiàn);

● 新的功能數(shù)量增加,引發(fā)新的 bug數(shù)量持續(xù)增加;

● 修復(fù) bug的時(shí)間越來(lái)越長(zhǎng);

● 團(tuán)隊(duì)對(duì)某個(gè)模塊或者組件抱怨很難理解或者很難測(cè)試;

● 某個(gè)模塊的源代碼頻繁被修改。

結(jié)果經(jīng)常會(huì)給產(chǎn)品組同學(xué)和其它管理人員一種很奇怪的感受——新功能開(kāi)發(fā)完了而開(kāi)發(fā)人員卻更忙了,特別是在要求高執(zhí)行力的團(tuán)隊(duì)中更容易出現(xiàn),這段時(shí)間內(nèi)聽(tīng)到最多的詞就是“重構(gòu)”、“統(tǒng)一”、“調(diào)整”、“優(yōu)化”等等。

3.技術(shù)債務(wù)的幾種類型

▲關(guān)于技術(shù)債務(wù)的類型和可能會(huì)導(dǎo)致的影響

其中,技術(shù)鴻溝(Gap)是指最初的技術(shù)方案可能在當(dāng)時(shí)是正確的,但是隨著時(shí)間、市場(chǎng)、技術(shù)等不斷更進(jìn),這個(gè)技術(shù)決定已經(jīng)出現(xiàn)了很多的問(wèn)題。

代碼異味包括:

● 長(zhǎng)方法:一個(gè)非常長(zhǎng)的方法、函數(shù)或者過(guò)程。

● 巨類:一個(gè)非常龐大的類

● 太多的參數(shù):函數(shù)或者過(guò)程冗長(zhǎng)的參數(shù)列表使得代碼可讀性和質(zhì)量非常差

● 特性依戀:一個(gè)類過(guò)度的使用另一個(gè)類的方法

● 親密關(guān)系: 一個(gè)類依賴另一個(gè)類的實(shí)現(xiàn)細(xì)節(jié)

● 拒絕繼承:子類以一種“拒絕”的態(tài)度,覆蓋基類中的方法,換句話說(shuō)就是,子類不想繼承父類中的方法。

● 冗余類 : 代碼重復(fù)或功能相似,或者功能太少的類。

● 人為的復(fù)雜:在簡(jiǎn)單設(shè)計(jì)已經(jīng)滿足需求的時(shí)候,強(qiáng)迫使用極度復(fù)雜的設(shè)計(jì)模式。

● 超長(zhǎng)標(biāo)識(shí)符:未按統(tǒng)一命名規(guī)則命名導(dǎo)致歧義

● 超短標(biāo)識(shí)符:變量或方法無(wú)法通過(guò)名稱來(lái)理解其作用

架構(gòu)債務(wù)是最值得注意的,其帶來(lái)的最嚴(yán)重后果就是導(dǎo)致某個(gè)模塊或整個(gè)系統(tǒng)無(wú)法正常支撐當(dāng)前業(yè)務(wù)運(yùn)行的需要,不得不推倒重做。當(dāng)然,這種后果并非難以接受。

4.合理償還技術(shù)債務(wù)的幾種方式

關(guān)于合理償還技術(shù)債務(wù)有一些常規(guī)方法:

(1) 把技術(shù)債務(wù)作為技術(shù)需求對(duì)待,在保證正常交付的情況下分批償還。

(2) 平衡技術(shù)債務(wù)的影響和快速交付的要求

(3) 技術(shù)鴻溝和架構(gòu)債務(wù),越晚修復(fù)成本越高,在產(chǎn)品規(guī)劃過(guò)程中應(yīng)積極做好需求溝通,在特定情況下可考慮通過(guò)非功能性迭代完成。

(4) 代碼復(fù)雜性、編碼風(fēng)格混亂等可以通過(guò)代碼分析工具輔助解決。

(5) 相關(guān)聯(lián)開(kāi)發(fā)組成員應(yīng)積極溝通,必要情況下以正式文件形式通知各成員。

其實(shí),技術(shù)債務(wù)和人們生活中遇到的資金債務(wù)有些類似,很難避免,除非你的需求變化慢、資金利用率低。

合理、優(yōu)雅地處理債務(wù)問(wèn)題,甚至債務(wù)投資,也是提高生產(chǎn)力、凝聚團(tuán)隊(duì)向心力的一種途徑。

作者簡(jiǎn)介:周鵬,英文名Ideson,校導(dǎo)網(wǎng)Android Team Leader,在嵌入式應(yīng)用、服務(wù)端、移動(dòng)應(yīng)用開(kāi)發(fā)領(lǐng)域有著豐富的開(kāi)發(fā)和項(xiàng)目管理經(jīng)驗(yàn),曾任北京某創(chuàng)業(yè)公司技術(shù)總監(jiān)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.埋點(diǎn)是做什么的 2.如何進(jìn)行埋點(diǎn) 3.埋點(diǎn)方案的設(shè)計(jì) 近期常被問(wèn)到這個(gè)問(wèn)題,我擔(dān)心我的答案會(huì)將一些天真爛漫的孩...
    lxg閱讀 2,351評(píng)論 0 1
  • 關(guān)于技術(shù)債務(wù)的討論時(shí)而蔓延時(shí)而消退,技術(shù)債務(wù)仿佛是個(gè)筐,什么東西都可以往里裝,然而當(dāng)我們企圖倒光筐里東西的時(shí)候,卻...
    abel_cao閱讀 902評(píng)論 0 0
  • 閱讀Tips: 本文是我根據(jù)這么多年來(lái)的實(shí)際開(kāi)發(fā)、技術(shù)管理經(jīng)驗(yàn)的一些總結(jié),完整閱讀需要30分鐘,已經(jīng)整理成簡(jiǎn)書(shū)專題...
    hirainchen閱讀 8,758評(píng)論 12 118
  • 山東省醫(yī)師協(xié)會(huì)足踝外科學(xué)組成立以來(lái),經(jīng)學(xué)組委員多次討論后,決定定期舉辦學(xué)術(shù)沙龍活動(dòng)以促進(jìn)本省足踝外科醫(yī)師的學(xué)術(shù)交流...
    云中瑞麟閱讀 416評(píng)論 0 0
  • 文/小小瓶 關(guān)上門(mén),關(guān)上窗戶,屏蔽一切嘈雜。 起初,她并不想住在這里的,本以為只有一個(gè)月的時(shí)間,只有一個(gè)月的忍耐。...
    小小瓶閱讀 368評(píng)論 0 3

友情鏈接更多精彩內(nèi)容