도서 리뷰: 소프트웨어 설계의 정석

nofence 2024. 9. 29. 23:34

올바르게 동작하고 비즈니스 목표에 부합하는 소프트웨어를 구현하기 위해서는 무엇보다 설계가 중요하다. 소프트웨어 공학의 태동기 이래로 소프트웨어 설계에 대한 중요성은 항상 강조되어 왔지만, 정작 제대로 소프트웨어를 설계하기 위한 실천적인 지식과 방법을 배우기 어려운 상황이 고스란히 이어져 왔다. 눈에 보이지 않는 소프트웨어의 본질적인 특성과 다양한 복잡성이 내재되어 있는 제약이 언제나 소프트웨어 설계를 어렵게하는 요인으로 작용해 왔고, 경력과 연륜을 갖춘 노련한 대가에 의해 훌륭한 소프트웨어 설계가 이뤄져 왔도 해도 과언이 아니다. 그렇다면 소프트웨어 설계를 누구나 쉽게 시작할 수 있는 방법은 없는 것일까? 이 물음에 대한 답을 제공하기 위해 오늘 소개하는 서적과 함께 이야기를 풀어 나가 보려고 한다.

 

이 책은 입문 편, 설계 편, 아키텍처 편 등 총 3개의 큰 흐름으로 구성되어 있다. 입문편에서는 설계에 대한 가벼운 이야기를 시작으로 개발자로서 설계자로 나아가는 방향과 관련된 저자의 깊은 생각과 조언이 온전히 가슴에 와닿았다. 한편 설계 편으로 넘어가면서 설계의 목적과 외부 설계, 내부 설계 등으로 나뉘어 본격적인 설계와 관련된 심도 깊은 이야기가 전개된다. 설계 대상, 프로젝트를 진행하면서 맞닥뜨리는 다양한 어려움 그리고 본질적인 설계의 목적과 나쁜 설계, 설계를 위한 접근법 등 결코 가볍지 않은 소재의 향연이 펼쳐진다. 외부 설계 방법 섹션에서는 유스 케이스 분석을 위시하여 화면 설계, 인터페이스 설계, DB 논리 설계, 비기능 요구 사항, 인프라 설계 등에 이르기까지 개별 영역에 대한 세세한 설계와 관련된 방법론을 익히게 된다. 이윽고 내부 설계 방법에 대한 부문에서는 화면 프로그램, 비즈니스 로직, DB 물리 설계, 테스트 설계와 관련된 정수를 배우게 되며 개발 환경과 표준을 구축하며 수립하기 위해 필요한 지식과 개념 역시 학습하게 된다. 다음으로 아키텍처 편에서는 아키텍처에 대한 정의와 그를 둘러싼 개념을 풀어 나가며 아키텍처 설계 접근법에 대한 다양한 주제를 하나씩 다루게 된다. 객체 지향 설계, 서브 시스템 분할, 레이어, 의존성 주입 등으로 이어지는, 설계를 관통하는 핵심을 각각 뜯어보며 올바른 아키첵처를 구성하기 위한 본질과 맞닿게 된다. 끝으로 설계의 중요성이 다시 한 번 갈파되면서 이 책은 마무리된다. 

본 서적은 물리적으로 가볍게 구성돼 있지만 내용만큼은 결코 가볍지 않은 서적으로 평가될 수 있다. 시중에 유통되는 소프트웨어 공학 또는 설계와 관련된 책이 방대한 양과 이론으로 중무장했다면, 이 책은 소프트웨어를 올바르게 설계하기 위한 실천적인 지식과 실전적인 방법론으로 알차게 구성된 도서라 할 수 있을 것 같다. 보다 더 나은 소프트웨어 설계를 위해 고군분투하는 모든 이에게 이 책에 대한 일독을 권한다. 

 

P.S 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

반응형