SW 재사용 방안

1. copy & paste

  • A, B클래스에서 동일 로직을 사용하였을 경우
  • JDK 버전이 바뀌어 동일한 기능을 제공하는 향상된 인터페이스가 나오면, A,B 클래스를 모두 변경해야 한다.

2. Method (function)

  • 자주 사용되고 유사한 기능들을 모아 메서드로 정의하여 재사용
  • 해당 메서드의 signature (메서드명, 리턴타입, 아규먼트 갯수/타입) 가 변경될 경우 사용하는 모든 클래스에 영향을 준다.

3. Class (inheritance)

  • Person을 상속받은 모든 클래스들은 자동적으로 변경된 메서드를 사용하게 된다.

4. AOP

  • Aspect Oriented Programming
  • OOP를 support 해주는 개념
  • 기존의 절차적 프로그래밍에서도 적용될 수 있다.
  • 비즈니스 로직과 / 기능적 요소들의 연결 (Weaving) - 프레임워크에서 동작

디자인패턴과 프레임워크의 관련성

디자인 패턴의 정의

  • 프로그램에서 자주 나타나는 과제를 해결하기 위한 방법
  • 소프트웨어에서 개발과정에 발견된 know-how 를 축적하여 이름을 붙여 추후 재사용하기 좋은 형태로 특정 규약을 묶어서 정리
  • 대표적 디자인 패턴 - GoF (Gang of Four) 23가지 디자인 패턴

디자인 패턴의 사용 이유

  • 요구사항은 수시로 변경 -> 요구사항 변경에 대한 소스코드 변경 최소화
  • 여러 사람이 같이 하는 팀프로젝트 진행 -> 범용적인 코딩 스타일 적용
  • 상황에 따라 인수인계 발생 -> 직관적인 코드를 사용

프레임워크의 정의

  • 비기능적 요구사항 (성능,보안,확장성,안정성 등)을 만족하는 구조와 구현된 기능을 안정적으로 실행하도록 제어해주는 잘 만들어진 구조의 라이브러리 덩어리
  • 어플리케이션들의 최소한의 공통점을 찾아 하부구조를 제공함으로써, 시스템의 하부구조를 구현하는데 들어가는 노력을 절감시켜줌

프레임워크 사용 이유

  • 비기능적인 요소들을 초기 개발 단계마다 구현해야하는 불합리함 극복
  • 기능적인 요구사항에 집중할 수 있도록 해준다.
  • 디자인 패턴과 마찬가지로 반복적으로 발견되는 문제를 해결하기 위한 특화된 솔루션 제공

디자인패턴과 프레임워크의 관련성

  • 디자인패턴은 프레임워크의 핵심적인 특징
  • 프레임워크를 사용하는 애플리케이션에 그 패턴이 적용된다.
  • 프레임워크는 디자인패턴이 아니다.
  • 디자인패턴은, 애플리케이션을 설계할 때 필요한 구조적인 가이드라인이 되어줄 순 있지만 구체적으로 구현된 기반코드를 제공하지는 않는다.
  • 프레임워크는 디자인 패턴과 함께 패턴이 적용된 기반 클래스 라이브러리를 제공해서 프레임워크를 사용하는 구조적인 틀과 구현코드를 함께 제공한다.
  • 개발자는 프레임워크의 기반코드를 확장하여 사용하면서 자연스럽게 그 프레임워크에서 사용된 패턴을 적용할 수 있게 된다.

프레임워크의 구성요소와 종류

IoC (Inversion of Control)

  • "제어의 역전"
  • 인스턴스 생성부터 소멸까지의 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해준다.
  • 컨테이너 역할을 해주는 프레임워크에게 제어하는 권한을 넘겨 개발자의 코드가 신경써야할 것을 줄임
  • 프레임워크의 동작원리를 제어흐름이 일번적인 프로그램 흐름과 반대로 동작
  • Spring 컨테이너는 IoC를 지원하며, 메타데이터 (xml) 을 통해 beans들을 관리
  • Spring 컨테이너는 관리되는 Bean들을 의존성 주입을 통해 IoC를 지원

클래스 라이브러리

  • 특정 부분의 기술적 구현을 라이브러리형태로 제공
  • Semi complete 반제품

라이브러리와 프레임워크의 차이점

  • 실행제어가 어디서 일어나는가에 따라 달라진다.
  • 라이브러리는 개발자가 만든 클래스에서 직접 호출하여 사용하므로 실행 흐름에 대한 제어를 개발자 코드가 관장한다.
  • 프레임워크는 반대로 프레임워크에서 개발자가 만든 클래스를 호출하여 실행의 흐름에 대한 제어를 담당한다.

디자인 패턴

  • 디자인패턴 + 라이브러리 = 프레임워크
  • 프레임워크를 확장하거나 커스터마이징 할 때는 프레임워크에 적용된 패턴에 대한 이해가 필요

프레임워크 종류

'Back-end > Spring' 카테고리의 다른 글

DI 애플리케이션 작성(2)  (0) 2021.06.10
DI 애플리케이션 작성(1)  (0) 2021.06.10
IoC와 DI  (0) 2021.06.09
Spring Project 시작하기  (0) 2021.06.09
Spring Framework 개요  (0) 2021.06.09

+ Recent posts