라이브러리 (Library)
라이브러리란 소프트웨어 개발에서 자주 사용하는 기초적인 함수들을 중복 개발하는 것을 피하기 위해 공통적으로 자주 쓰는 함수와 데이터 타입을 모아둔 것입니다. 따라서 라이브러리를 사용하면 코드를 재사용하기 쉽고, 이미 구현되어 있는 기능을 쓸 수 있어 개발 시간을 단축 시킬 수 있다는 장점이 있습니다.
또한 라이브러리는 단독 실행 파일이 아니라 특정한 부분 기능만을 수행하도록 제작된 프로그램이며 이 자체로는 사용자가 실행 파일처럼 직접 실행하는 방식이 아니며, 해당 라이브러리의 기능을 직접 호출하는 프로그램을 실행하거나, 사용자가 해당 라이브러리 기능을 실행하는 API를 사용하는 프로그램을 직접 개발하면 사용 할 수 있습니다.
동적 연결 라이브러리 (DLL, Dynamic Linked Library)
동적 연결 라이브러리는 해당 라이브러리를 복사하지 않고 라이브러리의 메모리 주소만 가지고 있다가, 실행 파일에서 라이브러리의 기능을 사용할 때 해당 주소를 통해 필요한 내용을 가져오는 방식의 라이브러리를 의미합니다. 배포시에는 런 타임 라이브러리라는 이름으로 배포될 경우도 있습니다.
동적 연결 라이브러리외에 정적 연결 라이브러리(Statically Linked Library)가 존재하며 정적 연결 라이브러리는 컴파일 시점에 라이브러리가 링커에 의해 연결되어 실행 파일의 일부분이 됩니다.
동적 연결 라이브러리의 장점
- 정적 라이브러리와 비교했을 때 실행 파일에 라이브러리를 포함하지 않기 때문에 실행 파일의 크기가 작아, 빌드 시간이 줄어듭니다.
- 프로그램이 하나의 메모리에 있는 라이브러리를 공유하여 사용할 수 있기 때문에 메모리 자원을 효율적으로 사용할 수 있습니다.
- 수정할 부분이 있다면 실행 파일을 새로 컴파일할 필요없이 동적 라이브러리만 다시 컴파일하여 재배포할 수 있습니다.
- 언어 형식이 다른 여러 프로그램을 지원하고, 함수의 호출 규칙만 준수한다면 다른 언어로 작성된 여러 프로그램에서 동일한 동적 라이브러리 함수를 호출할 수 있습니다.
동적 연결 라이브러리의 단점
- 동적 라이브러리를 사용하는 경우 실행파일은 동적 라이브러리가 필요하기 때문에 외부 의존도가 생겨서 이식성이 낮아집니다. 또한 DLL이 없으면 프로그램이 실행되지 않을 수 있습니다.
- 프로그램이 실행 중에 라이브러리를 호출할 때마다 간접 참조를 하게 되어, 정적 연결에 비해 약간의 성능 저하가 발생할 수 있습니다.
'Software Engineering > Software Development Principles' 카테고리의 다른 글
의존성 주입(DI, Dependency Injection) (1) | 2025.03.05 |
---|---|
Refactoring(리팩토링) (0) | 2025.03.03 |
Code Smell (0) | 2025.03.03 |
Compiler (0) | 2025.03.03 |