UNIV

2022-03-29 09:06

소프트웨어공학 - 4강. 소프트웨어 품질

품질의 정의

  • 제품이나 서비스가 가지는 수월성에 관한 종합적 특성
  • 생산자 입장의 품질: 명시된 요구사항을 만족시키는 정도
  • 고객 입장의 품질: 고객의 기대나 사용목적에 부합하는 정도

소프트웨어 품질

  • 명확히 기술된 요구사항 만족, 묵시적인 좋은 품질특성을 가지는 것

품질 관점

  • 사용자 관점
    • 제품의 신뢰성
    • 효율성
    • 사용 용이성 등
  • 개발자 관점
    • 검증 가능성
    • 유지보수성
    • 이식성 등
  • 관리자 관점
    • 프로세스의 생산성과 제어 용이성

소프트웨어 품질의 분류

  • 소프트웨어 제품의 품질 특성
    • 내부 특성이 외부 특성에 영향
    • 외부 특성과 내부 특성이 분명히 구분되는 것은 아님
  • 외부 특성
    • 사용자 관점의 품질 특성
    • 실행을 통해, 행위를 측정하여 평가
    • 신뢰성, 사용성
  • 내부 특성
    • 개발자 관점의 품질 특성
    • 개발자가 외부 특성을 개선하고자 할때 도움을 줌
    • 개발 문서나 코드에 대해 정적으로 측정하여 평가
  • 프로세스의 품질이 제품의 품질에 영향을 줄 수 있음
    • 제품과 함께 프로세스의 품질도 중요
  • 제품 특성
    • 제품이 가지는 품질 특성
    • 제품: 고객에게 전달 되는 것
    • 개발자는 요구사항, 설계문서, 소스코드, 사용자 매뉴얼 등을 모두 제품으로 생각
  • 프로세스 특성
    • 체계적인 프로세스가 정의, 개발과정에 적용
    • 프로세스의 품질은 소프트웨어 제품의 품질에 영향을 줌
    • 프로세스 품질관리와 개선을 위한 노력이 필요

소프트웨어 제품의 품질 표준

  • ISO/IEC 9126
    • 제품의 품질 분류와 메트릭을 정의한 표준
    • 6가지로 분류
    • 기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성
  • ISO/IEC 25000
    • SQuaRE
      • 품질 관리
      • 품질 모델
      • 품질 메트릭
      • 품질 요구사항
      • 품질 평가

외부 메트릭과 내부 메트릭

  • 외부 메트릭: 완성된 소프트웨어를 실행하여 제품 품질 측정
  • 내부 메트릭: 산출물의 품질을 측정하기 위한 것
  • 부특성을 측정하는 메트릭이 정의
  • 평균 고장 간격: MTBF

사용 품질

  • 사용자가 실제 느끼는 제품의 효과
  • 효율성, 생산성, 안전성, 만족성

맥콜의 제품 품질 특성

  • 11개의 품질 요인 제시
    • 제품 운영: 정확성 신뢰성 효율성 무결성 사용성
    • 제품 개선: 유지보수성 시험성 유연성
    • 제품 전이: 이식성 재사용성 상호운영성

프로세스 품질 표준

  • 프로세스 품질: 성숙한 개발 프로세스
  • SPICE - ISO/IEC 15504
    • 프로세스 평가 프레임워크
  • ISO/IEC 12207
    • 생명주기 프로세스의 공통 프레임워크 제공
  • CMMI
    • 역량 성숙도 평가 모델
  • ISO 9001
    • 품질 경영체제 도입, 프로세스 품질 인증 획득을 위한 모델

ISO 9000 시리즈

  • 품질 경영을 위한 기본 요소 규정, 실천을 위한 활동 지침 제시
  • ISO 9000
    • 품질 관리 시스템의 기본과 관련 용어 설명
  • ISO 9001
    • 품질 관리 시스템의 요건 설명
  • 특징
    • 프로세스 평가 보다 품질 관리 자체에 중점을 둠
    • 평가를 등급화 하지 않고 ISO 9001 인증 여부만을 결정

