프레임워크란?(What is Framework?)
프레임워크

프레임워크란?(What is Framework?)

프레임워크

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

by 랄프 존슨(Ralph Johnson) 교수(GoF 디자인패턴 저자)

딱히... 해당 정의를 봐도 크게 이해가 되지 않는다.

다만, JAVA 개발자라면 Spring을 경험해봤을거다. 더불어, 다른 언어를 사용하는 개발자 분들도 각각의 프레임워크를 경험 했을 것이다.

 

그렇다면 프레임워크는 무엇일까?

프레임워크 vs 라이브러리 vs 플랫폼

프레임워크

개발을 진행할 때 필수적인 요소에 해당하는 설계와 구현을 재사용하기 수월하도록 만들어둔 툴로, 언어, 컴파일러, API, 라이브러리, 알고리즘, 지원 프로그램 등을 포함하고 있다.

 

한마디로 소프트웨어 개발에 필요한한 뼈대를 제공하는 환경으로 볼수 있으며, visual C++, Spring 등이 있다.

라이브러리

라이브러리는 활용가능한 도구의 집합으로 주로 클래스나 함수로 이미 만들어져서 기능을 제공되는 것이다.

라이브러리를 사용하여 코드의 재사용성을 높일 뿐만 아니라, 이미 검증된 기능을 제공함으로서 Quality 또한 높일 수 있다.

플랫폼

소프트웨어에서 여러 기능을 제공해주는 실행환경이 되며, 가장 편하게 O/S를 플랫폼이라 할 수 있다.

대표적으로 윈도우, 안드로이드, 리눅스, 맥OS, IOS 등이 있다.

프레임워크 장단점

장점

  1. 효율적 : 모든 작업들을 제로부터 하나하나 코드를 작성하는 것보다 시간과 비용이 훨씬 절약되며, 시간적 비용이 절약되는 만큼 생산성이 좋아진다.
  2. Quality 향상 : 개인적으로 개발자가 작성하는 코드의 양이 많아지면 많아질 수록, 그리고 코드간 관계가 복잡해지면 복잡해질수록, 반복 작업이 많아질수록 실수가 발생하고 버그 발생의 가능성이 많아 진다고 생각한다. 하지만, 프레임워크는 다수의 개발자가 수정에 참여하다 보니 충분히 검증된 영역으로 볼 수 있으며, 그만큼 Quality가 좋다고 볼 수 있다.
  3. 유지보수 :  프레임워크는 이미 많은 검증된 영역으로 해당 부분은 체계적인 영역이다. 즉, 담당자가 바뀌더라도 해당 프레임워크를 이미 사용할 줄 알거나, 공부를 한다면 해당 코드의 유지보수에 안정적이다

단점

  1. 학습시간 : 프레임워크는 이미 만들어진 영역으로 습득과 이해를 필요로 한다.
  2. 제작자의 의도된 제약 사항 : 사용하고자 프레임워크는 이미 설계한 구조가 반영되어 있고 해당 기능들을 이용해 좀더 편리하게 코드를 작성하는 것이기 때문에 100퍼센트 완전히 자유롭고 유연하게 개발하는데는 어려움이 있을 수 있다.

다만, 프레임워크는 기본적으로 우리보다 뛰어난 개발자분들이 설계한 환경으로 시간과 비용을 줄이면서도 훨씬 기능이 좋은 개발에 도움이 될 수 있다.