
위의 그림은 소프트웨어 품질 생명주기를 나타낸 그림이다. 소프트웨어 제품 품질을 달성하기 위해 소프트웨어 제품을 평가하는 것은 소프트웨어 개발 생명주기의 한 과정이다. 소프트웨어 제품 품질은 내부 속성을 측정함으로써, 혹은 외부 속성에 의해 평가될 수 있으며, 그 목적은 특정한 사용용도에서 요구한 효과를 내도록 하는 것이다. 프로세스 품질 개선은 제품 품질의 개선을 가져오고, 제품 품질은 사용 품질의 개선을 가져온다. 그러므로, 프로세스를 평가하고 개선하는 것이 중요하다. 따라서, 적절한 품질 평가 프로세스는 개발 동안에 품질측정하는데 필요하다. ISO/IEC 9126의 이 부분은 품질과 관련된 문제점에 대한 점검표를 제시한다.

ISO/IEC 9126은 총 4개의 부분으로 나누어져 있으며 ISO/IEC 9126-1에서는 전체적인 S/W 품질평가에 대해서 설명하고 있고, ISO/IEC 9126-2에서는 S/W의 외부 품질에 대한 평가 메트릭을 제시하고 있다. ISO/IEC 9126-3의 내부 메트릭은 설계나 코딩 도중에 실행할 수 없는 S/W 제품에 대하여 적용할 수 있는 것으로 개발 단계에서 그 중간 제품에 대한 모의실험을 통해 추출 가능한 속성들을 측정하기 위한 것이다. 마지막으로, ISO/IEC 9126-4에서는 S/W를 사용한 결과의 관점에서 품질을 정의하는 사용 품질 메트릭을 정의하고 있다.[1]

품질특성의 메트릭 체계는 내부 메트릭과 외부 메트릭으로 구분된다. 내부 메트릭은 내부속성 측정시 사용된다. 설계나 코딩도중에 실행할 수 없는 소프트웨어 제품에 적용할 수 있다. 내부 메트릭은 사용자, 평가자, 시험자 및 개발자가 소프트웨어 제품 품질을 평가할 수 있도록 도와주며, 해당 소프트웨어 제품을 만들기 전에 미리 품질에 문제점들을 지적해 준다. 내부메트릭은 중간 제품이나 인도된 소프트웨어 제품의 정적인 성질을 분석함으로써 내부 속성을 측정하거나 외부 속성을 보여준다. 내부 메트릭의 측정은 예를들어, 원시코드 명령문, 제어 그래프 및 상태 전이 표현등에 나타나는 소프트웨어 구성 요소들의 개수나 빈도수를 사용한다. 내부 메트릭의 주된 목적은 요구된 외부 품질이 성취되었는가를 확인하는 것이 며 그 예는 ISO/IEC 9126-3에 나와 있다.[2]
외부 메트릭은 시스템 측정치에서 추출되는 소프트웨어 제품의 측정치를 위해 사용된다. 외부 메트릭은 사용자, 평가자, 시험자 및 개발자가 시험 수행이나 운영 중에 소프트웨어 제품 품질을 평가할 수 있도록 도와준다. 특정한 조직이나 기술적 환경에서 제품의 사용, 개발 및 관리와 관련된 기업 목적을 토대로 메트릭을 사용하여 평가 하는 것이 외부 메트릭이다. 이러한 외부 메트릭의 예는 ISO/IEC 9126-2에 나와있다.[3]
소프트웨어 품질 요구사항이 정의되면, 품질 요구사항을 표현하는 소프트웨어 품질 특성이나 부특성이 열거된다. 그 다음은, 그 소프트웨어가 사용자 요구를 만족하는 지를 확인하는 품질 기준을 정량화하기 위해 적절한 외부 메트릭 및 수용 가능한 범위가 명시된다. 그 다음은, 요구된 외부 품 질과 사용 품질이 성취될 수 있도록 계획하고, 개발 도중에 중간 제품에 그 품질을 구축할 수 있도록 소프트웨어에 대한 내부 품질 속성이 정의되고 명시된다. 내부 품질 특성의 정량화를 위해 적절한 내부 메트릭 및 수용 가능한 범위를 명시하여 개발 도중에 중간 제품이 내부 품질 명세를 만족하는 지를 검증하는 데 사용될 수 있도록 한다. 따라 목표하는 외부 메트릭과 밀접한 관계를 가지는 내부 메트릭의 사용을 권장하며, 외부 메트릭의 값을 예측하는 데도 사용할 수 있다[4].
사용 품질 메트릭은 제품이 사용될 경우에 정해진 목표를 달성하기 위하여 효율성, 생산성 및 만족도 측면에서 특정 사용자의 요구를 충족하는가를 측정한다. 사용품질을 평가하는 것은 특정 사용자 작업 시나리오 내용에서 소프트웨어 품질을 확인하는 것이다. 소프트웨어 자체의 성질보다는 소프트웨어를 사용한 결과의 관점에서 측정한다. 예를 들어, 최종사용자에 있어서 사용 품질은 기능성, 신뢰성, 사용성 및 효율성의 결과이지만, 소프트웨어 유지보수 담당자에 있어서 사용 품질은 유지보수성의 결과이다.[5]

