본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

소프트웨어 신뢰성 성장 모델

IT 위키

소프트웨어 신뢰성 성장 모델(SRGM, Software Reliability Growth Model)은 테스트 중에 발견·수정되는 고장 데이터를 확률 모형에 적합시켜, 결함이 제거되면서 신뢰성이 높아지는 추세를 나타내고 잔존 결함 수와 앞으로의 신뢰도를 예측하는 모델이다.

소프트웨어는 하드웨어처럼 닳아서 고장 나지 않는다. 고장은 설계·구현 단계에서 들어간 결함이 특정 입력에서 드러나서 생기고, 테스트에서 발견된 결함을 고치면 고장 발생률이 낮아진다. 이 신뢰성 성장 과정을 수학적으로 모형화한 것이 SRGM 이다. 누적 고장 수나 고장 간격 데이터를 모형에 넣어 모수를 추정하면 다음을 알 수 있다.

  • 소프트웨어에 원래 있던 총 결함 수와 남은 결함 수
  • 현재의 고장 강도(단위 시간당 고장 수)와 평균 고장 간격
  • 목표 신뢰도에 이르기까지 필요한 추가 테스트 시간
  • 그래서 테스트를 언제 끝내고 출시할지 판단하는 정량적 근거

IEEE 는 IEEE 1633(Recommended Practice on Software Reliability)에서 SRGM 을 포함한 소프트웨어 신뢰성 예측·평가 절차를 권고한다.[1]

척도 정의
신뢰도 R(t) 시간 t 동안 고장 없이 동작할 확률. 고장률이 일정하면 R(t) = e−λt
고장 강도 λ(t) 단위 시간당 고장 발생 수. SRGM 에서는 시간이 갈수록 감소한다
평균 값 함수 m(t) 시간 t 까지의 누적 고장 수의 기댓값. λ(t) = dm(t)/dt
MTTF 평균 고장 시간. 고장률이 일정하면 1/λ
MTBF 평균 고장 간격 = MTTF + MTTR
가용성 MTTF / (MTTF + MTTR)
POFOD 요청 시 고장 확률. 가끔 호출되는 안전 기능에 쓴다
분류 입력 데이터 대표 모델
고장 간격 모델(Time Between Failures) i 번째와 i+1 번째 고장 사이 시간 젤린스키-모란다, 리틀우드-베랄
고장 횟수 모델(Failure Count) — 대부분 비동차 포아송 과정(NHPP) 구간별 고장 수, 누적 고장 수 고엘-오쿠모토, 지연 S자형, 무사-오쿠모토
결함 심기 모델(Fault Seeding) 인위적으로 심은 결함과 실제 결함의 발견 비율 밀스(Mills) 모델

젤린스키-모란다 모델

편집 원본 편집

1972년 젤린스키(Z. Jelinski)와 모란다(P. Moranda)가 제안한 최초의 SRGM 이다.

  • 가정: 처음 결함 수 N 은 유한하고, 결함마다 고장에 같은 크기(φ)로 기여하며, 고장이 나면 원인 결함을 즉시 완전히 제거한다.
  • (i−1) 개를 고친 뒤의 고장률: λi = φ(N − i + 1) — 결함을 하나 고칠 때마다 고장률이 φ 만큼 계단식으로 줄어든다.
  • 한계: 결함마다 영향이 다르고, 수정 중에 새 결함이 들어갈 수 있다는 현실을 반영하지 못한다.

고엘-오쿠모토 모델(지수형 NHPP)

편집 원본 편집

1979년 고엘(A. L. Goel)과 오쿠모토(K. Okumoto)가 제안했다. 누적 고장 수를 비동차 포아송 과정으로 본다.

  • m(t) = a(1 − e−bt), λ(t) = ab·e−bt
  • a: 결국 발견될 총 결함 수의 기댓값, b: 결함 하나당 발견율
  • 누적 고장 곡선이 처음부터 가파르게 오르다 a 에 수렴하는 지수형이다. 잔존 결함의 기댓값은 a − m(t) = a·e−bt.

지연 S자형 모델

편집 원본 편집

1983년 야마다(S. Yamada) 등이 제안했다.

  • m(t) = a[1 − (1 + bt)e−bt]
  • 테스트 초기에는 테스터가 시스템에 익숙하지 않고 고장 발견부터 원인 결함을 격리하기까지 지연이 있어, 누적 고장 곡선이 처음엔 완만하다가 가팔라지고 다시 포화되는 S자가 된다. 실제 프로젝트 데이터가 S자를 보이는 경우가 많아 널리 쓴다.

