소프트웨어 공학
Regular price
$33.71
Sale price
Regular price
Shipping calculated at checkout.
✈️
Estimated delivery date 예상 배송일
Standard Shipping
불러오는 중...
주문일로부터 8-12 영업일
Express Shipping
불러오는 중...
주문일로부터 6-8 영업일
소프트웨어 공학의 핵심 개념과 설계 원리
코드를 넘어 공학으로 이해하는 소프트웨어 개발
코딩 기술이 아닌 좋은 소프트웨어를 만드는 원리를 설명하는 소프트웨어 공학 입문서
소프트웨어는 눈에 보이지 않으며, 인류가 만들어낸 산출문 가운데 가장 복잡한 구조물 중 하나입니다.
《한 권으로 끝내는 소프트웨어 공학》은 과거의 폭포수 모델이나 컴포넌트 기반 개발(CBD)처럼 요구사항을 사전에 완벽히 통제하고 정교하게 설계하려는 접근이 아니라, 현실의 불확실성 속에서 완벽하게 예측하는 것이 허상에 불과하다는 인식으로 불확실성을 상수로 인정하며 짧은 주기로 피드백을 수용하는 애자일(Agile)과 가치 중심의 순환적 접근으로 진화한 현대의 소프트웨어 공학을 다룹니다. 여기에 더해 단순히 관리 프로세스만 민첩해진다고 해서 모든 문제가 해결되는 것이 아니며, 진정한 애자일과 가치 창출은 익스트림 프로그래밍(XP), 테스트 주도 개발(TDD), 지속적 통합과 배포(CI/CD), 끊임없는 리팩토링이라는 견고한 기술적 규율(Engineering Practice)이 반드시 뒷받침되어야만 완성된다고 말합니다.《한 권으로 끝내는 소프트웨어 공학》은 소프트웨어의 본질적 특성부터 전통적 방법론의 한계, 애자일과 데브옵스(DevOps) 실무, 그리고 AI 시대의 엔지니어링 생존 전략까지 소프트웨어 공학의 과거와 현재, 미래를 모두 아우르며, 기술의 수명 주기가 극단적으로 짧아지는 지금, 특정 프레임워크나 언어의 문법을 단순히 암기하는 것은 더 이상 유효한 생존 전략이 아님을 말하고 있습니다.이 책은 생성형 AI가 자연어 지시만으로 순식간에 코드를 쏟아내는 '바이브 코딩(Vibe Coding)' 시대를 맞아, 앞으로의 엔지니어는 단순한 기능 구현자(Coder)에서 벗어나, 비즈니스 가치를 판단하고 끊임없이 '왜(Why)'를 묻는 시스템 설계자(Architect)이자 깐깐한 감독관(Supervisor)으로 거듭나야 한다고 주장합니다.
변하지 않는 공학적 원리를 토대로 새로운 기술의 맥락을 빠르게 해석하고, 스스로 한계를 규정하지 않으며 평생 학습하는 엔지니어로 성장하는 데 있어 이 책이 든든한 나침반이 될 것입니다.
코드를 넘어 공학으로 이해하는 소프트웨어 개발
코딩 기술이 아닌 좋은 소프트웨어를 만드는 원리를 설명하는 소프트웨어 공학 입문서
소프트웨어는 눈에 보이지 않으며, 인류가 만들어낸 산출문 가운데 가장 복잡한 구조물 중 하나입니다.
《한 권으로 끝내는 소프트웨어 공학》은 과거의 폭포수 모델이나 컴포넌트 기반 개발(CBD)처럼 요구사항을 사전에 완벽히 통제하고 정교하게 설계하려는 접근이 아니라, 현실의 불확실성 속에서 완벽하게 예측하는 것이 허상에 불과하다는 인식으로 불확실성을 상수로 인정하며 짧은 주기로 피드백을 수용하는 애자일(Agile)과 가치 중심의 순환적 접근으로 진화한 현대의 소프트웨어 공학을 다룹니다. 여기에 더해 단순히 관리 프로세스만 민첩해진다고 해서 모든 문제가 해결되는 것이 아니며, 진정한 애자일과 가치 창출은 익스트림 프로그래밍(XP), 테스트 주도 개발(TDD), 지속적 통합과 배포(CI/CD), 끊임없는 리팩토링이라는 견고한 기술적 규율(Engineering Practice)이 반드시 뒷받침되어야만 완성된다고 말합니다.《한 권으로 끝내는 소프트웨어 공학》은 소프트웨어의 본질적 특성부터 전통적 방법론의 한계, 애자일과 데브옵스(DevOps) 실무, 그리고 AI 시대의 엔지니어링 생존 전략까지 소프트웨어 공학의 과거와 현재, 미래를 모두 아우르며, 기술의 수명 주기가 극단적으로 짧아지는 지금, 특정 프레임워크나 언어의 문법을 단순히 암기하는 것은 더 이상 유효한 생존 전략이 아님을 말하고 있습니다.이 책은 생성형 AI가 자연어 지시만으로 순식간에 코드를 쏟아내는 '바이브 코딩(Vibe Coding)' 시대를 맞아, 앞으로의 엔지니어는 단순한 기능 구현자(Coder)에서 벗어나, 비즈니스 가치를 판단하고 끊임없이 '왜(Why)'를 묻는 시스템 설계자(Architect)이자 깐깐한 감독관(Supervisor)으로 거듭나야 한다고 주장합니다.
변하지 않는 공학적 원리를 토대로 새로운 기술의 맥락을 빠르게 해석하고, 스스로 한계를 규정하지 않으며 평생 학습하는 엔지니어로 성장하는 데 있어 이 책이 든든한 나침반이 될 것입니다.
Couldn't load pickup availability
출판사 리뷰
출판사 리뷰
소프트웨어 설계와
개발 프로세스의 핵심 원리
소프트웨어는 단순히 코드를 작성하는 기술이 아니라 복잡한 문제를 체계적으로 해결하기 위한 공학적 활동입니다. 그러나 많은 개발 학습은 언어나 프레임워크 중심으로 이루어지며, 이러한 방법이 왜 필요한지에 대한 근본적인 공학적 원리는 충분히 다루어지지 않는 경우가 많습니다. 이 책은 소프트웨어의 본질과 소프트웨어 위기에서 출발하여 분할과 정복, 추상화, 모듈화와 같은 핵심 설계 원리와 다양한 개발 프로세스의 진화 과정을 체계적으로 설명합니다. 또한 아키텍처 중심 개발, 컴포넌트 기반 개발, 품질 관리와 같은 공학적 실천 방법을 통해 좋은 소프트웨어를 지속적으로 만들어내는 방법을 소개합니다. 아울러, 이론적 배경과 실제 개발 현장에서 사용되는 개념을 균형 있게 연결하여 소프트웨어 개발을 단순한 기술이 아닌 하나의 공학적 학문 분야로 이해할 수 있도록 도울 것입니다.
STEP 1 소프트웨어 공학의 본질 이해하기
소프트웨어의 특성과 복잡성, 그리고 소프트웨어 공학이 등장한 배경을 이해합니다.
STEP 2 공학적 설계 원리 익히기
분할과 정복, 추상화, 모듈화 등 좋은 소프트웨어 설계를 위한 핵심 원리를 학습합니다.
STEP 3 소프트웨어 개발 프로세스 이해하기
다양한 개발 모델과 프로세스를 이해하고 프로젝트에 적합한 개발 방법을 파악합니다.
STEP 4 현대 소프트웨어 개발 실천 방법 살펴보기
아키텍처 중심 개발과 컴포넌트 기반 개발을 통해 공학적 개발 방법을 이해합니다.
개발 프로세스의 핵심 원리
소프트웨어는 단순히 코드를 작성하는 기술이 아니라 복잡한 문제를 체계적으로 해결하기 위한 공학적 활동입니다. 그러나 많은 개발 학습은 언어나 프레임워크 중심으로 이루어지며, 이러한 방법이 왜 필요한지에 대한 근본적인 공학적 원리는 충분히 다루어지지 않는 경우가 많습니다. 이 책은 소프트웨어의 본질과 소프트웨어 위기에서 출발하여 분할과 정복, 추상화, 모듈화와 같은 핵심 설계 원리와 다양한 개발 프로세스의 진화 과정을 체계적으로 설명합니다. 또한 아키텍처 중심 개발, 컴포넌트 기반 개발, 품질 관리와 같은 공학적 실천 방법을 통해 좋은 소프트웨어를 지속적으로 만들어내는 방법을 소개합니다. 아울러, 이론적 배경과 실제 개발 현장에서 사용되는 개념을 균형 있게 연결하여 소프트웨어 개발을 단순한 기술이 아닌 하나의 공학적 학문 분야로 이해할 수 있도록 도울 것입니다.
STEP 1 소프트웨어 공학의 본질 이해하기
소프트웨어의 특성과 복잡성, 그리고 소프트웨어 공학이 등장한 배경을 이해합니다.
STEP 2 공학적 설계 원리 익히기
분할과 정복, 추상화, 모듈화 등 좋은 소프트웨어 설계를 위한 핵심 원리를 학습합니다.
STEP 3 소프트웨어 개발 프로세스 이해하기
다양한 개발 모델과 프로세스를 이해하고 프로젝트에 적합한 개발 방법을 파악합니다.
STEP 4 현대 소프트웨어 개발 실천 방법 살펴보기
아키텍처 중심 개발과 컴포넌트 기반 개발을 통해 공학적 개발 방법을 이해합니다.
목차
목차
첫째마당 소프트웨어 공학의 기반(The Foundation)
1장 | 소프트웨어의 본질과 공학의 태동
1.1 소프트웨어의 4가지 본질적 특성
1.2 소프트웨어 위기(Crisis)와 공학의 탄생
1.3 소프트웨어 공학의 정의와 목표
1.4 소프트웨어 생명주기(SDLC)의 논리
1.5 좋은 소프트웨어의 품질 기준
1.6 연습문제
2장 | 공학적 설계의 핵심 원리
2.1 복잡성을 이기는 힘: 분할과 정복
2.2 추상화와 정보 은닉
2.3 모듈화의 척도 1: 결합도(Coupling)
2.4 모듈화의 척도 2: 응집도(Cohesion)
2.5 아키텍처 스타일과 패턴
2.6 연습문제
둘째마당 프로세스의 진화: 구조적 완성에서 가치 중심으로(The Logic)
3장 | 폭포수 모델의 변형과 한계
3.1 폭포수 모델(Waterfall): 순차적 개발의 정석
3.2 V-모델: 테스트 활동의 조기화
3.3 프로토타이핑 모델: 요구사항의 가시화
3.4 나선형 모델(Spiral): 위험 관리의 도입
3.5 통합 프로세스(UP)와 반복적 개발의 시작
3.6 연습문제
4장 | 컴포넌트 기반 개발(CBD)
4.1 CBD의 철학: 소프트웨어 IC와 조립
4.2 CBD 개발 절차 상세 분석: 3차원적 분할과 통합
4.3 산출물 중심 관리와 추적성(Traceability)
4.4 아키텍처 중심 개발(Architecture-Centric Development)
4.5 CBD의 한계와 붕괴 원인
4.6 연습문제
5장 | 요구공학의 이상과 현실
5.1 소프트웨어의 첫 단추: 요구사항의 결정적 중요성
5.2 요구공학(Requirements Engineering)의 탄생: 체계화된 분석의 추구
5.3 분석의 늪(Analysis Paralysis)과 실무적 중압감
5.4 통제할 수 없는 불확실성: 변화 비용 곡선(Cost of Change Curve)
5.5 장기 계획에서 빠른 순환으로의 전환
5.6 연습문제
6장 | 패러다임의 전환: 애자일 혁명
6.1 계획 중심에서 가치 중심으로
6.2 애자일가치 중심의 선언: 애자일의 4가지 가치
6.3 애자일 개발의 12가지 원칙
6.4 애자일 실천의 핵심: 경험적 프로세스 제어
6.5 연습문제
셋째마당 애자일 실무: 민첩한 프로세스와 협업(The Practice)
7장 | 스크럼(Scrum) 프레임워크 상세 가이드
7.1 스크럼의 개요와 3-5-3 구조
7.2 스크럼 팀의 역할과 책임
7.3 스크럼 이벤트 1: 계획과 실행
7.4 스크럼 이벤트 2: 점검과 개선
7.5 스크럼 산출물: 투명성의 실체
7.6 연습문제
8장 | 사용자 스토리와 가치 중심 기획
8.1 가치 중심의 요구사항 정의: 사용자 스토리
8.2 사용자 스토리 도출 프로세스
8.3 제품 백로그 관리와 우선순위 결정
8.4 애자일 추정과 계획
8.5 대규모 애자일과 확장
8.6 연습문제
9장 | 칸반(Kanban)과 린(Lean) 개발
9.1 린 소프트웨어 개발의 원칙
9.2 칸반의 시각화
9.3 WIP 제한의 과학
9.4 스크럼과 칸반의 비교
9.5 연습문제
넷째마당 구현과 품질: 엔지니어링 프랙티스(Engineering)
10장 | 익스트림 프로그래밍(XP)과 기술적 실천
10.1 XP의 필요성과 5가지 핵심 가치
10.2 짝 프로그래밍(Pair Programming)
10.3 리팩토링(Refactoring)의 기술
10.4 지속적 통합(CI)과 공동 소유권
10.5 연습문제
11장 | 테스트 주도 개발(TDD)과 자동화
11.1 TDD의 메커니즘: Red-Green-Refactor
11.2 xUnit 프레임워크와 단위 테스트
11.3 테스트 피라미드와 전략
11.4 BDD(Behavior Driven Development)
11.5 연습문제
12장 | 데브옵스와 현대적 아키텍처
12.1 데브옵스(DevOps) 문화와 CAMS
12.2 CI/CD 파이프라인 자동화
12.3 마이크로서비스 아키텍처(MSA)
12.4 클라우드 네이티브와 인프라의 코드화(IaC)
12.5 연습문제
다섯째마당 미래의 소프트웨어공학: AI와 인간(The Future)
13장 | AI 기반 소프트웨어 개발
13.1 생성형 AI와 개발 패러다임의 변화
13.2 AI 페어 프로그래밍 실무
13.3 자연어로 쓰는 요구사항 명세
13.4 테스팅과 리팩토링의 지능형 자동화
13.5 AI 시대, 소프트웨어 공학의 본질과 인간의 책임
13.6 연습문제
14장 | AI 시대, 인간 엔지니어의 핵심 역량
14.1 코더(Coder)에서 아키텍트(Architect)로
14.2 'Why'를 묻는 능력: 기획과 가치 판단
14.3 도메인 지식과 소통 능력
14.4 시스템 사고(Systems Thinking)
14.5 연습문제
15장 | 소프트웨어 공학의 미래와 윤리
15.1 소프트웨어 안전성과 책임
15.2 구현의 자동화: LCNC와 바이브 코딩
15.3 평생 학습하는 엔지니어
15.4 연습문제
1장 | 소프트웨어의 본질과 공학의 태동
1.1 소프트웨어의 4가지 본질적 특성
1.2 소프트웨어 위기(Crisis)와 공학의 탄생
1.3 소프트웨어 공학의 정의와 목표
1.4 소프트웨어 생명주기(SDLC)의 논리
1.5 좋은 소프트웨어의 품질 기준
1.6 연습문제
2장 | 공학적 설계의 핵심 원리
2.1 복잡성을 이기는 힘: 분할과 정복
2.2 추상화와 정보 은닉
2.3 모듈화의 척도 1: 결합도(Coupling)
2.4 모듈화의 척도 2: 응집도(Cohesion)
2.5 아키텍처 스타일과 패턴
2.6 연습문제
둘째마당 프로세스의 진화: 구조적 완성에서 가치 중심으로(The Logic)
3장 | 폭포수 모델의 변형과 한계
3.1 폭포수 모델(Waterfall): 순차적 개발의 정석
3.2 V-모델: 테스트 활동의 조기화
3.3 프로토타이핑 모델: 요구사항의 가시화
3.4 나선형 모델(Spiral): 위험 관리의 도입
3.5 통합 프로세스(UP)와 반복적 개발의 시작
3.6 연습문제
4장 | 컴포넌트 기반 개발(CBD)
4.1 CBD의 철학: 소프트웨어 IC와 조립
4.2 CBD 개발 절차 상세 분석: 3차원적 분할과 통합
4.3 산출물 중심 관리와 추적성(Traceability)
4.4 아키텍처 중심 개발(Architecture-Centric Development)
4.5 CBD의 한계와 붕괴 원인
4.6 연습문제
5장 | 요구공학의 이상과 현실
5.1 소프트웨어의 첫 단추: 요구사항의 결정적 중요성
5.2 요구공학(Requirements Engineering)의 탄생: 체계화된 분석의 추구
5.3 분석의 늪(Analysis Paralysis)과 실무적 중압감
5.4 통제할 수 없는 불확실성: 변화 비용 곡선(Cost of Change Curve)
5.5 장기 계획에서 빠른 순환으로의 전환
5.6 연습문제
6장 | 패러다임의 전환: 애자일 혁명
6.1 계획 중심에서 가치 중심으로
6.2 애자일가치 중심의 선언: 애자일의 4가지 가치
6.3 애자일 개발의 12가지 원칙
6.4 애자일 실천의 핵심: 경험적 프로세스 제어
6.5 연습문제
셋째마당 애자일 실무: 민첩한 프로세스와 협업(The Practice)
7장 | 스크럼(Scrum) 프레임워크 상세 가이드
7.1 스크럼의 개요와 3-5-3 구조
7.2 스크럼 팀의 역할과 책임
7.3 스크럼 이벤트 1: 계획과 실행
7.4 스크럼 이벤트 2: 점검과 개선
7.5 스크럼 산출물: 투명성의 실체
7.6 연습문제
8장 | 사용자 스토리와 가치 중심 기획
8.1 가치 중심의 요구사항 정의: 사용자 스토리
8.2 사용자 스토리 도출 프로세스
8.3 제품 백로그 관리와 우선순위 결정
8.4 애자일 추정과 계획
8.5 대규모 애자일과 확장
8.6 연습문제
9장 | 칸반(Kanban)과 린(Lean) 개발
9.1 린 소프트웨어 개발의 원칙
9.2 칸반의 시각화
9.3 WIP 제한의 과학
9.4 스크럼과 칸반의 비교
9.5 연습문제
넷째마당 구현과 품질: 엔지니어링 프랙티스(Engineering)
10장 | 익스트림 프로그래밍(XP)과 기술적 실천
10.1 XP의 필요성과 5가지 핵심 가치
10.2 짝 프로그래밍(Pair Programming)
10.3 리팩토링(Refactoring)의 기술
10.4 지속적 통합(CI)과 공동 소유권
10.5 연습문제
11장 | 테스트 주도 개발(TDD)과 자동화
11.1 TDD의 메커니즘: Red-Green-Refactor
11.2 xUnit 프레임워크와 단위 테스트
11.3 테스트 피라미드와 전략
11.4 BDD(Behavior Driven Development)
11.5 연습문제
12장 | 데브옵스와 현대적 아키텍처
12.1 데브옵스(DevOps) 문화와 CAMS
12.2 CI/CD 파이프라인 자동화
12.3 마이크로서비스 아키텍처(MSA)
12.4 클라우드 네이티브와 인프라의 코드화(IaC)
12.5 연습문제
다섯째마당 미래의 소프트웨어공학: AI와 인간(The Future)
13장 | AI 기반 소프트웨어 개발
13.1 생성형 AI와 개발 패러다임의 변화
13.2 AI 페어 프로그래밍 실무
13.3 자연어로 쓰는 요구사항 명세
13.4 테스팅과 리팩토링의 지능형 자동화
13.5 AI 시대, 소프트웨어 공학의 본질과 인간의 책임
13.6 연습문제
14장 | AI 시대, 인간 엔지니어의 핵심 역량
14.1 코더(Coder)에서 아키텍트(Architect)로
14.2 'Why'를 묻는 능력: 기획과 가치 판단
14.3 도메인 지식과 소통 능력
14.4 시스템 사고(Systems Thinking)
14.5 연습문제
15장 | 소프트웨어 공학의 미래와 윤리
15.1 소프트웨어 안전성과 책임
15.2 구현의 자동화: LCNC와 바이브 코딩
15.3 평생 학습하는 엔지니어
15.4 연습문제
저자
저자
김규억 KIM KYUEOK
단국대학교 소프트웨어공학 전공 공학박사
삼성SDS 출신의 IT 아키텍트로서 20여년간 실무 현장의 복잡한 문제를 해결해 온 경험을 바탕으로 DX 기반의 R&D와 HR 컨설팅을 수행하며 소프트웨어공학의 이론과 실무를 잇는 가교 역할을 하고 있습니다.
현재는 연성대학교에서 클라우드 컴퓨팅과 AI 소프트웨어 교육을 담당하며 미래 인재를 양성하고 있습니다.
저서
『마이데이터 B.L.T.S.』 등
단국대학교 소프트웨어공학 전공 공학박사
삼성SDS 출신의 IT 아키텍트로서 20여년간 실무 현장의 복잡한 문제를 해결해 온 경험을 바탕으로 DX 기반의 R&D와 HR 컨설팅을 수행하며 소프트웨어공학의 이론과 실무를 잇는 가교 역할을 하고 있습니다.
현재는 연성대학교에서 클라우드 컴퓨팅과 AI 소프트웨어 교육을 담당하며 미래 인재를 양성하고 있습니다.
저서
『마이데이터 B.L.T.S.』 등
Payment & Security
Payment methods
Your payment information is processed securely. We do not store credit card details nor have access to your credit card information.

