서브메뉴

본문

소프트웨어 공학의 모든 것
소프트웨어 공학의 모든 것
저자 : 최은만
출판사 : 생능출판
출판년 : 20200210
ISBN : 9788970503646

책소개


이 책은 프로그래머를 소프트웨어 엔지니어 되게 하는 모든 것을 담고 있다. 프로그래머는 단순히 코딩에 머무르지만 소프트웨어 엔지니어는 개발 모든 과정을 이해하고 수행할 능력을 갖추고 있다.이 책은 대학 3~4학년을 대상으로 소프트웨어 설계, 개발, 운영에 관한 기초 지식을 배울 수 있도록 설명하고 있다.

목차


CHAPTER 01 소개
1.1 소프트웨어
1.1.1 소프트웨어의 종류
1.1.2 시스템
1.2 소프트웨어 개발 작업
1.2.1 기본 활동
1.2.2 개발 작업의 특징
1.3 소프트웨어 공학의 접근법
1.3.1 소프트웨어 공학의 정의
1.3.2 소프트웨어 공학의 목표
1.4 소프트웨어 공학의 주제
1.4.1 단계적 프로세스
1.4.2 품질 보증
1.4.3 프로젝트 관리
1.5 연관 분야
1.5.1 연관 지식 영역
1.5.2 소프트웨어 공학과 컴퓨터 과학
·연습문제

CHAPTER 02 프로세스와 방법론
2.1 소프트웨어 생명주기
2.2 프로세스
2.2.1 프로세스 종류
2.2.2 프로세스 정의
2.2.3 좋은 프로세스의 특성
2.3 프로세스 모델
2.3.1 폭포수 모델
2.3.2 프로토타이핑 모델
2.3.3 나선형 모델
2.3.4 진화적 모델
2.3.5 Unified Process
2.3.6 애자일 프로세스
2.4 지원 프로세스
2.4.1 관리 프로세스
2.4.2 품질보증 프로세스
2.4.3 형상 관리 프로세스
2.5 방법론
2.5.1 구조적 방법론
2.5.2 정보공학 방법론
2.5.3 객체지향 방법론
·연습문제

CHAPTER 03 프로젝트 계획과 관리
3.1 프로젝트 시작
3.1.1 프로젝트 가치
3.1.2 프로젝트 리스크
3.1.3 타당성 분석
3.2 프로젝트 계획과 스케줄링
3.2.1 목표 설정
3.2.2 프로젝트 범위
3.2.3 WBS
3.2.4 스케줄링
3.3 비용 예측 기법
3.3.1 COCOMO-81
3.3.2 COCOMO II
3.3.3 기능 점수
3.4 프로젝트 팀 조직
3.4.1 팀 역할
3.4.2 직능별 조직
3.4.3 프로젝트별 조직
3.4.4 매트릭스 조직
3.4.5 애자일 조직
3.5 실행과 모니터링
3.5.1 프로젝트 실행
3.5.2 프로젝트 모니터링
3.5.3 번다운 차트
3.6 리스크 관리
3.6.1 리스크 파악
3.6.2 리스크 평가
3.6.3 리스크 관리
·연습문제

CHAPTER 04 요구 분석
4.1 요구
4.1.1 기능 요구
4.1.2 비기능 요구
4.1.3 요구 대상에 의한 분류
4.2 요구 추출
4.2.1 요구 정보 출처
4.2.2 고객의 발표
4.2.3 문헌 양식 조사
4.2.4 인터뷰
4.2.5 설문
4.2.6 브레인스토밍
4.2.7 프로토타이핑
4.3 요구 분석
4.3.1 요구 품질
4.3.2 도메인 분석
4.3.3 시나리오 기반 분석
4.4 유스케이스
4.4.1 유스케이스 다이어그램
4.4.2 유스케이스 명세
4.4.3 유스케이스 사이의 관계
4.5 요구 명세
4.5.1 작성 방법
4.6 요구 검증
·연습문제

CHAPTER 05 요구 모델링
5.1 모델링 기초
5.1.1 관점과 추상화 수준
5.1.2 소프트웨어와 모델링
5.1.3 모델 사이의 관계
5.2 UML
5.2.1 UML 역사
5.2.2 UML 다이어그램
5.2.3 모델링 과정
5.3 정적 모델링
5.3.1 객체지향 개념
5.3.2 클래스 다이어그램
5.4 동적 모델링
5.4.1 시퀀스 다이어그램
5.4.2 협동 다이어그램
5.4.3 상태 다이어그램
5.5 제어 모델링
5.6 모델 검증
·연습문제

