이번에 제가 정리한 내용은 소프트웨어 개발에 있어서 거의 빠지지 않는 용어인 라이브러리와 프레임 워크에 관한 내용입니다.
우선 라이브러리와 프레임워크는 두 가지는 모두 개발을 쉽게 할 수 있도록 도와준다는 본질적인 공통점을 가지고 있습니다. 그렇다면 왜 이름이 나눠졌는지 정리하여 보겠습니다.
참고자료 :2012년 4월 한국인터넷방송통신학회 논문지 제12권 제2호(https://www.koreascience.or.kr/article/JAKO201222350108850.pdf)
라이브러리란
- 라이브러리란 책을 잘 정리하여 구분해놓은 도서관이라는 의미도 있지만 정보의 저장소라는 의미도 함께 가지고 있습니다. 부품이 되는 소프트 웨어의 집합 , 작은 기능들을 함수 단위로 만들어 제공합니다.
- 우리가 어떠한 소프트웨어를 개발할 때 즉, 코드를 작성할 때에는 대부분 반복되는 기능들이 있는데 이러한 기능들을 사용하게 될 때마다 계속해서 생각하고 작성하면 시간적인 부분과 혹은 over cost로 인해 효율적인 부분이 좋지 않을뿐더러 이것이 계속해서 쌓이게 되면 극단적으로 프로젝트의 실패에 까지 영향을 주게 됩니다.
- 또한 같은 로직임에도 나올 때마다 작성한다면 코딩이라기보다는 받아쓰기가 될 것입니다.
- 처음에는 이러한 것을 분리하여 재사용성을 높이기 위해 함수 지향 프로그래밍을 이용하여 반복되는 로직을 함수로 빼내어 입력값과 출력 값, 함수명으로 간편하게 재활용하였지만 한 코드의 스코프(Scope)가 끝이 나면 그 함수의 생명이 끝이 나는 단점이 있어 그 단점을 보안하기 위해 나온 것이 라이브러리라고 합니다.
- 자주 쓰임이 있는 즉, 유용한 함수들을 모은 파일을 따로 떼어 새로운 프로젝트를 시작할 때, 자신이 작성하거나 이미 배포되어있는 라이브러리 파일을 include 시키게 되면 그 안에 있는 함수를 쉽게 사용하게 됩니다.
정적 라이브러리 : 정적 라이브러리는 따로 떼어낸 파일을 include 하게 되었을 때, 컴파일 시간에 본인이 작성한 코드와 결합되는 것을 말합니다. 상대적으로 간편하게 실행파일만 건네주면 배포가 쉽지만, 실행파일의 크기가 라이브러리 용량에 비례하는 것이 단점입니다.
동적 라이브러리: 동적 라이브러리란 컴파일 시점에 본인이 작성한 소스코드와 결합되지 않는 것이 특징입니다. 만약 프로그램의 실행하였을 때 해당 프로그램의 해당 dll 내의 함수를 원한다면, 그때 dll에 접근하고 그것을 사용한 후 코드 흐름으로 되돌아오는 방식으로 실행됩니다. 이는 dll 파일을 컴파일 후에도 실행되는 파일과 독립되어 있다는 것을 뜻하며 배포할 때에도 해당 dll파일의 위치가 실행할 파일에 설정한 공간에 위치시켜줘야 합니다.
프레임워크란
- 단어의 의미상으로는 뼈대, 틀이라는 의미를 가지고 있는데 말 그대로 소프트웨어의 형식을 제공해주며 사용 규칙 또한 포함된 의미입니다.
- GoF 디자인 패턴을 제작한 랄프 존슨 교수는 '소프트웨어의 구체적인 부분에 해당하는 설계, 구현을 재사용하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것'이라고 정의하였습니다.
- 프레임워크는 애플리케이션의 틀과 구조를 결정할 뿐 아니라 그위에 개발한 개발자의 코드 자체를 제어하는 특징이 있습니다.
- 또 다른 특징으로는 설계자가 의도하는 여러 가지 디자인 패턴의 집합으로 구성되어있습니다.
- 프레임워크를 사용(활용)하게 되면 비용적인 측면뿐 아니라 품질과 기술의 혁신 측면에서도 많은 장점을 가지고 있습니다.
구분 내용 융통성 비용에 있어 제약을 받지 않아 테스트 후 선택의 폭이 다양하다. 기술지원 신속한 문제 해결 및 성능개선 프로세스, 기술의 공동 습득이 가능 기술혁신 기술을 실험적으로 사용할 수 있다. 재활용 소스코드 접근이 가능하고 재활용이 증가한다 품질 검증된 프레임워크를 사용함으로 개발이 빨라지고 유연해진다. 표준 표준에 충실하고 상호 운영이 뛰어나다.
http://oasis.dcollection.net/public_resource/pdf/000000302964_20210721214323.pdf
예시
라이브러리는 공구상자라고 생각하고 안에 들어있는 함수는 줄자나 망치 드라이버 같은 공구라고 생각하면 될 것 같습니다.
이 중에서 망치는 두드리는 기능만을 제공하여 강한 힘으로 못을 박거나 벽을 부수는 작업과 같은 사용의 목적은 사용자가 결정합니다.
프레임워크는 이미 지어진 건물이라고 생각하면 쉬울 것 같습니다. 일정한 규칙에 따라서 건물을 지어야 하는 법이 지정되어 있는 것처럼 정해진 숫자 이상의 계단을 만들어야 하고 비상시 필요한 소화기를 배치하여야 하며 규칙에 따라 행동해야 합니다. 하지만 이것은 집을 짓는 것에 비하면 굉장히 쉬운 일입니다. 다른 시선으로 본다면 이미 완성된 집을 뜯어고치는 것은 상당히 어려운 일입니다. 공간을 만들거나 화장실을 옮기는 것은 상당히 큰 작업이고 때에 따라서는 법에 어긋나는 행동이 될 수 도있습니다.
차이는 아래 그림으로 크게 생
각하면 나올 것 같습니다.
'좋은 개발자가 되기위한 방법들' 카테고리의 다른 글
소프트웨어 개발 생명주기의 정의 (0) | 2021.08.25 |
---|---|
VSCODE 한글 단축키 모음 (0) | 2021.08.20 |
OWASP(10대 공격기법) 웹 애플리케이션 취약점 (0) | 2021.07.13 |
구글 Captch api , Spring 프로젝트에 적용하는법 (0) | 2021.07.10 |
API란 개념,종류(REST API, SOAP API),역사 쉽게정리 (2) | 2021.07.09 |