A technikai adósság (más néven kódolási adósság ) a szoftverfejlesztés metaforája, amely a szoftverkódban vagy az architektúrában felhalmozódott problémákra utal, amelyek a szoftverfejlesztés minőségének elhanyagolásával kapcsolatosak, és a jövőben további munkaerőköltségeket okoznak. A műszaki adósság általában láthatatlan a termék végfelhasználói számára, de a karbantarthatóság , a tesztelhetőség, az érthetőség, a módosíthatóság és a hordozhatóság hiányosságaihoz kapcsolódik . A pénzügyi adóssághoz hasonlóan a technikai adósság is felhalmozhat " kamatot» - a fejlesztés folytatásának megnehezítése (vagy akár lehetetlenné tétele), többletidő, amit a fejlesztők a szoftvertermék cseréjére, hibák kijavítására, karbantartására stb. fordítanak. Bár a technikai adósságállomány növekedése általában negatívan befolyásolja a projekt jövőjét, ez is tudatos, kompromisszumos döntés legyen a körülmények alapján.
Önmagában a rossz kód nem mindig technikai adósság, mivel a kár ("tartozás kamata") abból ered, hogy idővel meg kell változtatni a kódot [1] .
A műszaki adósság kifejezés elsősorban a szoftverfejlesztéssel kapcsolatban használatos, de alkalmazható más mérnöki területekre is.
Néha a kifejezést helytelenül használják, és olyan örökölt kódot jelöl, amely már nem támogatott , amely rossz minőségű és valaki más írta [1] .
A technikai tartozás gyakori okai (több is lehet) [2] :
A „kamatfizetés” a helyi fejlesztés során és más projektfejlesztők technikai támogatásának hiányában is megjelenik. A projekt folyamatos fejlesztése a jövőben növelheti az "adósság-visszafizetési" munkálatok költségeit. A technikai tartozást egyszerűen a folyamatban lévő munkák befejezésével lehet visszafizetni.
A technikai adósság felhalmozódása a projekt késések egyik fő oka. Nehéz pontosan megbecsülni, hogy mennyi munkát kell végezni az adósság törlesztéséhez. Minden változtatással meghatározatlan mennyiségű folyamatban lévő munka kerül a projektbe. A határidők „égnek”, amikor a projekt megérti, hogy még mindig sokkal több a folyamatban lévő munka (tartozás), mint amennyi idő a befejezésére. A kiszámítható kiadási ütemezés érdekében a fejlesztőcsapatnak olyan szintre kell korlátoznia az elvégzett munka mennyiségét, amely minimálisra csökkenti a folyamatban lévő munka mennyiségét (technikai adósság).
Míg Manny Lehman A növekvő összetettség törvénye már bebizonyította, hogy a programok folyamatos fejlesztése növeli a komplexitásukat és rontja a tervezésüket, miközben dolgoznak rajtuk, Ward Cunningham először egy 1992-es jelentésben hasonlította össze a technikai összetettséget és az adósságot:
Joshua Kerievsky 2004-es "Refaktoring with Patterns" című cikkében az építészeti visszásság kezelésének költségeinek összehasonlítása mellett érvel, amelyet "strukturális adósságnak" nevez [5] .
A késleltethető műveletek közé tartozik a dokumentáció, a tesztek írása, a „TODO” jelzésű megjegyzésekre való odafigyelés, a fordító elleni küzdelem és a statikus kódelemzésre vonatkozó figyelmeztetések . A technikai adósság egyéb esetei közé tartozik a szervezeten belül nem megosztott tudásbázis és a kód, amely túl bonyolult ahhoz, hogy könnyen módosítható legyen.
A nyílt forráskódú szoftverekben a fő projekt helyi módosításainak késleltetése technikai adósság. .