CHAPTER 06 설계 원리
6.1 설계 기본 개념
6.1.1 서브시스템, 모듈
6.1.2 설계 관점
6.1.3 설계 작업 과정
6.2 품질 목표
6.3 전통적인 설계 원리
6.3.1 추상화
6.3.2 캡슐화
6.3.3 모듈화
6.3.4 결합
6.3.5 응집
6.4 객체지향 설계 원리
6.4.1 인터페이스와 구현의 분리
6.4.2 단일 책임의 원리
6.4.3 개방 폐쇄의 원리
6.4.4 리스코프 교체의 원리
6.4.5 인터페이스 분리의 원리
6.4.6 의존 관계 역전의 원리
6.5 설계 메트릭
6.5.1 전통적인 메트릭
6.5.2 객체지향 메트릭
·연습문제

CHAPTER 07 아키텍처 설계와 패턴
7.1 아키텍처 기초
7.1.1 아키텍처란?
7.1.2 아키텍처의 역할
7.1.3 아키텍처의 표현
7.2 아키텍처 스타일
7.2.1 클라이언트 서버형
7.2.2 계층형
7.2.3 이벤트 기반 아키텍처
7.2.4 MVC
7.2.5 파이프 필터
7.2.6 데이터 중심 아키텍처
7.2.7 Peer-to-Peer 스타일
7.3 디자인 패턴
7.3.1 디자인 패턴의 혜택
7.3.2 디자인 패턴의 형식
7.3.3 싱글톤 패턴
7.3.4 반복자 패턴
7.3.5 어댑터 패턴
7.3.6 데코레이터 패턴
7.3.7 팩토리 메소드 패턴
7.3.8 추상 팩토리 패턴
7.3.9 상태 패턴
7.3.10 옵서버 패턴
7.4 아키텍처 평가
·연습문제

CHAPTER 08 UI 설계
8.1 UI 기본 개념
8.1.1 사용성
8.1.2 멘탈 모델
8.1.3 피드백
8.1.4 제약
8.2 UI 설계 원리
8.3 UI 설계 과정
8.3.1 사용자 분석
8.3.2 태스크 분석
8.3.3 UI 설계와 구현
8.3.4 사용성 테스트
8.4 UI 요소
8.5 화면 및 출력 설계
8.5.1 화면 설계
8.5.2 출력 설계
·연습문제

CHAPTER 09 코딩
9.1 코딩 작업
9.1.1 작업 과정
9.1.2 자주 발생하는 오류
9.2 코딩 표준
9.2.1 명명 규칙
9.2.2 형식
9.2.3 문장과 수식
9.2.4 오류처리
9.2.5 주석
9.3 설계에서 코드 생성
9.3.1 연관의 코딩
9.3.2 시퀀스 다이어그램의 코딩
9.4 리팩토링
9.4.1 리팩토링 개념
9.4.2 리팩토링 과정
9.4.3 코드 스멜
9.4.4 리펙토링 사례
9.5 코드 품질 향상 기법
9.5.1 인스펙션
9.5.2 정적 분석
9.5.3 테스트 중심 개발
·연습문제

CHAPTER 10 테스트
10.1 테스트 기초
10.1.1 버그, 오류, 결함, 고장
10.1.2 테스트 원리
10.1.3 테스트 작업 과정
10.1.4 테스트 케이스
10.2 블랙박스 테스트
10.2.1 동등 분할 기법
10.2.2 경곗값 분석
10.2.3 원인 결과 그래프
10.3 화이트박스 테스트
10.3.1 논리 흐름의 표현
10.3.2 검증 기준
10.4 상태기반 테스트
10.5 통합 테스트
10.5.1 빅뱅 통합
10.5.2 하향식 통합
10.5.3 상향식 통합
10.5.4 연쇄식 통합
10.6 시스템 및 인수 테스트
10.6.1 기능 테스트
10.6.2 성능 테스트
10.6.3 보안 테스트
10.6.4 UI 테스트
10.6.5 인수 테스트
·연습문제

CHAPTER 11 유지보수
11.1 유지보수의 소개
11.1.1 변경의 이유와 유지보수 유형
11.1.2 Lehman의 법칙
11.2 유지보수 작업 과정
11.2.1 유지보수 작업
11.2.2 유지보수 프로세스
11.2.3 프로그램의 이해
11.2.4 변경 파악과 분석
11.3 형상 관리
11.3.1 베이스라인
11.3.2 형상관리 절차
11.4 역공학
11.4.1 역공학 작업 순서
11.4.2 역공학의 용도
11.4.3 재문서화
11.4.4 설계 복구
11.5 리엔지니어링
11.5.1 리엔지니어링 목적
11.5.2 리엔지니어링 과정
·연습문제