무사 기본 실행 시간 모델

편집 원본 편집

1975년 무사(J. D. Musa)가 제안했다. 달력 시간이 아니라 CPU 실행 시간을 기준으로 한다.

  • λ(μ) = λ0(1 − μ/ν0) — 고장 강도가 경험한 고장 수 μ 에 따라 선형으로 감소
  • λ0: 초기 고장 강도, ν0: 무한 시간 동안 경험할 총 고장 수

무사-오쿠모토 로그 포아송 모델

편집 원본 편집

1984년 제안됐다.

  • λ(μ) = λ0e−θμ — 고장 강도가 지수적으로 감소. 먼저 발견되는 결함일수록 고장을 많이 일으킨다고 본다.
  • 총 고장 수가 무한히 늘 수 있다고 보는 무한 고장 모델이다. 운영 프로파일이 균일하지 않은 시스템에 맞는다.

리틀우드-베랄 모델

편집 원본 편집

1973년 리틀우드(B. Littlewood)와 베랄(J. Verrall)이 제안한 베이지안 모델이다. 고장률 자체를 확률 변수로 보아, 결함 수정이 오히려 결함을 늘릴 수 있는 불확실성을 반영한다.

모델 고장률 변화 총 결함 특징
젤린스키-모란다 수정마다 일정량 계단식 감소 유한 가장 단순, 결함 영향 동일 가정
고엘-오쿠모토 지수형 감소 유한(a) NHPP 의 기본형, 해석이 쉽다
지연 S자형 증가 후 감소 유한(a) 학습 효과·발견 지연 반영
무사 기본 고장 수에 대해 선형 감소 유한(ν0) 실행 시간 기준
무사-오쿠모토 고장 수에 대해 지수 감소 무한 불균일한 운영 프로파일
리틀우드-베랄 확률적 변화 — 베이지안, 불완전 수정 반영
  1. 신뢰성 목표 설정 — 출시 시점의 목표 고장 강도·신뢰도 정의
  2. 운영 프로파일 작성 — 실제 사용 빈도대로 테스트해야 예측이 현실과 맞는다.
  3. 고장 데이터 수집 — 고장 발생 시각(실행 시간), 구간별 고장 수, 심각도
  4. 모델 선택 — 누적 고장 곡선의 모양(지수형·S자형)과 가정의 타당성으로 고른다.
  5. 모수 추정 — 최우추정법(MLE)이나 최소제곱법(LSE)
  6. 적합도 검정 — 콜모고로프-스미르노프 검정, 예측 오차 비교로 모델 타당성 확인
  7. 예측·의사결정 — 잔존 결함, 목표 도달까지의 테스트 시간을 구해 출시 여부 결정

개발 단계 소스코드 신뢰도 측정

편집 원본 편집

SRGM 은 테스트를 실행해 고장 데이터가 쌓인 뒤에 쓰는 동적 방법이다. 개발 단계에서는 실행 전의 소스코드를 정적으로 평가하는 방법을 함께 쓴다.

구분 방법 내용
정적 평가(코드 품질) 정적 분석 코딩 규칙 위반, 잠재 결함(널 참조, 자원 누수, 경쟁 조건) 검출
ISO/IEC 5055 신뢰성·보안성·성능 효율성·유지보수성에 관한 구조적 약점(CWE)을 자동 계수
복잡도·구조 지표 순환 복잡도, 결합도·응집도, 중복 코드. 복잡도가 높은 모듈일수록 결함이 많다
결함 밀도 코드 리뷰·검사로 발견한 결함 수 ÷ 코드 규모(KLOC, 기능 점수)
동적 평가(실행 기반) 테스트 커버리지 구문·분기·조건 커버리지로 테스트 충분성 확인
신뢰성 성장 모델 테스트 중 고장 데이터로 현재 신뢰도와 잔존 결함 예측
신뢰성 시험 운영 프로파일 기반 장시간 실행, 장애 주입, 회복 시험
품질 모델 ISO/IEC 25010 신뢰성 부특성(2011판: 성숙성, 가용성, 결함 허용성, 회복성)을 기준으로 지표 선정
  1. ↑ 「IEEE Recommended Practice on Software Reliability」, IEEE Std 1633-2016, IEEE, 2016.