이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

소득공제 청년패스
오픈 소스 소프트웨어로 실습하는 소프트웨어 공학
정인상
생능출판사 2017.02.28.
가격
32,000
32,000
YES포인트?
0원
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  국내배송만 가능
  •  문화비소득공제 가능

이 상품의 태그

책소개

목차

CHAPTER 01 소프트웨어 개발 모델
1.1 소프트웨어 개발 모델
1.2 스크럼(Scrum)
1.2.1 프로젝트 비전
1.2.2 제품 백로그(product backlog)
1.2.3 릴리스 계획(Release Plan)
1.2.4 스프린트 계획(Sprint Plan)
1.2.5 일일 스크럼 미팅(Daily Scrum Meeting), 스프린트
리뷰(Sprint Review), 스프린트 회고(Sprint Retrospect)
1.3 위험(risk) 기반 소프트웨어 개발
1.3.1 기능 안정성을 위한 ISO 26262 자동차 전자전기 시스템
개발 프로세스
연습문제

CHAPTER 02 UML과 객체지향 소프트웨어 개발 프로세스
2.1 소프트웨어 개발과 모델링
2.2 UML
2.2.1 유스케이스 다이어그램(Use Case Diagram)
2.2.2 유스케이스 기술서
2.2.3 클래스 다이어그램(Class Diagram)
2.2.4 순차 다이어그램
2.2.5 패키지 다이어그램
2.3 객체지향 개발 프로세스
2.3.1 요구사항
2.3.2 분석
2.3.3 설계
2.3.4 구현
연습문제
CHAPTER 03 Maven, 의존성 주입, SOLID 그리고 디자인 패턴
3.1 Maven 소개
3.2 의존성 주입과 IoC
3.3 디자인 원칙 SOLID
3.3.1 SRP
3.3.2 OCP
3.3.3 LSP
3.3.4 ISP
3.3.5 DIP
3.4 디자인 패턴
연습문제

CHAPTER 04 소프트웨어 테스트 개요
4.1 소프트웨어 테스트의 중요성 및 정의
4.2 소프트웨어 테스트 진화 과정
4.3 소프트웨어 에러, 결함 그리고 오작동
4.4 소프트웨어 테스트의 한계
4.5 오라클 문제
4.6 테스트 프로세스
4.7 리스크(risk) 기반 테스트
4.7.1 리스크
4.7.2 리스크 분석
4.7.3 리스크 평가와 보고
4.8 테스트 공리
4.9 JUnit: 단위 테스트 프레임워크
연습문제

CHAPTER 05 블랙박스 테스트
5.1 개요
5.2 동등 클래스 분할
5.3 경계 값 분석(Boundary Value Analysis)
5.4 도메인 테스트(Domain Test)
5.5 조합 테스트(Combinatorial Test)
5.5.1 each choice 조합과 all combinations 조합
5.5.2 페어와이즈 테스트(Pairwise Test)
5.5.3 기반 선정 조합테스트와 다중 기반 선정 조합테스트
연습문제

CHAPTER 06 화이트박스 테스트
6.1 개요
6.2 제어흐름 그래프(CFG, Control Flow Graph)
6.3 화이트박스 테스트 원리와 한계
6.4 블록 커버리지(Block Coverage)
6.5 분기 커버리지(Branch Coverage)
6.6 조건 커버리지(Condition Coverage)
6.7 MCDC(Modified Condition Decision Coverage)
6.8 기본 경로 테스트(Basic Path Test)
연습문제

CHAPTER 07 테스트 주도 개발
7.1 TDD란?
7.2 JUnit을 활용한 TDD
7.3 Mockito: 모의 객체 프레임워크
7.4 상태 테스팅과 인터랙션 테스팅
7.5 FIRST 원칙
연습문제

CHAPTER 08 행위 주도 개발
8.1 BDD란?
8.2 BDD 프로세스
8.3 Cucumber
연습문제

