본문 바로가기

백엔드/프레임워크

프레임워크 개요

반응형

정의


 

 

| 프레임워크 (Framework)

 

- 프레임워크는 어떤 프로그램을 쉽게 만들기 위한 요소와 룰을 제공해 줌으로서 소프트웨어의 생산성과 품질을 높이는 역할을 하는 것

- Gof의 디자인 패턴으로 유명한 랄프 존슨(Ralph Johnson)은 "프레임워크란, 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것"이라고 정의

- 원하는 기능 구현에만 집중하여 빠르게 개발 할 수 있도록 기본적으로 필요한 기능을 갖추고 있는 것으로 위에서 설명한 라이브러리가 포함

 

프레임워크 예시

  • Java 서버 개발에 사용되는 Spring
  • Python 서버 개발에 사용되는 Django, Flask
  • 안드로이드 앱 개발에 사용되는 Android
  • 아이폰 앱 개발에 사용되는 Cocoa Touch
  • 웹 개발에 사용되는 Angular, Vue.js 등
  • 자바 기반의 JSP를 위한 프레임 워크 Struts
  • 루비로 작성된 MVC패턴을 이용하는 Ruby on Rails

 

 

 

 

 

| 라이브러리(Library)

 

 

 

- 라이브러리는 도구의 모음, 소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구들

- 자주 사용되는 로직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합

- 재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 언제든지 필요한 곳에서 호출하여 사용할 수 있도록 Class나 Function으로 만들어진 것

 

라이브러리 예시

  • 그래픽 사용자 인터페이스(Graphical user interface , GUI)에서 재사용하기 쉽게 버튼, 테이블 같은 구성 요소를 호출해서 쓸수 있도록 분리해두었다면 라이브러리입니다.
  • Windows에서 간혹 보았을 dll 확장자는 동적 링크 라이브러리(dynamic-link library, DLL)의 약자로 라이브러리라고 할수 있습니다.
  • 객체지향 프로그래밍(object-oriented programming, OOP)은 기본적으로 각 기능마다 함수화하는 것으로 클래스 라이브러리라고 할수도 있습니다.
  • Python pip로 설치한 패키지/모듈 (tensorflow, pandas, beautifulsoup 등등)
  • C++의 표준 템플릿 라이브러리 (STL)
  • Node.js에서 npm으로 설치한 모듈
  • HTML의 클라이언트 사이드 조작을 단순화하는 JQuery
  • 웹에서 사용자 인터페이스 개발에 사용되는 React.js

 

 

 

 

 

 

프레임워크(Framework)와 라이브러리(Library)의 차이 그리고 공통점


  • 프레임워크 : 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램
  • 라이브러리 : 프로그램을 개발하기 위해 쓰는 공구와 같은 도구들
  • 공통점 : 프로그램을 쉽게 만들 수 있게 하는 공통된 목적이 있음
  • 차이점 : 자유도, 프레임워크는 꼭 써야되는 것과 지켜야되는 룰이 있다. 라이브러리는 쓰든 안 쓰든 자기 마음이다.

 

프레임워크는 단지 미리 만들어준 반제품이나, 확장해서 사용할 수 있도록 준비된 추상 라이브러리의 집합이 아니다. 프레임워크가 어떤 것인지 이해하려면 라이브러리와 프레임워크가 어떻게 다른지 알아야 한다.

라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다.
단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다.

반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다.
프레임워크에는 분명한 [제어의 역전] 개념이 적용되어 있어야 한다.

애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작해야 한다.

- 토비의 스프링中

 

- 프레임워크와 라이브러리의 차이점은 "제어 흐름" 권한이 어디에 있는가입니다.

- 라이브러리를 사용할 때 사용자는 애플리케이션 코드의 흐름을 직접 제어해야 합니다. 개발 시 필요한 기능이 있을 경우 능동적으로 라이브러리를 호출하여 사용하거나 기존에 구성된 함수나 코드를 가져다 써야 합니다. 

