본문 바로가기
개발/요구공학

[요구공학] 소프트웨어 품질 속성과 품질 시나리오

by ▶ Carpe diem ◀ 2024. 3. 1.

품질 속성과 품질 시나리오가 무엇인지 알아보고자 합니다.

 

목차

    품질 속성과 품질 시나리오: 소프트웨어 개발의 길잡이

    품질 속성과 품질 시나리오의 중요성을 이해하고, 이를 소프트웨어 개발 과정에 어떻게 적용할 수 있는지 이야기해보고자 합니다.

    품질 속성이란 무엇인가?

    품질 속성은 소프트웨어 제품과 시스템의 중요한 특성을 나타내며, 이는 제품이나 시스템이 사용자의 요구사항과 기대를 충족시킬 수 있는 능력을 결정합니다. 이들은 소프트웨어의 기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성 등 다양한 측면을 포함하며, 각각은 제품이 특정 환경에서 얼마나 잘 수행되는지를 측정하는 데 사용됩니다. 품질 속성은 소프트웨어 개발의 모든 단계에서 고려되어야 하며, 이는 최종 제품의 성공에 결정적인 영향을 미칩니다.

     

    품질 속성의 중요성

    품질 속성의 중요성은 소프트웨어가 실제 세계의 복잡한 요구사항을 만족시키기 위해 다양한 환경과 사용자의 기대에 부응해야 한다는 데에 있습니다. 예를 들어, 보안은 금융 애플리케이션에서 매우 중요한 품질 속성이며, 사용성은 소비자 지향적 애플리케이션의 핵심 요소입니다. 따라서, 품질 속성은 개발 과정 초기부터 명확히 정의하고 관리해야 하는 핵심적인 요소입니다.

     

    소프트웨어 개발에서 품질 속성의 역할

    소프트웨어 개발에서 품질 속성의 역할은 다면적입니다. 설계 단계에서 품질 속성을 명확히 정의하고 이를 기반으로 시스템 아키텍처를 결정함으로써, 개발자들은 사용자의 기대를 충족시키는 소프트웨어를 개발할 수 있습니다. 또한, 품질 속성은 테스트 및 검증 과정에서 성능 기준으로 사용되어, 제품이 설계 목표를 달성했는지 평가하는 데 중요한 역할을 합니다. 이는 프로젝트의 목표가 명확하게 설정되고, 팀원 간의 의사소통이 원활해지며, 최종 제품의 품질이 보장될 수 있도록 합니다.

     

    ISO/IEC 25010을 통한 품질 속성 이해

    ISO/IEC 25010은 소프트웨어 및 시스템의 제품 품질과 사용 중 품질을 평가하기 위한 국제 표준으로, 소프트웨어 품질 속성을 이해하고 측정하는 데 중요한 기준을 제공합니다. 이 표준은 품질 속성을 '제품 품질(Product Quality)'과 '사용 품질(Quality in Use)'의 두 가지 주요 카테고리로 분류하며, 각 카테고리는 다시 여러 하위 특성으로 나뉩니다. 예를 들어, 제품 품질에는 기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성 등이 포함되며, 사용 품질에는 효과성, 효율성, 만족, 위험 자유, 적합성 등이 포함됩니다. ISO/IEC 25010을 통해 개발자와 프로젝트 관리자는 소프트웨어 개발 프로젝트의 품질 관리 목표를 명확히 설정하고, 이를 달성하기 위한 전략을 개발할 수 있습니다.

     

    ISO/IEC 25010 표준은 제품 품질을 8가지 주요 특성으로 분류하여, 소프트웨어 제품과 서비스의 품질을 평가하는 포괄적인 프레임워크를 제공합니다. 각 특성은 소프트웨어 개발과 평가 과정에서 중요한 측면들을 다루며, 아래에서 이들에 대한 자세한 설명을 제공합니다.

    소프트웨어 제품 품질 @ ISO/IEC 25010

     

    기능적 적합성(Functional Suitability)
    이 특성은 제품이나 시스템이 특정 조건에서 사용될 때 명시된 요구와 묵시적인 요구를 충족하는 기능을 제공하는 정도를 나타냅니다. 이 특성은 다음과 같은 하위 특성으로 구성됩니다.

    • 기능적 완전성(Functional completeness) - 기능 세트가 지정된 모든 작업과 사용자 목표를 포괄하는 정도입니다.
    • 기능적 정확성(Functional correctness) - 제품이나 시스템이 필요한 정밀도로 올바른 결과를 제공하는 정도입니다.
    • 기능적 적절성(Functional appropriateness) - 기능이 특정 작업 및 목표 달성을 촉진하는 정도입니다.

     

    성능 효율성(Performance efficiency)

    이 특성은 명시된 조건에서 사용된 리소스 양에 따른 성능을 나타냅니다. 이 특성은 다음과 같은 하위 특성으로 구성됩니다.

    • 시간 동작(Time behaviour) - 기능을 수행할 때 제품 또는 시스템의 응답 및 처리 시간과 처리 속도가 요구 사항을 충족하는 정도입니다.
    • 자원 활용도(Resource utilization) - 기능을 수행할 때 제품이나 시스템이 사용하는 자원의 양과 유형이 요구 사항을 충족하는 정도입니다.
    • 용량(Capacity) - 제품 또는 시스템 매개변수의 최대 한도가 요구 사항을 충족하는 정도입니다.

     

    호환성(Compatibility)

    제품, 시스템 또는 구성 요소가 다른 제품, 시스템 또는 구성 요소와 정보를 교환하거나 동일한 하드웨어 또는 소프트웨어 환경을 공유하면서 필요한 기능을 수행할 수 있는 정도입니다. 이 특성은 다음과 같은 하위 특성으로 구성됩니다.

    • 공존성(Co-existence) - 다른 제품에 해로운 영향을 주지 않고 다른 제품과 공통 환경 및 리소스를 공유하면서 제품이 필요한 기능을 효율적으로 수행할 수 있는 정도입니다.
    • 상호 운용성(Interoperability) - 둘 이상의 시스템, 제품 또는 구성 요소가 정보를 교환하고 교환된 정보를 사용할 수 있는 정도입니다.

     

    사용성(Usability)

    특정 사용자가 특정 사용 상황에서 효과성, 효율성 및 만족도를 바탕으로 특정 목표를 달성하기 위해 제품이나 시스템을 사용할 수 있는 정도입니다. 이 특성은 다음과 같은 하위 특성으로 구성됩니다.

    • 적절성 인식성(Appropriateness recognitionability) - 제품이나 시스템이 자신의 요구에 적합한지 사용자가 인식할 수 있는 정도입니다.
    • 학습성(Learnability) - 지정된 사용 상황에서 제품이나 시스템을 효과성, 효율성, 위험으로부터 자유롭고 만족스럽게 사용하는 방법을 학습한다는 특정 목표를 달성하기 위해 특정 사용자가 제품이나 시스템을 사용할 수 있는 정도입니다.
    • 운용성(Operability) - 제품이나 시스템이 쉽게 작동하고 제어할 수 있는 속성을 갖는 정도입니다.
    • 사용자 오류 보호(User error protection) - 시스템이 사용자를 오류로부터 보호하는 정도입니다.
    • 사용자 인터페이스 미학(User interface aesthetics) - 사용자 인터페이스가 사용자에게 즐겁고 만족스러운 상호 작용을 가능하게 하는 정도입니다.
    • 접근성(Accessibility) - 특정 사용 상황에서 특정 목표를 달성하기 위해 가장 광범위한 특성과 능력을 가진 사람들이 제품이나 시스템을 사용할 수 있는 정도입니다.

     

    신뢰성(Reliability)

    시스템, 제품 또는 구성 요소가 지정된 기간 동안 지정된 조건에서 지정된 기능을 수행하는 정도입니다. 이 특성은 다음과 같은 하위 특성으로 구성됩니다.

    • 성숙도(Maturity) - 시스템, 제품 또는 구성 요소가 정상 작동 시 신뢰성 요구 사항을 충족하는 정도입니다.
    • 가용성(Availability) - 시스템, 제품 또는 구성요소가 작동 가능하고 사용이 필요할 때 액세스할 수 있는 정도입니다.
    • 내결함성(Fault tolerance) - 하드웨어 또는 소프트웨어 결함이 있음에도 불구하고 시스템, 제품 또는 구성 요소가 의도한 대로 작동하는 정도입니다.
    • 복구 가능성(Recoverability) - 중단이나 오류가 발생하는 경우 제품이나 시스템이 직접적으로 영향을 받은 데이터를 복구하고 시스템의 원하는 상태를 다시 설정할 수 있는 정도입니다.

     

    보안(Security)

    제품이나 시스템이 정보와 데이터를 보호하여 사람이나 다른 제품이나 시스템이 해당 유형과 권한 수준에 적합한 데이터 액세스 수준을 갖도록 하는 정도입니다. 이 특성은 다음과 같은 하위 특성으로 구성됩니다.

    • 기밀성(Confidentiality) - 제품 또는 시스템이 액세스 권한이 있는 사람만 데이터에 액세스할 수 있도록 보장하는 정도입니다.
    • 무결성(Integrity) - 시스템, 제품 또는 구성 요소가 컴퓨터 프로그램이나 데이터에 대한 무단 액세스 또는 수정을 방지하는 정도입니다.
    • 부인 방지(Non-repudiation) - 나중에 해당 사건이나 행위를 부인할 수 없도록 행위나 사건이 발생한 것으로 입증될 수 있는 정도입니다.
    • 책임성(Accountability) - 엔터티의 활동이 해당 엔터티에 대해 고유하게 추적될 수 있는 정도입니다.
    • 진정성(Authenticity) - 주제나 자원의 정체성이 주장된 것임을 입증할 수 있는 정도입니다.

     

    유지 관리성(Maintainability)

    이 특성은 제품이나 시스템을 수정하여 환경과 요구 사항의 변화에 ​​맞춰 개선, 수정 또는 적응할 수 있는 효과성과 효율성의 정도를 나타냅니다. 이 특성은 다음과 같은 하위 특성으로 구성됩니다.

    • 모듈성(Modularity) - 시스템 또는 컴퓨터 프로그램이 개별 구성 요소로 구성되어 한 구성 요소의 변경이 다른 구성 요소에 최소한의 영향을 미치는 정도입니다.
    • 재사용성(Reusability) - 자산을 둘 이상의 시스템에서 사용하거나 다른 자산을 구축하는 데 사용할 수 있는 정도입니다.
    • 분석 가능성(Analysability) - 하나 이상의 부품에 대한 의도된 변경이 제품이나 시스템에 미치는 영향을 평가하거나, 제품의 결함이나 실패 원인을 진단하거나, 부품을 식별할 수 있는 효과성과 효율성의 정도입니다. 수정될 수 있습니다.
    • 수정 가능성(Modifiability) - 결함을 유발하거나 기존 제품 품질을 저하시키지 않고 제품이나 시스템을 효과적이고 효율적으로 수정할 수 있는 정도입니다.
    • 테스트 가능성(Testability) - 시스템, 제품 또는 구성 요소에 대해 테스트 기준을 설정할 수 있고 해당 기준이 충족되었는지 확인하기 위해 테스트를 수행할 수 있는 효과성과 효율성의 정도입니다.

     

    이식성(Portability)
    시스템, 제품 또는 구성요소가 하나의 하드웨어, 소프트웨어 또는 기타 운영 또는 사용 환경에서 다른 환경으로 이전될 수 있는 효과 및 효율성의 정도입니다. 이 특성은 다음과 같은 하위 특성으로 구성됩니다.

    • 적응성(Adaptability) - 제품이나 시스템이 다르거나 진화하는 하드웨어, 소프트웨어 또는 기타 운영 또는 사용 환경에 효과적이고 효율적으로 적응할 수 있는 정도입니다.
    • 설치 가능성(Installability) - 지정된 환경에서 제품이나 시스템을 성공적으로 설치 또는 제거할 수 있는 효과성과 효율성의 정도입니다.
    • 교체성(Replaceability) - 제품이 동일한 환경에서 동일한 목적을 위해 지정된 다른 소프트웨어 제품을 교체할 수 있는 정도입니다.

     

    품질 시나리오의 기초

    품질 시나리오는 소프트웨어 개발 프로젝트에서 품질 요구사항을 명확하게 정의하고, 이를 충족시키기 위한 설계 및 구현 전략을 수립하는 데 필수적인 도구입니다. 이는 개발 과정을 통해 품질 목표를 지속적으로 추적하고, 최종 제품이 사용자의 기대와 요구사항을 만족시킬 수 있도록 보장하는 데 중요한 역할을 합니다.

    품질 시나리오란 무엇인가?

    품질 시나리오는 소프트웨어 개발 과정에서 품질 요구사항을 구체적이고 측정 가능한 방식으로 표현하는 도구입니다. 이는 특정 품질 속성에 대한 시스템의 반응을 설명하는 시나리오 형태로, 소프트웨어의 성능, 신뢰성, 보안 등 다양한 품질 측면을 명확하게 정의하고 예측할 수 있게 합니다. 품질 시나리오는 이러한 품질 속성이 실제 운영 환경에서 어떻게 행동해야 하는지에 대한 상세한 정보를 제공함으로써, 개발자와 이해관계자 모두에게 중요한 지침을 제공합니다.

     

    품질 시나리오의 구성 요소

    품질 시나리오는 일반적으로 다음과 같은 주요 구성 요소로 이루어집니다.

    Quality Attribute Scenarios @ UNB
    Quality Attribute Scenarios @ UNB

     

    • 소스(Source): 시나리오를 유발하는 주체나 이벤트입니다. 이는 사용자, 시스템 내부 프로세스 또는 외부 시스템일 수 있습니다.
    • 자극(Stimulus): 시스템에 영향을 주는 구체적인 행동이나 이벤트입니다. 예를 들어, 시스템에 대한 공격 시도, 과도한 사용자 요청 등이 이에 해당합니다.
    • 환경(Environment): 자극이 발생하는 시스템의 상태나 조건입니다. 이는 시스템이 정상 작동 중인지, 오류 상태인지 등을 포함할 수 있습니다.
    • 자극에 대한 반응(Response): 시스템이 자극에 어떻게 반응해야 하는지에 대한 설명입니다. 이는 오류를 복구하는 방법, 요청을 처리하는 속도 등을 명시할 수 있습니다.
    • 반응 측정(Response Measure): 시스템의 반응을 측정하는 방법입니다. 이는 반응 시간, 처리량, 복구 시간 등 구체적인 지표로 표현됩니다.

     

     

    품질 시나리오 작성의 중요성

    품질 시나리오 작성의 중요성은 소프트웨어 개발 과정에서 다음과 같은 여러 가지 이유로 나타납니다.

    • 명확한 품질 목표 설정: 품질 시나리오는 개발 팀과 이해관계자들이 명확하게 품질 목표를 이해하고 공유할 수 있게 합니다. 이는 모든 팀원이 동일한 목표를 향해 노력하게 만듭니다.
    • 측정 가능한 요구사항: 품질 시나리오는 추상적인 품질 요구사항을 구체적이고 측정 가능한 목표로 변환합니다. 이는 프로젝트의 성공 기준을 명확히 하고, 개발 과정에서 이를 지속적으로 추적할 수 있게 합니다.
    • 설계 및 아키텍처 결정 지원: 초기 개발 단계에서 품질 시나리오를 고려함으로써, 개발자들은 품질 요구사항을 충족시키는 설계와 아키텍처를 선택할 수 있습니다. 이는 나중에 비용이 많이 드는 수정을 줄일 수 있게 합니다.
    • 테스트 및 검증: 품질 시나리오는 테스트 계획을 수립하고, 시스템이 실제 운영 환경에서 예상대로 작동하는지 검증하는 데 필수적입니다. 이는 품질 보증의 핵심 요소입니다.

     

     

    품질 속성과 품질 시나리오의 상호 작용

    품질 속성과 품질 시나리오는 소프트웨어 개발, 특히 아키텍처 설계 과정에서 서로 밀접하게 상호 작용합니다. 이 상호 작용은 소프트웨어가 사용자의 기대와 요구를 충족시킬 수 있는지 여부를 결정하는 핵심적인 요소입니다. 이 글에서는 품질 속성을 통한 품질 시나리오의 구체화, 소프트웨어 아키텍처 설계에 있어 품질 시나리오의 역할, 그리고 실제 사례를 통해 이러한 개념들이 어떻게 설계 결정에 영향을 미치는지를 살펴보겠습니다.

     

    품질 속성을 통한 품질 시나리오의 구체화

    품질 속성은 소프트웨어 제품의 특정 측면이나 성능 기준을 나타냅니다. 이러한 속성들은 보안, 신뢰성, 사용성 등과 같은 다양한 품질 요소를 포함합니다. 각 품질 속성은 소프트웨어가 특정 조건하에서 어떻게 수행되어야 하는지에 대한 기대치를 설정합니다. 이때 품질 시나리오는 이러한 기대치를 구체적이고 측정 가능한 조건과 결과로 전환하여, 실제 설계와 구현 과정에서 이를 어떻게 달성할 것인지에 대한 방향을 제시합니다.

     

    소프트웨어 아키텍처 설계에 있어 품질 시나리오의 역할

    소프트웨어 아키텍처 설계는 제품의 기능적 요구사항뿐만 아니라 비기능적 요구사항인 품질 속성을 충족시키기 위한 구조를 개발하는 과정입니다. 품질 시나리오는 이 과정에서 핵심적인 역할을 하며, 특정 품질 속성이 설계 내에서 어떻게 실현될지에 대한 명확한 가이드라인을 제공합니다. 예를 들어, 시스템의 성능 향상을 목표로 할 때, 품질 시나리오는 요청 처리 시간, 시스템 대기 시간 등 성능과 관련된 구체적인 목표를 설정하고, 이를 달성하기 위한 아키텍처 전략을 수립하는 데 도움을 줍니다.

     

    사례 연구: 품질 속성과 품질 시나리오를 통한 설계 결정

    실제 사례로, 온라인 쇼핑 플랫폼 개발 프로젝트를 들 수 있습니다. 이 프로젝트에서는 사용자의 증가하는 요구를 충족시키기 위해 성능과 확장성이 중요한 품질 속성으로 간주되었습니다. 품질 시나리오는 특정 사용자 수를 지원하는 동안 페이지 로딩 시간을 2초 이내로 유지하는 것과 같은 구체적인 목표를 설정했습니다. 

     

    이 내용을 위에서 배운 품질 시나리오의 구성요소에 맞춰 작성해보면 아래와 같이 작성할 수 있습니다.

     

    온라인 쇼핑 플랫폼의 성능 및 확장성

    • 소스(Source): 온라인 쇼핑 플랫폼의 사용자 또는 시스템 자동화된 요청.
    • 자극(Stimulus): 사용자가 웹사이트에 접근하여 페이지를 요청함.
    • 환경(Environment): 동시에 수천 명의 사용자가 시스템을 사용 중임.
    • 자극에 대한 반응(Response): 시스템은 사용자의 페이지 요청을 2초 이내에 처리하여 응답함.
    • 반응 측정(Response Measure): 페이지 로딩 시간 ≤ 2초. (시스템은 특정 시간 동안 평균적으로 99% 이상의 요청을 2초 이내에 처리해야 함.)

    온라인 쇼핑 플랫폼과 같은 대규모 사용자를 대상으로 하는 시스템에서 성능과 확장성은 중대한 고려 사항임을 알 수 있습니다. 개발 팀은 분산 시스템 아키텍처, 캐싱 전략, 데이터베이스 최적화 등의 방법을 선택하여 이러한 품질 목표를 달성할 수 있는 설계 결정을 내릴 수 있습니다.

     

    이 사례에서 볼 수 있듯이, 품질 속성과 품질 시나리오는 개발 과정에서 중요한 결정을 내리는 데 있어 중심적인 역할을 합니다. 품질 시나리오는 개발자들이 품질 속성을 실제 설계와 구현 전략으로 전환할 수 있게 하며, 이를 통해 최종 제품이 사용자의 기대를 충족시키고 비즈니스 목표를 달성할 수 있도록 보장합니다.



    마무리

    품질 속성과 품질 시나리오는 소프트웨어 개발 프로젝트의 성공을 위한 핵심 요소입니다. 이들은 소프트웨어 제품이 사용자의 요구와 기대를 충족시키는지 평가하는 데 필수적인 기준을 제공합니다. 품질 속성은 소프트웨어의 기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성 등 다양한 측면을 평가하는 데 사용되며, 품질 시나리오는 이러한 속성들이 실제 운영 환경에서 어떻게 수행되어야 하는지에 대한 구체적인 사례를 제시합니다. 이러한 평가 도구들을 통해 개발자들은 사용자의 요구를 정확하게 이해하고, 이를 만족시키는 소프트웨어를 설계하고 구현할 수 있습니다.

     

    지속 가능한 소프트웨어 개발을 위한 권장 사항

    품질 속성과 품질 시나리오의 중요성을 재강조하며, 지속 가능한 소프트웨어 개발을 위한 몇 가지 권장 사항을 제시하고자 합니다.

     

    1. 사용자 중심의 설계 접근 방식 채택

    소프트웨어 개발 초기 단계부터 사용자의 요구와 기대를 중심에 두어야 합니다. 사용자의 요구사항을 정확히 파악하고, 이를 충족시키기 위한 품질 속성을 명확히 정의하며, 이에 따른 품질 시나리오를 작성하는 것이 중요합니다. 사용자 중심의 설계 접근 방식은 최종 제품의 사용성과 만족도를 높이는 데 기여합니다.

     

    2. 품질 속성을 개발 과정 전반에 걸쳐 통합

    품질 속성은 소프트웨어의 설계, 구현, 테스트 단계에서 모두 고려되어야 합니다. 각 개발 단계에서 품질 속성을 통합하고, 이를 바탕으로 품질 시나리오를 검토하며, 필요한 조정을 진행하는 것이 중요합니다. 이는 소프트웨어가 전체 개발 과정에서 일관된 품질 기준을 유지하도록 보장합니다.

     

    3. 지속적인 품질 평가 및 개선

    소프트웨어 개발은 반복적이고 지속적인 개선 과정입니다. 개발 과정에서 정기적으로 품질 속성과 품질 시나리오를 평가하고, 피드백을 수집하여 개선 사항을 식별하는 것이 필요합니다. 지속적인 품질 평가는 소프트웨어가 변화하는 사용자 요구와 기술 환경에 적응할 수 있도록 합니다.

     

    4. 이해관계자와의 효과적인 의사소통

    소프트웨어 개발은 다양한 이해관계자의 협력을 필요로 합니다. 품질 속성과 품질 시나리오에 대한 명확한 의사소통은 이해관계자 간의 오해를 줄이고, 공통의 목표를 향해 협력할 수 있는 기반을 마련합니다. 의사소통을 통해 품질 기준에 대한 공감대를 형성하고, 프로젝트의 성공적인 완수를 위한 합의를 도출할 수 있습니다.

     

    품질 속성과 품질 시나리오는 소프트웨어 개발 프로젝트의 성공에 있어 중심적인 역할을 합니다. 사용자의 요구를 충족시키고, 고품질의 소프트웨어 제품을 제공하기 위해, 이들을 개발 과정 전반에 걸쳐 체계적으로 통합하고 관리하는 것이 중요합니다. 지속 가능한 소프트웨어 개발을 위해서는 사용자 중심의 설계, 지속적인 품질 평가, 이해관계자와의 효과적인 의사소통이 필수적입니다.