일요일, 12월 27, 2015

[일상다반사] 소프트웨어 악취를 제거하는 리팩토링: 구조적 설계 문제를 풀어내는 최선의 실천법

연말을 맞이하여 독자 여러분들께 책 한 권을 소개해드리겠다. 오늘의 주인공은 Refactoring for Software Design Smells라는 책을 번역한 "소프트웨어 악취를 제거하는 리팩토링: 구조적 설계 문제를 풀어내는 최선의 실천법"이다. 국내에 원서가 잘 알려져 있지는 않아서 흥행은 자신하기 어렵지만, 기술 부채를 중심으로 구조적인 설계 문제에 고민이 많은 분들이라면 꼭 한 번 정독해보시기를 추천드린다. 이 책을 어떻게 설명할지 고민하다가 가장 손쉽게 역자 서문을 가져와봤다.


한국어로 번역되어 많은 분들의 사랑을 받은 로버트 C 마틴이 집필한 클린 코드(clean code)(인사이트, 2013년 출간)에서는 좋은 코드와 나쁜 코드, 그리고 나쁜 코드를 좋은 코드로 만드는 리펙터링 기법에 대해 소개하고 있다. 전문가로서 소프트웨어 개발자의 올바른 자세가 무엇인지 역설하고 있는 클린 코드는 소프트웨어 개발에 있어 나쁜 프로젝트 팀보다 더 위험한 요인으로 나쁜 코드를 짚어낸다. 이 책의 가장 멋진 특징은 바로 문제가 있는 코드에서 출발해 튼튼하고 효율적이면서 깨끗한 코드로 바꿔나가는 과정이다.

그렇다면 코드 수준이 아닌 설계 수준에서 깨끗함을 다루는 책은 없을까? 소프트웨어 설계에 대해 무척 관심이 많았기에 여러 해 동안 소프트웨어 설계와 관련된 책을 찾아다녔는데, 우연한 기회에 길벗 출판사에서 Refactoring for Software Design Smells: Managing Technical Debt라는 책의 번역을 요청해왔다. 제목에 붙어 있는 기술 부채(technical debt)라는 용어를 보면서 이 책의 내용이 범상하지 않으리라는 예감이 들었고, 1장을 펼치는 순간 이 책이 추구하는 방향에 대해 감이 왔다. 바로 기술 부채를 줄이고 소프트웨어 품질을 높이기 위한 설계 수준에서 악취 해소다!

이 책은 코드 수준보다 추상화 단계가 높은 설계 수준에서 펼쳐지는 다양한 문제점(즉, 악취), 문제점을 일으킨 원인, 이를 해소하는 방법(즉, 리펙터링), 악취가 영향을 미치는 핵심 품질 속성을 추상화, 캡슐화, 모듈화, 계층 구조라는 네 가지 대 범주에 속한 25가지 항목으로 나눠서 소개한다. 소프트웨어 개발자들이 설계 원칙을 어길 때 발생하는 악취가 무엇인지 파악함으로써 설계 과정에서 직면한 다양한 도전을 탐구한다. 단순히 악취 목록만 나열하는 이론적인 접근 방법에서 벗어나 다양한 일화와 실제 사례 연구를 중심으로 소프트웨어 개발 현장에서 어떤 문제가 발생하고 이를 어떻게 해결하는지 구체적인 방식으로 경험담을 기술하므로, 좋은 설계와 나쁜 설계가 무엇인지 제대로 보여준다.

본문에 들어가기 앞서 객체지향 소프트웨어 설계 원칙에 친숙할 필요가 있다. 부록 A에 추상화 원칙, 비순환 의존성 원칙, DRY 원칙, 캡슐화 원칙, 정보 은닉 원칙, KISS 원칙, LSP, 계층 원칙, 모듈화 원칙, OCP, 단일 책임 원칙을 소개하므로 우선 부록에 정리한 설명을 읽으면서 좋은 설계를 위해 어떤 원칙을 지켜야 하는지부터 파악한 다음에 해당 원칙을 어기는 경우 풍기는 악취에 주목하면 이해가 더 쉬울 것이다.

아무쪼록 자신도 만족스럽고 남도 만족스러운 깨끗한 설계를 위해 오늘도 끊임없이 노력하는 모든 소프트웨어 개발자 동료에게 조금이라도 도움이 되었으면 좋겠다. 이 책에서 소개하는 교훈을 바탕으로 한 단계 높은 아키텍처 구성과 설계가 가능해지면 더 바랄 나위가 없겠다.


역자 서문을 보면 이 책의 목적과 내용, 그리고 대상 독자층을 대충 파악했으리라 믿는다. 하지만 여기서 그치지 않고 애독자 여러분을 위한 보너스 선물인 세미나 자료를 준비해봤다. 비록 모든 내용을 다루지는 않지만 이 책의 분위기를 느끼기에는 부족함이 없으리라고 생각한다.

이 책과 더불어 클린 코드도 많이 사랑해주시기 바란다. 꾸벅~

EOB

댓글 2개: