본문 바로가기

추천 검색어

실시간 인기 검색어

C++ 소프트웨어 디자인

고품질 소프트웨어 구축을 위한 설계 원칙과 패턴
위키북스 프로그래밍 & 프랙티스 시리즈 33
위키북스

2024년 07월 31일 출간

국내도서 : 2023년 10월 30일 출간

(개의 리뷰)
( 0% 의 구매자)
eBook 상품 정보
파일 정보 PDF (6.97MB)
ISBN 9791158395391
지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
교보eBook App 듣기(TTS) 불가능
TTS 란?
텍스트를 음성으로 읽어주는 기술입니다.
  • 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를​ 읽을 수 있습니다.
  • 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.

PDF 필기가능 (Android, iOS)
소득공제
소장
정가 : 25,600원

쿠폰적용가 23,040

10% 할인 | 5%P 적립

이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.

카드&결제 혜택

  • 5만원 이상 구매 시 추가 2,000P
  • 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
  • 리뷰 작성 시, e교환권 추가 최대 200원

작품소개

이 상품이 속한 분야

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

C++ 강사이자 컨설턴트인 클라우스 이글베르거는 의존성과 추상화를 관리하고, 소프트웨어 개체의 변경 용이성과 기능 확장성을 향상시키며, 최신 기술과 흐름을 활용하기 위해 최신 디자인 패턴을 적용하고 구현하는 방법을 설명한다. 소프트웨어 디자인은 소프트웨어의 가장 중요한 특성인 유지 보수성, 변경 용이성, 기능 확장성에 영향을 미치므로 소프트웨어 프로젝트의 가장 중요한 측면이다.
▣ 01장: 소프트웨어 디자인 기술
지침 1: 소프트웨어 디자인의 중요성을 이해하라
__기능은 소프트웨어 디자인이 아니다
__소프트웨어 디자인: 의존성과 추상화 관리 기술
__소프트웨어 개발의 세 가지 수준
__기능에 집중하기
__소프트웨어 디자인과 디자인 원칙에 집중하기
지침 2: 변경을 위한 디자인
__관심사 분리(separation of concerns)
__인위적인 결합 예
__논리적 결합 대 물리적 결합
__반복하지 말 것
__너무 이른 관심사 분리를 피한다
지침 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를 사용하라
__강타입(Strong type)의 동기
__구현 패턴으로 CRTP 사용

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

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

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

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

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

★ 이 책에서 다루는 내용 ★

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

작가정보

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

반도체 장비 프로그래머이다. 과거 우연한 기회로 시작한 프로그래밍 서적 번역이 어느덧 여섯 번째에 이르렀다. 《오브젝트 디자인 스타일 가이드》 《C++ 프라이머》 《프로그래밍 패턴》 등을 번역했다.

이 상품의 총서

Klover리뷰 (0)

Klover리뷰 안내
Klover(Kyobo-lover)는 교보를 애용해 주시는 고객님들이 남겨주신 평점과 감상을 바탕으로, 다양한 정보를 전달하는 교보문고의 리뷰 서비스입니다.
1. 리워드 안내
구매 후 90일 이내에 평점 작성 시 e교환권 100원을 적립해 드립니다.
  • - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다. (5,000원 이상 상품으로 변경 예정, 2024년 9월 30일부터 적용)
  • - 리워드는 한 상품에 최초 1회만 제공됩니다.
  • - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
2. 운영 원칙 안내
Klover리뷰를 통한 리뷰를 작성해 주셔서 감사합니다. 자유로운 의사 표현의 공간인 만큼 타인에 대한 배려를 부탁합니다. 일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
  • 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
  • 도서와 무관한 내용의 리뷰
  • 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
  • 의성어나 의태어 등 내용의 의미가 없는 리뷰

구매 후 리뷰 작성 시, e교환권 100원 적립

문장수집

문장수집 안내
문장수집은 고객님들이 직접 선정한 책의 좋은 문장을 보여 주는 교보문고의 새로운 서비스 입니다. 교보eBook 앱에서 도서 열람 후 문장 하이라이트 하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다. 마음을 두드린 문장들을 기록하고 좋은 글귀들은 ‘좋아요’ 하여 모아보세요. 도서 문장과 무관한 내용 등록 시 별도 통보없이 삭제될 수 있습니다.
리워드 안내
  • 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
  • e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다. (5,000원 이상 eBook으로 변경 예정, 2024년 9월 30일부터 적용)
  • 리워드는 한 상품에 최초 1회만 제공됩니다.
  • sam 이용권 구매 상품 / 선물받은 eBook / 오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.

구매 후 문장수집 작성 시, e교환권 100원 적립

    교보eBook 첫 방문을 환영 합니다!

    신규가입 혜택 지급이 완료 되었습니다.

    바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
    지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!

    교보e캐시 1,000원
    TOP
    신간 알림 안내
    C++ 소프트웨어 디자인 웹툰 신간 알림이 신청되었습니다.
    신간 알림 안내
    C++ 소프트웨어 디자인 웹툰 신간 알림이 취소되었습니다.
    리뷰작성
    • 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
    • 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
    • 콘텐츠 다운로드 또는 바로보기 완료 후 리뷰 작성 시 익일 제공
    감성 태그

    가장 와 닿는 하나의 키워드를 선택해주세요.

    사진 첨부(선택) 0 / 5

    총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.

    신고/차단

    신고 사유를 선택해주세요.
    신고 내용은 이용약관 및 정책에 의해 처리됩니다.

    허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
    있으니 유의하시어 신중하게 신고해주세요.


    이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.

    문장수집 작성

    구매 후 90일 이내 작성 시, e교환권 100원 적립

    eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.

    P.
    C++ 소프트웨어 디자인
    고품질 소프트웨어 구축을 위한 설계 원칙과 패턴
    저자 모두보기
    낭독자 모두보기
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 프리미엄 이용권입니다.
    선물하실 sam이용권을 선택하세요.
    결제완료
    e캐시 원 결제 계속 하시겠습니까?
    교보 e캐시 간편 결제
    sam 열람권 선물하기
    • 보유 권수 / 선물할 권수
      0권 / 1
    • 받는사람 이름
      받는사람 휴대전화
    • 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
    • 열람권은 1인당 1권씩 선물 가능합니다.
    • 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
    • 선물한 열람권의 등록유효기간은 14일 입니다.
      (상대방이 기한내에 등록하지 않을 경우 소멸됩니다.)
    • 무제한 이용권일 경우 열람권 선물이 불가합니다.
    이 상품의 총서 전체보기
    네이버 책을 통해서 교보eBook 첫 구매 시
    교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 네이버 책을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)
    구글바이액션을 통해서 교보eBook
    첫 구매 시 교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 구글바이액션을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)