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 관찰 |
권오인의 다른 상품