IT 기초/Application

Platform, Framework, Library

데이터 세상 2022. 5. 9. 20:02
728x90
반응형

Platform

https://m.blog.naver.com/knix008/221034069747

 

소프트웨어 개발에서 응용 프로그램이 동작하는 환경을 제공하는 것

플랫폼은 일의 주체적인 입장이 아니라 호출을 받아 일을 처리하는 곳이며, 처리된 결과는 다시 원하는 응용 프로그램으로 전달된다.

운영체제(OS)는 하드웨어 자원의 관리를 맡고 있는 소프트웨어일 뿐이며, 확장된 기능과 데이터의 해석 등은 어플리케이션이 담당한다.

프레임워크는 그 자체가 완벽히 동작할 수 있는 응용 프로그램이다. 

따로 사용자가 작성한 코드가 없더라도 동작하는데 문제가 없다.

프레임워크가 동작하기 위한 환경은 운영체제나 플랫폼 등에서 제공받아야 하지만, 사용자가 코딩을 할 필요는 없다.

프레임워크 자체가 기본적(Default)으로 실행해야 하는 일을 가지고 있다. 사용자가 작성하는 코드의 시작점이 없기에 제어도 프레임워크 자체가 전담(Inversion of Control)한다고 볼 수 있다.

사용자는 기본적으로 프레임워크가 정의한 동작을 재정의 하는 형태로 코드를 추가할 수 있으며(Extensible), 프레임워크 코드 자체의 변경은 용납하지 않는다(Non-modifiable), 따라서, 프레임워크는 쉽게 사용자가 코딩할 수 있는 방법을 제공하지만 의존성도 높아질 가능성을 가지고 있다.

 

계층적인 관점에서 본다면, 응용 프로그램의 개발에는 프레임워크를 사용하는 것이 개발 효율이 높다

하지만, 기본 기능의 확장이나 변경을 통해서만 개발해야 하기 때문에 플랫폼에 비해서 상대적으로 자유도는 낮다.

플랫폼은 개발의 토대만을 제공하기에, 응용 프로그램을 효과적으로 개발하는데는 한계를 가지지만, 프레임워크에 비해서 확장이나 변경이 용이하다.

따라서, 계층적으로 구성하면 최상위에는 응용프로그램을 구축하는 프레임워크가 오게되며, 그 아래에 플랫폼이 자치하게 된다. 그리고 플래폿의 일부로 특정 운영체제와 같은 것을 가정할 수도 있다.

프레임워크를 사용하더라도 코드의 의존성을 줄이고자 한다면, 프레임워크에 의존하는 부분과 로직을 분리하는 방법을 사용해야 한다.

 

Framework vs Library

https://mangkyu.tistory.com/4

 

Framework와 Library의 차이는 Flow(흐름)에 대한 제어 권한이 어디에 있느냐의 차이이다. 프레임워크는 전체적인 흐름을 자체적으로 가지고 있으며, 프로그래머가 그 안에 필요한 코드를 작성하는 반면에 라이브러리는 사용자가 흐름에 대해 제어를 하며 필요한 상황에 가져다 쓰는 것이다.

이 내용을 한 문장으로 정리하자면 프레임워크에는 제어의 역전(Inversion Of Control)이 적용되어있다는 것이다.

 

제어의 역전(Inversion Of Control)

어떠한 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘김으로써 클라이언트 코드가 신경써야 할 것을 줄이는 전략이다. 일반적으로 우리는 프로젝트를 생성하고 Main함수를 만들어서 시작지점을 형성한다. 그리고 Main 함수에서 프로그램의 흐름을 정하는 것은 프로그래머의 몫으로 우리가 어떠한 순서를 부여하느냐에 따라서 흐름을 제어하는 것이 일반적인 사고이다.

하지만 여기서 프레임워크는 일반적인 사고와 반대되는 모습을 보여주는데 실행의 흐름을 프레임워크 자체가 가지고 있어서 우리의 코드를 프레임워크안에 넣어서 개발을 진행해야 한다. 실제로 Maven과 같은 프레임워크의 프로젝트를 생성해보면 어느정도 뼈대를 만들어서 그 안에 필요에 따라 우리의 코드를 넣는다. 일반적으로 프로그래머가 가지고 있어야하는 제어의 권한을 프레임워크에게 주었기 때문에 우리는 이를 제어의 역전이라고 말한다.

 

Angular JS는 프레임워크인 반면 React JS는 라이브러리

 

Framework

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

“소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것” - 랄프 존슨(Ralph Johnson) -

 

Framework = Design Pattern + Class Library
프레임워크는 뼈대나 기반구조를 뜻하는데, Application 개발 시 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능들을 위해 어느정도 뼈대(구조)를 제공해주는 것입니다. 그러므로 그러한 뼈대 위에 프로그래머가 코드를 작성하여 Application을 완성시켜야 합니다. 어느정도 뼈대를 제공해 주기 때문에, 객체 지향 개발을 하면서 일관성 부족 등의 문제를 해결해 줍니다.

  • 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성
  • 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의
  • 컴포넌트들은 재사용이 가능
  • 높은 수준에서 패턴들을 조작화 가능
  • 이미 완성 된 것이 아닌 개발자가 직접 완성시켜야 함
  • 객체 지향 개발에서, 통합성, 일관성의 부족이 발생되는 문제를 해결하는 방법중 하나

 

Library

단순 활용이 가능한 도구들의 집합

Library는 특정 기능에 도구 또는 함수들을 모은 집합입니다. 즉, 프로그래머가 개발하는데 필요한 것들을 모아둔 것

 


References

728x90
반응형

'IT 기초 > Application' 카테고리의 다른 글

[Application] Node.js  (0) 2021.12.31
[Application] Spring  (0) 2021.12.31
[Application] React  (0) 2021.12.31
[Application] Web Application Framework  (0) 2021.12.29
CI/CD  (0) 2021.12.27