소프트웨어 공학의 모든 것 (개정판)

소프트웨어 공학의 모든 것 (개정판)

$38.12
Description
이 책은 한 마디로 프로그래머를 소프트웨어 엔지니어 되게 하는 모든 것을 담고 있다. 프로그래머는 단순히 코딩에 머무르지만 소프트웨어 엔지니어는 개발 모든 과정을 이해하고 수행할 능력을 갖추고 있다.
만질 수 없고 복잡하며 변경이 많은 소프트웨어를 여러 사람이 협력하여 만드는 것은 빌딩을 건축하는 것과 같이 엔지니어링이 필요하다. 엔지니어링이란 절차와 방법, 설계, 테스트, 품질 등의 원리를 잘 이해하고 적용하여 실패 없이 작업할 수 있는 능력을 의미한다. 소프트웨어 시스템은 개인의 코딩 역량만으로는 만들기 어렵다.
이 책은 대학 3, 4학년을 대상으로 소프트웨어 설계, 개발, 운영에 관한 기초 지식을 배울 수 있도록 설명하고 있다. 소프트웨어 공학 지식체계(SWEBOK)에서 제시하는 다음과 같은 기본 사항을 모두 포함한다.

- 소프트웨어 설계, 개발, 운영에 관한 전체 그림을 이해할 수 있는 생명주기와 개발 프로세스
- 소프트웨어 개발 계획, 개발 과정을 파악하고 제어하는 프로젝트 관리
- 사용자의 요구를 파악하고 분석하여 명세하는 기법
- 다양한 관점으로 소프트웨어를 모델링하는 기법
- 기본적인 소프트웨어 설계 원리와 개념
- 소프트웨어의 골격인 아키텍처 설계와 객체지향 프로그램의 설계 패턴
- 품질을 높이기 위한 코딩 방법과 다양한 테스트, 검증 기법
- 소프트웨어 품질 개념과 품질을 높이기 위한 품질보증 활동, 제품 측정 및 프로세스 개선

다양하고 방대한 소프트웨어 엔지니어링 기법을 익히려면 기본 개념을 잘 이해하여야 한다. 프로그래밍으로부터 출발하여 설계와 모델링, 프로세스, 관리 등 어려운 개념들을 그림과 함께 쉽고 체계적인 방법으로 설명하였다.
이 책에서는 최신 프로그래밍 언어를 사용하여 소프트웨어를 개발하는 절차와 방법, 도구를 설명한다. 특히 설계와 모델링 표현 방법으로 UML과 프로그래밍 과정에 유용하게 적용할 수 있는 디자인 패턴, 부담스러운 문서 작업은 줄이고 코딩과 테스트 중심으로 소프트웨어를 개발하는 애자일 프로세스를 소개한다.
예상하는 독자는 대학에서 전공과목을 수강하는 학생뿐만 아니라 산업 현장에서 일하면서 직무 능력을 향상시키려는 엔지니어도 포함된다. 개념과 기초 이론으로부터 실무에 적용될 수 있는 방법과 도구, 절차, 보고서 양식, 테스트 등을 구체적인 사례를 들어 설명하였다.
이 책은 지난 30년 동안 국내 소프트웨어 공학을 배우는 학생뿐만 아니라 산업 현장의 엔지니어, 프로젝트를 발주하고 관리하는 공공 기관, 개발자를 검증하는 각종 시험에서도 기준이 되어 왔던 텍스트다. 따라서 소프트웨어 공학에서 다루는 여러 가지 이론과 방법, 도구들 중에서 개발자가 알아야 할 최신 기술을 계속 추가 보완해 왔다. 이 책 한 권에 기초 개념의 이해뿐만 아니라 국제적인 수준의 소프트웨어 공학 기술 습득, 각종 자격 및 취업 시험 준비가 가능한 소프트웨어 공학의 모든 것을 담으려고 노력하였다.