CHAPTER 09 버전 관리와 협업: Git 그리고 GitHub
9.1 버전 관리와 Git
9.2 Git bash와 지역 저장소 생성
9.3 브랜치(Branch)
9.4 브랜치 병합(Branch Merge)
9.5 GitHub
9.6 GitHub을 이용한 협업
9.7 이클립스에서 Git 사용하기
9.8 그 밖의 Git 명령
9.8.1 Rebase
9.8.2 Reset
연습문제

CHAPTER 10 지속적 통합
10.1 지속적 통합(Continuous Integration)이란?
10.2 지속적 통합 프로세스
10.3 GitHub과 Travis CI를 통한 지속적 통합
10.4 코드 커버리지
연습문제

부록: 연습문제 정답

저자 소개

저자 : 정인상
1983~1987: 서울대학교 컴퓨터공학과(학사)
1987~1989: 한국과학기술원 전산학과(석사) 소프트웨어공학 전공
1989~1993: 한국과학기술원 전산학과(박사) 소프트웨어공학 전공
1994~1998: 한림대학교 부교수
1994: 한국전자통신연구원 초빙연구원
1996.7~8: 영국 Durham 대학 방문연구원
1997~1998: 미국 purdue 대학 방문교수
2005.3~2006.2: 미국 콜로라도 주립대 방문교수
1999~현재: 한성대학교 컴퓨터공학부 교수

관심분야: 프로그램 분석, 병렬 및 분산 프로그램 테스팅,
테스트 데이터 자동생성, 모형 검사(model checking)

품목정보

발행일
2017년 02월 28일
쪽수, 무게, 크기
544쪽 | 190*240mm
ISBN13
9788970508986

관련 자료

이 책의 구성과 내용

이 책은 모두 10장으로 구성되어 있다.
1장에서는 소프트웨어 프로세스를 기술한다. 소프트웨어 개발 프로세스를 전통적 개발 모델, 애자일 프로세스, 위험기반 소프트웨어 개발 모델의 3가지로 분류하고 전통적 개발 모델로 폭포수 모델, 애자일 프로세스로 스크럼 그리고 위험기반 소프트웨어 개발 모델로 ISO26262에서 사용되는 자동차 전기전자 시스템의 개발 프로세스를 기술하였다. 이들 개발 모델들은 제각각 특징이 있는 모델들이며 한 눈에 서로 비교가 가능하도록 구성하였다.
2장에서는 객체지향 소프트웨어 개발 방법에 대해 기술하였다. 이를 위해 UML을 소개하고 대표적인 모델링 도구를 기술하였다. 또한 소프트웨어 아키텍처 개념을 소개하고 UML을 사용하여 실제 간단한 프로그램을 모델링하고 완전한 프로그램을 구현하는 실습을 진행한다.

3장에서는 여러 설계 기술을 설명한다. 대표적인 객체지향 설계 원칙인 SOLID에 대해서 이해하기 쉽도록 실제 프로그램을 통해 설명한다. 또한 의존성 주입 개념을 설명하기 위해「Juice」와「Spring 프레임워크」를 통한 실습을 진행한다. 이 책에 나오는 거의 모든 실습이나 예제가 Maven을 사용하기 때문에 간단하게 Maven에 대한 설명으로 시작하도록 구성하였다.
4장은 테스트에 대해 설명한다. 테스트의 중요성, 기본 용어 및 개념, 테스트 원리 및 한계에 대해 예제를 들어 설명한다. 또한 ISO29119에 제시한 소프트웨어 테스트 프로세스에 대해 설명한다. 이 장에서는 실제 소프트웨어 테스트 케이스를 작성하여 실습할 수 있도록 JUnit 테스트 프레임워크에 대해 설명한다. 기본적인 JUnit 프레임워크의 기능과 데이터 위주 테스트를 가능하게 하는「Parameterized 테스트」도 작성할 수 있는 기능도 설명한다.
5장에서는 테스트 케이스 설계 방법의 한 축인 블랙박스 테스트에 대해 설명한다. 동등 클래스 분할 방법, 경계값 분석 방법, 도메인 테스트 방법, 페어와이즈 테스트를 포함한 여러 조합 테스트 방법에 대해 설명한다. 이 방법들은 실제 프로그램 코드에 대해 JUnit으로 테스트 케이스를 작성하도록 예제 및 실습을 구성하였다. 특히 페어와이즈 조합을 생성하기 위한 많은 도구들을「www.pairwise.org」에서 찾아볼 수 있다.
이 중에서 마이크로소프트에서 개발한 PICT 라는 도구는 매우 다양한 기능을 제공하는 조합 테스트를 생성하는 도구이다. 이 장에서는 JUnit과 PICT를 사용하여 페어와이즈 조합을 생성해보자.

