소프트웨어 품질

Bam·2023년 10월 5일
0

소프트웨어공학

목록 보기
9/10
post-thumbnail

소프트웨어 품질

소프트웨어 품질은 다양한 곳에서 다양하게 정의하지만 대부분 요구분석명세서에 서술된 기능과 성능을 만족하는 것에 따라 결정된다고 공통적으로 말합니다. 즉, 결함 없이 요구사항대로 만들어진 소프트웨어는 품질이 좋다라고 할 수 있습니다.

관점에 따라

소프트웨어 개발에는 여러 이해당사자들이 껴있습니다. 그리고 이들이 생각하는 품질의 기준 또한 다릅니다.

  • 프로젝트 관리자 관점
    관리자 입장에서는 계획된 비용과 기간 내에 개발이 완료되어 더 이상의 자원을 요구하지 않는 소프트웨어가 좋은 소프트웨어가 됩니다. 당연히 고객의 요구사항이 제대로 반영되었는지도 중요합니다.

  • 개발자 관점
    개발자 입장에서는 개발하기 쉽고 수정하기 쉬운 코드로 작성된 프로그램, 사전에 정의된 코딩 규약을 잘 지킨 소프트웨어가 좋은 소프트웨어입니다.

  • 유지보수자 관점
    유지보수자 입장에서는 코딩 규약이 잘 지켜지고 문서화가 잘 되어서 코드를 쉽게 파악할 수 있는 소프트웨어가 좋은 소프트웨어입니다.

  • 구매자 관점
    구매자 입장에서는 사용자 요구사항을 만족하면서 가격이 저렴한 소프트웨어가 좋은 소프트웨어입니다.

  • 사용자 관점
    사용자 입장에서는 사용하기 쉽고 편하며 다양한 기능을 제공하는 소프트웨어가 좋은 소프트웨어입니다.


소프트웨어 품질 요소 - McCall

대표적으로 사용되는 McCall의 품질 요소에 대해 알아보겠습니다. 품질 요소는 사용자가 요구하는 소프트웨어 제품의 품질을 구체화하여 나타낸 것으로, McCall의 분류에서는 3가지 측면(제품 운영, 제품 개선, 제품 변환)으로 분류하고 있습니다.

제품 운영

제품 운영(product operation)은 개발된 소프트웨어가 고객이 사용해도 될 만큼 적합한지 여부를 판단할 수 있는 품질 요소입니다.

  • 신뢰성 reliability
    신뢰성은 사용자가 주어진 시간과 환경에서 얼마나 고장(오류)없이 사용할 수 있는지를 나타냅니다.

  • 사용성 useability
    사용성은 사용자가 얼마나 쉽게/편리하게 사용할 수 있는지를 나타냅니다.

  • 정확성 correctness
    정확성은 소프트웨어가 요구분석명세서와 얼마나 일치하는지를 나타냅니다.

  • 효율성 efficiency
    효율성은 사용자가 요구하는 기능을 수행하는데 자원(CPU, 메모리 등)을 얼마나 사용하는지 나타냅니다.

  • 무결성 integity
    무결성은 허가받지 않은 사용자가 접근하여 변경을 시도할 때 얼마나 보호할 수 있는지를 나타냅니다.

제품 개선

제품 개선(produect revision)은 소프트웨어가 변경하기 쉽고 편한지를 나타내는 정도입니다.

  • 유지보수 용이성 maintainability
    유지보수 용이성은 소프트웨어가 얼마나 변경이 쉬운지, 변경 후 문제 없이 잘 작동하는 지를 나타냅니다.

  • 유연성 flexibility
    유연성은 운영 환경이 변하면 새로운 기능을 쉽게 추가할 수 있는지, 다른 환경에 적용할 수 있도록 소프트웨어를 쉽게 수정할 수 있는지를 나타냅니다.

  • 테스트 용이성 testability
    테스트 용이성은 사용자 요구를 만족하는지에 대한 테스트가 얼마나 쉽고 철저하게 되는지를 나타냅니다.

제품 변환

