이전

리뷰 (3)

한줄평
평점 분포
  • 리뷰 총점10 100%
  • 리뷰 총점8 0%
  • 리뷰 총점6 0%
  • 리뷰 총점4 0%
  • 리뷰 총점2 0%
연령대별 평균 점수
  • 10대 0.0
  • 20대 0.0
  • 30대 9.0
  • 40대 0.0
  • 50대 0.0

포토/동영상 (2)

리뷰 총점 종이책
[도서 리뷰] 대규모 C++ I편: 절차와 아키텍처
"[도서 리뷰] 대규모 C++ I편: 절차와 아키텍처" 내용보기
이 책은 C++의 문법이나 고급 trick 같은 것을 설명하는 책은 아닙니다. C++ 기반의 library/application 프로젝트를 구축하는데 있어서 고려해야 하는 것들을 소개하는 책이었습니다. 소개하는 설계 방법론은 C++ 외의 컴퓨터 언어에서도 사용할 수 있겠으나, 예시 설명이 C++ 기반이기 때문에, C++을 전혀 모른다면 읽기 어려울 수 있어 보입니다.   C++ 프로그램을 만드는데 있어서
"[도서 리뷰] 대규모 C++ I편: 절차와 아키텍처" 내용보기

이 책은 C++의 문법이나 고급 trick 같은 것을 설명하는 책은 아닙니다.
C++ 기반의 library/application 프로젝트를 구축하는데 있어서 고려해야 하는 것들을 소개하는 책이었습니다.
소개하는 설계 방법론은 C++ 외의 컴퓨터 언어에서도 사용할 수 있겠으나, 예시 설명이 C++ 기반이기 때문에, C++을 전혀 모른다면 읽기 어려울 수 있어 보입니다.

 

C++ 프로그램을 만드는데 있어서 나타날 수 있는 문제들("나쁜 아이디어")을 소개하고, 그러한 문제들을 해결하기 위한 (유일한 답은 아니겠지만, 상당히 합리적인) 방법들도 같이 소개합니다.

 

책에서 저자는
 - C++의 프로그램의 빌드(컴파일 및 링크)에 대한 개념과 내부 동작,
 - 그로 인해 나타날 수 있는 문제들,
 - 그러한 문제들을 해결하기 위한 방법을 소개합니다.

 

또한, C++은 자유도가 상당히 높기 때문에 계획 없이 구현하면 스파게티 코드가 되기 쉬운데, 관리가 나빠질 수 있는 경우와 그것들을 방지하기 위한 가이드도 함께 소개합니다.

 

특히, 저자는 나쁜 아이디어라는 이름으로, 문제 상황이 적용된 적절한 예시를 보여주면서, 독자가 최대한 쉽고 직관적으로 문제상황을 인식할 수 있게 해줍니다. 읽다 보면 '아, 그렇지. 이렇게 하면 안되지' 라는 생각이 절로 듭니다.

 

책에서 저자는 지향하는 설계 방법론의 당위성과, 필요한 정보들을 거의 모두 제공하고 있는 것 같습니다.
이 책만 참고하면 저자가 지향하는 설계 방법론을 온전히 재현해낼 수 있을 것 같습니다.
(II편과 III편은 필요합니다 ??)

한편, 여러 팀이 여러 라이브러리를 구축하고 통합된 최종 application을 만들어내는 정도의 대규모 프로젝트에서 발생할 수 있(다고 생각이 드)는 문제들도 소개하고 있는데, 저는 간단히 훑어만 보았습니다.
공감이 많이 되지 않는 부분이어서, 그런 내용이 있었다는 것만 알아두고 필요할 때 찾아보려고 합니다.

 

C++은 다른 많은 언어가 제공하는 import 대신 #include 라는 것을 사용합니다.
#include는 copy & paste 동작인 샘인데, 많은 C++ 입문자 또는 주니어 개발자분들은 잘 모르고 반사적으로 사용합니다. 이전 회사의 동기들이나 동료분들도 그러했는데요,
이 책에서는 static, extern, 그리고 inline 등 C++의 다양한 키워드가 컴파일 타임, 링크 타임에 어떤 영향을 주는지도 소개합니다.

 

이러한 키워드들은 보통 경험적으로 사용할텐데요, 경험적인 사용은 통상 성공적인 사용을 토대로 하기 때문에, 잠재적 위험 요인이 무엇이 있는지를 모르고 사용하는 단점이 있습니다.
이제 이 책을 통해 컴파일/링크 동작을 이해한다면, 각 키워드가 어떤 영향을 주는지 알고 사용할 수 있습니다.
저는 C/C++을 접한지는 13년이 넘었고, 연구/실무하면서 사용한지는 8년이 넘은 것 같습니다.
개인적으로 이것저것 많이 찾아보고 테스트해보는 편이었는데도 새롭게 알게 된 것들이 매우 많았습니다.

 

책에서 저자는 대부분을 C++ 표준에 기반하여 설명하므로, 정의되지 않은/보장하지 않는 동작에 대한 지식도 얻어갈 수 있었고, 몰랐던 부분들도 C++ 표준과 컴파일러의 동작에 기반해서 상세히 설명되어 있어서 읽는 동안 재미있었습니다.

