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

소득공제
프로그램은 왜 실패하는가?
체계적인 디버깅 지침서
베스트
IT 모바일 top100 2주
가격
28,000
10 25,200
YES포인트?
280원 (1%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

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

  •  해외배송 가능?
  •  문화비소득공제 가능

이 분야의 이벤트

이 상품의 시리즈 35

이 상품의 시리즈 알림신청
뷰타입 변경

책소개

목차

프로그램은 왜 실패하는가?

추천사 xix
추천사 xxii
머릿말 xxv
역자의 글 xxxvi

1장 실패는 어떻게 일어나는가
1.1 프로그램이 이상해요!
1.2 결함에서 실패로
1.3 시간과 공간 속에서의 디버깅
1.4 실패에서 교정으로
1.5 자동화된 디버깅 기법들
1.6 버그, 잘못, 결함?
1.7 개 념
1.8 도 구
1.9 더 읽을거리
1.10 연습문제

2장 문제점 추적
2.1 문제점
2.2 문제점 보고
2.3 문제점 관리
2.4 문제점 분류
2.4.1 심각도
2.4.2 우선순위
2.4.3 식별자
2.4.4 주석
2.4.5 통지
2.5 문제점 처리
2.6 문제점 추적의 관리
2.7 요구사항으로서의 문제점
2.8 중복의 관리
2.9 문제점과 교정의 연계
2.10 문제점과 테스트의 연계
2.11 개 념
2.12 도 구
BugZilla
phpBugTracker
IssueTracker
Trac
SourceForge
GForge
2.13 더 읽을 거리
2.10 연습문제

3장 프로그램을 실패하게 만들기
3.1 디버깅을 위한 테스트
3.2 프로그램 제어
3.3 표현층에서의 테스트
3.3.1 저수준 상호작용
3.3.2 시스템 수준 상호작용
3.3.3 고수준 상호작용
3.3.4 테스트 결과 평가
3.4 기능층에서의 테스트
3.5 단위층에서의 테스트
3.6 단위의 격리
3.7 디버깅을 위한 설계
3.8 알려지지 않은 문제점 방지
3.9 개 념
3.10 도 구
JUnit
Android
AppleScript
VBScript
기타 스크립팅 언어들
FAUmachine
VMWare
Virtual PC
3.11 더 읽을거리
3.12 연습문제

4장 문제점 재현
4.1 디버깅의 첫 번째 과제
4.2 문제점 환경의 재현
4.3 문제점 수행의 재현
4.3.1 자료의 재현
4.3.2 사용자 상호작용의 재현
4.3.3 통신의 재현
4.3.4 시간의 재현
4.3.5 무작위성의 재현
4.3.6 운영 환경의 재현
4.3.7 일정의 재현
4.3.8 물리적 영향
4.3.9 디버깅 도구의 영향
4.4 시스템 상호작용의 재현
4.5 단위에서의 재현
4.5.1 제어층 설정
4.5.2 제어 예제
4.5.3 모크 객체
4.5.4 더 많은 상호작용의 제어
4.6 개 념
4.7 도 구
WinRunner
Android
Revirt
체크포인트 도구들
4.8 더 읽을거리
4.9 연습문제

5장 문제점 단순화
5.1 문제점 단순화
5.2 Gecko BugAThon
5.3 수동 단순화
5.4 자동 단순화
5.5 단순화 알고리즘
5.6 사용자 상호작용 단순화
5.7 무작위 입력의 단순화
5.8 더 빠른 단순화
5.8.1 캐싱
5.8.2 일찍 중단
5.8.3 구문적 단순화
5.8.4 상황이 아니라 차이를 격리
5.9 개 념
5.10 도 구
델타 디버깅
단순화 라이브러리
5.11 더 읽을거리
5.12 연습문제

6장 과학적 디버깅
6.1 디버깅 도사가 되려면
6.2 과학적 방법
6.3 과학적 방법의 적용
6.3.1 sample 디버깅-준비
6.3.2 sample 디버깅-가설 1
6.3.3 sample 디버깅-가설 2
6.3.4 sample 디버깅-가설 3
6.3.5 sample 디버깅-가설 4
6.4 명시적 디버깅
6.5 일지 관리
6.6 간이 디버깅
6.7 알고리즘적 디버깅
6.8 가설 이끌어내기
6.9 프로그램 추론
6.10 개 념
6.11 더 읽을 거리
6.12 연습문제

7장 오류 연역
7.1 값 근원의 격리
7.2 제어 흐름 이해하기
7.3 의존성 추적
7.3.1 문장이 주는 영향
7.3.2 문장이 받는 영향
7.3.3 문장 의존성
7.3.4 의존성 따라가기
7.3.5 의존성 활용
7.4 프로그램 슬라이싱
7.4.1 전방 슬라이스
7.4.2 후방 슬라이스
7.4.3 슬라이스 연산들
7.4.4 슬라이스 활용
7.4.5 실행 가능한 슬라이스
7.5 코드 악취의 연역
7.6 정적 분석의 한계
7.7 개 념
7.8 도 구
CodeSurfer
FindBugs
7.9 더 읽을거리
7.10 연습문제

8장 사실 관찰
8.1 상태의 관찰
8.2 실행 로깅
8.2.1 로깅 함수
8.2.2 로깅 프레임웍
8.2.3 애스펙트를 이용한 로깅
8.2.4 이진 수준의 로깅
8.3 디버거 활용
8.3.1 예제 디버깅 세션
8.3.2 수행의 제어
8.3.3 사후 디버깅
8.3.4 자료 로깅
8.3.5 함수 호출
8.3.6 교정 및 재개
8.3.7 디버거 내장
8.3.8 디버거 주의사항
8.4 사건 질의
8.4.1 감시점
8.4.2 균일한 사건 질의
8.5 상태의 시각화
8.6 개 념
8.7 도 구
Log4j
AspectJ
PIN
BCEL
GDB
DDD
Java Spider
eDOBS
8.8 더 읽을거리
8.9 연습문제

9장 근원 추적
9.1 후방 추론
9.2 수행 내력 탐색
9.3 동적 슬라이싱
9.4 근원 활용
9.5 감염 추적
9.6 개 념
9.7 도 구
ODB
9.8 더 읽을거리
9.9 연습문제

10장 기대의 단언
10.1 관찰 자동화
10.2 기본적인 단언들
10.3 불변식의 단언
10.4 정확성의 단언
10.5 명세로서의 단언
10.6 단언에서 검증으로
10.7 기준 실행
10.8 시스템 단언
10.8.1 MALLOC_CHECK_를 이용한 힙 유효성 확인
10.8.2 ElectricFence를 이용한 버퍼 넘침 방지
10.8.3 Valgrind를 이용한 메모리 오류 검출
10.8.4 언어 확장
10.9 제품용 코드의 점검
10.10 개 념
10.11 도 구
JML
ESC/Java
Guard
Valgrind
Purify
Insure++
Cyclone
CCured
10.12 더 읽을거리
10.13 연습문제

11장 비정상 검출
11.1 정상 행동 파악
11.2 포괄도 비교
11.3 통계적 디버깅
11.4 현장에서 자료 수집
11.5 동적 불변식
11.6 즉석 불변식
11.7 비정상에서 결함으로
11.8 개 념
11.9 도 구
Daikon
DIDUCE
11.10 더 읽을거리
11.11 연습문제

12장 원인과 결과
12.1 원인 그리고 대안의 세계
12.2 원인의 검증
12.3 인과관계의 예
12.4 실제 원인 찾기
12.5 원인 좁히기
12.6 차이 좁히기의 예
12.7 공통 문맥
12.8 디버깅에서의 원인들
12.9 개 념
12.10 더 읽을거리
12.11 연습문제

13장 실패 원인의 격리
13.1 원인의 자동적인 격리
13.2 격리 대 단순화
13.3 격리 알고리즘
13.4 격리 알고리즘 구현
13.5 실패 유발 입력의 격리
13.6 실패 유발 일정의 격리
13.7 실패 유발 변경의 격리
13.8 문제와 한계
13.9 개 념
13.10 도 구
Eclipse용 델타 디버깅 플러그인
ccache
13.11 더 읽을거리
13.12 연습문제

14장 인과 사슬의 격리
14.1 쓸모없는 원인들
14.2 프로그램 상태 갈무리
14.3 프로그램 상태들의 비교
14.4 유관 프로그램 상태의 격리
14.5 인과 사슬의 격리
14.6 실패 유발 코드의 격리
14.7 주의사항 및 위험
14.8 개 념
14.9 도 구
AskIgor
Igor
14.10 더 읽을거리
14.11 연습문제

15장 결함 고치기
15.1 결함 찾기
15.2 가장 유망한 오류에 집중
15.3 결함의 유효성 확인
15.3.1 오류가 실패를 유발하는가?
15.3.2 원인이 실제로 오류인가?
15.3.3 코딩하기 전에 생각부터
15.4 결함의 정정
15.4.1 실패가 더 이상 발생하지 않는가?
15.4.2 정정이 새로운 문제점을 도입하지는 않았는가?
15.4.3 같은 실수를 다른 곳에서 한 적이 있는가?
15.4.4 마무리 작업
15.5 우회책
15.6 실수에서 배운다
15.7 개 념
15.8 더 읽을거리
15.9 연습문제

부록A 공식적인 정의들
A.1 델타 디버깅
A.1.1 구성
A.1.2 통과 실행과 실패 실행
A.1.3 테스트
A.1.4 최소성
A.1.5 단순화
A.1.6 차이
A.1.7 격리
A.2 메모리 그래프
A.2.1 공식 구조
A.2.2 자료구조 펼치기
A.2.3 정점들과 간선들의 부합
A.2.4 공통 부분그래프 구하기
A.2.5 그래프 차이 구하기
A.2.6 부분 상태 변경들의 적용
A.2.7 C 상태 갈무리
A.3 인과 사슬

용어집
참고문헌
색 인

저자 소개

저자 : Andreas Zeller
Andreas Zeller는 독일 Sarrland University의 교수이다. 주된 연구 분야는 프로그래머 생산성으로, 프로그래머의 삶과 일을 편하게 만드는 것이 무엇인지를 고민한다. Linux와 Unix 프로그래머들 사이에서 Zeller는 자료 시각화 기능을 내장한 디버거 프런트엔드인 GNU DDD의 개발자로 가장 잘 알려져 있다. 학계와 전문가들 사이에서는 컴퓨터 프로그램의 실패 원인을 자동으로 격리하는 기법인 델타 디버깅으로 가장 잘 알려져 있다.
저자 : 류광
류광은 1996년부터 프로그래밍 서적 전문 번역가로 활동중이다.
『Game Programming Gems』 시리즈를 비롯한 게임 프로그래밍 서적 다수와 『Code Reading : 오픈 소스 관점에서 본 코드 읽기』, 『일반적 프로그래밍과 STL』, 『서브버전을 이용한 실용적인 버전 관리』 등 다양한 분야의 프로그래밍 서적 다수를 번역했으며 Bjarne Stroustrup의 고전 『The C++ Programming Language』의 한국어판(곽용재 역) 감수 작업에도 참여했다. 2006년부터는 Knuth 교수의 역작 『The Art of Computer Programming』시리즈 전권(1, 2, 3)의 번역에 매진하고 있다.

번역과 프로그래밍 외에 소프트웨어 문서화에도 많은 관심을 가지고 있으며, 수많은 오픈소스 프로젝트들의 표준 문서화 형식으로 쓰이는 DocBook의 국내 사용자 모임인 닥북 한국(http://docbook.or.kr/)의 일원이다. 현재 번역서 정보 사이트 “occam’s Razor”(http://occam.com.ne.kr/)와 Game Programming Gems 스터디 사이트 “GPGstudy.com”(http://gpgstudy.com/)을 운영하고 있다.

품목정보

발행일
2006년 12월 20일
쪽수, 무게, 크기
585쪽 | 1166g | 188*257*35mm
ISBN13
9788955508604

리뷰/한줄평3

리뷰

10.0 리뷰 총점

한줄평

10.0 한줄평 총점

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

설정