개발생명주기단계별/유지보수_회귀 테스팅

기본개념정리 - 소프트웨어 유지보수에서 프로그램 슬라이싱

grapevine9700 2019. 8. 21. 06:30
반응형

예상치 못한 연결(Unexpected linkages)

  • 소스 코드 상의 작은 변경이 예상치 못한 다른 부분에 연결되어 문제를 초래하는 일이 자주 발생(, 수정된 변수의 값이 프로그램의 다른 장소에서 사용되고 있었음)
  • 유지보수가 어려운 이유 중 하나로 코드 변경이 코드의 다른 부분에 영향을 미치지 않는다고 단정하는 것이 쉽지 않다는 점을 들 수 있다.


프로그램 슬라이싱(Program slicing)

  • Weiser에 의해 제안된 기법으로 프로그래머가 낯선 프로그램을 이해하고 디버깅하는데 도움을 준다.
  • 프로그램 슬라이싱은 프로그램 동작(behavior)을 관심 있는 특정 부분으로 제한하는 기법이다.
  • 슬라이싱 정의: 프로그램 P의 슬라이스 S(v,n)는 특정 시점에 변수 v의 값에 영향을 줄 수 있는 모든 프로그램 문장들(statements)로 구성됨. 이러한 슬라이스는 C=(x,V)라고 표현되는 슬라이싱 기준(a slicing criterion)에 의해 결정되는데, 여기서 x는 프로그램 P의 문장을 나타내고 V는 프로그램 P의 변수(또는 변수들의 집합)을 나타낸다. 아래 표는 슬라이싱 기준이 (write(sum),{sum}) 일 때의 슬라이싱의 예를 보여준다.
  • 소스 프로그램의 데이터 플로우 및 컨트롤 플로우를 분석하여 자동으로 슬라이스를 계산하는 것이 가능하며, 프로그램 슬라이스 각각이 실행 가능한 프로그램(an executable program)이다.

프로그램 P

슬라이스 S

int i;

int sum = 0;

int product = 1;

for(i = 0; i < N; ++i) {

  sum = sum + i;

  product = product *i;

}

write(sum);

write(product);

int i;

int sum = 0;

 

for(i = 0; i < N; ++i) {

  sum = sum + i;

 

}

 

 


유지보수에서의 프로그램 슬라이싱 활용

  • 유지보수 담당자의 유지보수 대상 프로그램의 이해를 돕기 위한 프로그램 분석(program analysis)에 활용됨
  • 회귀 테스팅에서 프로그램 슬라이싱 알고리즘을 적용하여 특정 변경에 영향을 받는 부분을 찾아내고 이 부분들만을 재테스트하여 품질 저하 없이 테스팅 비용을 줄이는 여러 방법들이 제안됨


반응형