정보관리기술/소프트웨어공학

리팩토링, 디자인 패턴

아이티신비 2024. 1. 20. 10:30

문제6) 객체지향 기법 중에는 리팩토링(Refactoring)과 디자인패턴(Design Pattern)이 있다. 두 기법을 각각 정의하고 공통점과 차이점에 대하여 설명하시오

 

답)

 

1. SW의 효율적인 설계와 유지보수를 위한, 디자인 패턴과 리팩토링 개요

  • SW의 효율적인 개발과 유지보수를 위해 설계, 구현 및 유지보수 전반에 적용하는 디자인패턴과 리팩토링
  • SW 개발 설계에 따라 유연한 리팩토링이 가능하므로 디자인패턴과 리팩토링은 SW개발 전반에 활용

 

2. 디자인 패턴과 리팩토링 설명

가. 디자인패턴

구분
설명
정의
  • SW 디자인에서 통속적으로 발생하는 문제에 대한 일반적으로 재사용이 가능한 해결책 혹은 경험적인 솔루션
  • 특정 영역의 설계 문제를 해결하기 위해 고안된 형식적인 방법
디자인패턴
형식
이름(Name)
  • 패턴 자체의 내용을 효과적으로 전달 할 수 있는 이름
종류
(Classification)
  • 여러 개의 패턴을 체계적으로 분류
  • 생성(Creational) : 객체들의 생성과 관련
  • 구조(Structural) : 클래스, 객체의 정적인 구조와 관련
  • 행위(Behavioral) : 클래스와 객체의 반응과 책임할당
의도
(Intent)
  • 이 패턴이 무엇을 하며, 어떤 의도로 작성되었는지 무엇을 해결하는지를 설명하여 기술
별칭
(Also Know as)
  • 위의 공식적인 이름 외에 잘 알려진 다른 이름
동기
(Motivation)
  • 이 패턴이 해결하여야 하는 디자인 문제와 그것을 해결하기
  • 클래스와 객체들이 어떻게 사용되는지에 대해 시나리오 형식으로 기술
구조
(Structure)
  • 패턴 안에서 문제를 해결하기 위해 사용되는 클래스와 객체의 구조 UML 다이어그램을 통해 표현
구성물
  • 구조항목에 포함된 각종 클래스, 객체의 의미와 그 책임을 설명
렵력과정
(Collaboration)
  • 각 클래스와 객체가 자신에게 맡겨진 책임을 수행하기 위해 서로 메시지를 주고 받는 과정을 묘사
결과
(Consequence)
  • 패턴이 목적을 달성하기 위해 어떤 면을 해결하는지 설명하고 패턴을 적용할 때 발생할 수 있는 문제점과 패턴 적용 시 효과
  • 시스템 상황에 대해 변동하는 부분들을 기술
샘플코드
  • 특정 언어로 패턴을 구현한 예제
관련 패턴
  • 본 패턴과 유사하거나 밀접하게 관련된 다른 패턴

 

나. 리팩토링

구분
설명
정의
  • SW의 이해성 및 유지보수성을 높이기 위해 Code Smell 을 제거하여 동작의 변화없이 내부구조를 변경하는 활동
  • 결과의 변경없이 코드의 구조를 재조정하여 가독성을 높이고 유지보수를 편하게 하는 유지보수 활동
주요
기법
결합도
측면
Move Method
  • Method가 자신의 정의된 클래스보다 다른 클래스에서 더 많이 사용하고 있으면 Move 해야 함
Move Attribute
  • 타 클래스와 결합 높은 속성을 이전
Extract Class
  • 두 개의 클래스가 해야 할 일을 하나의 클래스가 하고 있다면 새로운 클래스를 만들어 관련 있는 필드와 메소드를 이전
응집도
측면
Push Down Method
  • 서브 클래스만 사용하는 메소드 이전
Pusk Down Attribute
  • 서브 클래스만 사용하는 속성 이전
Inline Class
  • 별 기능 없는 Class 를 다른 것과 합침
일반화
Full up Field
  • 두 서브 클래스가 동일한 필드를 가지고 있다면 그 필드를 수퍼 클래스로 올림
Full up Method
  • 동일한 기능을 하는 메소드를 여러 서브 클래스에서 가지고 있다면 수퍼클래스로 올림
단순화
Replace temp w/Query
  • 어떤 수석의 결과 값을 저장하기 위해 임시 변수를 사용한다면 수식을 Method 로 만들고 임시 변수를 참조하는 곳을 모두 Method 호출로 수정
Rename Mehod
  • Method Name 이 그 목적에 맞게 이름을 변경
은닉
Symbolic Constant
  • Literal 숫자를 의미 있는 이중의 Constant로 바꿈
Encapsulate Field
  • Public 필드가 있는 경우 그 필드를 Private으로 만들고 접근자를 제공

 

3. 디자인 패턴과 리팩토링의 공통점과 차이점

구분
디자인 패턴
리팩토링
공통점
목표
  • App 유연성, 확장성, 유지보수 용이, 생산성 향상
품질
  • SW 품질 보증, 표준 기반하여 능률 향상
만족도
  • 사용자 요구 만족, 서비스 시간 단축, 기능의 유연성 향상
차이점
시점
  • 설계, 구현, 운영/유지보수
  • 운영/유지보수
범위
  • 반복되는 문제점의 해결
  • 소스코드 정제
주체
  • 설계자, 개발자
  • 운영자, 개발자
방법론
  • 생성, 구조, 행위 / CBD, RUP
  • 응집도, 결합도, 가독성 /XP, Agile


 

공감과 댓글은 아이티신비에게 큰 힘이 됩니다.

블로그 글이 유용하다면 블로그를 구독해주세요.♥