개발자들의 계륵 "레거시 코드", 이젠 정복하세요!

사용자 삽입 이미지
레거시 코드 활용 전략
손대기 두려운 낡은 코드, 안전한 변경과 테스트 기법
마이클 페더스 지음 | 이우영 고재한 옮김 |
516쪽 | 36,000원 | 2008년 10월 22일 출간예정
legacy
n. (pl. -cies)
1 [法] (유언에 의한 동산의) 유증(遺贈); 유산.
2  (조상이나 선인의) 유산, 유물; 과거의 유산.
출처: NEWACE(금성판 뉴에이스)사전

레거시 코드.
버리자니 아깝고, 손대자니 두려운 코드.

뭔가를 만들어 그 기능성이 떨어지지 않도록 유지보수하는 일은 어떤 산업 분야에서건 매우 중요한 일입니다. 게다가 소프트웨어에서 생명줄과도 같은 코드를 유지보수하는 일은 꽤나 중요한 일입니다만, 대부분 레거시 코드는 개발자들에게는 계륵(鷄肋)과도 같은 존재를 넘어 두려움의 대상이기도 합니다.

처음 시스템을 구축할 때의 업무환경을 그대로 유지하기란 사실 불가능한 일입니다. 결국 그럭저럭 돌아가고 있는 소프트웨어에 불가피하게 손을 대야만 하는 일이 필연적으로 생기게 마련이죠. 이때 소스코드도 없고 디컴파일도 불가능해 유지보수는커녕 정체파악도 불가능한 블랙박스가 되어버렸다면 이건 그야말로 진퇴양난 & 초난감 사태가 아닐 수 없습니다. 그런데 다행히 소스코드가 있으면 좀 나을까요? 기능 추가나 리팩토링을 하기 위해서는 테스트가 필수입니다. 그런데 테스트 가능성까지 제로인 경우에는 도대체 어디서부터 어떻게 손을 대야 할까요?

저자는 다년간 오브젝트 멘토 사에서 활동하면서 수많은 고객의 레거시 시스템을 보완하고 유지보수하고 테스트하고 제어하면서 쌓아온 다양한 경험에 기초해 이 책을 집필했습니다. 자바, C, C++로 저자가 직접 작성한 실제 사례 코드는 개발자들의 이해도를 높이는 데 큰 도움이 됩니다.

백문이 불여일견. 이 책에서 다루는 내용은 목차를 한번 훑어보면 가장 이해가 빠르실 듯합니다. 이 책 또한 3부로 나뉘어 1부에서는 소프트웨어 변경 전에 코드 변경 원리를 이해하는 워밍업 단계를 거칩니다. 2부에서는 이 책의 핵심 부분으로서 개발자들이 가장 많이 접하는 실제 코드 수정 사례를 보여주고, 3부에서는 레거시 코드 재활용을 하게 되면 필연적으로 발생하는 골치아픈 문제인 코드간의 얽히고 설킨 의존관계를 깨는 24가지 기법을 상세하게 설명합니다.

1부. 워밍업: 코드 변경 원리를 이해하라
1장. 소프트웨어 변경
2장. 효과적인 피드백 활용
3장. 감지와 분리
4장. 봉합 모델
5장. 레거시 코드를 위한 도구

2부. 본격적인 소프트웨어 변경: 코드 이렇게 고치자

6장. 고칠 건 많고 시간은 없고...
7장. 코드 하나 바꾸는 데 왜 이리 오래 걸리지?
8장. 특징, 어떻게 추가할까?
9장. 뚝딱! 테스트 하니스에 클래스 제대로 넣기
10장. 테스트 하니스에서 실행할 수 없는 메소드
11장. 코드 변경 과정에서 꼭 테스트해야 할 메소드
12장. 클래스 의존관계, 반드시 없애야 할까?
13장. 변경에 필요한 테스트는 뭐가 있을까?
14장. 우릴 미치게 하는 라이브러리 의존관계
15장. 응용프로그램이 모두 API 호출로 이뤄졌다면?
16장. 코드를 잘 고치기엔 내가 모르는 2%
17장. 뼈대가 약한 내 응용프로그램
18장. 발목 잡는 테스트 코드
19장. 객체지향이 아니라서 위험하다고? 그럼 이렇게 고쳐 봐!
20장. 내 프로젝트 군살 빼기
21장. 동일 코드의 반복 수정, 그만할 수는 없을까?
22장. '괴물 메소드'와의 혈투, 승부수는 적절한 테스트 루틴
23장. 위반사항을 점검하는 몇 가지 기법
24장. 무너진 코드의 하늘, 솟아날 구멍이 있을까?

3부. 반드시 넘어야 할 산: 코드 변경의 난맥, 의존관계를 극복하라

25장. 의존관계를 깨는 기법
부록. 리팩토링