- 반면 프레임워크는 애플리케이션의 코드가 프레임워크에 의해 사용됩니다. 애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고 사용자가 그 안에 필요한 코드를 작성하게 됩니다.

- 여기서 제어의 역전(IoC, Inversion of Control)이란, 어떠한 일을 하도록 만들어진 Framework에 Control 권한을 위임하는 것을 의미하는데, 간단히 말해 프로그램의 제어 흐름 구조가 뒤바뀐 것을 뜻합니다. 

- 라이브러리의 경우 애플리케이션의 흐름을 사용자가 직접 제어해야 하지만 프레임워크의 경우 코드를 연결할 수 있는 위치를 제공하고 필요에 따라 사용자가 연결한 코드를 호출하는 제어 흐름 권한을 가지고 있습니다.

 

 

 

 

 

 

프레임워크 종류


 구분 종류 
 자바 프레임워크 Struts, Spring, 전자정부 프레임워크 
QRM 프레임워크  myBatis(iBatis), Hibernate 
자바스크립트 프레임워크  AngularJS, React, Polymer, Ember 
프론트엔드 프레임워크  Bootstrap, Foundation, MDL 

 

프레임워크 장, 단점


장점

1) 효율성

- 아무것도 그려지지 않은 제로에서 코드를 일일이 짜는 것보다 시간과 비용이 훨씬 절약되며 생산성이 좋아집니다.

 

 

2) 코드 품질향상.

- 버그 발생 가능성을 처리해줌으로써 개발자가 반복 작업에서 실수하기 쉬운 부분을 커버해줍니다. 다수의 개발자가 사용하며 수정하다 보니 이미 검증된 코드라고 볼 수 있습니다.

 

 

3) 유지 보수

- Framework를 사용하면 코드가 보다 체계적이어서 담당자가 바뀌더라도 위험부담을 줄일 수 있으며 유지 보수 안정적입니다.

 

 

단점

1) 학습시간이 길다.

- 코드를 본인이 짜 놓은 것이 아니기 때문에, 프레임워크에 있는 코드를 습득하고 이해하는 데 오랜 시간이 걸립니다.

 

 

2) 제작자의 의도된 제약 사항

- 제작자가 설계한 구조를 어느 정도 유지한 채 코드에 살을 붙여나가야 합니다. 따라서 개발자는 자유롭고 유연하게 개발하는 데 한계가 있습니다.

 

 

 

 

 

출처:

https://engkimbs.tistory.com/673 [새로비:티스토리]

https://ko.aliexpress.com/item/Solar-Power-6-in-1-Toy-Kit-DIY-Educational-Robot-Car-Boat-Dog-Fan-Plane/32217717099.htmlhttps://moolgogiheart.tistory.com/87

 

9730.0₩ |Solar Power 6 in 1 Toy Kit DIY Educational Robot Car Boat Dog Fan Plane Puppy toys Car Robot toy Gadget Dog Fan Plane

Smarter Shopping, Better Living! Aliexpress.com

ko.aliexpress.com

http://tobetong.com/?p=6640

https://blog.gaerae.com/2016/11/what-is-library-and-framework-and-architecture-and-platform.html

 

[개발용어] 라이브러리, 프레임워크, 아키텍처, 플래폼이란?

개발 입문자나 혹은 현업 개발자이지만 정의를 내리기 곤란한 라이브러리, 프레임워크, 아키텍처, 플랫폼에 대한 개인적인 생각을 정리했습니다.

blog.gaerae.com

https://cocoon1787.tistory.com/745

 

[개발상식] 프레임워크(Framework) 와 라이브러리(Library)의 차이

🚀 "프레임워크와 라이브러리의 차이를 아시나요?"" "음... 프레임워크는 뼈대이고 라이브러리는 모듈 같은 것이고....😰" "그럼 최근에 사용하신 프레임워크와 라이브러리를 알려주세요." "... ex

cocoon1787.tistory.com

 

반응형