모던 소프트웨어 엔지니어링 (소프트웨어 개발의 복잡함과 난해함 속에서 길을 찾으려는 엔지니어를 위한 필독서)

모던 소프트웨어 엔지니어링 (소프트웨어 개발의 복잡함과 난해함 속에서 길을 찾으려는 엔지니어를 위한 필독서)

$28.00
Description
AI 열풍이 불어도 개발자의 역량과 지식은 여전히 중요하다. 소프트웨어 엔지니어로 변함없이 살아남아야 할 당신을 위해 단단한 기본기와 힘을 만들어 줄 책! 소프트웨어 개발의 복잡함과 난해함에 맞서 싸울 용기와 지혜를 이 책에서 찾아보자. TDD, DDD, MSA를 이해하려면 반드시 알아둬야 할 핵심 소프트웨어 설계 원칙을 현대적으로 재해석하고 풀어서 설명했다!

V 과학적으로 가설을 세우고 실험하면서 점진적으로 역량을 높여가는 '학습'에 관한 철학 5가지!
#반복 #피드백 #점진주의 #실험 #경험주의

V 당면한 문제, 그리고 소프트웨어의 해법 자체에 존재하는 ‘복잡성’을 ‘관리’하기 위한 소프트웨어 설계 원칙 5가지!
#모듈성 #응집력 #느슨한결합 #관심사분리 #추상화

| 이 책에서 다루는 내용 |
ㆍ 자신이 달성하려는 목표를 명확히 정의하자
ㆍ 합리적인 기준으로 도구를 선택하자
ㆍ 지속적이며 점진적인 발전을 촉진하기 위해 업무와 시스템을 구조화하자
ㆍ 그저 ‘레거시 코드’를 양산하기보다는, 지속적으로 발전하는 시스템을 목표로 진행 상황을 평가하자
ㆍ 실험주의와 경험주의에서 더 많은 가치를 얻자
ㆍ 시스템이 점점 더 복잡해질 경우에도 통제력을 유지하자
ㆍ 엄격하고 체계적이되, 유연성 없는 지나친 경직성은 피하자
ㆍ 역사와 경험에서 배우자
ㆍ 좋은’ 소프트웨어 개발 아이디어와 ‘나쁜’ 소프트웨어 개발 아이디어를 가려내자
저자

데이비드팔리

(DavidFarley)
컨티뉴어스딜리버리사의설립자겸컨설턴트이며,현대적인컴퓨팅의초기부터프로그래머,소프트웨어엔지니어,시스템아키텍트,성공적인팀의리더로서,컴퓨터와소프트웨어의작동방식에대한기본원칙을바탕으로모던소프트웨어개발방식을바꿔온획기적이고혁신적인접근방식을다듬고있다.또한기존의사고방식에도전하며팀을이끌고세계적수준의소프트웨어를구축해왔다.졸트상을수상한베스트셀러도서『ContinuousDelivery신뢰할수있는소프트웨어출시』를제즈험블과함께공동저술했다.런던멀티애셋익스체인지(LMAX)의소프트웨어개발책임자로서세계에서가장빠른금융거래소중하나를구축했으며,반복적인개발,지속적인통합,높은수준의자동화된테스트를포함해애자일기법을가장먼저채택한사람중한명으로서리액티브매니페스토(reactivemanifesto.org)를공동저술하기도했다.지속적인배포에관한유튜브채널(youtube.com/ContinuousDelivery)도인기리에운영하고있다.

목차

1부|소프트웨어엔지니어링이란무엇인가

1장소프트웨어공학의정의와역사
_공학이란과학의실용적인응용분야
_소프트웨어공학정의의재구성
_다시,‘소프트웨어공학’
___전진,앞으로
_소프트웨어공학의탄생
_패러다임의전환
_정리

