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 코드 커버리지
연습문제
부록: 연습문제 정답