프레임워크 & 라이브러리

고장난 고양이·2022년 7월 4일
0

개발지식

목록 보기
1/25

프레임워크

프레임워크란?

소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라고도 한다.
at 위키피디아

간단한 설명

프레임워크는 개발을 쉽게하도록 기본적으로 필요한 구조와 구성을 갖추어서 제공해주는 것을 의미합니다. 덕분에 개발자는 개발이 더 쉬워지며 기본적인 설계가 제공되기에 로직구성에 더 신경쓸 수 있습니다.

여러명이서 개발을 진행할 때 각자의 취향 및 생각의 차이가 존재하기때문에 통일성을 이루기 매우 힘듭니다. 프레임워크를 사용할 때 기본적인 구조와 구성이 같기 때문에 통일된 뼈대와 가이드에 맞는 설계를 기반으로 그 위에 올라갈 코드의 통합성과 일관성을 높일 수 있습니다.

즉, 구현에만 신경쓸 수 있도록 프로젝트의 뼈대와 가이드가 제공되는 것을 프레임워크라고 생각하면될 것 같습니다.

프레임워크 장점

  • 가이드라인이 존재하여 체계적인 구현가능
  • 기본적인 설계와 라이브러리를 통해 생선성 증대
  • 코드의 재사용성이 높고 확정성이 높음

프레임워크 단점

  • 각 프레임워크에 따른 학습 필요
  • 자유로운 설계 및 개발 불가능
  • 프로젝트 용량 증가

예시

ex ) spring, Django ... 등등

라이브러리

라이브러리란?

라이브러리(영어: library)는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양을 포함할 수 있다.
at 위키백과

간단한 설명

라이브러리는 개발을 용이하도록 이미 구현된 도구입니다. 재사용이 가능하도록 기능을 구현하고 필요한 부분에 가져와서 사용할 수 있도록 만들어진 대상들의 집합입니다.

라이브러리 장점

  • 코드 재사용 쉬움
  • 코드가 숨겨져있어서 기술유출을 방지할 수 있다.
  • 이미 구현된 기능으로 인해 생산성 증대
  • 컴파일 속도 상승 (라이브러리는 이미 컴파일되어있어서 링킹만하면 된다.)

정적 라이브러리(static library)

프로그램을 컴파일하는 과정에서 포함시키는 오브젝트 파일들의 모임

즉, 라이브러리의 동작 코드가 이를 사용하는 실행 바이너리 속에 포함되기 때문에 별도의 추가 작업없이, 그리고 독립적으로(실행 바이너리만으로...)라이브러리 함수들을 사용할 수 있다.

하지만, 정적 라이브러리를 사용하는 프로그램이 늘어나면 늘어날수록 불필요하게 실행 파일들의 크기가 커지며, 라이브러리가 동시에 여러 실행 바이너리에 포함되어 실행되는 경우 메인 메모리의 공간 활용 효율이 떨어지는 등 multiple-caller program이 존재하는 경우 그다지 바람직하지 않다.

https://luyin.tistory.com/201

동적 라이브러리 (dynamic library

완성된 프로그램을 실행할 때 포함시키는 동적 라이브러리

동적 라이브러리는 이를 사용하고자 하는 실행 바이너리에서 필요시 사용할 수 있도록 최소한의 정보만 포함하여 링크하거나,아예 독립적으로 DLL을 로드/사용/해제할 수 있다.

DLL을 구현하고 컴파일하고 나면 Static library와는 다르게 output file이 2개가 생성된다.

  • 하나는 *.lib 파일이고
  • 하나는 *.dll 파일이다.

https://luyin.tistory.com/201 [Luyin:티스토리]

https://goodgid.github.io/Static-VS-Dynamic-Libray/

라이브러리 vs 프레임워크

공통점

쉽고 빠른 애플리케이션 개발을 진행하도록 생산성 증대를 위해 사용합니다.

차이점

  • 프레임워크는 틀 그리고 그 틀안에서 라이브러리를 호출하여 사용합니다.
  • 여러가지 다른점을 이야기 할 수 있겠으나, '주도권'이 누구에게 있느냐의 차이점이라고 생각합니다.
  • 프레임워크는 주도권이 프레임워크에게 있고 이미 구성된 틀과 가이드라인에 따라 개발자가 그에 맞춰 코드를 짜야합니다.
  • 반면, 라이브러리는 개발자가 필요한 부분에 맞게 호출하여 사용합니다. 즉, 언제 호출하여 사용할지 개발자가 결정합니다.
profile
개발새발X발일지

0개의 댓글