UNIV
2022-03-29 09:06
소프트웨어공학 - 4강. 소프트웨어 품질
품질의 정의
- 제품이나 서비스가 가지는 수월성에 관한 종합적 특성
- 생산자 입장의 품질: 명시된 요구사항을 만족시키는 정도
- 고객 입장의 품질: 고객의 기대나 사용목적에 부합하는 정도
소프트웨어 품질
- 명확히 기술된 요구사항 만족, 묵시적인 좋은 품질특성을 가지는 것
품질 관점
- 사용자 관점
- 제품의 신뢰성
- 효율성
- 사용 용이성 등
- 개발자 관점
- 검증 가능성
- 유지보수성
- 이식성 등
- 관리자 관점
- 프로세스의 생산성과 제어 용이성
소프트웨어 품질의 분류
- 소프트웨어 제품의 품질 특성
- 내부 특성이 외부 특성에 영향
- 외부 특성과 내부 특성이 분명히 구분되는 것은 아님
- 외부 특성
- 사용자 관점의 품질 특성
- 실행을 통해, 행위를 측정하여 평가
- 신뢰성, 사용성
- 내부 특성
- 개발자 관점의 품질 특성
- 개발자가 외부 특성을 개선하고자 할때 도움을 줌
- 개발 문서나 코드에 대해 정적으로 측정하여 평가
- 프로세스의 품질이 제품의 품질에 영향을 줄 수 있음
- 제품과 함께 프로세스의 품질도 중요
- 제품 특성
- 제품이 가지는 품질 특성
- 제품: 고객에게 전달 되는 것
- 개발자는 요구사항, 설계문서, 소스코드, 사용자 매뉴얼 등을 모두 제품으로 생각
- 프로세스 특성
- 체계적인 프로세스가 정의, 개발과정에 적용
- 프로세스의 품질은 소프트웨어 제품의 품질에 영향을 줌
- 프로세스 품질관리와 개선을 위한 노력이 필요
소프트웨어 제품의 품질 표준
- ISO/IEC 9126
- 제품의 품질 분류와 메트릭을 정의한 표준
- 6가지로 분류
- 기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성
- ISO/IEC 25000
- SQuaRE
- 품질 관리
- 품질 모델
- 품질 메트릭
- 품질 요구사항
- 품질 평가
- 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회의 오류가 발생