대규모 C++ I편: 절차와 아키텍처

대규모 C++ I편: 절차와 아키텍처

$75.00
Description
당신의 코드는 레거시인가?
오늘도 레거시가 될 코드를 작성했나?
레거시가 코드의 진정한 운명인가?
레거시가 아닌 소프트웨어 자산이 되는 코드와 설계!
개발자는 책으로 공부한다.
인기 있는 책들은 이상적인 모델을 설명한다.
그들은 실제 대규모 시스템을 운영하고 있지 않다.
진짜 대규모 시스템을 30여 년 가까이 운영하는 저자의 설계론!

당신이 오늘 작성하는 코드는 레거시이고, 내일 작성하는 코드는 모던 코드인가? 차세대 프로젝트가 나오면 사라져야 하는 레거시 코드인가? 소모적인 코드 갈아엎기 대신 소프트웨어 자산으로 축적하고 성장하는 방법은 없을까?
개발자는 책으로 공부한다. 책에서 설명하는 이론적인 방법을 신봉하고야 만다. 그러나 소프트웨어는 복잡하다. 복잡한 현실 세계를 소프트웨어로 담아내다 보면 이상적인 이론은 무너지고 만다. 이론을 넘어 물리적인 세계에 실제로 적용할 수 있는 아키텍처를 배워보자.
저자

존레이코스

(JohnLakos)
1996년에출판한『Large-ScaleC++SoftwareDesign』(Addison-Wesley,1996)의저자이며현재는뉴욕시의블룸버그LP에서선임아키텍트로근무하고있으며C++소프트웨어개발분야에서세계적으로잘알려진멘토로활동하고있다.2001년에는블룸버그의BDE그룹을설립하고자신의컴포넌트기반방법론,프로세스및아키텍처를사용하여최상급의재사용가능한C++소프트웨어를개발하고있다.
존레이코스는ACCU,C++Now,CppCon,MeetingC++같은저명한전문콘퍼런스에항상연사로참여하고있다.또한,2006년부터C++표준위원회의투표회원으로참여하여C++11값시멘틱,C++17PMR메모리할당자,C++20모듈등여러세대에걸쳐C++를발전시키는데기여했다.
1996년에출간한그의책은업계에많은영향을줬으며지금까지도C++에서대규모시스템을디자인하는데있어첫번째이자,현재까지도유일하고도명확한참고자료였다.

목차

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.2C++컴파일과링킹
__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관찰

출판사 서평

대규모소프트웨어의복잡성에대응하기위한절차와아키텍처

대규모소프트웨어프로젝트를위한아키텍처원칙
신뢰성과유지보수성을갖춘코드를작성하는일은어렵다.대규모소프트웨어개발이라면더많은도전과제가주어진다.대규모시스템을만들려면대부분의인기있는교재에서다루는이론적개념을넘어논리적디자인에대한실용적인이해가필요하다.기업규모에서성공적이려면개발자또는고급개발자에게조차생소할수있는소프트웨어엔지니어링의물리적디자인도다뤄야한다.
기업의생존을책임지는대규모,미션크리티컬한엔터프라이즈시스템을30년이상현장에서구축하면서쌓은실무경험을기반으로저자,존레이코스는소프트웨어자본을만들고성장시키는방법을보여준다.이책은어떤규모의프로젝트라도적용가능한기초를구축하고,성공적인현실세계대규모개발에필요한절차,방법,기술및도구를보여준다.
23년만의개정을통해최신정보를반영했다.견고한엔지니어링을강조하면서구체적인예제와기본디자인개념을설명한다.어떤경험수준의개발자라도다음과같은방법을이해함으로써디자인및개발접근방식을혁신적으로변화시킬수있는인사이트를얻을수있을것이다.

ㆍ인프라및응용프로그램개발간의차이를활용하여생산성향상
ㆍ피드백및계층적재사용을통한기하급수적인생산성향상달성
ㆍ컴포넌트를논리및물리적디자인의기본단위로받아들이기
ㆍ컴파일및링크의기본적인특성이컴포넌트디자인에어떻게영향을미치는지분석
ㆍ적절한크기의물리적집합에논리적콘텐츠를효과적으로분할하기
ㆍ충분한,완전한,최소한의및기본소프트웨어간의중요한차이를내재화
ㆍ캡슐화,안정성및성능을동시에최적화하는솔루션제공
ㆍ주기적인물리적종속성을피하기위해아홉가지수립된수준화기법활용
ㆍ전통적인계층구조의"무거움"을피하기위해적절한측면설계사용
ㆍ컴파일타임결합을제거하기위한적절한아키텍처격리기법사용
ㆍ컴포넌트기반방법을사용하여대규모시스템을디자인하는다차원프로세스를숙달하기

이책에서다루는원칙과아키텍처는언어에특화되지않고대규모소프트웨어시스템을개발하면서발생할수있는공통적인문제에대한해결책을제시한다.C++에중점을둔책이지만,자바,파이썬등다른언어의개발자들도대규모소프트웨어프로젝트에서의아키텍처설계와절차에대한이해를향상시키는데도움을받을수있을것이다.