반응형

제목: 소프트웨어 결함 분류(A Classification of Software Faults)

저자: Michael Grottke 1, 미국

 

문서유형: 컨퍼런스 페이퍼( 2 페이지), 2005

 


 

보흐버그(Bohrbugs)

  • 간단하게 고립(isolated)시킬 수 있으며 잘 정의된 조건 하에서 일관성 있는 동작을 보이는 재현이 확실한 결함
  • solid or hard software faults
  • 개념적으로 만델버그에 반대되는 버그

 

만델버그(Mandelbugs)

  • 근본적인 원인이 너무 복잡하고 모호해서 버그 동작이 일관성이 없고 비결정적(non-deterministic)으로 보이는 버그
  • 일관성이 없고 비결정적인 동작이란 동일한 조건이 주어졌을 때 버그가 나타날 수도 그렇지 않을 수도 있다는 의미(, 버그가 일관성 있게 재현되지 않는다)
  • soft or elusive software faults
  • 개념적으로 보흐버그에 반대되는 버그

 

만델 버그의 복잡성으로 다음과 같은 두 가지 경우를 들 수 있다.

1) 특정 어플리케이션의 버그의 원인이나 동작이 어플리케이션 자체가 아닌 다른 시스템 요소(, 운영체제, 하드웨어)에 의해 영향을 받는다.

2) 특정 어플리케이션 버그의 동작이 매우 복잡하여 최초 버그 발생으로부터 최종적으로 시스템 오류로 나타나기까지 지연(delay)이 생긴다.

 

) 코드 에러로 잘못된 계산 결과가 메모리에 저장되었지만, 이 계산 결과가 액세스 되기 전까지는 시스템의 서비스가 정상적으로 수행됨. 한참 후 사용자가 인지할 수 있는 방식으로 이 계산 결과가 사용되었을 때야 비로소 버그가 드러남

 

하이젠버그(Heisenbugs)

  • 버그를 자세히 조사하려 하면 버그 동작이 바뀌거나 사라져버리는 버그
  • 모든 하이젠버그는 만델버그이다(만델버그의 서브 타입)
  • 하이젠버그는 버그를 조사(관찰)하는데 사용된 특정 방법이나 도구에 유관하다(, 버그를 관찰하는데 사용된 방법이나 도구가 영향을 주어서 버그 동작이 바뀌거나 사라지게 된다).

 

하이젠버그가 나타나는 이유로 아래와 같은 것들이 있다.

1) 몇몇 디버거는 사용하지 않는 메모리를 디폴트 값으로 초기화 한다. 따라서 디버거가 켜진 상태에서는 부적절한 초기화에 관련된 버그들이 나타나지 않을 수도 있다.

 

2) 버그를 조사하는 행위가 프로세스 스케쥴링에 영향을 주어 버그가 다시 나타나지 않게 만들 수도 있다.
) 디버거의 single-stepping source lines 방식에 의해 Run 속도가 느려져서 멀티 쓰레드 프로그램의 스케쥴링 관련 버그가 디버거 사용시에는 사라질 수도 있다.

 

소프트웨어 에이징(software aging)

장기간 지속적으로 가동된 소프트웨어 시스템의 성능이 저하되거나 오류율(failure rates)이 증가하는 현상.

 

에이징 관련 버그(aging-related bugs)

  • 소프트웨어 에이징 현상은 에이징을 유발하는 버그들이(aging-related bugs) 시간이 지남에 따라 축적되어 발생한다.
  • 에이징 관련 버그들은 어플리케이션 내에서 발생할 수도 있고(, 프로그램 변수의 round-off 에러) 또는 시스템 내부 환경에서 발생할 수도 있다(, 어플리케이션의 메모리 누수로 인해 반환되지 않고 묶여 있는 물리 메모리가 증가).
  • 이런 버그들은 바로 오류로 이어지지는 않지만 일정 시간 후에 문제가 된다. 따라서 모든 에이징 관련 버그들은 만델버그이다(만델버그의 서브 타입).
  • 에이징 관련 버그들은 버그를 관찰하는데 사용된 도구나 방법에 따라 하이젠버그 일 수도 있고 아닐 수도 있다

 

소프트웨어 버그 종류들 간의 관계

 

소프트웨어 버그는 보흐버그이거나 만델버그 둘 중의 하나에 속한다.

[소프트웨어 결함 타입의 벤다이어그램]

반응형

+ Recent posts