CMMI

  • 조직의 프로세스 성숙도를 평가하는 모델
    • 개발을 위한 CMMI, 발주위한 CMMI, 서비스위한 CMMI 존재
  • 다양한 기업에 프로세스 구축 평가 개선을 위한 프레임워크 제공
  • 단계적 모델 (성숙도 수준 평가): 조직의 프로세스의 성숙도를 1 ~ 5 수준으로 평가
  • 연속적 모델 (역량 수준 평가): 20여개의 실무 영역에 대해 각각 0 ~ 3 수준으로 평가
  • 개발을 위한 CMMI-DEV는 20개의 실무 영역 (PA)로 구성
    • 평가영역을 여러 실무 영역으로 구분
    • 개별 실무 영역에서 수준(1~5)별로 분리된 지침그룹(PG)존재
  • 실무 영역은 4개 범주, 9개 역략 영역(CA)로 분류
    • 이행, 관리, 지원, 개성

CMMI와 평가

  • 연속적 모델(역량 수준 평가)
    • 실무 영역별로 평가
    • 실행되지 않음, 초기, 관리됨, 정의됨
  • 단계적 모델(성숙도 수준 평가)
    • 초기(Initial), 관리됨(Managed), 정의됨(Defined), 양적으로 관리됨(Quantitatively Managed), 최적화됨(Optimized)

SQA: 소프트웨어 품질 보증

  • 품질 요구가 만족됨을 보증하는 품질관리 활동
  • 개발 과정 전체에 적용
  • 제품과 프로세스의 표준 정하고 시스템에서 요구되는 품질 속성을 정의

품질 보증 계획

  • SQA를 수행하기 위한 로드맵

품질 제어 (QC)

  • 품질 목표를 만족하도록 필요한 활동을 취하는 것
    • 프로세스
    • 요구 명세서, 설계 문서, 코드
    • 형상 관리 절차에서 나오는 문서들 검토
  • 용어의 혼용
    • 결함 발견, 수정 목적
    • 제품 대상: 품질 제어, 프로세스 대상: 품질 보증

확인과 검증 (V&V)

  • 모든 테스트를 포함하는 개념 (정적검토 / 동적 테스트)
  • 확인 (Verification)
    • 소프트웨어가 요구사항 명세서와 일치하는 지 검사
  • 검증 (Validation)
    • 고객의 기대를 충족하는지 검사

검토

  • 정적 테스트
    • 정적 분석 도구
  • 목적
    • 요구명세서와 일치하는지 확인
    • 계획 표준 및 지침에 맞게 개발되었는지 확인
    • 소프트웨어 요소 변경이 적절히 구현되었는지 확인
  • 공식 기술 검토(FTR)
  • 인스페션
  • 코드 워크스루

신뢰도

  • 의도된 기능을 고장 없이 실행 가능한 능력
  • 사용환경과 고장의 결과에 따라 다르게 인식 가능

신뢰도 메트릭

  • MTTF (Mean Time To Failures)
    • 고장이 발생 할 때 까지의 평균 시간 (평균 수명)
    • 고장의 복구를 고려하지 않음
    • MTTF = (a1 + a2 + a3) / 3
  • MTBF (Mean Time Between Failures)
    • 고장이 수리된 후 다시 고장이 일어날때 사이의 평균 간격
    • 고장의 복구를 고려
    • MTBF = ((a1 + a2 + a3) + (r1 + r2 + r3)) / 3
  • AVAIL (가용성)
    • 논스톱 시스템의 신뢰도 측정에 사용
    • 고장 발생 후 빠른 복구가 필요 (가용성 높이기)
    • AVAIL = MTBF / (MTBF+MTTR) = (a1 + a2 + a3) / (a1 + a2 + a3 + r1 + r2 + r3)
  • ROCOF (Rate of Occurences Of Failures)
    • 고장의 발생 비율
    • 규칙적 빈번한 서비스 요청이 들어오는 시스템 신뢰도 측정
    • ex) 예약 시스템의 ROCOF가 0.002라면 1000회의 요청에서 2회의 오류가 발생