제품 변환(product transition)은 활용도를 높이고자할 때, 이 작업이 얼마나 쉬운지를 나타냅니다.

  • 상호운용성 interoperability
    상호운용성은 다른 소프트웨어와 얼마나 쉽게 상호작용할 수 있는지를 나타냅니다.

  • 재사용성 reusability
    재사용성은 시스템 일부나 전체를 다른 시스템에서도 얼마나 쉽게 사용할 수 있는지를 나타냅니다.

  • 이식성 portability
    이식성은 다른 환경으로 옮겨도 환경 변화에 무리없이 잘 작동하도록 프로그램을 수정하고 이식하는 것이 얼마나 쉬운지를 나타냅니다.


품질 평가 모델

소프트웨어 품질 평가 모델은 제품 품질 특성 평가, 프로세스 품질 특성 평가 두 가지로 나뉘어 평가됩니다. 이때 제품 품질 특성 평가는 완성된 제품에 대해 평가하고, 프로세스 품질 특성 평가는 개발 프로세스를 평가합니다.

제품 품질 특성 평가 모델

ISO/IEC 9126

ISO/IEC 9126 모델의 품질 특성은 다음과 같습니다.

  • 매우 일반화된 개념으로 정의
  • 고객 관점에서 품질 특성을 정의
  • 계량적으로 측정하고 평가하기 위한 품질 요소, 특성을 정의
  • 내부 척도와 외부 척도 정의

ISO/IEC 9126 모델에서는 6가지 특성과 그 하위 특성으로 나뉩니다.

기능성

기능성은 의도했던 대로 정확하게 사용자의 요구를 만족하는 기능을 제공하는지를 나타냅니다.

하위 특성설명
적합성규정된 작업과 사용자의 목적을 위한 기능들을 제공하는 능력
정확성사용자가 요구하는 정밀도를 유지하거나 허용 범위 내의 결과를 유지하는 능력
상호운용성특정한 시스템과 상호작용하는 능력
보안성권한 유무를 구별해 접근을 제어하는 능력
준수성기능성과 관련된 표준, 규약, 법례 등을 따르는 능력

신뢰성

신뢰성은 소프트웨어를 믿고 사용할 수 있는지를 나타냅니다.

하위 특성설명
성숙성오류가 발생해 문제가 생길 경우 소프트웨어가 안전한지의 여부
결함 수용성일부에서 고장이 발생해도 소프트웨어가 기능을 유지할 수 있는 정도의 능력
복구성오류 수정 후 이전과 얼마나 동일하게 동작하는지에 대한 능력
준수성신뢰성과 관련된 표준, 규약, 법례 등을 따르는 능력

사용성

사용성은 사용하기 편리한 정도를 나타냅니다.

하위 특성설명
이해성사용할 때 사용법이 얼마나 이해하기 쉬운지에 대한 속성
학습성일반적으로 생각하는 방식대로 사용할 수 있는지에 대한 속성
(일반적으로 생각하는 방식이 아니면 학습 과정이 필요하기 때문)
운용성사용자가 쉽게 운용하고 제어할 수 있는지에 대한 능력
친밀성사용자에게 호감을 주는 능력
준수성사용성과 관련된 표준, 규약, 법례 등을 따르는 능력

효율성

효율성은 작업 수행에서 자원을 얼마나 사용하는지를 나타냅니다.

하위 특성설명
시간 효율성기능을 실행시킬때 얼마나 빨리 응답하는 지와 처리 시간이 얼마나 걸렸는지에 대한 능력
자원 효율성기능에 사용된 자원이 얼마나 효율적으로 사용되었는지에 대한 능력
준수성효율성과 관련된 표준, 규약, 법례 등을 따르는 능력

유지보수 용이성

유지보수 용이성은 얼마나 쉽게 변경하고 변경 이후 얼마나 잘 작동하는 지를 나타냅니다.

하위 특성설명
분석성결함이나 고장에 대해 그 원인에 대한 정보를 파악할 수 있는 능력
변경성쉽게 변경할 수 있는 능력
안정성변경으로인한 문제를 최소화하는 능력
테스트 용이성쉽고 철처하게 테스트할 수 있는 능력
준수성유지보수 용이성과 관련된 표준, 규약, 법례 등을 따르는 능력

이식성

이식성은 다른 환경으로 옮길 때 얼마나 잘 작동하는지를 나타냅니다.

