Search

프레임워크와 라이브러리

대분류
기타
소분류
알쓸신잡
유형
개발 상식
부유형
상식
주요 레퍼런스
https://idkim97.github.io/2022-08-16-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%20vs%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC/
최종 편집 일시
2024/10/27 15:28
생성 일시
2024/08/12 12:45
13 more properties

프레임워크(Framework)

소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합
원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 기능을 갖추고 있는 골격, 뼈대
애플리케이션 개발 시 필수적인 코드, 알고리즘, DB연동과 같은 기능을 위해 어느정도 구조(뼈대)를 제공
해당 구조 위에서 사용자가 코드를 작성해서 애플리케이션을 개발

프레임워크의 기능

1.
코드 재사용성 : 공통 기능을 제공하여 코드의 재사용성 향상
2.
일정한 구조 제공 : 애플리케이션의 구조를 형성하여 제공
3.
규칙 설정 : 애플리케이션에서 특정 방식으로 작업을 수행할 수 있도록 규칙을 정의(흐름제어)
4.
모듈화 : 프레임워크는 기능을 모듈화하여 독립적인 컴포넌트로 분리가 가능
5.
생산성 향상 : 반복적인 작업을 자동화하여 개발 생산성 향상
6.
유지보수성 : 일관된 코드 구조를 유지하여 유지보수성을 향상

예시

Python - Django, Flask
JavaScript - Next.js, Vue.js
JAVA - Spring Framework

라이브러리(Library)

단순 활용가능한 도구들의 집합
소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임
미리 작성된 코드, 변수, 함수, 클래스가 포함

라이브러리의 기능

1.
코드 재사용성: 특정 작업을 처리하는 코드의 재사용을 촉진
2.
추상화: 복잡한 작업을 간단한 함수 호출로 추상화
3.
모듈화: 기능별로 모듈화되어 필요에 따라 사용 여부 선택 가능
4.
유연성: 개발자가 필요에 따라 라이브러리를 선택하여 사용 가능

예시

Python - TensorFlow, Numpy, Requests
JavaScript - JQuery, Lodash, HTML2PDF

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

제어의 역전 (Inversion of Control)

프레임워크의 경우
프로그램의 전체적인 흐름을 프레임워크가 쥐는 구조
해당 흐름(틀) 안에서 프레임워크가 제어 흐름에 대한 주도성을 지니고 있음.
라이브러리의 경우
프로그램을 만드는 사용자가 전체적인 흐름을 직접 만들고 필요에 따라 라이브러리를 사용
사용자가 전적으로 제어 흐름에 대한 주도성을 지님.

구조 제공 유무

프레임 워크
전체 어플리케이션의 구조를 정의하여 일정한 개발 패턴을 따르게 함(흐름 제어O)
라이브러리
특정 기능만을 제공하여 전체 구조에는 관여하지 않음(흐름 제어X)