🤖 Computer Science

Framework란?

정의

응용 프로그램이나 소프트웨어의 솔루션 개발을 수월하게 하기 위해 제공된 소프트웨어 환경

목적 및 특징

  • 프로그래머들이 비즈니스 로직 등 제품 개발에만 집중, 효율을 향상시킬 수 있다.
    • 개발할 때 자주 사용되는 범용 기능을 제공
  • 개발자 입장에서는 검증된 코드를 이용해서 최소한의 부분만 바꾸어 빠르게 개발하기 위해
  • 회사 입장에서는 누구에게 개발을 맡기던 일정 수준 이상의 결과물을 기대할 수 있기 때문
  • 응용 프로그램의 흐름 주도권이 프레임워크에 있다.
    • 프레임워크가 프로그래머의 코드를 요청한다.
  • 집과 같은 것
    • 법규(규칙)에 따라 집을 짓는다.

장점

  • 공통적인 개발 환경을 제공한다.
    • 통일된 형태의 개발로 협업의 효율 상승
  • 의도치 않은 오류 감소

단점

  • 개발할 수 있는 범위가 정해져있다.
  • 사용법을 익힐 시간이 필요하다.
  • 프로그래머가 통제하기 어렵다.
  • 한번 선택하면 해당 프레임워크에 의존성이 발생하므로 선택이 중요
  • 개발자가 구현하는 코드와 관련없는 오버헤드가 발생

예시

  • Django
  • Node.js

프레임워크 VS 라이브러리

Framework VS Library

면접 질문

  • 프레임워크는 한번 선택하면 해당 프레임워크에 의존성이 발생한다. 이 중요한 프레임워크 선택에 고려해야할 사항에 대해 간단히 말씀해주세요.
    • 만들려는 소프트웨어의 특성
    • 각 프레임워크의 장단점
    • 학습시간
    • 자유롭게 다루는 개발자의 능력, 수
  • 프레임워크와 라이브러리의 차이점에 대해 간단히 말씀해주세요.

출처