2장소프트웨어‘공학’의참뜻
_프로덕션은우리의문제가아니다
_프로덕션이아닌,설계를위한공학
_실무자를위한공학의정의
___공학!=코드
_수공예vs공학
_‘수공예’의한계
_정밀도와확장성
_복잡성을관리하자
_측정은반복적이며정확해야한다
_공학,창의성,장인정신
_우리가하는일이소프트웨어공학이아닌이유
_소프트웨어제작의트레이드오프:결합도가핵심이다
_기술발전의진보라는환상
_수공예에서공학으로가는여정
_수공예만으로충분하지않다
_지금우리가고민해야할것들은무엇일까
_정리

3장소프트웨어공학을이해하기위한기초사항
_새것만을좇는소프트웨어업계
_(비기능적인요소의)측정은중요하다
_안정성과처리량으로생산성을높이자
_우리는어느분야의전문가가되어야할까
___학습의전문가
___복잡성을관리하는전문가
_정리

2부|소프트웨어프로세스개선을위한구체적인실천방안

4장개선을위한반복
_반복적인작업의복잡미묘한장점
_방어적인설계전략으로서의반복
_계획이라는유혹
___반복작업의실제
_정리

5장피드백:우수한의사결정을위한필수요소
_피드백의중요성을보여주는구체적인사례
_코딩피드백
_통합과정피드백
_설계피드백
_아키텍처피드백
_피드백은빠를수록좋다
_제품설계피드백
_조직과문화피드백
_정리

6장점진주의:조금씩,조금씩,앞으로
_우주선예시로살펴보는모듈성
_효율높은조직구성을위한비법
_점진주의를적용하기위한실천도구
_변경의부작용을최소화하자
_점진적인설계
_정리

7장경험주의:현실을자각하자
_꿈은높게,그러나발은땅에
_실험과경험은분리해야한다
_“저이버그알아요!”
_자기기만은우리의적
_우리의주장에맞는현실을발명하자
_추측보다는실험:현실에입각한경험주의
_정리

8장실험주의:과학적사고와실천
_물리학자파인먼에게배우는‘실험주의’
___피드백:실험주의를위한원칙1
___가설:실험주의를위한원칙2
___측정:실험주의를위한원칙3
___변수통제:실험주의를위한원칙4
_TDD에서배우는자동화테스트
_테스트는새로운지식을끌어내는원천
_품질을높이는TDD적용사례하나
_정리

3부|소프트웨어복잡성관리를위한기본원칙5가지

9장모듈성:분리와재조합을위한기준
_모듈성의전형적인특징
_설계는언제나중요하다
_TDD의교훈:테스트가어렵다면설계도문제다
_TDD로모듈성을강화하자
_RESTAPI로모듈성을강화하자
_배포파이프라인으로모듈성을강화하자
_모듈성의규모는크고작음이없다
_고성과개발조직의특징:모듈형
_정리

10장응집성:소프트웨어의관련요소들은한곳에
_모듈성과응집성:설계의기초
_응집성을개선하기위한리팩토링사례하나
_DDD의컨텍스트를활용한응집성개선
_소프트웨어에서‘고성능’의의미란
_결합도와응집성사이의관계
_TDD로응집성을높이자
_응집성있는소프트웨어를만들려면
_응집성이부족할때치러야할대가
_개발조직관점에서응집성의중요성
_정리

11장관심사분리:고품질코드의가장중요한속성
_의존성주입
_본질적인복잡성과우발적인복잡성을분리하자
_DDD는중요하다:경계컨텍스트를활용한하향식관심사분리
_테스트하기쉬운코드=관심사가분리된코드
_육각형아키텍처:포트와어댑터
_포트와어댑터는언제채택해야할까
_API가단순한함수호출이아닌이유
_TDD를이용한상향식관심사분리
_정리