CHAPTER 12 품질
12.1 소개
12.1.1 품질 개념
12.1.2 소프트웨어 품질
12.2 품질 모델
12.3 품질 관리
12.3.1 품질 보증 조직
12.3.2 프로세스와 표준을 정의
12.3.3 품질 보증 활동
12.3.4 인스펙션
12.4 품질 측정
12.4.1 품질 측정의 유용성
12.4.1 품질 메트릭
12.5 프로세스 개선
12.5.1 CMMi
11.5.2 ISO 9001
·연습문제
CHAPTER 01 소개
1.1 소프트웨어
1.1.1 소프트웨어의 종류
1.1.2 시스템
1.2 소프트웨어 개발 작업
1.2.1 기본 활동
1.2.2 개발 작업의 특징
1.3 소프트웨어 공학의 접근법
1.3.1 소프트웨어 공학의 정의
1.3.2 소프트웨어 공학의 목표
1.4 소프트웨어 공학의 주제
1.4.1 단계적 프로세스
1.4.2 품질 보증
1.4.3 프로젝트 관리
1.5 연관 분야
1.5.1 연관 지식 영역
1.5.2 소프트웨어 공학과 컴퓨터 과학
·연습문제

CHAPTER 02 프로세스와 방법론
2.1 소프트웨어 생명주기
2.2 프로세스
2.2.1 프로세스 종류
2.2.2 프로세스 정의
2.2.3 좋은 프로세스의 특성
2.3 프로세스 모델
2.3.1 폭포수 모델
2.3.2 프로토타이핑 모델
2.3.3 나선형 모델
2.3.4 진화적 모델
2.3.5 Unified Process
2.3.6 애자일 프로세스
2.4 지원 프로세스
2.4.1 관리 프로세스
2.4.2 품질보증 프로세스
2.4.3 형상 관리 프로세스
2.5 방법론
2.5.1 구조적 방법론
2.5.2 정보공학 방법론
2.5.3 객체지향 방법론
·연습문제

CHAPTER 03 프로젝트 계획과 관리
3.1 프로젝트 시작
3.1.1 프로젝트 가치
3.1.2 프로젝트 리스크
3.1.3 타당성 분석
3.2 프로젝트 계획과 스케줄링
3.2.1 목표 설정
3.2.2 프로젝트 범위
3.2.3 WBS
3.2.4 스케줄링
3.3 비용 예측 기법
3.3.1 COCOMO-81
3.3.2 COCOMO II
3.3.3 기능 점수
3.4 프로젝트 팀 조직
3.4.1 팀 역할
3.4.2 직능별 조직
3.4.3 프로젝트별 조직
3.4.4 매트릭스 조직
3.4.5 애자일 조직
3.5 실행과 모니터링
3.5.1 프로젝트 실행
3.5.2 프로젝트 모니터링
3.5.3 번다운 차트
3.6 리스크 관리
3.6.1 리스크 파악
3.6.2 리스크 평가
3.6.3 리스크 관리
·연습문제

CHAPTER 04 요구 분석
4.1 요구
4.1.1 기능 요구
4.1.2 비기능 요구
4.1.3 요구 대상에 의한 분류
4.2 요구 추출
4.2.1 요구 정보 출처
4.2.2 고객의 발표
4.2.3 문헌 양식 조사
4.2.4 인터뷰
4.2.5 설문
4.2.6 브레인스토밍
4.2.7 프로토타이핑
4.3 요구 분석
4.3.1 요구 품질
4.3.2 도메인 분석
4.3.3 시나리오 기반 분석
4.4 유스케이스
4.4.1 유스케이스 다이어그램
4.4.2 유스케이스 명세
4.4.3 유스케이스 사이의 관계
4.5 요구 명세
4.5.1 작성 방법
4.6 요구 검증
·연습문제

CHAPTER 05 요구 모델링
5.1 모델링 기초
5.1.1 관점과 추상화 수준
5.1.2 소프트웨어와 모델링
5.1.3 모델 사이의 관계
5.2 UML
5.2.1 UML 역사
5.2.2 UML 다이어그램
5.2.3 모델링 과정
5.3 정적 모델링
5.3.1 객체지향 개념
5.3.2 클래스 다이어그램
5.4 동적 모델링
5.4.1 시퀀스 다이어그램
5.4.2 협동 다이어그램
5.4.3 상태 다이어그램
5.5 제어 모델링
5.6 모델 검증
·연습문제

CHAPTER 06 설계 원리
6.1 설계 기본 개념
6.1.1 서브시스템, 모듈
6.1.2 설계 관점
6.1.3 설계 작업 과정
6.2 품질 목표
6.3 전통적인 설계 원리
6.3.1 추상화
6.3.2 캡슐화
6.3.3 모듈화
6.3.4 결합
6.3.5 응집
6.4 객체지향 설계 원리
6.4.1 인터페이스와 구현의 분리
6.4.2 단일 책임의 원리
6.4.3 개방 폐쇄의 원리
6.4.4 리스코프 교체의 원리
6.4.5 인터페이스 분리의 원리
6.4.6 의존 관계 역전의 원리
6.5 설계 메트릭
6.5.1 전통적인 메트릭
6.5.2 객체지향 메트릭
·연습문제

