참고 포스팅
프로젝트를 진행하고 여러 글들을 읽어보면 헤깔리게 되는 개념들이 있다. 모듈, 라이브러리, 프레임워크가 그러하다.
자소서에 기술 스펙을 구분하여 적을 때도 뭔가 애매한 개념들이라고 생각된다.
이번 기회에 의미를 구분하고 넘어가야 겠다는 생각이 들어서 글로 남기게 되었다.
모듈이란 프로그램을 구성하는 시스템을 기능 단위로 독립적으로 분리한 부분을 의미.
규모가 큰 것을 작게 여러 개로 나눈 조각을 의미하는 것이 아니라, 하나 이상의 논리적인 기능을 수행하기 위한 명령어들의 집합이라고 할 수 있다.
모듈화(Modularization)
모듈화 프로그래밍이란 이런 기능적인 분리를 통해서 다른 프로그램을 개발할 때에도 유지보수와 코드 재사용성을 높여 소프트웨어를 설계하는 기법을 일컫는다.
즉, 모듈은 다른 파일에서 불러와 사용할 수 있다.
라이브러리란 모듈과 거의 비슷한 개념이지만, 소프트웨어의 구성요소 중 하나로, API를 기반으로 대상 환경(OS 플랫폼)에서 바로 실행될 수 있도록 모듈화된 프로그램들의 모음집이다.(모듈의 집합)
즉, 혼자서 동작하는 완전한 프로그램이 아닌, 특정한 기능만을 수행하도록 제작되어 컴파일 처리 후 기계어 형태로 존재하는 프로그램을 말한다.
목적에 필요한 수단들을 이용할 수 있도록 일괄로 가져다 만들어 놓은 '구조화된 틀' 을 의미한다.
즉, 앱개발에서 바탕이 되는 템플릿과 같은 역할을 하는 클래스들과 인터페이스들을 제공하며 개발에 필요한 공통적인 부분을 제공한다.
Ex) Spring(자바), Django(파이썬), AngularJS(자바스크립트) 등 ...
예시로 이해하는 것이 기억에 오래 남을 것 같아서 예를 들어 보겠다.
회사(Company)를 예로 들면,
회사 내 Task를 처리하기 위한 메뉴얼(프레임워크) 이 있다.
해당 Task는 두 개 이상의 부서(라이브러리) 가 함께 작업해야 한다.
각 부서에서 직원(모듈) 들이 자신의 업무를 수행한다.