12장정보은닉과추상화:우리의적인가친구인가
_정보은닉과추상화는한몸이다
_‘큰진흙탕’이된코드의원인을찾아서
___조직적이고문화적인문제
___기술적인문제와설계의문제
___과도하게공들인공학의우려
_추상화를높이려면테스트코드부터작성하라
_좋은추상화가핵심이다
_구멍난추상화
_세계지도와지하철노선도의비유로배우는추상화기법
_이벤트스토밍으로추상화를달성하자
_추상화된우발적인복잡성
_타사시스템과타사코드를격리하자
_추상화와구상화사이의트레이드오프
_정리

13장결합도:소프트웨어모듈간의상호연관수준
_너무느슨해도너무긴밀해도문제
_수직확장을위해서는결합도가필수
_마이크로서비스:결합도를분리하기위한효과적인방법
_느슨한결합도의대가:더크고많아진코드
_결합도모델은한종류만이아니다
_어쨌든,느슨한결합이긴밀한결합보다는좋다
_느슨한결합과관심사분리의상관관계
_DRY는너무단순하다
_느슨한결합을위한비동기식구현방법
_느슨한결합을위한설계
_강건한결합도로영원히고통받는대규모조직
_정리

4부|소프트웨어엔지니어를위한아이디어

14장실제사례로되짚어본소프트웨어공학
_소프트웨어개발,그진실에대하여
_테스트가능한코드사례1
_시스템은반드시측정가능해야한다
_테스트가능한코드사례2
_테스트:시스템의시작
_배포:시스템의완성
_피드백의속도:더나은품질과결과물을위한필수요소
_시스템의전과정에서변수를통제하자
_지속적인배포를잊지말자
_소프트웨어에서고려해야할질문들
_정리

15장모던소프트웨어엔지니어가되려면
_팀이나조직도복잡성의관리대상임을잊지말자
_디지털적으로파괴적인조직을추구하자
_결과vs메커니즘,무엇이더중요할까
_소프트웨어공학원칙은머신러닝시스템에도유효하다
_모던소프트웨어엔지니어링의핵심아이디어
_정리

출판사 서평

|이책의독자대상|
소프트웨어개발의복잡함과난해함을이해하고다양한고민과어려움을해결해서자신의실력을더욱드높이고싶은개발자,아키텍트,엔지니어,기술리더,매니저

|이책의구성|
1부‘소프트웨어엔지니어링이란무엇인가’는소프트웨어라는컨텍스트에서공학이실제로무엇을의미하는지를살펴보면서시작한다.공학의원리와철학,그리고이런아이디어를소프트웨어에적용할수있는방법을설명한다.이것은소프트웨어개발을위한기술철학이다.
2부‘소프트웨어프로세스개선을위한구체적인실천방안’에서는작은단계로진전을이룰수있도록업무를구조화하는방법을살펴본다.우리가좋은진전을이루고있는지,아니면그저내일의레거시시스템을오늘만들고있는지를어떻게평가할수있을지를알아본다.
3부‘소프트웨어복잡성관리를위한기본원칙5가지’에서는복잡성관리에필요한원칙과기법을탐구한다.여기서는이런각원칙을자세히살펴보고,그성격이무엇이든고품질소프트웨어를만드는데있어그의미와적용가능성을탐구한다.
4부‘소프트웨어엔지니어를위한아이디어’는학습기회를극대화하고작은단계로진전을이루고시스템이성장함에따라복잡성을관리할수있는능력을촉진하는아이디어와접근방식을설명한다.

[추천사이어서]
이책은중요한주제를다룬다.이런주제를하나의패키지로묶은개요서가있다는사실은매우훌륭하다.
-마이클나이가드(MichaelNygard)/『Release의모든것』저자,전문프로그래머,소프트웨어설계자

검토를위해이책의사본을읽어봤는데,우리에게꼭필요한내용을담고있다.소프트웨어엔지니어를꿈꾸는사람이나기술을마스터하고싶은사람이라면반드시읽어야할필독서다.전문적인공학에대한실용적인조언이가득하다.대학이나부트캠프에서반드시읽어야하는책이다.
-브라이언핀스터(BryanFinster)/USAF플랫폼원수석공학자겸가치흐름아키텍트