w******s 2024.02.21. 신고 공감 1 댓글 0
리뷰 총점 종이책
대규모 C++ 1 : 절차와 아키텍처
"대규모 C++ 1 : 절차와 아키텍처" 내용보기
C++로 주로 개발은 하지 않습니다. 최근 오픈소스에 관심이 생겨서 PR를 할 때 C 기반의 코드들을 많이 보게 되어서 아키텍처를 이해하고 싶어졌습니다. 마침 ‘대규모 C++ I편 절차와 아키텍처’란 책이 23주년 개정판으로 나와 읽어 보게 됐습니다. 이 책은 대규모 소프트웨어 시스템을 효율적으로 개발하고 유지보수하기 위한 필수적인 방법론과 기술에 대해 다루고 있습니다. 저
"대규모 C++ 1 : 절차와 아키텍처" 내용보기

C++로 주로 개발은 하지 않습니다.

최근 오픈소스에 관심이 생겨서 PR를 할 때 C 기반의 코드들을 많이 보게 되어서 아키텍처를 이해하고 싶어졌습니다.

마침 ‘대규모 C++ I편 절차와 아키텍처’란 책이 23주년 개정판으로 나와 읽어 보게 됐습니다.

이 책은 대규모 소프트웨어 시스템을 효율적으로 개발하고 유지보수하기 위한 필수적인 방법론과 기술에 대해 다루고 있습니다.

저자는 개발자가 소프트웨어를 작성할 때 고려해야 할 사항과, 코드의 구조화, 재사용성, 테스트 가능성 등에 대한 중요성을 강조하고 있습니다

책을 읽으면서 가장 기억에 남는 2가지를 소개 하겠습니다.

 


 

 

1) 소프트웨어 자산 ‘시간’

지식 산업은 가장 큰 자산은 시간인데요.

똑같이 주어진 시간에 남들보다 다르게 N 배를 더 하는 사람 있지만 반대인 사람도 있습니다.

그렇다면 프로그램을 개발을 하면서 가장 많이 시간을 보내는 것 무엇일까요?

바로 도메인을 이해하는 부분입니다.

막상 코드를 짜는 시간은 업무를 이해를 한다면 개발 코드에 대해 숙달이 되어져 있다면 금방 하기 때문이죠.

하지만 비즈니스를 이해하지 못하고 개발자가 코드만 짠다면 일을 안 하게 되고 협업에도 문제가 생기기 마련입니다.

단순히 빨리하는 게 필요로 한 게 아니라 주어진 목표를 정확하게 하고 일을 빨리할 수 있도록 훈련해야 합니다.

그러기 위해서 저자는 개발하기 전에 정확히 무엇을 할 것인지 또한 사용 시나리오의 참조 문서를 보고 남들이 보기에 이해하기 쉬운 설계가 나와야 장기적으로 비용 즉 시간을 줄일 수 있다고 합니다.

 


 

 

2) 유지보수가 쉬운 개발, ‘테스트’

개발자가 개발하는 소프트웨어의 전체적인 구조를 고려해 효율적으로 관리하는 방법에 대해서도 알아야 합니다.

이 책은 소프트웨어를 재사용 가능하고 유지보수하기 쉬운 형태로 개발하는 방법에 대해 상세히 다루고 있는데요.

컴포넌트 기반 소프트웨어의 설계와 구현에 대한 물리적 설계의 중요성을 강조하며, 이를 통해 유연하고 안정적인 시스템을 구축하는 방법을 안내하고 있습니다.

또한 유지보수 쉬운 개발을 하기 위해 테스트의 중요성을 강조 하는데요.

테스트가 수행되지 않으면 소프트웨어의 신뢰성이 떨어 질 수 있으며, 중복코드가 많아 유지 보수에 부담이 됩니다.

저자는 코드가 수정되면 반드시 테스트 해야 한다고 강조합니다.


 

PS

이 책을 통해 개발자는 레거시 코드를 효율적으로 관리하고 현대적인 아키텍처를 구축하는 방법에 대해 배울 수 있습니다.

하지만 책도 상당히 두껍고 아키텍처에 대한 배경지식이 부족하다면 단기간에 이 책을 단숨에 읽을 수 없습니다.

업무를 하다가 내가 짜고 있는 소프트웨어의 설계가 잘 안된다고 생각이 들 때 책에 해당하는 도메인이나 설계 방법론이랑 비교해 보면서 틈틈이 조언받을을 수 있는 책이라 생각 합니다.

w******m 2024.02.22. 신고 공감 0 댓글 0
리뷰 총점 종이책
대규모 소프트웨어 프로젝트를 위한 가이드북, 『대규모 C++ I 편: 절차와 아키텍처』
"대규모 소프트웨어 프로젝트를 위한 가이드북, 『대규모 C++ I 편: 절차와 아키텍처』" 내용보기
『대규모 C++ I 편: 절차와 아키텍처』(존 레이코스 지음, 권오인 옮김, 길벗, 2023)은 다양한 규모의 소프트웨어 개발 조직에서 일한 저자의 풍부한 경험을 바탕으로, 대규모 C++ 프로젝트의 물리적 설계와 구성을 다루는 책입니다.      책의 구성입니다. 0장은 '동기'로, 소프트웨어 개발에서 계층적 재사용이 중요한 이유, 생산성을 높이기 위해 초기 엔지니어링이 왜 중요한지
"대규모 소프트웨어 프로젝트를 위한 가이드북, 『대규모 C++ I 편: 절차와 아키텍처』" 내용보기

『대규모 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편에서는 대규모 논리적 설계, 최적화, 고성능 구현까지 다룬다고 하니 벌써부터 기대됩니다.

 

 

해당 서평은 길벗 출판사로부터 책을 제공받아 작성했습니다. 감사합니다.
 

n****8 2024.02.21. 신고 공감 0 댓글 0