버그의 3가지 개념


Defect    : An incorrect program code (a bug in the code)
Infection : An incorrect program state (a bug in the state)
Failure   : An observable incorrect program behavior (a bug in the behavior)

일반적으로 버그라고 하면, 실제로는 3가지의 개념을 혼동해서 사용합니다.
Defect는 잘못된 프로그램 코드를 말하고,
Infection은 잘못된 프로그램의 (실행) 상태를 말합니다.
Failure는 관찰할 수 있는 잘못된 프로그램의 동작을 말합니다.

1. The programmer creates a defect
2. The defect causes an infection
3. The infection propagates
4. The infection causes a failure

이를 정리해보면,
1. 프로그래머가 Defect를 만들어 냅니다.
2. Defect는 실행을 통해 Infection을 만들어 냅니다.
3. Infection은 퍼져나가게 되죠.  즉 다른 상태를 오염시키게 됩니다.
4. 오염된 Infection중에 어떤것이 결국 failure, 즉 관찰가능한 동작의 오류로 나타납니다.

명쾌하죠?
이 세가지 개념을 정확히 이해함으로써 전에 보지 못했던 것들이 이해 되는 것 같습니다.
느낌 상으로 했던 일들이, 3가지 중의 어떤 부분을 하고 있는지 정확히 이야기 할 수 있게 되었죠.
마찬가지로 여러분 들에게도 도움이 되었음 좋겠습니다.

그렇다면, 과연 Infection은 되었는데 Failure가 나타나지 않는다면,
그건 Bug로 봐야 되나요?  아니면 Bug가 아닌 건가요?    하하

Why Programs Fail ? A Guide to SystemaicDebugging  p3~4, 30
Andreas Zeller

PS. 이 책은 학술적이고 다소 과학적인 전문가용 책입니다.  이런 방법도 있구나~ 하고 느끼고 싶은 분은 좋아하겠지만, 실제 적용을 목적으로 하신다면 조금 버겁다는 느낌이 들지도 모르겠습니다.

by 제임스 | 2006/06/22 01:30 | 작은이야기들 | 트랙백 | 덧글(6)

트랙백 주소 : http://jamestic.egloos.com/tb/96909
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by stone at 2006/06/22 12:47
defect 가 이미 bug이죠.
failure는 결국 보여주는 시간의 문제일 뿐이니까요.
고로... "infection은 bug 이다"로 봐야 겠지요?
Commented by 제임스 at 2006/06/22 15:50
당연하죠?
근데 돌아보면, lint를 돌려서 defect를 찾아주면, 그거 안쓰는 코드예요... 혹은 그쪽을 안들어가는데... 그런 이야기 익숙하죠. 안쓰는 코드에 defect가 있다면 그것도 버그겠죠? 아니면 깨진 창문을 놔둔 게으름으로 봐야되나요? 학술적인 바이러스에 감염된 기분이군요 ^^
Commented by stone at 2006/06/23 14:22
원래 쓸데없는 부분은 정리가 되어야 하는건데... 저도 이부분은 자신이 없군요.
바쁘면 바쁘다는 핑게로, 안바쁘면 코드 볼 일이 없는 관계로 쓰레기는 그냥 방치되게 됩니다.
사실 정말 필요없는 부분이라면 #if 0로 막는데 5초도 안걸립니다.
자신에게 너무 관대한 덕분이겠지요.
Commented by 고로즈 at 2007/01/08 13:57
제 블로그에 위 글이랑 아래글 일부를 발췌하였습니다. 참고용으로 한 거라 트랙백을 보내기가 모해서 덧글을 남깁니다. 혹시 안된다시면 삭제할께요.
Commented by 제임스 at 2007/01/08 20:11
전혀요 고로즈님, 제 것이 아니라 Andreas Zeller의 definition인걸요.
오히려 제가 감사하죠 ^^
Commented by 고로즈 at 2007/01/09 12:31
좋은 글들이 많아서 자주 찾아올 것 같아요. 새해 복 많이 받으시고, 올 한해 즐겁게 보내세요.

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