mjello 님의 개발 블로그

[소프트웨어 아키텍처 02] Quality Attributes/Quality 본문

소프트웨어 아키텍처 🗃️

[소프트웨어 아키텍처 02] Quality Attributes/Quality

mjello 2024. 11. 19. 15:00

*  최은미 교수님의 소프트웨어 아키텍처 수업을 듣고, 개발 시 참고하기위해 간단히 정리했습니다.

06 Quality Attribute

 

Quality Attribute 품질 특성

: 수치로 측정 가능하고 테스트 가능한 속성으로, 제품/서비스가 요구사항을 얼마나 충족시키는가 (능력)

 

 

Quality Attributes in Implementation (구현 시 품질 특성)

  • Interoperability (상호 운용성): 데이터 교환 및 접근성
  • Maintainability & Extensibility (유지보수성 및 확장성): 수정 및 확장 용이성
  • Testability (테스트 가능성): 테스트 케이스 수립 난이도
  • Portability (이식성): 플랫폼 독립성
  • Scalability (확장성): 규모 확장 대응 능력
  • Flexibility (유연성): 환경/문제에 맞게 수정 가능

Quality Attributes in Runtime (런타임 시 품질 특성)

  • Availability (가용성): 시스템 이용 가능성
  • Security (보안): 보안 능력
  • Performance (성능): 응답 시간, 자원 효율성
  • Usability (사용성): 사용자 만족도
  • Reliability (신뢰성): 신뢰성 및 복구 능력

Quality Attributes in Business Needs (비즈니스 요구에서의 품질 특성)

  • Time to Market (출시 시간): 제품 출시까지 소요 시간
  • Cost (비용): 시스템 구축 및 유지 비용
  • Lifetime (수명): 제품 사용 기간

Tradeoff Pairs (상충 관계)

  • Reliability (신뢰성) vs Performance (성능)
  • Scalability (확장성) vs Performance (성능)

 

 

 

07 Quality 

품질모델의 구조

  • Quality (품질)
  • Quality factor (사스템 외부, 관리자 중심)
  • Quality subfactor (시스템 내부, 구현자 중심)
  • Metric (평가자 중심)

 

Quality in Use 

  • Effectiveness
  • Productivity 생산성 (자원의 양 늘릴수 있게)
  • Safety
  • Satisfaction

 

 

품질 속성 분류 (ISO/IEC) 9126

 : 소프트웨어의 품질을 평가하는 국제 표준으로, 여러 품질 속성을 정의함.

 

Functionality (기능성): 소프트웨어가 요구된 기능을 제공하는 능력

  • Reliability (신뢰성): 소프트웨어가 일정 기간 동안 안정적으로 동작하는 능력
  • Suitability (적합성): 특정 작업을 처리하는 기능의 적합성
  • Accurateness (정밀성): 결과나 효과가 정확한지 여부
  • Interoperability (상호운용성): 다른 소프트웨어와 상호작용하는 능력
  • Compliance (준거성): 표준이나 규정을 준수하는 능력
  • Security (보안성): 불법적 접근을 방지하는 능력
  • Maturity (성숙도): 장애 빈도에 영향을 미치는 속성
  • Fault Tolerance (오류 허용성): 오류 발생 시에도 최소한의 기능을 제공하는 능력
  • Recoverability (회복성): 장애 후 복구하는 능력

Usability (사용성): 소프트웨어가 사용하기 쉬운지 평가

  • Understandability (이해성): 소프트웨어 개념을 쉽게 이해할 수 있는지 여부
  • Learnability (습득성): 사용 방법을 쉽게 배울 수 있는지 여부
  • Operability (운영성): 소프트웨어 운영에 필요한 노력

Efficiency (효율성): 적절한 자원을 소모하며 성능을 제공하는 능력

  • Time Behavior (실행 효율성): 적절한 응답 시간과 처리 시간 제공
  • Resource Behavior (자원 효율성): 자원 소모량에 대한 효율성

Maintainability (유지보수성): 소프트웨어를 쉽게 수정할 수 있는 능력

  • Analyzability (분석성): 문제 원인 분석과 수정 필요성 파악
  • Changeability (변경성): 수정에 필요한 노력
  • Stability (안정성): 수정으로 인해 예기치 않은 문제가 발생할 위험
  • Testability (시험성): 수정 후 검증에 필요한 노력

Portability (이식성): 다른 환경으로 소프트웨어를 쉽게 이식할 수 있는 능력

  • Adaptability (적응성): 환경 변화에 대한 소프트웨어의 적응력
  • Installability (설치성): 소프트웨어 설치에 필요한 노력
  • Conformance (일치성): 이식성과 관련된 표준 준수
  • Replaceability (대체성): 다른 소프트웨어로 대체 가능 여부
  • Functionality (기능성): 소프트웨어가 요구된 기능을 제공하는 능력

 

ISO/IEC 25010

: 더 구체적, 현업에서 사용함

(ISO/IEC) 9126 과 다른 부분만 서술

  • Functional Suitability (기능적 적합성): 요구 사항을 만족하는 기능 제공
    • Functional Completeness (기능적 완성도): 작업과 요구사항 처리의 완전성
    • Functional Correctness (기능적 정확성): 결과의 정확성
    • Functional Appropriateness (기능적 적절성): 목표를 효과적으로 수행하는지 여부
  • Performance Efficiency (성능 효율성): 자원 소모에 따른 성능
    • Time Behavior (시간 동작): 응답 및 처리 시간
    • Resource Utilization (자원 활용): 사용 자원량
    • Capacity (용량): 시스템의 최대 처리 한계
  • Compatibility (호환성): 다른 시스템과의 상호작용
    • Co-existence (공존성): 자원 공유 능력
    • Interoperability (상호 운용성): 정보 교환 능력
  • Usability (사용성): 사용자가 시스템을 쉽게 사용하고 목표를 달성하는 정도
    • Appropriateness (적절성): 사용자가 요구사항을 만족시키는지 인식하는 능력
    • Recognizability (인식성): 시스템을 쉽게 알아볼 수 있는 능력
    • Learnability (학습성): 시스템 사용 방법을 배우는 효율성
    • Operability (운용성): 시스템의 제어 및 작동 용이성
    • User Error Protection (사용자 오류 방지): 오류 방지 능력
    • User Interface Aesthetics (사용자 인터페이스 미학성): 쾌적한 사용자 경험 제공
    • Accessibility (접근성): 다양한 사용자 그룹의 접근성
  • Security (보안성): 데이터 보호 및 접근 제어
    • Confidentiality (기밀성): 무단 접근 방지
    • Integrity (무결성): 데이터 변경 방지
    • Non-repudiation (부인 방지): 행동 증명 가능성
    • Accountability (책임 추적성): 행동 추적 및 책임 할당 능력
    • Authenticity (인증성): 정체성 확인 능력