본문내용 바로가기
MD의선택 무료배송 이벤트 소득공제

레거시 코드 활용 전략 손대기 두려운 낡은 코드, 안전한 변경과 테스트 기법

마이클 C. 페더스 지음 | 심윤보, 이정문 옮김 | 에이콘출판 | 2018년 09월 28일 출간 이 책의 개정정보 : 2008년 출간
  • 정가 : 40,000원
    판매가 : 36,000 [10%↓ 4,000원 할인]
  • 통합포인트 :
    [기본적립] 2,000원 적립 [5% 적립] 안내 [추가적립] 5만원 이상 구매 시 2천원 추가적립 [회원혜택] 우수회원 5만원 이상 구매 시 2~3% 추가적립
  • 추가혜택 : 카드/포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 배송일정 : 서울특별시 종로구 세종대로 기준 지역변경
    지금 주문하면 내일(18일,목) 도착 예정 배송일정 안내
  • 바로드림 : 인터넷으로 주문하고 매장에서 직접 수령 안내
장바구니 담기 바로구매

책 그리고 꽃 서비스
책 그리고 꽃 | 책과 꽃을 함께 선물하세요 자세히보기

닫기

바로드림 주문 선물하기 보관함 담기

이 책의 이벤트 해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.

  • #리드잇 페이스북 페이지 팔로우 하시고, 신간소식 빠르게 받아보..
    2017.06.22 ~ 2025.07.31
상품상세정보
ISBN 9791161752075(1161752072)
쪽수 540쪽
크기 190 * 235 * 30 mm /1001g 판형알림
이 책의 원서/번역서 Working Effectively with Legacy Code/Feathers, Michael

책소개

이 책이 속한 분야

저자소개

저자 : 마이클 C. 페더스

멘토링, 능력 개발, 지식 전달, 소프트웨어 개발 관리 등 서비스 제공 분야의 글로벌 리더 업체인 오브젝트 멘토에 근무하고 있다. 테스트 주도 개발, 리팩토링, 객체 지향 설계, 자바, C#, C++, 익스트림 프로그래밍에 대한 트레이닝과 멘토링 등의 컨설팅을 다수 수행했으며, JUnit 테스트 프레임워크의 C++ 버전인 CppUnit과 통합 테스트 프레임워크 FIT의 C++ 버전인 FitCpp의 개발자이기도 하다. ACM과 IEEE 회원이다. OOPSLA 콘퍼런스(객체 지향 기법에 관한 국제 콘퍼런스)에서 코드 페스티벌 의장을 세 차례 맡았다.

역자 : 심윤보

역자 심윤보
성균관대학교와 서울대학교에서 컴퓨터공학을 전공했다. 휴대폰 소프트웨어를 개발했으며, 현재는 IT 기획 및 신기술 도입 업무를 수행하고 있다. 인공지능을 비롯한 4차 산업혁명 기술 전반에 대해 관심이 많다.

역자 : 이정문

역자 이정문
컴퓨터공학을 전공했으며 다수의 원서를 번역했다. 번역서로는 에이콘출판사에서 펴낸 『비기닝 ANSI C++』(2008), 『데이터 과학으로 접근하는 정보보안』(2016), 『파이썬 플레이그라운드』(2016) 등이 있다.

작가의 말