ISO/IEC 9126-1은 품질 특성으로 주특성 6개와 부특성 27개로 나뉜다. 우선 주특성 중 Functionality (기능성)은 소프트웨어가 특정 조건에서 사용될 때, 명시된 요구와 내재된 요구를 만족하는 기능을 제공하는 소프트웨어 제품의 능력이다. 다른 특성들은 주로 소프트웨어가 언제, 그리고 어떻게 동작하는가에 초점을 맞추는 방면, 이 특성은 요구를 충족하기 위해서 소프트웨어가 무엇을 하는가에 주로 관심을 둔다. 이와 관련한 부특성은 Suitability (적합성), Accuricy (정확성), Interoperability (상호운영성), Security (보안성), Functionality compliance (준수성)로 5개의 부특성이 있다. Suitability (적합성)은 지정된 작업과 사용자 목적을 위한 적절한 기능들을 제공하는 능력이다. 이러한 적합성은 운영성에 영향을 준다. Accuricy (정확성)은 올바른 혹은 동의된 효능 결과를 제공할 수 있는 능력이다. Interoperability (상호운영성)은 하나 이상의 명세된 시스템과 상호 작용할 수 있는 능력이다. Security (보안성)은 권한이 없는 사람 혹은 시스템은 정보를 읽거나 변경하지 못하게 하도록 정보를 보호하는 능력이다. Functionality compliance (준수성)은 응용과 관련된 표준, 관례 또는 법적 규제 및 유사한 규정을 고수하는 능력이다[6].
다음, 주특성으로는 Reliability (신뢰성)는 명세된 조건에서 사용될 때, 성능 수준을 유지할 수 있는 소프트웨어 제품의 능력이다. 이와 관련한 부특성은 Maturity (성숙성), Faulty tolerance (오류 허용성), Recoverability (복구성), Reliability compliance (준수성)로 총 4가지의 부특성이 있다. Maturity(성숙성)은 소프트웨어 내의 결함으로 인한 고장을 피해 가는 능력이다. Faulty tolerance (오류 허용성)은 소프트웨어 결합이 발생했을 때 명세된 성능 수준을 유지할 수 있는 능력이다. Recoverability (복구성)은 고장 발생시 명세된 성능 수준을 재유지하고 직접적으로 영향받은 데이터를 복구하는 능력이다. Reliability compliance (준수성)은 신뢰성과 관련된 표준, 관례 또는 규제를 고수하는 소프트웨어 제품의 능력이다. [7]
세번째 주특성인 Usability (사용성)은 명시된 조건에서 사용될 경우, 사용자에 의해 이해되고, 학습되고, 사용되고 선호될 수 있는 제품의 능력이다. 이때, 사용자에는 소프트웨어 사용에 영향을 받거나 의존하는 운영자, 최종 사용자, 그리고 간접 사용자 등이 포함된다. 사용성은 사용 준비나 결과 평가 등 소프트웨어가 영향을 줄 수 있는 모든 사용자 환경에 대처해야 한다. Understandability (이해성), Learnability(학습성), Operablilt(운용성), Attractiveness(친밀성), Usability Compliance(준수성) 총 5개의 부특성이 있다. Understandability (이해성)은 특정 작업과 사용 조건에서 어떻게 사용될 수 있는지를 사용자가 이해할 수 있도록 하는 능력이다. 특히 소프트웨어 문서의 중요도가 높다. Learnability(학습성)은 사용자가 그 응용을 학습할 수 있도록 하는 능력이다. Operablilty(운용성)은 사용자가 소프트웨어 제품을 운영하고 제어할 수 있도록 하는 능력이다. 이때, 적합성, 변경성, 적응성, 설치성 등의 특징들은 운영성에 영향을 미칠 수 있다. Attractiveness(친밀성)은 사용자에 의해 선호되는 소프트웨어 제품의 능력이다. Usability Compliance(준수성)은 사용성과 관련된 표준, 관례, 유형 안내 및 규제를 고수하는 능력이다.[8]
네 번째 주특성인 Efficiency (효율성)은 명시된 조건에서 사용되는 자원의 양에 따라 요구된 성능을 제공하는 소프트웨어 제품의 능력을 의미한다. 이때, 자원은 다른 소프트웨어 제품, 하드웨어 장비, 재료(예, 인쇄 용지, 저장장치) 등을 포함하는 개념이다. Time behaviour (시간 반응성), Resource utilization (자원 활용성), Efficiency compliance (준수성)로 3가지의 부특성이 존재한다. Time behaviour (시간 반응성)은 명시된 조건에서 그 기능을 수행할 때 적절한 반응 및 처리시간과 처리율을 제공하는 능력이다. Resource utilization (자원 활용성)은 명시된 조건에서 그 기능을 수행할 때 적절한 양과 종류의 자원을 사용하는 능력이다. Efficiency compliance (준수성)은 효율성과 관련된 표준 및 관례를 고수하는 능력이다.[9]
다섯 번째 주특성인 Maintainability (유지보수성)는 추후에 소프트웨어 제품이 소프트웨어 제품을 변경할 수 잇는 능력을 의미하고, 변경에는 운영환경과 요구사항 및 기능적 사양에 따름 소프트웨어의 수정, 개선, 혹은 개작 등이 포함된다. Analysability (분석성), Changeability (변경성), Stability (안정성), Testability (시험성), Maninability compliace (준수성)로 총 5개의 부특성을 가지고 있다. Analysability (분석성)은 소프트웨어의 결함이나 고장의 원인 혹은 변경될 부분들의 식별에 대한 진단을 가능하게 하는 소프트웨어 제품의 능력이다. Changeability (변경성)은 변경 명세가 구현될 수 있도록 하는 능력이다. 소프트웨어가 최종 사용자에 의해 변경된다면 변경성은 운영성에 영향을 미칠 수 있다. Stability (안정성)은 소프트웨어가 변경으로 인한 예상치 않은 결과를 최소화하는 능력이다. Testability (시험성)은 변경된 소프트웨어가 확인될 수 있는 능력이다. Maninability compliace (준수성)은 유지보수성과 관련된 표준 및 관례를 고수하는 능력이다[10].
마지막 주특성으로 Portability (이식성)은 한 환경에서 다른 환경으로 전이될 수 있는 소프트웨어 제품의 능력이다. Adaptability (적응성), Installability (설치성), Co-existance (공존성), Replaceability (대체성), Portability compliace (준수성)로 5개의 부특성을 가진다. Adaptability (적응성)은 고려 대상인 소프트웨어에서 이 목적으로 제공되는 것 이외의 활동 혹은 수단을 적용하지 않고 다른 명세된 환경으로 변경될 수 있는 능력이다. 적응성은 내부 용량(예, 화면 영역, 테이블, 트랜잭션 크기, 보고서 형식 등)의 확장성을 포함한다. Installability (설치성)은 명세된 환경에 설치될 수 있는 소프트웨어 제품의 능력이다. Co-existance (공존성)은 공통 자원을 공유하는 공동환경에서 다른 독립적인 소프트웨어와 공존할 수 있는 능력이다. Replaceability (대체성)은 동일한 환경에서 동일한 목적으로 다른 지정된 소프트웨어 제품을 대신하여 사용될 수 있는 능력이다. 특히, 대체성은 사용자가 소프트웨어 제품을 새로운 버전으로 업그레이드할 때 중요하다. 대체성은 설치성과 적합성 두 가지 속성을 모두 포함한다.Portability compliace (준수성)은 이식성과 관련된 표준 및 관례를 고수하는 능력이다.[11]
| 주특성 | 주특성 내용 | 부특성 |
| Functionality 기능성 |
소프트웨어가 특정 조건에서 사용될 때, 명시된 요구와 내재된 요구를 만족하는 기능을 만족하는 기능을 제공하는 소프트웨어 제품의 능력 | 적합성 |
| 정확성 | ||
| 상호 운용성 | ||
| 보안성 | ||
| 준수성 | ||
| Reliability 신뢰성 |
소프트웨어가 규정된 조건에서 사용될 때 규정된 성능수준을 유지하거나 사용자로 하여금 오류를 방지할 수 있도록 하는 소프트웨어 제품의 능력 | 성숙성 |
| 오류허용성 | ||
| 복구성 | ||
| 준수성 | ||
| Usability 사용성 |
소프트웨어가 규정된 조건에서 사용될 때, 사용자에 의해 이해되고, 학습되며 선호될 수 있게 하는 소프트웨어 제품의능력 | 이해성 |
| 학습성 | ||
| 운용성 | ||
| 친밀성 | ||
| 준수성 | ||
| Efficiency 효율성 |
규정된 조건에서 사용되는 자원의 양에 따라 요구된 성능을 제공하는 소프트웨어 제품의 능력 | 시간행동 |
| 자원이용 | ||
| 준수성 | ||
| Maintainability 유지보수성 |
소프트웨어 제품을 변경할 수 잇는 능력, 변경에는 운영환경과 요구사항 및 기능적 사양에 따름 소프트웨어의 수정, 개선, 혹은 개작 등이 포함된다. | 분석성 |
| 변경성 | ||
| 안정성 | ||
| 시험성 | ||
| 준수성 | ||
| Portability 이식성 |
다양한 환경에서 운영될 수 있는 소프트웨어 제품의 능력 | 적응성 |
| 설치성 | ||
| 공존성 | ||
| 대체성 | ||
| 준수성 |
'Computer Science > Software Engineering' 카테고리의 다른 글
| TDD(Test-Driven-Development) 방법론이란? (0) | 2022.05.04 |
|---|---|
| MDE, MBD: Model-Based Development)의 사례 및 지원도구 (1) | 2021.12.26 |
| Cunit Test Code 작성하기 (0) | 2021.12.26 |
| C Unit Test Automation(Framework) - TDD (1) | 2021.12.26 |
| CMMI와 유사한 국내외 평가모델-SP인증 (1) | 2021.12.26 |