왠지 뭔가 한줄 한줄 헤드카피 같은 목차를 보시면 느끼셨겠지만, 저자 스스로 다양한 이론을 만들어 노하우를 공개한 책 답게 새롭게 등장하는 용어도 참 많습니다. 그만큼 용어 선정부터 번역, 편집까지 정말(!) 쉽지 않은 책이었습니다. 얼마 전 만난 역자분과도 오랜만의 회포(?)를 풀었을 만큼 긴 시간을 들인 이 책을 번역하느라 고생하신 이우영님과 고재한님 정말 고생 많으셨습니다. 이 책에 엮인(!) 분들이 한둘이 아닙니다. 허모님, 정모님, 황우님. 기타 등등. 그간 마음 고생 참 많으셨죠? ^^; 책 나오면 그 순간이 끝이 아니라 저희들은 독자분의 반응을 살피기까지 계속 마음을 졸여야 하는데요. 책이 끝나고 좋은 평 받게 되면 우리끼리라도 맥주 한잔씩으로 회포를 풀어야 하지 않을까 싶습니다. -0- 아함~

참, 마지막으로 이 책과 함께 읽으면 정말 좋은 책 두 권을 소개드려요.

바로 『켄트 벡의 구현 패턴: 읽기 쉬운 코드를 작성하는 77가지 자바 코딩 비법』과 『엔터프라이즈급 애자일 방법론: 프로젝트 규모 확장에 따른 애자일 기법과 사례』입니다. 저자는 읽기 쉽고 이해하기 쉬운 코드 명명법 등과, 테스트 주도 개발 등 실용적인 애자일 방법론에 대해서도 설파를 합니다. 이 책들의 많은 내용이 서로 연관성을 지니고 있습니다. 이 책 세 권으로 이제 레거시 코드가 더는 두려운 존재가 아닌, 진귀한 보화가 가득한 보물창고로 거듭나길 바라겠습니다. 오늘도 에이콘은 독자 여러분의 삽질과 시간 낭비를 최전선에서 온몸으로 막아드리겠습니다. 열공하세요. ^^/

+ 추가
자고 일어나니 세상이 바뀌어있더라는 말처럼, 밤샘하다가 쓴 글인데 잠깐 눈붙이고 나왔더니 이렇게 여러 분들이 댓글과 트랙백으로 뜨겁게 성원해주셨네요. 우와~ 정말 정말 감사합니다. 저희는 지금 모처에서 마무리 잘 하고 있습니다. 일주일만 기다려주세요. :)

마지막으로 독자분들의 편의를 위해 친절한 링크 알려드려야죠. ^^
이 책은 지금 YES24, 강컴, 교보문고, 알라딘, 인터파크 등에서 예약판매중입니다.
여러분의 사랑이 각 서점까지 쭈우우욱 이어지길 기대해보며!

CC

크리에이티브 커먼즈 라이센스 에이콘출판사에 의해 창작된 이 저작물크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.


  • 레몬에이드| Oct 14, 2008

    와 코드 변경에 이런 지침도 있군요 ㅎ
    리스트는 늘어만 가고 ㅎ

    조만간 대량으로 에이콘 책들 서평을 올릴꺼 같아요
    그동안 받기만 하고 돌려드리지 못해 죄송했던 마음 모두 담아서
    열심히 작성하고 있으니 기대 쪼꿈만 해주세요 ^^

  • 짱가| Oct 14, 2008

    아... 드디어 나왔군요...

  • 버드| Oct 14, 2008

    이 책이 번역서로 나오다니.. 오..
    정말 기대됩니다..^^

  • kenu| Oct 14, 2008

    제대로 못 도와드려서 많이 미안한 걸요. 정말 산고가 크셨습니다.
    아, 제가 발견한 레거시코드 건강검진 요령이 하나 있습니다.
    http://findbugs.sf.net 로 일단 진단해보시는 것도 좋습니다.

  • 에이콘| Oct 14, 2008

    레몬에이드님, 기대 "쪼꿈 많이" 하겠습니다. -0- 애자일 책부터 시작해주시죠. ^^/

    짱가님, 좋은 글 써주셔서 정말 감사합니다. ^^

    버드님, 기대해주시는 만큼 어깨도 살짝 무거워지네요. :)

    kenu님, 전 그날 새벽 3시 뜬금없는 문자 메시지의 기억을 아직도 지울 수 없다는.ㅎㅎ 대신 많이 많이 홍보해주세요. ^^ 닥.집. 화이팅!!! ㅋㅋㅋ

  • 짱가| Oct 16, 2008

    닥.집. ㅋㅎㅎㅎㅎ

  • nnextia| Oct 19, 2008

    기대되는 책입니다....정말 많은 도움이 되겠네요.

  • 에이콘| Oct 20, 2008

    안녕하세요. nnextia님. 번역하신 애자일 책에는 댓글 안 남기시더니! :) 애자일 책 번역해보신 만큼 이 책도 아마 재미있게 읽으실 거에요.

  • eclipse4j| Oct 31, 2008

    강컴 서평에 제기된 문제로 인해서 고민중 이었는데, 흘. 주문 걸었습니다.

    광남이 형이 열심히 읽는 모습 보고, 함 보고 싶기는 했는데요.

  • 번역구려?| Jun 02, 2009

    번역이 이상하게됬다던데....

    디폴트 구조는 뭐죠?

  • 에이콘| Jun 03, 2009

    안녕하세요. 독자님
    말씀하신 155페이지의 오탈자는 정오표에 올렸습니다. http://www.acornpub.co.kr/book/legacy의 정오표에서 다른 오탈자도 확인하시기 바랍니다. 궁금한 점이나 지적하실 사항이 있으실 땐 책 이미지 오른쪽의 오탈자 신고란을 이용해주세요.