당신의 코드는 레거시인가?
오늘도 레거시가 될 코드를 작성했나?
레거시가 코드의 진정한 운명인가?
레거시가 아닌 소프트웨어 자산이 되는 코드와 설계!
개발자는 책으로 공부한다.
인기 있는 책들은 이상적인 모델을 설명한다.
그들은 실제 대규모 시스템을 운영하고 있지 않다.
진짜 대규모 시스템을 30여 년 가까이 운영하는 저자의 설계론!
당신의 코드는 레거시인가?
당신이 오늘 작성하는 코드는 레거시이고, 내일 작성하는 코드는 모던 코드인가? 차세대 프로젝트가 나오면 사라져야 하는 레거시 코드인가? 소모적인 코드 갈아엎기 대신 소프트웨어 자산으로 축적하고 성장하는 방법은 없을까?
개발자는 책으로 공부한다. 책에서 설명하는 이론적인 방법을 신봉하고야 만다. 그러나 소프트웨어는 복잡하다. 복잡한 현실 세계를 소프트웨어로 담아내다 보면 이상적인 이론은 무너지고 만다. 이론을 넘어 물리적인 세계에 실제로 적용할 수 있는 아키텍처를 배워보자.
Contents
0장 동기
__0.1 목표: 더 빨리, 더 좋게, 더 싸게!
__0.2 애플리케이션 vs 라이브러리
__0.3 뒤엉킨 협업 vs 재사용 가능한 소프트웨어
__0.4 계층적 재사용 소프트웨어
__0.5 소프트웨어의 가변성 vs 안정성
__0.6 물리적 설계의 핵심 역할
__0.7 물리적으로 균일한 소프트웨어: 컴포넌트
__0.8 계층적 재사용의 정량화: 비유
__0.9 소프트웨어 자산
__0.10 투자의 확대
__0.11 주의/경계의 필요성
__0.12 요약
1장 컴파일러, 링커 그리고 컴포넌트
__1.1 아는 것이 힘이다: “악마는 디테일에 있다”
__1.2 C++ 컴파일과 링킹
__1.3 선언, 정의, 링키지
__1.4 헤더 파일
__1.5 인클루드 지시자와 인클루드 가드
__1.6 단순한 .h/.cpp 쌍에서 컴포넌트로
__1.7 표기법과 용어
__1.8 종속 관계
__1.9 암시된 종속성
__1.10 계층 번호
__1.11 실제 종속성 추출
__1.12 요약
2장 패키징과 설계 규칙
__2.1 큰 그림
__2.2 물리적 연합
__2.3 논리적/물리적 일관성
__2.4 논리적 이름, 물리적 이름의 응집성
__2.5 컴포넌트 소스 코드의 조직화
__2.6 컴포넌트 설계 규칙
__2.7 컴포넌트 private 클래스와 하위 컴포넌트
__2.8 패키지
__2.9 패키지 그룹
__2.10 패키지와 패키지 그룹의 네이밍
__2.11 부속 패키지
__2.12 레거시, 오픈 소스, 서드 파티 소프트웨어
__2.13 애플리케이션
__2.14 계층적 테스트 가능성
__2.15 개발에서 배포까지
__2.16 메타데이터
__2.17 요약
3장 물리적 설계와 인수분해
__3.1 물리적으로 생각하기
__3.2 부실한 물리적 모듈화 피하기
__3.3 논리적으로 묶인 것을 물리적으로 묶기
__3.4 링크 타임 순환 종속성 피하기
__3.5 계층화 테크닉
__3.6 과도한 링크 타임 종속성 피하기
__3.7 수평적 아키텍처와 수직적 아키텍처(레이어링)
__3.8 부적절한 링크 타임 종속성 피하기
__3.9 물리적 상호운용성의 확보
__3.10 불필요한 컴파일 타임 종속성 피하기
__3.11 아키텍처적 격리 테크닉
__3.12 컴포넌트 기반 설계
__3.13 요약
__3.14 결론
부록 퀵 레퍼런스
A.1 정의
A.2 따름정리
A.3 설계 필수 요건
A.4 설계 규칙
A.5 가이드라인
A.6 관찰
Author
존 레이코스,권오인
1996년에 출판한 『Large-Scale C++ Software Design』(Addison-Wesley, 1996)의 저자이며 현재는 뉴욕 시의 블룸버그 LP에서 선임 아키텍트로 근무하고 있으며 C++ 소프트웨어 개발 분야에서 세계적으로 잘 알려진 멘토로 활동하고 있다. 2001년에는 블룸버그의 BDE 그룹을 설립하고 자신의 컴포넌트 기반 방법론, 프로세스 및 아키텍처를 사용하여 최상급의 재사용 가능한 C++ 소프트웨어를 개발하고 있다.
존 레이코스는 ACCU, C++Now, CppCon, Meeting C++ 같은 저명한 전문 콘퍼런스에 항상 연사로 참여하고 있다. 또한, 2006년부터 C++ 표준 위원회의 투표 회원으로 참여하여 C++11 값 시멘틱, C++17 PMR 메모리 할당자, C++20 모듈 등 여러 세대에 걸쳐 C++를 발전시키는 데 기여했다. 1996년에 출간한 그의 책은 업계에 많은 영향을 줬으며 지금까지도 C++에서 대규모 시스템을 디자인하는 데 있어 첫 번째이자, 현재까지도 유일하고도 명확한 참고 자료였다.
1996년에 출판한 『Large-Scale C++ Software Design』(Addison-Wesley, 1996)의 저자이며 현재는 뉴욕 시의 블룸버그 LP에서 선임 아키텍트로 근무하고 있으며 C++ 소프트웨어 개발 분야에서 세계적으로 잘 알려진 멘토로 활동하고 있다. 2001년에는 블룸버그의 BDE 그룹을 설립하고 자신의 컴포넌트 기반 방법론, 프로세스 및 아키텍처를 사용하여 최상급의 재사용 가능한 C++ 소프트웨어를 개발하고 있다.
존 레이코스는 ACCU, C++Now, CppCon, Meeting C++ 같은 저명한 전문 콘퍼런스에 항상 연사로 참여하고 있다. 또한, 2006년부터 C++ 표준 위원회의 투표 회원으로 참여하여 C++11 값 시멘틱, C++17 PMR 메모리 할당자, C++20 모듈 등 여러 세대에 걸쳐 C++를 발전시키는 데 기여했다. 1996년에 출간한 그의 책은 업계에 많은 영향을 줬으며 지금까지도 C++에서 대규모 시스템을 디자인하는 데 있어 첫 번째이자, 현재까지도 유일하고도 명확한 참고 자료였다.