Study_Note

maintainability test 본문

CSTS

maintainability test

12월7일생 2024. 8. 26. 15:20
728x90
반응형

유지보수성 테스트(maintainability test)

유지보수성 테스트는 시스템이 변경 요구를 얼마나 잘 수용할 수 있는지를 평가하는 과정입니다. 소프트웨어는 사용 중 반드시 변경 요구가 발생하게 되며, 유지보수성은 이러한 요구를 효율적으로 만족시키는 능력을 의미합니다. 유지보수성 테스트는 이 능력을 검증하기 위한 테스트입니다. 일반적으로 시스템 변경 요구는 다음과 같은 경우에 발생합니다.

  • 기능 개선 및 추가 : 기존 기능을 개선하거나 새로운 기능을 추가하기 위한 작업으로, 전체 시스템 변경 작업 중 약 50%를 차지합니다.
  • 변경된 환경에 적응 : 운영체제, 인프라, 기타 환경 변화에 맞춰 시스템을 수정하는 작업으로, 약 25%의 비중을 차지합니다.
  • 오류 수정 : 발견된 소프트웨어 오류를 수정하는 작업으로, 약 20%를 차지합니다.
  • 예상치 못한 장애 예방 : 장애 발생을 사전에 방지하기 위해 코드와 문서를 재구성하거나 갱신하는 작업으로, 약 5%를 차지합니다.

유지보수성 테스트는 시스템이 얼마나 쉽게 변경될 수 있는지를 평가하기 때문에 주로 정적 테스트가 사용됩니다. 다만, 특정 요구사항이 시간이나 비용과 관련된 경우에는 동적 테스트를 통해 실제 유지보수 절차가 얼마나 효과적으로 수행되는지를 검증할 수도 있습니다.

ISO 25010은 유지보수성을 다음 다섯 가지 요소로 구분합니다.

  • 모듈성
  • 분석성
  • 재사용성
  • 변경 용이성
  • 테스트 용이성
 

ISO/IEC 25010

ISO/IEC 25010ISO/IEC 25010은 소프트웨어 제품 품질 모델 및 품질 측정에 관한 국제 표준입니다. 이 표준은 ISO/IEC 25000 계열(일명 SQuaRE 시리즈)의 일부로, 소프트웨어 제품 품질 평가를

staedtler1207.tistory.com

 

모듈성, 분석성, 재사용성, 변경 용이성은 공통 특성이 많아 한 번에 다룰 수 있지만, 테스트 용이성은 다른 특성을 지니므로 별도로 다룹니다.

모듈성, 분석성, 재사용성, 변경 용이성을 테스트하기 위해서는 다음 특성들을 검토해야 합니다:

  • 모듈화 정도
  • 모듈 간 결합도
  • 모듈 응집도
  • 모듈 복잡도

모듈화는 시스템을 여러 부분으로 나누어 각 부분이 독립적으로 잘 동작하게 설계하는 기법입니다. 이를 측정하는 척도로는 fan-infan-out이 있습니다. fan-in은 특정 모듈을 호출하는 모듈의 수를, fan-out은 특정 모듈이 호출하는 모듈의 수를 나타냅니다.

 

fan-in & fan-out

"Fan-in"과 "Fan-out"은 시스템 설계와 네트워크, 소프트웨어 아키텍처에서 중요한 개념으로, 데이터 흐름과 의존성을 설명하는 데 사용됩니다. 예시를 통해 설명해드리겠습니다.Fan-in Fan-in은 여러

staedtler1207.tistory.com

모듈 간 결합도는 낮아야 합니다. 결합도가 높으면 한 모듈이 변경될 때 다른 모듈에 영향을 미칠 가능성이 커집니다. 따라서 가능한 한 잘 정의된 인터페이스를 통해 모듈 간 상호작용을 수행하고, 공통 자료 영역이나 실행 흐름 제어 요소를 통한 상호작용은 피해야 합니다.

