C++ 소프트웨어 디자인 (고품질 소프트웨어 구축을 위한 설계 원칙과 패턴)

C++ 소프트웨어 디자인 (고품질 소프트웨어 구축을 위한 설계 원칙과 패턴)

$32.00
Description
좋은 소프트웨어 디자인은 프로젝트 성공에 필수지만, 소프트웨어를 디자인하기는 어렵다. 디자인 결정의 결과를 깊게 이해하고 사용 가능한 디자인 대안에 대해 잘 알고 있어야 한다. 이 책을 통해 숙련된 C++ 개발자는 최신 언어를 사용한 소프트웨어 디자인에 대해 철저하고 실용적이며 비교할 바 없는 훌륭한 개요을 얻게 될 것이다.

C++ 강사이자 컨설턴트인 클라우스 이글베르거는 의존성과 추상화를 관리하고, 소프트웨어 개체의 변경 용이성과 기능 확장성을 향상시키며, 최신 기술과 흐름을 활용하기 위해 최신 디자인 패턴을 적용하고 구현하는 방법을 설명한다. 소프트웨어 디자인은 소프트웨어의 가장 중요한 특성인 유지 보수성, 변경 용이성, 기능 확장성에 영향을 미치므로 소프트웨어 프로젝트의 가장 중요한 측면이다.
저자

클라우스이글베르거

(KlausIglberger)
프리랜서C++강사이자컨설턴트다.전세계적으로인기있는교육과정을통해15년간C++전문지식을공유하고있으며C++콘퍼런스에서자주발표하고있다.2010년박사학위를취득한이후대규모소프트웨어디자인과소프트웨어유지보수성향상에집중하고있다.

목차

▣01장:소프트웨어디자인기술
지침1:소프트웨어디자인의중요성을이해하라
__기능은소프트웨어디자인이아니다
__소프트웨어디자인:의존성과추상화관리기술
__소프트웨어개발의세가지수준
__기능에집중하기
__소프트웨어디자인과디자인원칙에집중하기
지침2:변경을위한디자인
__관심사분리(separationofconcerns)
__인위적인결합예
__논리적결합대물리적결합
__반복하지말것
__너무이른관심사분리를피한다
지침3:인터페이스를분리해인위적인결합을피하라
__인터페이스를분리해관심사분리하기
__템플릿인자의요구사항최소화하기
지침4:테스트용이성을위한디자인
__비공개멤버함수테스트방법
__진정한해결책:관심사분리
지침5:확장을위한디자인
__개방-폐쇄원칙
__컴파일시점의기능확장성
__너무이른기능확장을위한디자인을피한다

▣02장:추상화구축기술
지침6:추상화로기대하는행위를따르라
__기대를어기는예
__리스코프치환원칙
__리스코프치환원칙에대한비판
__좋고의미있는추상화의필요성
지침7:기초클래스와콘셉트간유사성을이해하라
지침8:다중정의집합의의미론적요구사항을이해하라
__자유함수의힘:컴파일시점추상화메커니즘
__자유함수의문제:행위에대한기대
지침9:추상화소유권에주의하라
__의존성역전원칙
__플러그인아키텍처에서의존성역전
__템플릿을통한의존성역전
__다중정의집합을통한의존성역전
__의존성역전원칙대단일책임원칙
지침10:아키텍처문서작성을고려하라

▣03장:디자인패턴의목적
지침11:디자인패턴의목적을이해하라
__디자인패턴은이름이있다
__디자인패턴은의도를전달한다
__디자인패턴은추상화를도입한다
__디자인패턴은입증됐다
지침12:디자인패턴에대한오해를주의하라
__디자인패턴은목표가아니다
__디자인패턴은구현상세에관한것이아니다
__디자인패턴은객체지향프로그래밍이나동적다형성에국한하지않는다
지침13:디자인패턴은어디에나있다
지침14:디자인패턴이름을사용해의도를전달하라

▣04장:비지터디자인패턴
지침15:타입또는연산추가를위한디자인
__절차적해결책
__객체지향해결책
__동적다형성에서디자인선택을인식한다
지침16:비지터를사용해연산을확장하라
__디자인문제분석
__비지터디자인패턴해설
__비지터디자인패턴단점분석
지침17:비지터를구현하는데std::variant를고려하라
__std::variant소개
__도형그리기를값기반,비간섭해결책으로리팩터링하기
__성능벤치마크
__std::variant해결책의단점분석
지침18:비순환비지터의성능에주의하라