개정판에서 추가되거나 달라진 부분

- 최근 점점 확대 적용되는 애자일 방법과 프로세스를 2장에 더 상세히 기술하여 추세를 반영하였다.
- 서버 구축을 위한 기술이 꾸준히 빠르게 발전하며 그 설계 이론도 빠르게 진화한다. 객체지향 설계 원리를 기초로 컴포넌트를 기반으로 조립 완성하는 형태로 개발된다. 따라서 클린 아키텍처를 포함한 컴포넌트 구성 원리를 6장에 추가하였다.
- 다양한 인터페이스와 단말기의 등장과 클라이언트 코딩 기법의 발전으로 UX/UI도 영향을 많이 받고 있다. 8장에 이를 반영하였다.
- 클라우드 운영 환경으로 지속적인 배포와 운영이 필요하다. 따라서 테스트 자동화 개념부터 자동 빌드, 배포에 이르는 DevOps 개념을 11장에 추가하였다.
- NCS(국가 직능 표준) 기반으로 바뀐 정보처리 기사시험과 공무원 시험뿐만 아니라 정보시스템 감리사, 기술사 시험까지 준비할 수 있도록 내용을 보완하고 최신 기출문제를 소개하였다.
저자

최은만

KAIST전산학과(석사)와미국일리노이공대(박사)에서공부하고동국대학교컴퓨터공학과에서30년동안교수로재직하며S/W공학특히객체지향설계,S/W테스팅,AOP(관점지향프로그래밍)등을연구하며가르쳤다.TTA의S/W테스트엔지니어양성과정과삼성전자,삼성SDS의아키텍트과정등산업체인력교육에도참여하였다.은퇴후에는S/W공학기술을산업체에보급하고고급개발자를길러내기위한S/W설계교육에관심을두고활동하고있다.저서로『객체지향소프트웨어공학』(2017),『UML로배우는시스템분석설계』(2018),『시스템분석및설계with애자일』(2021),『소프트웨어공학의모든것워크북』(2024)이있다.

목차

CHAPTER01소개
01소프트웨어
1소프트웨어의특징
2프로그래밍
02소프트웨어개발
1기본활동
2개발작업의특징
03소프트웨어공학의접근법
1소프트웨어공학의정의
2소프트웨어공학의목표
04소프트웨어공학의주제
1단계적프로세스
2품질보증
3프로젝트관리
05소프트웨어공학의발전
연습문제

CHAPTER02프로세스와방법론
01소프트웨어생명주기
02프로세스
1프로세스정의
2프로세스와품질
03전통적인모델
1폭포수모델
2프로토타이핑모델
3점증적모델과진화적모델
4나선형모델
5컴포넌트기반모델
6UnifiedProcess
04애자일모델
1애자일모델의특징
2익스트임프로그래밍
3크리스탈
4스크럼
05방법론
1구조적방법론
2정보공학방법론
3객체지향방법론
연습문제

CHAPTER03프로젝트계획과관리
01프로젝트시작
1프로젝트가치
2프로젝트리스크
3타당성분석
02프로젝트계획과스케줄링
1목표설정
2프로젝트범위
3WBS
4스케줄링
03비용예측기법
1COCOMO-81
2COCOMOII
3기능점수
4COSMIC기능점수
04프로젝트팀조직
1팀역할
2직능별조직
3프로젝트별조직
4매트릭스조직
5애자일조직
05실행과모니터링
1프로젝트실행
2프로젝트모니터링
3번다운차트
06리스크관리
1리스크파악
2리스크평가
3리스크관리
연습문제

CHAPTER04요구분석
01요구
1기능요구
2비기능요구
3요구대상에의한분류
02요구사항추출
1요구정보출처
2고객의발표
3문헌양식조사
4인터뷰
5설문
6브레인스토밍
7프로토타이핑
03요구분석
1요구품질
2도메인분석
3시나리오기반분석
04유스케이스173
1유스케이스다이어그램
2유스케이스명세
3유스케이스사이의관계
05요구명세
1작성방법
06요구검증
연습문제