CHAPTER 07 아키텍처 설계와 패턴
7.1 아키텍처 기초
7.1.1 아키텍처란?
7.1.2 아키텍처의 역할
7.1.3 아키텍처의 표현
7.2 아키텍처 스타일
7.2.1 클라이언트 서버형
7.2.2 계층형
7.2.3 이벤트 기반 아키텍처
7.2.4 MVC
7.2.5 파이프 필터
7.2.6 데이터 중심 아키텍처
7.2.7 Peer-to-Peer 스타일
7.3 디자인 패턴
7.3.1 디자인 패턴의 혜택
7.3.2 디자인 패턴의 형식
7.3.3 싱글톤 패턴
7.3.4 반복자 패턴
7.3.5 어댑터 패턴
7.3.6 데코레이터 패턴
7.3.7 팩토리 메소드 패턴
7.3.8 추상 팩토리 패턴
7.3.9 상태 패턴
7.3.10 옵서버 패턴
7.4 아키텍처 평가
·연습문제

CHAPTER 08 UI 설계
8.1 UI 기본 개념
8.1.1 사용성
8.1.2 멘탈 모델
8.1.3 피드백
8.1.4 제약
8.2 UI 설계 원리
8.3 UI 설계 과정
8.3.1 사용자 분석
8.3.2 태스크 분석
8.3.3 UI 설계와 구현
8.3.4 사용성 테스트
8.4 UI 요소
8.5 화면 및 출력 설계
8.5.1 화면 설계
8.5.2 출력 설계
·연습문제

CHAPTER 09 코딩
9.1 코딩 작업
9.1.1 작업 과정
9.1.2 자주 발생하는 오류
9.2 코딩 표준
9.2.1 명명 규칙
9.2.2 형식
9.2.3 문장과 수식
9.2.4 오류처리
9.2.5 주석
9.3 설계에서 코드 생성
9.3.1 연관의 코딩
9.3.2 시퀀스 다이어그램의 코딩
9.4 리팩토링
9.4.1 리팩토링 개념
9.4.2 리팩토링 과정
9.4.3 코드 스멜
9.4.4 리펙토링 사례
9.5 코드 품질 향상 기법
9.5.1 인스펙션
9.5.2 정적 분석
9.5.3 테스트 중심 개발
·연습문제

CHAPTER 10 테스트
10.1 테스트 기초
10.1.1 버그, 오류, 결함, 고장
10.1.2 테스트 원리
10.1.3 테스트 작업 과정
10.1.4 테스트 케이스
10.2 블랙박스 테스트
10.2.1 동등 분할 기법
10.2.2 경곗값 분석
10.2.3 원인 결과 그래프
10.3 화이트박스 테스트
10.3.1 논리 흐름의 표현
10.3.2 검증 기준
10.4 상태기반 테스트
10.5 통합 테스트
10.5.1 빅뱅 통합
10.5.2 하향식 통합
10.5.3 상향식 통합
10.5.4 연쇄식 통합
10.6 시스템 및 인수 테스트
10.6.1 기능 테스트
10.6.2 성능 테스트
10.6.3 보안 테스트
10.6.4 UI 테스트
10.6.5 인수 테스트
·연습문제

CHAPTER 11 유지보수
11.1 유지보수의 소개
11.1.1 변경의 이유와 유지보수 유형
11.1.2 Lehman의 법칙
11.2 유지보수 작업 과정
11.2.1 유지보수 작업
11.2.2 유지보수 프로세스
11.2.3 프로그램의 이해
11.2.4 변경 파악과 분석
11.3 형상 관리
11.3.1 베이스라인
11.3.2 형상관리 절차
11.4 역공학
11.4.1 역공학 작업 순서
11.4.2 역공학의 용도
11.4.3 재문서화
11.4.4 설계 복구
11.5 리엔지니어링
11.5.1 리엔지니어링 목적
11.5.2 리엔지니어링 과정
·연습문제

CHAPTER 12 품질
12.1 소개
12.1.1 품질 개념
12.1.2 소프트웨어 품질
12.2 품질 모델
12.3 품질 관리
12.3.1 품질 보증 조직
12.3.2 프로세스와 표준을 정의
12.3.3 품질 보증 활동
12.3.4 인스펙션
12.4 품질 측정
12.4.1 품질 측정의 유용성
12.4.1 품질 메트릭
12.5 프로세스 개선
12.5.1 CMMi
11.5.2 ISO 9001
·연습문제

QuickMenu