Description
소프트웨어 생애 주기 전체에 걸친 기술 부채의 실질적 영향을 다양한 예시와 사례 연구를 통해 살펴보자!
소프트웨어의 기술 부채는 개발자가 프로젝트 초기 단계에서 단기적 편의성을 위해 쉬운 선택을 하거나 부적절한 기술 결정을 내릴 때 발생하며, 이는 이후에 막대한 비용과 많은 노동이 드는 해결책을 필요로 하게 된다. 이 책은 기술 부채를 예방하고, 원인을 파악하고, 이를 제거하는 방법에 대한 실질적인 조언을 제공한다. 특히, 소프트웨어 생애 주기 전반에 걸쳐 기술 부채가 미치는 실질적 영향을 중점적으로 다루며, 보잉에서 엑스(구 트위터)에 이르는 다양한 기업들의 사례와 예시를 통해 이를 구체적으로 설명한다.

기술 부채는 대부분의 반복적 개발 과정에서 자연스럽게 발생한다. 그러나 부채를 방치하면 시간이 지날수록 점점 더 복잡하고 관리하기 어려운 상황에 이르게 된다. 그 결과 개발자들은 새로운 기능을 추가하기보다는 버그 수정에만 모든 노력을 쏟게되고, 이는 궁극적으로 고객이 가장 원하는 새로운 기능을 제공하지 못하게 되는 상황으로 이어진다. 이에 저자들은 기술 부채를 어떻게 모니터링하고 측정해야 하는지, 그리고 언제, 어떻게 이를 상환해야 하는지를 구체적으로 설명한다.

이 책은 기술 부채가 가지고 있던 기존의 정의를 확장해 요구사항 부채, 구현 부채, 테스트 부채, 아키텍처 부채, 문서 부채, 배포 부채, 그리고 사회적 부채까지 다각적으로 분석한다. 또한 기술적 논의 사이에 실제 현장에서의 경험을 담은 '실무자의 목소리'를 포함하여 독자들에게 실질적이고 적용 가능한 통찰을 제공한다.
저자

니일언스트,릭캐스만,줄리엔디레인

브리티시컬럼비아주에위치한빅토리아대학교의컴퓨터과학조교수이다.

목차

▣01장:서론
1.1기술부채란무엇인가?
1.2메타포를넘어서
1.3이번장을마치며
1.4이책의개요

▣02장:기술부채의중요성
2.1기술부채의발생
2.2기술부채에어떻게접근해야하는가
2.3기술부채의실질적인결과
2.4기술부채관리의중요성
2.5미래의기술부채에대응하는것의어려움
2.6기술부채의이점
2.7부채발생이허용되는경우:갚지않아도될때
2.8이번장을마치며

▣03장:요구사항부채
3.1요구사항부채식별하기
__3.1.1요구사항부채의원천
__3.1.2요구사항부채찾아내기
3.2요구사항부채관리하기
3.3요구사항부채피하기
__3.3.1요구사항도출
__3.3.2요구사항수집에대한새로운접근방식
__3.3.3요구사항기록하기
3.4이번장을마치며

▣04장:설계및아키텍처부채
4.1설계부채식별하기
__4.1.1설계부채의수치화
__4.1.2관련된정보수집하기
__4.1.3수집한정보분석
4.2설계부채관리하기
4.3설계부채피하기
4.4이번장을마치며
사례연구A:브라이트스퀴드

▣05장:구현부채
5.1코드에서기술부채식별하기
__5.1.1코딩스타일
__5.1.2비효율적인코드
__5.1.3오래됐거나단계적으로제거됐거나안전하지않은함수또는프레임워크사용
__5.1.4코드복사:똑같은일을두번하지말것
5.2구현부채관리하기
__5.2.1코드분석기사용
__5.2.2코딩가이드라인정의
__5.2.3새로운언어특징사용
5.3구현부채피하기
__5.3.1언어와라이브러리를현명하게선택하기
__5.3.2효과적인코드리뷰
__5.3.3코드베이스에서지표를수집하고분석하기
5.4이번장을마치며

▣06장:테스트부채
6.1테스트는어떻게기술부채와연관되는가
6.2테스트에대한인식증가
6.3테스트의부족성과필요성식별하기
__6.3.1민첩성상실과버그의증가
__6.3.2테스트수준
__6.3.3적절한수준의테스트
6.4테스트활동관리하기
__6.4.1테스트대상은무엇인가?
__6.4.2코드커버리지측정
6.5테스트부채피하기
__6.5.1테스트주도개발의채택
__6.5.2테스트실행의유지와분석
__6.5.3테스트자동화
__6.5.4수동테스트피하기
6.6이번장을마치며
사례연구B:트위터

▣07장:배포부채
7.1배포부채식별하기
__7.1.1증상1:프로덕션에서즉시발견되는버그
__7.1.2증상2:배포몇주후에발견되는버그
__7.1.3증상3:롤백불가능
__7.1.4배포프로세스에서기술부채를구성하는요소
7.2배포부채관리하기
__7.2.1배포환경의분리
__7.2.2관찰가능성으로문제해결하기
__7.2.3비기능적지표의추적…
__7.2.4…그리고기능적지표의추가
7.3배포부채피하기
__7.3.1자동화된점진적배포
__7.3.2지속적인통합파이프라인에배포통합하기
__7.3.3배포프로세스정립
__7.3.4새로운제품기능에킬스위치구현하기
7.4이번장을마치며

▣08장:문서부채
8.1문서화를해야하는이유
__8.1.1독자를위해써라
__8.1.2반복하지말라
__8.1.3모호함을피하라
__8.1.4정리형식을사용하라
__8.1.5결정을내린근거를기록하라
__8.1.6문서를최신상태로,하지만너무최신은아니게유지하라
__8.1.7문서적합성을리뷰하라
8.2문서부채식별하기
__8.2.1문서화수요예측
__8.2.2문서화에관련된문제인식
__8.2.3문서화해야하는내용
__8.2.4문서부채가문제가되는이유
8.3문서부채관리하기
__8.3.1코드를작성하면서문서화도진행
__8.3.2다이어그램은어떨까?
__8.3.3코드와테스트,문서를모두함께작성
8.4문서부채피하기
__8.4.1추적성
__8.4.2출시프로세스의일부로서의문서품질확인
8.5설계및기술부채의문서화
8.6이번장을마치며
사례연구C:과학연구용소프트웨어

▣09장:머신러닝시스템의기술부채
9.1배경
9.2머신러닝부채식별하기
__9.2.1설계상의선택
__9.2.2통합부채
__9.2.3설명가능성
__9.2.4시스템구성
__9.2.5테스트
9.3머신러닝부채관리하기
__9.3.1더간단한접근
__9.3.2탐색실험중의버전관리
__9.3.3교차기능팀
9.4머신러닝부채피하기
9.5이번장을마치며

▣10장:팀관리와사회적부채
10.1사회적부채의정의
10.2사회적부채식별하기
10.3사회적부채관리하기
10.4사회적부채피하기
10.5이번장을마치며

▣11장:비즈니스사례만들기
11.1지표를통한기술부채식별
__11.1.1기술부채로인한경제적영향의수치화
__11.1.2기술부채구제방법의정당화
11.2경영진의대응방법
__11.2.1고기능팀의구성
__11.2.2가치흐름에초점맞추기
11.3기술자들과경영진의방향성일치
__11.3.1리얼옵션개념의적용
__11.3.2소프트웨어설계움직임추적
11.4이번장을마치며
사례연구D:안전필수시스템

▣12장:결론