나만의 작은 도서관

프레임워크란? (+라이브러리와의 차이점) 본문

Common/CS-일반

프레임워크란? (+라이브러리와의 차이점)

pledge24 2024. 11. 26. 17:47

프레임워크(Framework)

 

프레임워크는 소프트웨어 개발을 체계화하고 효율적으로 진행하기 위해 제공되는 구조적 환경을 의미한다. 개발자가 특정 애플리케이션을 개발할 때 필요한 기본 구성 요소, 라이브러리, 규칙을 제공하여, 반복적인 작업을 줄이고 고품질의 소프트웨어를 빠르게 개발할 수 있도록 돕는다. 대표적인 프레임워크로는 다음과 같다.

 

프레임워크의 종류와 예시

  • 웹 프레임워크 : ASP.NET, Django, Flask, Spring, Angular, React.
  • 모바일 프레임워크: React Native, Flutter, Xamarin.
  • 데스크톱 프레임워크: WPF(.NET Framework), Electron, QT.
  • 게임 개발 프레임워크: Unity, Unreal Engine.
  • 데이터 처리 및 머신러닝 프레임워크: TensorFlow, PyTorch.

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

아직까지 명확하게 프레임워크와 라이브러리의 구분하는 기준점은 없다. 때때로 두 단어를 혼용하여 사용하기도 한다. 그럼에도 이 둘을 구분하자면 프레임워크와 라이브러리가 가지는 경향의 차이로 구분할 수 있다.

 

누가 누구를 컨트롤하는가?

 

프레임워크는 애플리케이션의 구조를 정의하며, 개발자는 정의된 구조의 규칙을 반드시 따라야 한다. 예를 들어, 장고에서 어드민 패널을 만들고 싶다면 admin.py파일을 생성해 그 위에 작성해야한다. 이는 프레임워크가 정의한 규칙이며, 이 규칙을 따르지 않는다면 어드민 패널을 만들 수 없다. 이처럼 프레임워크에서 특정 기능을 사용하기 위해서는 내 맘대로 작성하면 안 되며, 이는 "프레임워크가 개발자가 작성한 코드를 컨트롤하고 있다."라고 볼 수 있다. 

 

반대로 라이브러리는 규칙이 따로 존재하지 않는다. 개발자는 원하는 구조에 맞춰 라이브러리를 선택적으로 사용할 수 있고 라이브러리의 변경 또한 자유롭다. 이를 다르게 말하면 "개발자가 개발자 본인이 작성한 코드를 컨트롤하고 있다."라고 볼 수 있다. 

 

결론

  • 프레임워크는 애플리케이션의 구조를 정의하며, 개발자는 정의된 구조의 규칙을 반드시 따라야 한다.
  • 반대로 라이브러리는 규칙이 따로 존재하지 않으며, 라이브러리의 선택 및 변경 또한 자유롭다.
  • 따라서, 프레임워크와 라이브러리의 차이점은 개발자가 작성한 코드를 컨트롤하는 주체에서 나타난다.

 

비교 표

특징 프레임워크 라이브러리
컨트롤 주체 프레임워크가 흐름을 컨트롤, 개발자가 추가 작업을 수행 개발자가 흐름을 컨트롤하고 필요할 때 라이브러리를 호출
유연성 정해진 규칙과 구조를 따라야 함 필요에 따라 원하는 부분만 선택적으로 사용 가능
의존성 프로젝트 전체가 프레임워크에 종속 특정 기능만 의존, 프로젝트 종속성이 낮음
사용 목적 애플리케이션 전체 구조 설계 특정 작업이나 문제 해결
예시 Django, Spring, .NET Framework NumPy, jQuery, Newtonsoft.Json

'Common > CS-일반' 카테고리의 다른 글

컴퓨터 구조 #2. 메모리(Memory)  (0) 2024.07.10
컴퓨터 구조 #1. CPU란 무엇인가?  (1) 2024.07.08