CHAPTER05요구모델링
01모델링
1관점과추상화수준
2소프트웨어와모델링
3모델사이의관계
02UML
1UML다이어그램
2모델링과정
03정적모델링
1객체지향개념
2클래스다이어그램
04동적모델링
1시퀀스다이어그램
2커뮤니케이션다이어그램
3상태다이어그램
05제어모델링
06모델검증
연습문제

CHAPTER06설계원리
01설계기본개념
1서브시스템,모듈
2설계관점
3설계작업과정
02품질목표
03전통적인설계원리
1추상화
2캡슐화
3모듈화
4결합
5응집
04객체지향설계원리
1단일책임의원리
2개방폐쇄의원리
3리스코프교체의원리
4인터페이스분리의원리
5의존관계역전의원리
05컴포넌트구성원리
1제어역전
2패키지설계원리
연습문제

CHAPTER07아키텍처설계와패턴
01아키텍처기초
1아키텍처란?
2아키텍처의역할
3아키텍처의표현
02아키텍처스타일
1클라이언트서버형
2계층형
3이벤트기반아키텍처
4MVC
5파이프필터
6데이터중심아키텍처
7Peer-to-Peer스타일
8마이크로커널스타일
03디자인패턴
1디자인패턴의혜택
2디자인패턴의형식
3싱글톤패턴
4반복자패턴
5어댑터패턴
6데코레이터패턴
7팩토리메서드패턴
8추상팩토리패턴
9상태패턴
10옵서버패턴
04아키텍처평가
연습문제

CHAPTER08UI설계
01UI기본개념
1사용성
2멘탈모델
3피드백
4제약
02UI설계원리
03UI설계과정
1사용자분석
2태스크분석
3UI설계와구현
4사용성테스트
04UI요소
05화면및출력설계
1화면설계
2출력설계
연습문제

CHAPTER09코딩
01코딩작업
1작업과정
2자주발생하는오류
02코딩표준
1명명규칙
2형식
3문장과수식
4오류처리
5주석
03설계에서코드생성
1연관의코딩
2시퀀스다이어그램의코딩
3상태다이어그램의코딩
04리팩토링
1리팩토링개념
2리팩토링과정
3코드스멜
4리팩토링사례
05코드품질향상기법
1코드인스펙션
2정적분석
3테스트중심개발
4페어프로그래밍
연습문제

CHAPTER10테스트
01테스트기초
1버그,오류,결함,고장
2테스트원리
3테스트작업과정
4테스트단계
5테스트케이스
02블랙박스테스트
1동등분할기법
2경곗값분석
3원인결과그래프
03화이트박스테스트
1논리흐름의표현
2검증기준
04상태기반테스트
1상태머신
2테스트케이스선택
05통합테스트
1빅뱅통합
2하향식통합
3상향식통합
4연쇄식통합
06시스템및인수테스트
1기능테스트
2성능테스트
3보안테스트
4UI테스트
5인수테스트
연습문제

CHAPTER11유지보수
01유지보수소개
1변경의이유와유지보수유형
2Lehman의법칙
02유지보수작업과정
1유지보수작업
2유지보수프로세스모델
3프로그램의이해
4변경파악과분석
03형상관리
1형상관리의목적
2형상관리절차
04역공학과리엔지니어링
1역공학
2리엔지니어링
05지속적통합과배포
1CI/CD
2CI/CD파이프라인
연습문제

CHAPTER12품질
01소개
1품질활동수준
2품질개념
3소프트웨어품질
02품질모델
03품질관리
1품질관리조직
2프로세스와표준의정의
3품질관리활동
4인스펙션
04품질측정
1측정기본개념
2품질메트릭
05프로세스개선
1CMMI
2SPICE
연습문제