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

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

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

저자

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

저자:니일언스트(NeilErnst)
브리티시컬럼비아주에위치한빅토리아대학교의컴퓨터과학조교수이다.

저자:릭캐스만(RickKazman)
하와이대학교정보기술관리학과의데니&앨사루이명예석좌교수이자카네기멜런대학교소프트웨어엔지니어링연구소의객원연구원이다.그는소프트웨어아키텍처분석방법론인ATAM(ArchitectureTradeoffAnalysisMethod,아키텍처절충분석기법)과아키텍처분석도구인타이탄(Titan)및DV8개발에참여했다.

저자:줄리엔디레인(JulienDelange)
트위터(현,엑스)의스태프소프트웨어엔지니어이자개발자가더나은코드를작성할수있도록지원하는코드분석플랫폼인코드인스펙터(CodeInspector)의창립자이다.줄리엔은트위터외에도아마존웹서비스,카네기멜런대학교소프트웨어엔지니어링연구소,그리고유럽우주국(EuropeanSpaceAgency)에서근무한경력이있다.

역자:오정민(JasmineOh)
미국USC에서사회학과중국학을전공하고,미국,중국,한국,일본의IT업계에서다양한프로덕트개발과애자일코칭경험을쌓았다.일본에거주하며브로드컴탄주랩스(BroadcomTanzuLabs,구피보탈랩스(PivotalLabs))에서딜리버리리드로서한국과일본을비롯한아시아태평양지역의주요기업들을대상으로애자일및린프로덕트개발,밸런스팀육성,조직문화개선을지원하는컨설팅을해왔다.이러한경력을바탕으로,현재일본에본사를둔비카인드랩스LLC의한국법인대표이사및프로덕트디렉터로활동하고있다.

목차

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장:결론