소프트웨어 품질
은 다양한 곳에서 다양하게 정의하지만 대부분 요구분석명세서에 서술된 기능과 성능을 만족하는 것에 따라 결정된다고 공통적으로 말합니다. 즉, 결함 없이 요구사항대로 만들어진 소프트웨어는 품질이 좋다라고 할 수 있습니다.
소프트웨어 개발에는 여러 이해당사자들이 껴있습니다. 그리고 이들이 생각하는 품질의 기준 또한 다릅니다.
프로젝트 관리자 관점
관리자 입장에서는 계획된 비용과 기간 내에 개발이 완료되어 더 이상의 자원을 요구하지 않는 소프트웨어가 좋은 소프트웨어가 됩니다. 당연히 고객의 요구사항이 제대로 반영되었는지도 중요합니다.
개발자 관점
개발자 입장에서는 개발하기 쉽고 수정하기 쉬운 코드로 작성된 프로그램, 사전에 정의된 코딩 규약을 잘 지킨 소프트웨어가 좋은 소프트웨어입니다.
유지보수자 관점
유지보수자 입장에서는 코딩 규약이 잘 지켜지고 문서화가 잘 되어서 코드를 쉽게 파악할 수 있는 소프트웨어가 좋은 소프트웨어입니다.
구매자 관점
구매자 입장에서는 사용자 요구사항을 만족하면서 가격이 저렴한 소프트웨어가 좋은 소프트웨어입니다.
사용자 관점
사용자 입장에서는 사용하기 쉽고 편하며 다양한 기능을 제공하는 소프트웨어가 좋은 소프트웨어입니다.
대표적으로 사용되는 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
모델에서는 6가지 특성과 그 하위 특성으로 나뉩니다.
기능성은 의도했던 대로 정확하게 사용자의 요구를 만족하는 기능을 제공하는지를 나타냅니다.
하위 특성 | 설명 |
---|---|
적합성 | 규정된 작업과 사용자의 목적을 위한 기능들을 제공하는 능력 |
정확성 | 사용자가 요구하는 정밀도를 유지하거나 허용 범위 내의 결과를 유지하는 능력 |
상호운용성 | 특정한 시스템과 상호작용하는 능력 |
보안성 | 권한 유무를 구별해 접근을 제어하는 능력 |
준수성 | 기능성과 관련된 표준, 규약, 법례 등을 따르는 능력 |
신뢰성은 소프트웨어를 믿고 사용할 수 있는지를 나타냅니다.
하위 특성 | 설명 |
---|---|
성숙성 | 오류가 발생해 문제가 생길 경우 소프트웨어가 안전한지의 여부 |
결함 수용성 | 일부에서 고장이 발생해도 소프트웨어가 기능을 유지할 수 있는 정도의 능력 |
복구성 | 오류 수정 후 이전과 얼마나 동일하게 동작하는지에 대한 능력 |
준수성 | 신뢰성과 관련된 표준, 규약, 법례 등을 따르는 능력 |
사용성은 사용하기 편리한 정도를 나타냅니다.
하위 특성 | 설명 |
---|---|
이해성 | 사용할 때 사용법이 얼마나 이해하기 쉬운지에 대한 속성 |
학습성 | 일반적으로 생각하는 방식대로 사용할 수 있는지에 대한 속성 (일반적으로 생각하는 방식이 아니면 학습 과정이 필요하기 때문) |
운용성 | 사용자가 쉽게 운용하고 제어할 수 있는지에 대한 능력 |
친밀성 | 사용자에게 호감을 주는 능력 |
준수성 | 사용성과 관련된 표준, 규약, 법례 등을 따르는 능력 |
효율성은 작업 수행에서 자원을 얼마나 사용하는지를 나타냅니다.
하위 특성 | 설명 |
---|---|
시간 효율성 | 기능을 실행시킬때 얼마나 빨리 응답하는 지와 처리 시간이 얼마나 걸렸는지에 대한 능력 |
자원 효율성 | 기능에 사용된 자원이 얼마나 효율적으로 사용되었는지에 대한 능력 |
준수성 | 효율성과 관련된 표준, 규약, 법례 등을 따르는 능력 |
유지보수 용이성은 얼마나 쉽게 변경하고 변경 이후 얼마나 잘 작동하는 지를 나타냅니다.
하위 특성 | 설명 |
---|---|
분석성 | 결함이나 고장에 대해 그 원인에 대한 정보를 파악할 수 있는 능력 |
변경성 | 쉽게 변경할 수 있는 능력 |
안정성 | 변경으로인한 문제를 최소화하는 능력 |
테스트 용이성 | 쉽고 철처하게 테스트할 수 있는 능력 |
준수성 | 유지보수 용이성과 관련된 표준, 규약, 법례 등을 따르는 능력 |
이식성은 다른 환경으로 옮길 때 얼마나 잘 작동하는지를 나타냅니다.
하위 특성 | 설명 |
---|---|
적응성 | 작동하는 환경에서 정상적으로 잘 작동하는 능력 |
설치성 | 특정 환경에서 작동시킬수 있는 능력 |
대체성 | 동일 환경에서 동일 목적으로 다른 소프트웨어를 대신할 수 있는 능력 |
공존성 | 공통 자원을 공유하는 소프트웨어가 충돌없이 잘 운영되는 능력 |
준수성 | 이식성과 관련된 표준, 규약, 법례 등을 따르는 능력 |
ISO/IEC 14598
모델은 공급자와 구매자 사이에서 품질을 평가하기 위한 모델입니다.
특징은 다음과 같습니다.
ISO/IEC 12119
모델은 패키지 소프트웨어의 일반적인 제품 품질 요구사항 및 테스트를 위한 국제 표준 규격 모델입니다. 주로 기능성, 신뢰성, 사용성, 이식성 등을 평가합니다.
여러 표준 규격에서 오는 혼란을 없애고자 일관성있고 통일되도록 여러 표준 문서를 통합한 모델입니다.
프로세스 품질 특성 평가 모델
은 소프트웨어 개발 과정에 대한 품질을 평가하는 모델입니다.
ISO 9000
은 품질 관리와 보증을 위한 모델입니다. 설계에서부터 생산 시설, 검사 등 전반적으로 규격 준수 여부를 확인하고 인증합니다. 즉, ISO 9000
은 사용자에게 신뢰감을 주기 위한 모델입니다.
ISO 12207
모델은 개발 생명주기 프로세스 표준을 위한 모델입니다. 기본 생명주기, 지원 생명주기, 조직 생명주기로 나뉘어져 있습니다.
CMMI(Capability Maturity Model Integration)
은 프로세스 능력을 평가하는 모델로 프로세스 표준화(표준 프로세스)의 기준과 방향을 제시합니다.
표준 프로세스
표준 프로세스
는 음식 레시피처럼 준수하기만 하면 어느정도 성공한 소프트웨어를 제작할 수 있습니다. 생산성을 높여주는 역할을 합니다.
CMMI
는 능력과 성숙도로 조직의 프로세스를 평가합니다.
성숙도는 5단계로 나뉘어집니다.
그리고 4개의 카테고리로 구분된 25개의 프로세스 영역(PA)으로 구성됩니다.
SPICE
는 소프트웨어 프로세스 평가를 위한 프레임워크를 제공하며, 정보 시스템 분야에 특화된 품질 표준이자 인증 규격의 역할을 하고 있는 모델입니다.
SPICE
모델은 5개의 프로세스를 갖습니다.
프로세스 | 설명 |
---|---|
고객-공급 | 개발 후 고객에게 전달하는 것을 지원하고, 정확한 사용법을 알리기 위한 프로세스 |
공학 | 시스템과 제품의 명세, 구현, 유지보수의 프로세스 |
지원 | 생명주기에서 다른 프로세스에 의해 이용되는 프로세스 |
관리 | 프로젝트 관리자에 의해 사용되는 프로세스 |
조직 | 조직의 업무 목적을 수립하고 목표를 달성하게 도움을 주는 프로세스 |