본문 바로가기

소프트웨어 개발/스프링 Spring

디자인 패턴과 프레임워크의 관련성은 무엇일까요?

1. 디자인 패턴의 정의

디자인 패턴이란,
프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나입니다. 
소프트웨어 개발과정에서 발견된 노하우를 축적하여 이름을 붙여 이후에 재사용하기 좋은 형태로 특정 규약을 묶어서 정리한 것을 뜻하지요.

  • '디자인패턴' 이란 용어를 소프트웨어 개발 영역에서 구체적으로 처음 제시한 곳은,
    GoF(Gang of Four)라 불리는 네 명의 컴퓨터 과학 연구자들이 쓴 서적 'Design Patterns: Elements of Reusable Object - Oriented Software' 입니다. 
  • 디자인 패턴을 이용하는 이유는 다음과 같습니다. 
    • 소프트웨어 개발의 요구사항은 수시로 변경 → 요구사항 변경에 대한 소스코드 변경 최소화
    • 여러사람이 진행하는 팀프로젝트 → 범용적인 코딩 스타일 적용
    • 상황에 따라 인수인계 발생 → 직관적인 코드 사용

2. 프레임워크의 정의

프레임워크란,
비기능적(Non-Functional) 요구사항(성능, 보안, 확장성, 안정성 등)을 만족하는 구조와 구현된 기능을 안정적으로 실행하도록 제어해주는 잘 만들어진 구조의 라이브러리의 덩어리를 의미합니다. 

  • 프레임워크는 애플리케이션들의 최소한의 공통점을 찾아 하부구조를 제공함으로써 개발자들로 하여금 시스템의 하부구조를 구현하는데 들어가는 노력을 절감하게 해줍니다. 
  • 프레임워크를 사용하는 이유는 다음과 같습니다.
    • 비기능적인 요소들을 초기 개발 단계마다 구현해야하는 불합리함을 극복해줌
    • 기능적인(Functional) 요구사항에 집중할 수 있도록 해줌
    • 디자인 패턴과 마찬가지로 반복적으로 발견되는 문제를 해결하기 위한 솔루션 제공

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

디자인패턴은 프레임워크의 핵심적인 특징이고,
프레임워크를 사용하는 애플리케이션에  디자인패턴이 적용된다는 특징을 가지고  있습니다.
하지만 프레임워크는 디자인패턴이 아닙니다!

  • 디자인패턴은 애플리케이션을 설계할 때 필요한 구조적인 가이드라인이 되어줄 수는 있지만 구체적으로 구현된 기반코드를 제공하지 않습니다.
  • 프레임워크는 디자인패턴과 함께 패턴이 적용된 기반 클래스 라이브러리를 제공해서 프레임워크를 사용하는 구조적인 틀과 구현코드를 함께 제공합니다.