프레임워크 Framework
소프트웨어 개발에 사용되는 개발 도구로 개발에서 필요한 기능과 기본 틀을 제공하여 개발자가 빠르고 효율적으로 개발할 수 있도록 해줍니다.
즉, 개발자가 원하는 기능 구현에 집중할 수 있도록 일정한 형태와 기능을 갖는 뼈대를 의미합니다.
프레임워크 특징
제어 역전 (IoC)
프레임워크는 제어 역전(IoC) 패턴을 적용하여 개발자가 작성한 코드를 호출하는 대신 프레임워크가 개발자가 작성한 코드를 호출합니다.
이를 통해 개발자는 애플리케이션의 핵심 비즈니스 로직에 집중할 수 있습니다.
의존성 주입 (DI)
프레임워크는 의존성 주입(DI) 패턴을 적용하여 애플리케이션의 객체 간 의존성을 관리 해줍니다.
이를 통해 객체 간 결합도를 낮출 수 있습니다.
컴포넌트 기반 아키텍처
프레임워크는 컴포넌트 기반 아키텍처를 적용하여 애플리케이션의 코드를 재사용할 수 있습니다.
쉬운 개발
프레임워크는 개발자가 애플리케이션을 더욱 빠르고 쉽게 개발할 수 있도록 지원합니다.
이를 통해 개발자는 애플리케이션의 핵심 비즈니스 로직에 더욱 집중할 수 있습니다.
프레임워크 장단점
장점
생산성 향상
프레임워크는 핵심 로직에 집중할 수 있도록 공통 작업을 처리해줍니다.
유지보수성 향상
코드의 일관성을 유지하고 보안적으로 안전한 코드를 생성합니다.
높은 확장성
모듈화된 구조를 가지고 있어서 필요한 기능만 선택하여 사용할 수 있습니다.
일관된 코드
프레임워크가 제공해주는 기본 틀로 인해 객체 지향 개발 과정에서 나타나는 일관성 부족 문제를 보완할 수 있습니다.
단점
학습 필요
프레임워크는 특정 방식으로 동작하기 때문에 개발자들이 해당 방식에 익숙해지기 위해 학습해야합니다.
설치 필요
대형 프레임워크는 파일 크기가 크고 설치 과정이 복잡할 수 있기때문에 실행 환경 구성에 시간과 노력이 필요합니다.
라이브러리 Library
소프트웨어 개발 시 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임으로 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양을 포함합니다.
비슷한 의미로는 다른 프로그램에서 사용할 수 있는 코드 모음을 의미합니다.
이러한 코드 모임은 기능적으로 연관된 일련의 함수, 클래스 및 메서드 등을 포함합니다.
라이브러리 특징
재사용성
라이브러리를 사용하면 개발자는 기존 코드를 재사용할 수 있으므로 코드 양을 줄이고 개발 시간을 단축시킬 수 있습니다.
호환성
라이브러리는 일반적으로 특정 프로그래밍 언어로 작성되므로 해당 언어와 호환됩니다.
각 언어에 맞게 그 언어로 작성된 라이브러리는 그 언어로 작성된 프로젝트 및 소프트웨어 코드에서만 사용할 수 있습니다.
업그레이드 및 유지보수
라이브러리는 주로 다른 사람이 작성한 코드이기 때문에 업그레이드 및 유지보수가 수월합니다.
라이브러리 장단점
장점
생산성 향상
이미 구현된 기능을 사용하므로 개발 시간을 단축시킬 수 있습니다.
재사용성
기존의 코드를 재사용함으로써 유지보수성이 향상됩니다.
성능 향상
최적화된 코드를 제공하므로 성능 향상에 도움이 됩니다.
단점
학습 필요
새로운 라이브러리를 사용하기위해 학습이 필요합니다.
의존성 문제
사용할 라이브러리와의 의존성 문제가 발생할 수 있습니다.
(사용할 라이브러리의 버전 호환 문제 등)제한된 유연성
이미 구현된 기능을 사용하기 때문에 개발자가 수정하기 어렵습니다.
프레임워크와 라이브러리 차이점
간단하게 정리해보겠습니다.
- 프레임워크 : 일정한 형태와 필요한 기능을 갖춘 뼈대로 재사용하기 편하도록 정리한 일련의 코드 집합
- 라이브러리 : 코드 작성 시 활용 가능한 도구로 특정 기능을 모아둔 코드 집합
프레임워크는 라이브러리의 상위 개념으로 라이브러리들의 모임이라고 생각할 수 있습니다.
이 둘의 가장 큰 차이점은 제어 흐름에 대한 책임의 차이
입니다.
라이브러리는 개발자가 코드를 작성하는 데 필요한 도구를 제공합니다. 개발자는 개발 시 필요한 기능이 있을 경우 능동적으로 라이브러리를 호출하여 사용합니다.
즉, 라이브러리를 사용할 때 사용자는 제어 흐름을 직접 제어합니다.
프레임워크는 개발자가 작성한 코드를 프레임워크가 가져가서 사용합니다.
코드는 개발자가 원하는 위치에서 원하는 동작이 할 수 있도록 작성하지만, 결과적으로 프레임워크는 개발자가 작성한 코드를 가져와 실행합니다.
이러한 현상을 제어의 역전 (IoC)
이라고 합니다.
즉, 프레임워크는 전체적인 흐름을 자체적으로 가지고 있고, 프로그래머가 그 안에 필요한 코드를 작성합니다.
라이브러리는 사용자가 흐름에 대해 제어를 하며 필요한 상황에 가져다 쓰는 것입니다.