토픽 74 / 192·소프트웨어 품질과 프로세스
기술 부채 (Technical Debt)
기술 부채 (Technical Debt)
빠른 결과를 위해 최적이 아닌 해결책을 선택함으로써 발생하는 장기적 유지보수 비용의 증가를 재무적 부채에 비유한 개념
제안자: Ward Cunningham (1992년)
유형(Martin Fowler 4분면)
- •신중하고 의도적: 알면서 빠른 출시 선택
- •무모하고 의도적: 설계 무시
- •신중하고 비의도적: 나중에 더 나은 방법 발견
- •무모하고 비의도적: 모르고 나쁜 코드 작성
원인
- •일정 압박
- •기술 역량 부족
- •문서화 부재
- •테스트 부족
- •레거시 시스템
증상: 코드 스멜, 높은 결함률, 긴 빌드 시간, 변경 어려움
관리 방법
- •가시화: SonarQube, CodeClimate
- •우선순위: 비용/이익 분석
- •점진적 상환: 리팩토링, 스프린트 할당
- •예방: 코드 리뷰, TDD, 표준
측정: 코드 커버리지, 순환복잡도, 중복도, 기술부채비율
비교: 기술부채(내부품질) vs 결함(외부품질)
연관: 리팩토링, 코드스멜, 품질