하위 특성설명
적응성작동하는 환경에서 정상적으로 잘 작동하는 능력
설치성특정 환경에서 작동시킬수 있는 능력
대체성동일 환경에서 동일 목적으로 다른 소프트웨어를 대신할 수 있는 능력
공존성공통 자원을 공유하는 소프트웨어가 충돌없이 잘 운영되는 능력
준수성이식성과 관련된 표준, 규약, 법례 등을 따르는 능력

ISO/IEC 14598

ISO/IEC 14598 모델은 공급자와 구매자 사이에서 품질을 평가하기 위한 모델입니다.

특징은 다음과 같습니다.

  • 반복성: 특정 제품을 동일한 평가자가 동일 기준으로 평가할 때 동일한 결과가 나와야한다.
  • 재생산성: 특정 제품을 다른 평가자가 동일 기준으로 평가할 때 동일한 결과가 나와야한다.
  • 공정성: 평가가 특정 결과를 내기 위해 불공정한 평가를 내리면 안된다.
  • 객관성: 주관적 판단을 최소화하고 객관적 자료를 근거로 삼아야한다.
  • ISO/ICE 9126 표준을 준수한다.

ISO/IEC 12119

ISO/IEC 12119 모델은 패키지 소프트웨어의 일반적인 제품 품질 요구사항 및 테스트를 위한 국제 표준 규격 모델입니다. 주로 기능성, 신뢰성, 사용성, 이식성 등을 평가합니다.

ISO/IEC 25000

여러 표준 규격에서 오는 혼란을 없애고자 일관성있고 통일되도록 여러 표준 문서를 통합한 모델입니다.

프로세스 품질 특성 평가 모델

프로세스 품질 특성 평가 모델은 소프트웨어 개발 과정에 대한 품질을 평가하는 모델입니다.

ISO 9000

ISO 9000은 품질 관리와 보증을 위한 모델입니다. 설계에서부터 생산 시설, 검사 등 전반적으로 규격 준수 여부를 확인하고 인증합니다. 즉, ISO 9000은 사용자에게 신뢰감을 주기 위한 모델입니다.

ISO 12207

ISO 12207 모델은 개발 생명주기 프로세스 표준을 위한 모델입니다. 기본 생명주기, 지원 생명주기, 조직 생명주기로 나뉘어져 있습니다.

CMMI

CMMI(Capability Maturity Model Integration)은 프로세스 능력을 평가하는 모델로 프로세스 표준화(표준 프로세스)의 기준과 방향을 제시합니다.

표준 프로세스
표준 프로세스는 음식 레시피처럼 준수하기만 하면 어느정도 성공한 소프트웨어를 제작할 수 있습니다. 생산성을 높여주는 역할을 합니다.

CMMI는 능력과 성숙도로 조직의 프로세스를 평가합니다.

성숙도는 5단계로 나뉘어집니다.

  1. 초기 단계: 프로세스 없음, 예측/통제 불가능
  2. 관리 단계: 규칙화된 프로세스, 기본적인 프로젝트 관리 체계 수립
  3. 정의 단계: 표준화된 프로세스, 조직 차원의 표준 프로세스를 통한 프로젝트 지원
  4. 정량적 관리 단계: 예측 가능한 프로세스, 정량적으로 프로세스가 측정/통제
  5. 최적화 단계: 지속적 개선 프로세스, 프로세스 개선 활동

그리고 4개의 카테고리로 구분된 25개의 프로세스 영역(PA)으로 구성됩니다.

SPICE

SPICE는 소프트웨어 프로세스 평가를 위한 프레임워크를 제공하며, 정보 시스템 분야에 특화된 품질 표준이자 인증 규격의 역할을 하고 있는 모델입니다.

SPICE 모델은 5개의 프로세스를 갖습니다.

프로세스설명
고객-공급개발 후 고객에게 전달하는 것을 지원하고, 정확한 사용법을 알리기 위한 프로세스
공학시스템과 제품의 명세, 구현, 유지보수의 프로세스
지원생명주기에서 다른 프로세스에 의해 이용되는 프로세스
관리프로젝트 관리자에 의해 사용되는 프로세스
조직조직의 업무 목적을 수립하고 목표를 달성하게 도움을 주는 프로세스

0개의 댓글