Owl Life

11. Re-engineering / Refactoring 본문

Software Architecture

11. Re-engineering / Refactoring

Owl Life 2022. 12. 4. 17:56
반응형

Reverse Engineering 무엇인가요?

제품의 유지보수, 개선 또는 교체를 돕기 위해 제품에 대한 설계 수준의 충분한 이해 를 얻는 프로세스.
재문서화, 설계 복구

 

Reengineering 무엇인가요?

리엔지니어링은 일반적으로 일부 형태의 리버스 엔지니어링(보다 추상적인 설명을 달성하 기 위해)에 이어 일부 형태의 순방향 엔지니어링 또는 구조 조정을 포함합니다. 

 

Reengineering  방식은?

리팩토링 대상을 선정한다
선정된 대상을 테스트 코드 작성한다.
코드를 분해한 후 재조립한다.
재조립 코드를 테스트한다.
위 과정을 반복한다.

 

Test Driven Refactoring 무엇인가요?

1 실패한 단위 테스트를 만듭니다.
2. 해당 테스트를 통과하는 프로덕션 코드를 작성합니다
3. 방금 만든 혼란을 정리하십시오.

 

Golden Master Test

프로세스를 수행한 다음 저장된 "골드 마스터"와 향후 실행을 비교하여 예기치 않은 변경 사항을 발견합니다.

 

리팩토링이란?

리팩토링 또는 전체 코드 리팩토링은 새로운 기능을 도입하거나 대상 소프트웨어의 기본 작업을 변경하지 않고 이전에 빌드된 소스 코드를 수정하는 체계적인 프로세스.

소프트웨어의 원래 기능을 방해하지 않고 기본 코드의 구조, 정의 및 구현을 최적화하기 위한 사소한 프로그래밍 조정이라고 생각할 수 있습니다. 최종 결과는 일반적으로 소프트웨어의 가독성, 유지 관리성 및 확장성에 대한 개선입니다. 

리팩토링 중에 소프트웨어 개발 팀이 일반적으로 수행하는 몇 가지 조치는 다음과 같습니다.

  • 코드 크기 줄이기
  • 혼란스러운 코드를 더 간단한 코드로 재구성
  • 코드를 정리하여 더 깔끔하게 만들기 
  • 중복되고 사용되지 않는 코드 및 주석 제거 
  • 불필요한 반복 없애기
  • 유사한 코드 결합
  • 재사용 가능한 코드 생성
  • 긴 기능을 더 간단하고 관리하기 쉬운 비트로 나누기 

리팩토링 이점

  • 가독성 향상
  • 유지 보수성, 확장성 증가
  • 성능 개선
  • 시간/돈 절약

 

리팩토링 몇가지 테크닉

  • Red-Green Refactoring
  • Extract Method
  • Simplifying Methods
  • Composing Method
  • Abstraction

 

Process 

리팩토링이 필요한 부분을 찾아서 진행한다?

 

Instructions

 

 

Re-engineering for Different Paradigms

From C Programs to Object-Oriented Design

도메인 엔티티를 식별해내고 그것을 객체로 만듭니다
Procedure에 있던 책임을 GRASP 원칙을 지키면서 객체들에 옮겨줍니다
Procedure을 Usecase라고 본다면 Loose coupling, high cohesion으로 묶어서 객체화, Component화 합니다.
Abstraction, Encapsulation하여 객체를 만들어야합니다.

 

반응형

'Software Architecture' 카테고리의 다른 글

GRASP  (1) 2022.12.21
10. Architecture Evaluation  (0) 2022.12.04
9. Tactics for NFR  (0) 2022.12.04
8. Architecture Viewpoints  (0) 2022.12.04
7. Skeleton / Core Architecture  (0) 2022.12.04
Comments