모듈 응집도는 모듈 내 요소들이 얼마나 긴밀하게 관련되어 있는지를 나타내며, 응집도가 높을수록 좋습니다. 응집도가 높은 모듈은 다른 모듈과의 의존성이 낮고, 재사용성과 변경 용이성이 뛰어나며, 오류를 국부적으로 처리할 수 있습니다.

객체지향 프로그램에서 클래스의 응집도를 측정하는 대표적 척도 중 하나는 LCOM(Lack of Cohesion in Methods)입니다. LCOM4는 클래스 내 메소드들이 동일한 필드에 접근하거나 서로 호출 관계에 있으면 연관이 있다고 보고, 이 경우 클래스를 하나의 책임으로 설계되었다고 판단합니다. 반대로 연관되지 않은 메소드가 많으면 클래스를 분할할 필요가 있습니다.

 

LCOM(lack of cohesion of methods)

LCOM(Lack of Cohesion of Methods)에는 여러 가지 종류가 있으며, 각 종류는 클래스 내의 응집도를 측정하는 방법이 다릅니다. 주요 LCOM 종류는 다음과 같습니다: LCOM1 (Henderson-Sellers 방식)

staedtler1207.tistory.com

 

모듈의 복잡도는 유지보수성에 영향을 미치며, 이를 측정하는 대표적인 척도 중 하나는 순환 복잡도이다. RIAC에서 발표한 연구에 따르면, 순환 복잡도가 75 이상 이면 결함을 수정하는 과정에서 새로운 결함이 발생할 가능성이 매우 높다. 따라서 정적 분석을 통해 순환 복잡도가 높은 모듈을 식별한 후, 리팩토링 및 재구성을 통해 복잡도를 낮춰야 한다.

 

cyclomatic complexity

순환 복잡도(Cyclomatic Complexity)코드의 복잡도를 측정하는 지표로, 프로그램의 논리적 복잡성을 나타냅니다. 주로 소프트웨어 테스트와 유지보수 측면에서 중요한 개념입니다.  구체적으로, 순

staedtler1207.tistory.com

 

RIAC(reliability information analysis center)

RIAC(Reliability Information Analysis Center)은 신뢰성, 유지보수성, 지원성(RAMS: Reliability, Availability, Maintainability, and Supportability) 및 품질(Quality) 분야에서 종합적인 정보를 제공하고 기술 지

staedtler1207.tistory.com

 

테스트 용이성은 프로그램을 쉽게 테스트할 수 있도록 하는 다양한 특성을 포함합니다.

  • 제어 용이성 : 프로그램의 실행을 쉽게 제어할 수 있도록 설계하여, 테스트 자동화와 최적화를 지원합니다.
  • 관찰 가능성 : 프로그램의 내부 상태를 쉽게 파악할 수 있도록 설계하여, 현재 상태를 명확히 이해할 수 있게 합니다.
  • 단순성 : 시스템 구조를 간단하게 설계하고, 코딩 표준을 준수하여 코드를 이해하기 쉽게 하며, 구조적 단순화를 통해 결함 전이를 최소화합니다.
  • 분할 용이성 : 문제 발생 시 모듈을 독립적으로 테스트할 수 있도록 시스템 모듈 간의 의존성을 줄여 설계합니다.
  • 운영 용이성 : 결함 발생 시에도 테스트 작업을 지속할 수 있도록 프로그램을 설계합니다.
  • 안정성 : 테스트하는 동안 소프트웨어의 변경을 최소화하여 안정적인 테스트 환경을 유지합니다.
  • 이해 용이성 : 소프트웨어 설계 정보를 잘 조직화하여 쉽게 접근하고 이해할 수 있도록 합니다.



'CSTS' 카테고리의 다른 글

risk-based testing (RBT)  (0) 2024.08.29
portability test  (1) 2024.08.27
security test  (0) 2024.08.13
reliability test  (0) 2024.08.12
usability test  (0) 2024.08.09