길벗·이지톡

도서 IT대학교재 컴퓨터 전공

소프트웨어 설계와
개발 프로세스의 핵심 원리

소프트웨어는 단순히 코드를 작성하는 기술이 아니라 복잡한 문제를 체계적으로 해결하기 위한 공학적 활동입니다. 그러나 많은 개발 학습은 언어나 프레임워크 중심으로 이루어지며, 이러한 방법이 왜 필요한지에 대한 근본적인 공학적 원리는 충분히 다루어지지 않는 경우가 많습니다. 이책은 소프트웨어의 본질과 소프트웨어 위기에서 출발하여 분할과 정복, 추상화, 모듈화와 같은 핵심 설계 원리와 다양한 개발 프로세스의 진화 과정을 체계적으로 설명합니다. 또한 아키텍처 중심 개발, 컴포넌트 기반 개발, 품질 관리와 같은 공학적 실천 방법을 통해 좋은 소프트웨어를 지속적으로 만들어내는 방법을 소개합니다. 아울러, 이론적 배경과 실제 개발 현장에서 사용되는 개념을 균형 있게 연결하여 소프트웨어 개발을 단순한 기술이 아닌 하나의 공학적 학문 분야로 이해할 수 있도록 도울 것입니다.

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 연습문제

 

더보기접기

저자&기여자

ㆍ지은이 김규억

소개
김규억(KIM KYUEOK) | hans37.kim@nate.com 단국대학교 소프트웨어공학 전공 공학박사 삼성SDS 출신의 IT 아키텍트로서 20여년간 실무 현장의 복잡한 문제를 해결해 온 경험을 바탕으로 DX 기반의 R&D와 HR 컨설팅을 수행하며 소프트웨어공학의 이론과 실무를 잇는 가교 역할을 하고 있다. 현재는 연성대학교에서 클라우드 컴퓨팅과 AI 소프트웨어 교육을 담당하며 미래 인재를 양성하고 있다. 저서 『마이데이터 B.L.T.S.』 등

저작권 안내

모든 자료는 저작권법의 보호를 받는 저작물로, 허락 없이 편집하거나 다른 매체에 옮겨 실을 수 없습니다.
인공지능(AI) 기술 또는 시스템을 훈련하기 위해 자료의 전체 내용은 물론 일부도 사용하는 것을 금지합니다.

All materials are protected by copyright law and may not be edited or reproduced in other media without permission.
It is prohibited to use all or part of the materials, including for training artificial intelligence (AI) technologies or systems, without authorization.

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.