책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > C++
· ISBN : 9791140707768
· 쪽수 : 800쪽
· 출판일 : 2023-12-28
책 소개
목차
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 관찰
책속에서
쉽게 유지보수할 수 있는 대규모 소프트웨어 시스템은 저절로 만들어지지 않는다. 개발자 한 명이 자신만을 위해 사용하는 방법이, 많은 정합 작업이 수반되는 대규모 소프트웨어에서도 같은 효과가 있기를 기대하기는 어렵다. 이 책은 대규모 소프트웨어 개발을 위한 엔지니어링(engineering) 방법론 및 소프트웨어의 종류나 규모와 상관없이 공통적으로 적용할 수 있는 테크닉과 요령을 다룬다. 그러한 테크닉과 요령은 한 번 학습하고 나면 본능처럼 각인되어 추가적인 노력과 시간을 들이지 않아도 된다. 각인된 테크닉과 요령은 이해하고, 검증하고, 유지보수하기 쉬운 잘 조직화된 시스템을 만들어 내는 데 반복적으로 기여한다.
이제 소프트웨어 개발의 최종 결과물인 소프트웨어 자체를 생각해 보자. 시간이 지남에 따라 소프트웨어는 계속해서 커진다. 미래의 프로젝트에 기존 소프트웨어의 상당 부분을 재사용할 수 있다면 생산성을 무한정 높일 수 있다. 즉, 소프트웨어를 오래 개발할수록 새로운 요구 사항이 생겼을 때 그냥 가져다 쓰기만 하면 되는 경우가 많이 생긴다. 문제는 “소프트웨어를 어떻게 구조화해야 효과적으로 재사용할 수 있는가?”다.