레거시 코드란 무엇일까? 지금까지 이 단어의 뜻을 정의하지 않고 사용했다. 엄밀히 말하면, 레거시 코드는 다른 누군가로부터 이어받은 코드라고 정의할 수 있다. 회사 차원에서 다른 회사로부터 구입한 코드일 수도 있고, 부서 이동으로 인해 다른 팀원에게 인계된 코드일 수도 있다. 이처럼 레거시 코드는 다른 누군가의 코드를 의미하지만, 프로그래머들에게 이 단어는 그 이상의 의미를 갖고 있다. 레거시 코드라는 단어는 시간의 흐름과 함께 더 많은 의미와 무게를 갖게 된 것이다.
레거시 코드라는 말을 들으면 여러분은 어떤 생각이 드는가? 나와 비슷한 생각이 든다면, 여기저기 얽힌 난해한 구조 때문에 제대로 이해하지 못하면서도 수정해야만 하는 코드가 떠오를 것이다. 겉보기에는 쉬워 보였던 기능을 추가하느라 며칠 밤을 지샌 추억이 떠오를 수도 있고, 더 이상 어떻게 할 수 없는 코드에 질려서 무력감에 빠진 모습이 떠오를 수도 있다. 이런 상황에서 당신의 노력은 무가치한 일처럼 느껴진다. 레거시 코드의 정의는 사실 누가 그 코드를 작성했는가와 무관하다. 코드는 다양한 방법으로 부패하며, 대부분의 경우 다른 팀으로부터 가져온 코드인지 여부와는 무관하다.
소프트웨어 업계에서 레거시 코드란 이해할 수 없고 수정하기도 힘든 코드를 지칭하는 속어처럼 사용될 때가 많다. 하지만 지난 수년간 고객들과 심각한 코드 문제들을 해결하는 공동 작업을 통해 나는 레거시 코드를 다르게 정의하게 됐다.
내게 레거시 코드란, 단순히 테스트 루틴이 없는 코드다. 다만 이 정의는 다소 불완전하다. 코드의 좋고 나쁨이 테스트와 어떤 관계가 있을까? 이 질문에 대한 답은 간단하다. 이것이 바로 이 책 전반에 걸쳐 자세히 설명할 핵심이다.
이 책은 어떤 코드베이스에서도 확신을 갖고 수정 작업을 하는 방법을 설명하는 책이다. 이 책의 각 장은 코드를 이해하고, 테스트 루틴을 사용하며, 리팩토링을 수행하고, 기능을 추가하는 기법들을 설명할 것이다.
고객들은 대규모의 코드베이스 작업에 어려움을 겪고 있었기 때문에 개발 작업을 통제하고 제품을 정상적으로 인도할 수 있는 방법론을 필요로 했다. 하지만 시간이 흐르면서, 고객이 바뀌어도 내가 하는 작업은 매번 비슷하다는 사실을 깨닫게 됐다. 이런 느낌은 어느 금융 회사 개발 팀과 협업하면서 최고조에 달했다. 내가 합류하기 전부터 이 개발 팀은 단위 테스트의 필요성을 인식하고 있었지만, 실제 사용 중이던 테스트 루틴은 데이터베이스에 몇 번이나 접근해서 대규모의 코드를 실행하는 전체 시나리오 테스트였다. 당연히 테스트 루틴을 작성하기가 쉽지 않았고, 실행에 너무 오랜 시간이 걸리기 때문에 이 개발 팀은 테스트 루틴을 자주 실행하지 않고 있었다. 이런 현실을 개선하기 위해 팔을 걷어붙이고 테스트 코드의 크기를 줄이는 작업을 하다가 나는 데자뷰(기시감)를 느끼게 됐다. 지금까지 함께 일했던 모든 팀들과 이런 종류의 작업을 했던 것 같았으며, 이 작업은 코드를 적절히 통제하기 위해 어쩔 수 없이 거쳐야만 하는 단순 반복적이고 지루한 작업이었다. 그래서 나는 이러한 문제를 어떻게 해결했는지 책으로 남김으로써, 비슷한 어려움에 처한 다른 팀들이 코드를 좀 더 편하게 개선할 수 있도록 도울 필요가 있다는 결론을 얻었다.
이 책에 사용된 예제들은 대부분 자바, C++, 혹은 C로 작성됐다. 이 언어들을 선택한 것은 자바는 가장 많이 사용되는 언어이기 때문이고, C++는 레거시 환경에서 특별한 도전 과제를 던지는 언어이기 때문이며, C는 절차형 레거시 코드에서 자주 볼 수 있는 문제들을 배울 수 있게 해주는 언어이기 때문이다. 이를 통해 레거시 코드에서 발생하는 문제점의 대부분을 포괄할 수 있다. 독자가 이 언어들을 사용하지 않더라도 예제는 도움이 될 수 있다. 델파이, 비주얼 베이직, 코볼, 포트란 등의 언어들에서도 활용 가능한 기법들이기 때문이다.
이 책의 기법들이 현업에 도움이 될 뿐 아니라 프로그래밍의 재미를 회복하는 계기도 되길 바란다. 프로그래밍은 매우 보람 있고 즐거운 작업이다. 현업의 일상 업무에서 이런 기분을 느끼지 못하고 있다면, 이 책에서 제공되는 기법들을 통해 재발견하고 팀 전체에 전파하기를 희망한다.

