2009. 1. 5. 15:35

[소프트웨어공학]소프트웨어 품질의 특성

소프트웨어는 외적인 품질 특성과 내적인 품질 특성을 모두 갖고 있다. 외적인 특성들은 소프트웨어 제품의 사용자가 느끼는 다음과 같은 특성들이다.


* 정확성(correctness): 시스템의 사양과 설계, 구현에 있어서 오류가 없는 정도

* 유용성(usability): 사용자가 시스템을 배우고 사용하는 데 있어서의 용이함

* 효율성(efficiency): 메모리와 실행 시간 같은 시스템 리소스의 최소 사용

* 신뢰성(reliability): 정해진 상황에서 언제든지 필요한 기능을 수행할 수 있는 시스템의 능력 - 고장 사이의 시간

* 무결성(integrity): 시스템이 프로그램이나 데이터에 대한 허용되지 않거나 잘못된 접근을 막는 정도. 무결성의 기본 개념에는 데이터의 적절한 접근을 보장할 뿐만 아니라 권한이 없는 사용자의 접근 제한 기능이 포한된다. 즉, 병렬 데이터를 갖는 데이블은 병렬로 변경되고 날짜 필드는 타당한 날짜만을 포함하는 식이다.

* 적응성(adaptablility): 시스템을 변경하지 않고 설계된 환경에서 뿐만 아니라 다른 응용 분야나 환경에서도 사용될 수 있는 정도

* 정밀성(accuracy): 구성된 시스템에 오류가 없는 정도. 특히 대량의 데이터를 고려한다. 정밀성은 정확성과 다르다. 정밀성은 시스템이 정확하게 구성되었는지가 아닌 시스템이 용도대로 얼마나 잘 수행하는지를 결정한다.

* 견고성(robustness): 시스템이 잘못된 입력이나 악조건에서도 기능을 계속해서 수행할 수 있는 정도

 

몇몇 특성들은 그 의미가 겹치기도 하지만 모든 특성들은 어떤 상황에서 다른 특성들에 비해 더 잘 적용되거나 적용되지 않는 식의 차이점을 갖는다.

 

품질의 외적인 특성들은 사용자가 관심을 갖는 유일한 소프트웨어 특성이다. 사용자들은 소프트웨어를 변경하기 쉬운지가 아니라 소프트웨어가 사용하기 쉬운지에 관심을 갖는다. 그리고 코드가 읽기 쉬운지나 구조가 좋은지가 아니라 정확하게 작동하는지에 관심을 갖는다.

 

프로그래머는 외적인 특성뿐만 아니라 내적인 특성들에도 관심을 갖는다. 다음은 프로그램의 내적인 특성들이다.

 

* 유지 보수성(maintainability): 소프트웨어 시스템의 기능을 변경하거나 기능을 추가하거나 성능을 향상시커거나 결함을 수정하기 위해서 시스템을 변경할 때의 편의성

* 유연성(flexibility): 시스템이 설계된 환경이 아닌 다른 목적이나 환경으로 변경할 수 있는 정도

* 이식성(portability): 시스템이 설계된 환경이 아닌 다른 환경에서 작동할 수 있도록 시스템을 변경할 때의 편의성

* 재사용성(reusability): 시스템의 일부분을 다른 시스템에서 사용할 수 있는 정도나 편의성

* 가독성(readability): 시스템의 소스 코드를 상세한 명령문 수준에서 읽고 이해할 때의 편의성

* 테스트 용이성(testability): 시스템을 단위 테스트하거나 시스템 테스트를 할 수 있는 정도. 시스템이 요구 사항들을 충족할 수 있는지 검증할 수 있는지에 대한 정도

* 이해성(understandability): 시스템의 구성과 코드 수준에서 시스템을 이해할 때의 편의성. 이해성은 가독성보다 더 일반적인 수준에서 시스템의 일관성(coherence)과 관련되어 있다.

 

- 출처: CODE COMPLETE 2nd edition page 646 ~ 648