Small Grey Outline Pointer 프레임워크와 라이브러리
본문 바로가기
Dev./etc.

프레임워크와 라이브러리

by sso. 2022. 12. 11.

프레임워크와 라이브러리

 

프레임워크

소프트웨어에서의 프레임워크는 소프트웨어의 특정문제를 해결하기 위해서 상호협력하는 클래스와 인터페이스의 집합

 

프레임워크는 소프트웨어 어플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적인 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화 된 형태로 제공하는 소프트웨어 환경을 말한다.

애플리케이션 개발 시 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능을 위해 어느정도 뼈대를 제공해주는 것이다. 그리고 그러한 뼈대 위에 개발자가 코드를 작성하여 애플리케이션을 완성해야 한다. 어느정도 뼈대를 제공해주기 때문에 객체 지향 개발을 하게 되면서 통합성, 일관성의 부족이 발생되는 문제를 해결할 방법 중 하나라고 할 수 있다.

 

프레임워크의 특징

-특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되어 있다.

-추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의한다.

-컴포넌트들은 재사용이 가능하다. (코드의 재사용이 높고 확장성이 높다.)

-높은 수준에서 패턴들을 조작화 할 수 있다.

 

왜 프레임워크가 필요한가?

단순히 기능뿐만 아니라 프로그래밍 방식을 정형화하여 프로그램의 개발 생산성을 높이고 유지보수를 용이하게 한다. 기본의 파일이 아닌 프레임워크가 지원해주는 방식에 따라 코드를 작성해야 하기 때문에 코드의 자율성이 낮지만, 정형화되어서 다른 개발자들이 유지보수하기 용이하다.

 

 

 

 

프레임워크 예시

JAVA 서버 개발에 사용되는 Spring

Python 서버 개발에 사용되는 Django, Flask

JavaScript 서버 개발에 사용되는 Node.js

안드로이드 앱 개발에 사용되는 Android

아이폰 앱 개발에 사용되는 Cocoa Touch

PHP 서버 개발에 사용되는 Laravel

웹 개발에 사용되는 Angular, Vue.js

 

 

라이브러리

 

미리 정의된 메소드와 클래스들(단순 활용이 가능한 도구들)의 집합.

-라이브러리는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 집합이다. 여기에는 미리 작성된 코드, 변수, 함수, 클래스가 포함될 수 있다. 개발자가 개발하는데 필요한 것들을 모아둔 도구들의 나열이며 필요할 때 호출하여 사용하는 방식을 취한다. 프로그래머가 어떤 기능을 수행하기 위해 도움을 주거나 필요한 것을 제공해주는 역할.

 

왜 라이브러리가 필요한가?

라이브러리는 바로 사용이 가능한 기능들의 집합으로, 소프트웨어 개발자로서 이것들을 특정 개발 프로세스에 적용해서 쓸 수 있다. 클래스정의, 함수정의, 중요한 상수들 등등.

라이브러리는 공통으로 사용 될 만한 유용한 기능을 모듈화 하여 제공한다. 기본의 파일(.js)에서 필요한 기능을 사용하기 위해 가져다 쓰는 것이기 때문에 코드의 자율성이 높다.

 

[LibraryAPI의 차이]

Library = 재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 어디서든 호출가능한 코드의 집합.

API = 라이브러리의 특정기능을 호출하기 위해 사용. 응용 프로그램을 만드는데 필요한 연결장치

 

 

라이브러리 예시

-자바스크립트의 라이브러리는 jQuery이다. (간혹 프레임워크라고 소개하는 곳이 있는데 공식 사이트에 의하면 라이브러리라고 명시되어 있다.)

-그래픽 사용자 인터페이스(Graphical user interface, GUI)에서 재사용하기 쉽게 버튼, 테이블 같은 요소를 호출해서 쓸 수 있도록 분리 해둔다면 라이브러리이다.

 

 

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

둘 다 사람들이 미리 만들어 놓은 재사용이 가능한 코드의 집합이다. 이를 통해 개발자는 일상적인 작업들을 처리할 수 있게 된다. 하지만 둘의 큰 차이점은 제어 흐름에 대한 주도성을 누가 가지고 있는가에 있다. , 어플리케이션의 흐름을 누가 쥐고 있는 가.

 

프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣으며 반면에 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것이라고 할 수 있다.

다시 말해, 라이브러리는 라이브러리를 가져다 사용하고 호출하는 측에 전적으로 주도성이 있으며 프레임워크는 그 틀 안에 이미 제어 흐름에 대한 주도성이 내재(내포)하고 있다.

프레임워크는 가져다 사용 한다기 보다는 거기에 들어가서 사용한다는 느낌/관점으로 접근할 수 있다. 개발자가 구현한 메서드가 프레임워크에 의해 호출된다 -> 프레임워크 제어의 역전(Inversion Of Control)

 

예를 들어 모바일 앱 개발 시, 버튼이 눌렸을 때 수행하고 싶은 작업이 있다면 아래의 코드처럼 콜백함수만 정의해서 넣어주면 된다.

document.querySelector('.button').addEventListener('click', function(){

    //버튼 누르면 이 코드를 실행해주세요 :: .addEventListener함수

})

 

개발자는 버튼이 눌렸을 때 수행할 작업만 콜백함수로 넣어주면 되는 것이고,

버튼이 클릭되는 걸 감지하는 복잡한 작업과 콜백함수의 호출은 프레임워크가 수행한다.

 

프레임워크의 코드에는 완성된 기능들이 포함되지 않는다는 것. 프레임워크는 애플리케이션의 설계도를 제공하는 프로그램의 골격이지, 완성된 제품은 아니라는 것. 프레임워크 자체가 소프트웨어 개발의 업무 흐름을 정의하고 있으며, 개발자들에게 무엇이 필요한지 알려주고 필요한 경우 개발자들의 코드를 호출하여 사용하는 구조이다.

 

라이브러리는 함수들이나 기능모음을 가져다 쓰는 것이고. 프레임워크는 특정 디자인 패턴이나, 전처리 후처리에 필요한 동작과 기능들을 수행하기 위해서 프레임워크가 실행되다가 중간 중간에 특정 비지니스나, 특정 구현 단에서만 사용자의 코드를 lookup(검색)하여 사용하는 형태라고 할 수 있다.

 

728x90

댓글