목차

추천의 글
지은이 소개
지은이의 말
감사의 글
옮긴이 소개
옮긴이의 말
들어가며

1부. 코드 변경의 메커니즘
1장. 소프트웨어 변경
2장. 피드백 활용
3장. 감지와 분리
4장. 봉합 모델
5장. 도구

2부. 소프트웨어 변경
6장. 고칠 것은 많고 시간은 없고
7장. 코드 하나 바꾸는 데 왜 이리 오래 걸리지?
8장. 어떻게 기능을 추가할까?
9장. 뚝딱! 테스트 하네스에 클래스 제대로 넣기
10장. 테스트 하네스에서 이 메소드를 실행할 수 없다
11장. 코드를 변경해야 한다
12장. 클래스 의존 관계, 반드시 없애야 할까?
13장. 변경해야 하는데, 어떤 테스트를 작성해야 할지 모르겠다
14장. 나를 미치게 하는 라이브러리 의존 관계
15장. 애플리케이션에 API 호출이 너무 많다
16장. 변경이 가능할 만큼 코드를 이해하지 못하는 경우
17장. 내 애플리케이션은 뼈대가 약하다
18장. 테스트 코드가 방해를 한다
19장. 내 프로젝트는 객체 지향이 아니다
20장. 이 클래스는 너무 비대해서 더 이상 확장하고 싶지 않다
21장. 반복되는 동일한 수정, 그만할 수는 없을까?
22장. ‘괴물 메소드’를 변경해야 하는데 테스트 코드를 작성하지 못하겠다
23장. 기존 동작을 건드리지 않았음을 어떻게 확인할 수 있을까?
24장. 어찌해야 할지 모르겠다. 나아질 것 같지 않아

3부 의존 관계 제거 기법
25장 의존 관계 제거 기법

부록. 리팩토링
용어 사전
찾아보기

추천사

로버트 C. 마틴

유능한 소프트웨어 개발자라면 누구나 요구 사항이 변경될 것을 감안해 설계하고자 한다.
이것은 해결하기 매우 어려운 문제처럼 보인다. 실제로 너무 어렵기 때문에 거의 모든 시스템은 서서히 부패해 결국 망가져버린다. 이 부패... 더보기

출판사 서평

★ 요약 ★

시스템 내에 오래된 코드를 다루는 방법을 배울 수 있다. 오래된 코드, 즉 레거시 코드는 그 코드에 익숙한 사람도 없고, 테스트 루틴도 없어 관리하기 어렵다. 저자는 다년간의 현장 경험과 실제 코드를 바탕으로 다양한 기법을 소개한다. 여러 언어뿐만 아니라, 현업에서 사용되는 도구에 대해 현실적인 조언을 해준다. 코드 내 의존 관계 해결, 효과적 테스팅 방법 등 24가지 기법을 통해 시스템의 낡은 코드를 변경, 관리하는 데 있어 많은 통찰력을 줄 것이다.

★ 이 책에서 다루는 내용 ★

■ 기능 추가, 버그... 더보기

북로그 리뷰 (0) 쓰러가기

도서 구매 후 리뷰를 작성하시면 통합포인트를 드립니다.
결제 90일 이내 작성 시 300원 / 발송 후 5일 이내 작성시 400원 / 이 상품의 첫 리뷰 작성 시 500원
(포인트는 작성 후 다음 날 적립되며, 도서 발송 전 작성 시에는 발송 후 익일에 적립됩니다.
외서/eBook/음반/DVD/GIFT 및 잡지 상품 제외)
안내
  • 해당도서의 리뷰가 없습니다.

Klover 평점/리뷰 (0)

문장수집 (0) 문장수집 쓰기 나의 독서기록 보기
※구매도서의 문장수집을 기록하면 통합포인트 적립 안내

교환/반품/품절안내

※ 상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

교환/반품/품절안내
반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
[1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
    또는 고객센터 (1544-1900)
반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
    해당되는 경우
(1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①양서-판매정가의 12%, ②일서-판매정가의 7%를 적용)
상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
    소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
    소비자 보호에 관한 법률에 따라 처리함

이 책의 원서번역서

안내

이 분야의 베스트

더보기+

이 분야의 신간

더보기+

바로가기

  • 우측 확장형 배너 2
  • 우측 확장형 배너 2

최근 본 상품