본문 바로가기
TechNote/소프트웨어 공학(SW)

016. 리펙토링_Refactoring

by 도지웅 2022. 10. 1.
반응형

1. 소프트웨어 유지보수 생산성 향상을 위한 리펙토링의 개요

가. 리펙토링의 정의

  • 프로그램 소스의 기능은 유지하고 소스코드의 내부를 수정, 보완하여 유지보수 생산성을 높이는 기법

나. 리펙토링의 적용

  • 적용시기 : SW 개발, 유지보수 전공정, 버그 수정, 코드 검토
  • 적용대상 : 중복된 코드, 긴 메서드, 거대한 클래스, 긴 파라미터, Switch문, 임시 필드, 주석

 

2. 리펙토링의 SW 개발 공정에서의 위치와 주요 기법

가. 리펙토링 방법

나. 리펙토링 구현에 활용되는 주요 기법

구분 기법 내용
결합도 측면 Move Method 타 클래스와 결합 높은 메소드 이전
Move Attribute 타 클래스와 결합 높은 속성 이전
Extract Class 여러 클래스 결합 처리 대신 신규 클래스 생성
응집도 측면 Push Down Method 서브 클래스만 사용하는 메소드 이전
Push Down Attribute 서브 클래스만 사용하는 속성 이전
Inline Class 비활성 클래스경우 타 클래스 기능 분배 후 클래스 제거

 

3. 리펙토링 시 주의사항 및 기대효과

  • 데이터베이스 스키마와 같은 경우 수시로 변하여 변경이 곤란하고 상호 간에 약속이 필요한 인터페이스 경우 주의가 필요
  • 단순, 신속 설계로 개발기간이 단축되는 XP방법론에서 활용과 수정된 코드에 대한 신뢰성을 증명하기 위한 견고한 테스트(회귀 테스트)를 하는 것임

 

4. 리펙토링의 장점

  • 디자인개선 : 복잡한 코드 정돈, 중복 코드 제거
  • 이해용이성 : 익숙하지 않은 코드에 대한 가독성 제공
  • 버그발견 : 쉬운 코드의 이해로 인한 결함 발견의 신속성
  • 개발생산성 : 소프트웨어 디자인 향상에 따른 유지보수 능력 향상

5. 비교

항목 Restructuring Refactoring
특징 소프트웨어 전체구조 수정 소스코드의 내부구조 수정
범위 SW 재 사용을  위한 전과정 소프트웨어 개발 시 적용가능
목표 재사용 극대화 목표 향후 유지보수 재 사용시 용이
주의점 소프트웨어 전체구조에 대한 수정을 충분히 검토해야 함 소스코드 일부 수정으로 시스템 성능 향상 큰 기여는 없음

 

반응형

댓글