1.4 소프트웨어 공학 품질

  * 소프트웨어 공학의 목표?

  * 질 좋은 소프트웨어?
 – (예) 신발의 품질 요소(발이 편한지, 내구성이 있는지, 용도에 적합한지, 디자인이 마음에 드는지)

  * 소프트웨어 품질을 정의하기 어려운 이유?
 – 매우 많은 품질 요소들이 소프트웨어에 내포
 – 관련자에 따라 중요하게 생각하는 품질 요소가 다름

   1.4.1 소프트웨어 품질 관점

  * 고객
 – SW 구매, 주문 주체
 – 경제적 관점에서 평가

  * 사용자
 – 신뢰도 및 효율성
 – 배우고, 사용하기 쉽게

  * 개발자
 – 오류가 적은 SW
 – 문서화가 잘된 SW

  * 개발관리자
 – 매출이 증가하는 SW
 – 고개 지출 절약되는 SW

  * 소프트웨어 품질에 대한 관점
 – 발주자(최소 비용, 생산성, 융통성)
 – 사용자(효율성, 기능의 정확성, 이해 용이성, 사용 용이성, 일관된 통합)
 – 유지 보수자(신뢰성, 이식성, 재사용성, 유지 보수성, 상호 운용성)

   1.4.2 소프트웨어 품질 특성

 – 사용 용이성(usability), 효율성(efficiency), 신뢰성(reliability), 재사용성(reusability), 유지 보수성(maintainability)

  * 사용 용이성(usability)
 – 사용자가 소프트웨어를 사용하기 쉬운 성질
 – 초보자가 쉽게 배울 수 있는 특성
 – 전문가가 효율적으로 사용할 수 있는 특성
 – 오류를 쉽게 다룰 수 있는 특성

  * 효율성(efficiency)
 – 자원 사용이 적은 것
 – CPU시간, 메모리
 – 디스크 용량, 네트워크 대역

  * 신뢰성(reliability)
 – 결함이 적은 SW
 – 구현과 변경이 쉬운 설계
 – 고장 시 쉽게 복구 가능한 SW

  * 유지 보수성
 – 소프트웨어를 쉽게 변경할 수 있는 성질

  * 재사용성
 – SW 부품을 조금만 변경하여 다른 시스템에서 사용

 
   1.4.3 SW 품질 요소는 trade-off 관계

  * 효율성 <-> 이해 용이성
  * 신뢰성 <-> 효율성
  * 사용용이성 <-> 효율성

   1.4.4 좋은 엔지니어링 작업이란?

 – 품질 목표 설정
 – 시스템 디자인
 – 특정 디자인 요소의 최적화

    1.4.5 외부 품질 요소

  * 정확성(Correctness)
 – 기능적으로 맞게 동작, 표준에 적합
 – 요구 분석서의 기능과 일치하는지 점검

  * 신뢰성(Reliability)
 – 소프트웨어가 주어진 기간동안 제대로 작동할 확률
 – 오류에 비례
 – 정확성을 위한 필요조건

  * 강인성(Robustness)
 – 요구 명세에 표시하지 않은 상황(오류 입력)에서도 제대로 작동하는 성질

  * 성능(Performance)
 – 수행속도
 – 알고리즘의 시간 복잡도
 – 시뮬레이션, 스트레스 테스트

  * 사용 용이성(Usability)
 – 시스템을 친근하게 느낄 수 있는 성질
 – 사용 대상에 따라 달라질 수 있음
 – 사용자 인터페이스, Human factor

  * 유지 보수성(Maintainability)
 – 보수성 : 정해진 기간에 SW 결함을 해결할 수 있는 성질
 – 진화성 : 잠재적 발전 가능성

  * 재사용성(Reusability)
 – 소프트웨어 부품(라이브러리, 클래스 등)의 성질
 – 확장 가능성 : openness
 – 적응성 : adaptability
 – 이용 용이성 : closeness

   1.4.6 내부 품질 요소

 – 원시코드에 있는 주석의 분량
 – 종복 구조의 깊이로 측정되는 프로그램의 복잡성

Tags: ,

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.