▣05장:전략디자인패턴과커맨드디자인패턴
지침19:전략을사용해작업수행방법을분리하라
__디자인문제분석
__전략디자인패턴해설
__순진한해결책의단점분석
__비지터와전략비교
__전략디자인패턴단점분석
__단위전략기반디자인
지침20:상속보다구성을선호하라
지침21:커맨드를사용해수행할작업을분리하라
__커맨드디자인패턴해설
__커맨드디자인패턴대전략디자인패턴
__커맨드디자인패턴단점분석
지침22:참조의미론보다값의미론을선호하라
__GoF형식의단점:참조의미론
__참조의미론:두번째예
__모던C++철학:값의미론
__값의미론:두번째예
__디자인패턴을구현하는데값의미론사용을선호하라
지침23:전략과커맨드는값기반구현을선호하라
__std::function소개
__도형그리기리팩터링
__성능벤치마크
__std::function해결책단점분석

▣06장:어댑터디자인패턴,옵서버디자인패턴,CRTP디자인패턴
지침24:어댑터를사용해인터페이스를표준화하라
__어댑터디자인패턴해설
__객체어댑터대클래스어댑터
__표준라이브러리의예
__어댑터와전략비교
__함수어댑터
__어댑터디자인패턴의단점분석
지침25:추상통지메커니즘으로옵서버를적용하라
__옵서버디자인패턴해설
__전통적인옵서버구현
__값의미론을기반으로한옵서버구현
__옵서버디자인패턴의단점분석
지침26:CRTP를사용해정적타입범주를도입하라
__CRTP에대한동기
__CRTP디자인패턴해설
__CRTP디자인패턴단점분석
__CRTP의미래:CRTP와C++20콘셉트간차이
지침27:정적믹스인클래스에CRTP를사용하라
__강타입(Strongtype)의동기
__구현패턴으로CRTP사용

▣07장:브리지디자인패턴,프로토타입디자인패턴,외부다형성디자인패턴
지침28:브리지를구축해물리적의존성을제거하라
__동기부여사례
__브리지디자인패턴해설
__핌플관용구
__브리지와전략의비교
__브리지디자인패턴단점분석
지침29:브리지성능이득과손실을인식하라
__브리지성능영향
__부분브리지로성능향상시키기
지침30:추상복사연산에는프로토타입을적용하라
__양을이용한예:동물복사
__프로토타입디자인패턴해설
__프로토타입과std::variant비교
__프로토타입디자인패턴단점분석
지침31:비간섭런타임다형성에는외부다형성을사용하라
__외부다형성디자인패턴해설
__도형그리기다시보기
__외부다형성과어댑터비교
__외부다형성디자인패턴단점분석

▣08장:타입소거디자인패턴
지침32:상속계통을형소거로대체할것을고려하라
__타입소거의역사
__타입소거디자인패턴해설
__소유형타입소거구현
__타입소거디자인패턴단점분석
__두타입소거래퍼비교하기
__타입소거래퍼의인터페이스분리
__성능벤치마크
__용어에대한한마디
지침33:타입소거의최적화잠재력을인식하라
__소규모버퍼최적화
__함수디스패치직접구현
지침34:소유형타입소거래퍼의설정비용을인식하라
__소유형타입소거래퍼설정비용
__간단한비소유형타입소거구현
__더강력한비소유형형소거구현

▣09장:데코레이터디자인패턴
지침35:데코레이터를사용해사용자
__계통적으로추가하라
__동료의디자인문제
__데코레이터디자인패턴해설
__데코레이터디자인패턴의고전적인구현
__두번째데코레이터예
__데코레이터,어댑터,전략비교
__데코레이터디자인패턴단점분석
지침36:런타임과컴파일시점추상
__이율배반적관계를이해하라
__값기반컴파일시점데코레이터
__값기반런타임데코레이터

▣10장:싱글턴패턴
지침37:싱글턴을디자인패턴이아닌구현패턴으로다루라
__싱글턴패턴해설
__싱글턴은의존성을관리하거나줄이지않는다
지침38:싱글턴을변경과테스트용이성을위해디자인하라
__싱글턴은전역상태를나타낸다
__싱글턴은변경용이성과테스트용이성을저해한다
__싱글턴에대한의존성뒤집기
__전략디자인패턴적용
__지역의존성주입으로전환

▣11장:마지막지침
지침39:디자인패턴을계속배워라

출판사 서평

★이책에서다루는내용★

◎소프트웨어디자인과관련해코드를평가하는방법을배운다.
◎변경용이성과기능확장성같은디자인목표를포함해소프트웨어디자인이무엇인지이해한다.
◎각디자인접근법의장단점을탐구한다.
◎디자인패턴이문제를해결하고의도를표현하는데어떻게도움이되는지배운다.
◎올바른형식의디자인패턴을선택해그장점을최대한으로활용한다.