6장에서는 블랙박스 테스트 케이스 설계 방법과 함께 테스트 케이스 설계 방법의 대표적인 한 축을 이루는 화이트박스 테스트에 대해 설명한다. 블록 커버리지, 분기 커버리지, 조건 커버리지, MCDC 및 기본 경로 테스트 방법에 대해 설명한다.
7장은 TDD라 불리는 테스트 주도 개발 방식에 대해 설명한다. TDD 개념에 대해 설명하고 JUnit과 Mockito를 이용하여 실제 TDD를 이용하여 프로그램을 개발하는 방식에 대해 설명한다. 단위 테스트를 작성할 때에는 협업하는 클래스의 완성 여부에 상관없어야 되고 테스트 대상이 되는 클래스가 연관된 클래스와 올바르게 협업하는지 검증을 할 수 있어야 한다. 이를 위해서 모의 객체라고도 불리는 협업 클래스의 객체를 테스트 목적으로 만들 수 있어야 한다. 이러한 모의 객체를 수작업으로 만들 수도 있겠지만 많은 시간과 노력이 수반된다. 이러한 수고를 줄이기 위해 많은 종류의 모의 객체 프레임워크가 만들어졌다. 이 중에서도 Mockito는 많이 애용되는 모의 객체 생성 프레임워크 중의 하나이다. 이 장에서는 JUnit과 Mockito를 통한 실습으로 TDD 개념을 이해한다.

8장은 TDD와 더불어 요즘 많은 관심을 받고 있는 행위 주도 개발 방식에 대해 설명한다. 이 장에서는 TDD와 BDD간의 관계에 대해 설명하고 Cucumber 도구를 사용하여 BDD를 통한 프로그램 개발 방식에 대해 설명한다. 특히 이 장을 공부할 때에는 연습문제를 반드시 풀기 바란다. 연습문제 6번은 데이터베이스와 의존 관계에 있는 프로젝트를 수행할 때 BDD가 어떻게 수행되는지에 대한 힌트를 얻을 수 있다.
9장은 Git과 GitHub에 대해 설명한다. 요즘 소프트웨어 개발자라면 반드시 알아야 하는 버전관리 및 협업을 위한 도구이다. 이 주제에 대한 책도 시중에 매우 많이 나와 있으나 이 장에서는 Git과 GitHub에 깔린 여러 개념들을 매우 빠르게 볼 수 있고 이해할 수 있도록 구성하였다.
10장은 지속적 통합에 관해 설명한다. 소프트웨어 개발자라면 반드시 알아야 하는 주제이다. 지속적 통합 개념을 실습으로 체험하기 위해 TraviCI과 GitHub 서비스를 연동하는 방법에 대해 설명한다. 또한 저장소에 들어오는 코드가 얼마나 신뢰 가능한지를 확인하기 위해 Coveralls 서비스 연동을 통해 커버리지 측정을 수행하는 방법에 대해 설명한다.

리뷰/한줄평2

리뷰

8.0 리뷰 총점

한줄평

10.0 한줄평 총점

클린봇이 부적절한 글을 감지 중입니다.

설정