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: Software Engineering, 소프트웨어 공학