-
-
대규모 C++ I편 - 절차와 아키텍처, 23주년 개정판
존 레이코스 지음, 권오인 옮김 / 길벗 / 2023년 12월
평점 :
『대규모 C++ I 편: 절차와 아키텍처』(존 레이코스 지음, 권오인 옮김, 길벗, 2023)은 다양한 규모의 소프트웨어 개발 조직에서 일한 저자의 풍부한 경험을 바탕으로, 대규모 C++ 프로젝트의 물리적 설계와 구성을 다루는 책입니다.

책의 구성입니다.
0장은 '동기'로, 소프트웨어 개발에서 계층적 재사용이 중요한 이유, 생산성을 높이기 위해 초기 엔지니어링이 왜 중요한지 설명합니다.
1장은 '컴파일러, 링커, 컴포넌트'로, C++의 컴파일러, 링커에 대한 지식, 가장 작은 설계 단위인 컴포넌트와 물리적 종속성을 설명합니다.
2장은 '패키징과 설계 규칙'으로, 패키지를 소개하고 컴포넌트 기반 소프트웨어를 조직화하고 패키징 하는 방법을 설명합니다. 소프트웨어 모듈을 계층적으로 개발하기 위한 방법도 알아봅니다.
3장은 '물리적 설계와 인수분해'로, 물리적 설계를 소개합니다. 작고 세분화된 시스템으로부터 큰 시스템까지 설계 과정과 물리적 종속성을 피하는 방법, 레이어 아키텍처 설계 방법, 예시와 함께 효과적으로 컴포넌트를 설계하는 방법을 알아봅니다.
부록에서는 책을 빠르게 훑어보고, 참조할 수 있게 페이지를 제공합니다. 각 장이 끝날 때마다 요약해서 정리하는 부분보다 더 요약정리되어 있어 편리했습니다.

책에서 느꼈던 장점입니다.
→ 저자가 대규모 C++ 프로젝트에서 실제로 겪었던 문제들과 해결책들을 공유합니다. 이론적인 내용뿐만 아니라 실무적인 내용도 다루며, 많은 예제 코드와 사례를 제공합니다. 특히 책의 마지막 부분에서 고객의 요구사항에 맞춘 소프트웨어를 만들어보면서 컴포넌트 중심 설계를 이해할 수 있는 부분이 인상적이었습니다.
→ 소프트웨어 개발 과정과 개발팀들 간 협업이 이루어지는 과정을 소개합니다. 큰 그림에서 개발을 볼 수 있어 유용했습니다.
→ C++에 대한 설명도 충실합니다. C++ 프로그램의 생성부터 빌드 절차, 컴파일과 링커의 동작 방식, 헤더 파일과 인클루드 지시자까지 좋은 사례와 나쁜 사례로 구별하여 설명하여, 저자가 오랜 기간 동안 얻은 테크닉과 주의사항들을 배울 수 있었습니다.


순환하는 물리적 종속성을 피하기 위한 계층적 테크닉을 설명하는 부분은 이 책의 하이라이트라고 생각합니다. 각 테크닉에 대한 설명뿐만 아니라 현실 속에 있을 만한 예시를 직접 코드를 통해 구현해 보고 다이어그램으로 설명하여 계층적 테크닉을 이해하는 데 도움이 되었습니다.

책의 마지막 부분(3장 12절)에서는 여태까지 배운 내용을 토대로 컴포넌트 기반 설계를 처음부터 끝까지 따라가 보는데, 고객의 요구사항이 시간이 갈수록 늘어나는(!) 현장감이 넘치는 예시로 계층적 재사용이 가능한 소프트웨어 설계의 중요성을 느낄 수 있었습니다. 그리고 설계를 하며 단순히 코드만 설명하는 것이 아닌, 다이어그램을 제공하여 이해에 도움이 되었습니다.

책에서 아쉬웠던 점입니다.
→ 많은 내용을 다루려는 저자의 노력으로 인한 두꺼워진 책의 두께와 가격입니다. 의존성과 레벨에 대해 너무 상세하게 다루며, 지루하게 느껴질 수도 있습니다.
→ C++에 중점 한 설명입니다. 특정 개발 언어에 국한되지 않는 설계 방법을 알려주지만, 예시 코드가 C++으로만 이루어져 있어 다른 언어를 사용하는 독자는 불편하게 느껴질 거라 생각합니다.
현실과 동떨어진 원리와 원칙, 디자인 개념을 제공하는 것에서 벗어나 저자가 현업에서 얻은 경험을 토대로 완성된 책이라서 경험을 가진 숙련된 개발자에게도, 설계에 어려움을 겪고 있는 개발자, 개발에 대해서는 알지만 소프트웨어 디자인에 대해서는 잘 모르는 개발자까지 모두 추천할 수 있는 책이라 생각합니다.
『대규모 C++ I 편: 절차와 아키텍처』는 소프트웨어 개발 절차부터 시작하여 아키텍처, C++에 대한 설명까지 대규모 소프트웨어 개발에 필요한 물리적 설계의 모든 것을 다룬 책이었습니다. 한편으로는 책에서 CI(지속적 통합)/CD(지속적 배포)와 같은 DevOps 적인 부분을 다루지 않아서 아쉬웠습니다. 단순 자동화를 넘어 이제는 인공지능의 도움을 받아 자동화를 제공하는 도구들이 많은 데, 해당 도구에 대한 설명과 한계점이 있었다면 더 좋았을 것 같습니다. 교과서적인 물리적 설계를 다뤄 개발자들의 레퍼런스가 되고 있는 『대규모 C++ I 편: 절차와 아키텍처』에 이어서 2편에서는 대규모 논리적 설계, 최적화, 고성능 구현까지 다룬다고 하니 벌써부터 기대됩니다.
해당 서평은 길벗 출판사로부터 책을 제공받아 작성했습니다. 감사합니다.