-
프레임워크란?프로그래밍 기초 공부 2022. 10. 2. 00:36
프로그래밍 기초에 대해 공부한지 벌써 한달정도 되어가고 있고 벌써 10번째 포스팅입니다:)
열번째로 포스팅하게 될 내용은 프레임워크란 무엇인지에 대한 내용입니다.
[ 라이브러리란? ]
- 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임
- 소프트웨어 개발 시 사용되는 프로그램의 구성요소, 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것 -> 재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 언제든지 필요한 곳에서 호출해서 쓸 수 있도록 함
- 엄격한 규칙 같은것이 존재하지 않고, 제작 의도에 맞게 작성함
- 구성데이터, 문서, 미리 작성된 코드, 함수, 클래스, 값, 도움말 자료 등등 여러가지가 존재
- 도구를 사용하다 보면 급할 때는 톱으로 못을 박을 수도 있다. IT 프로젝트 시에 개발자는 도구를 선택하는 입장이기 때문에, 어떤 도구를 사용하든 사용자가 원하는 것을 만들어 줄 수 있으면 됨
- 라이브러리는 실체화 하면 톱, 망치, 삽 같은 연장(도구)이라 할 수 있음
[ 프레임워크란? ]
소프트웨어의 구체적인 부분에 해당하는 설계와 구현을
재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것- 프로그램의 기초를 구축할 수 있는 코드의 집합
- 개발을 편하게 해주는 도구
- 어떤 프로그램을 만들기위한 기본 틀
- 개발자의 코드를 제어, 제작자의 의해 의도된 제약 사항 존재
- 구체적이며 확장 가능한 기반 코드를 가지고 있고, 설계자가 의도하는 여러 디자인 패턴의 집합으로 구성
- 프레임워크만으로는 실행되지 않으며 기능 추가를 해야 되고 프레임워크에 의존하여 개발해야 함
프레임워크 장 단점
장점
개발 프로세스 간소화
프레임워크에서 제공하는 여러 도구와 패키지는 일반적인 개발 절차를 처리
개발자가 스크립트를 처음부터 작성할 필요없음
이미 만들어진 코드를 재사용하여 재사용성을 높이고, 시간과 비용을 아낄 수 있음코드 길이 간소화 및 완성도
프레임워크는 기존에 있는 기능에 새로운 기능을 추가하고자 하면, 개발자가 직접 코딩을 하는 것보다 훨씬 간결해짐
개발자가 스크립트를 처음부터 작성할 필요없음
이미 만들어진 코드를 재사용하여 재사용성을 높이고, 시간과 비용을 아낄 수 있음유지보수 용이
프레임워크를 사용하면 코드가 체계적이고 상대적으로 정형화됨
개발자가 중간에 바뀌더라도 리스크가 적고, 이후 소스코드의 유지보수도 용이해짐보안
대부분의 프레임워크는 보안기능들을 함께 제공함
개발자가 웹사이트 혹은 애플리케이션을 보호할 수 있는 방법을 제공하여, 직접 추가적인 소스코드 작성이 필요 없음단점
크기
프레임워크는 많은 기능을 제공
-> 개발자가 필요하지 않은 기능도 포함
->개발 용량이 커질 수 있고, 불필요한 기능이 메모리를 차지하기 때문에 리소스 낭비로 이어질 수 있음제약사항
많은 기능들을 제공하지만, 이 기능들 외에, 자신이 옵션을 추가하는 것에 굉장히 보수적일 수 있음
사용법이 정해져 있고, 설계된 구조를 바탕으로 코드를 작성하고 기능을 완성해야 함
-> 코드를 유연하게 개발하는 데에 한계가 있을 수 있음학습 필요
특정 프로그램 언어를 배우고 해당 프레임워크 사용법과 철학을 익혀야 하는 학습이 필요
-> 현업을 하는 회사와 회사원 모두에게 부담이 될 수 있음프레이워크 라이브러리
- 프레임워크 라이브러리로만 코드를 짤 수 있지만 시간과 노력이 엄청 들어간다
- 애플리케이션을 개발하는데 있어 쉽고 빠른 생산성을 위해 사용한다는 공통점
- 둘의 가장 큰 차이점은 흐름을 누가 가지고 있느냐
- 프레임워크는 내가 개발을 하기위해 지켜야하는 틀
- 스스로 흐름을 가지고 있어 사용자로 하여금 코드를 연결할 공간을 강제
- 라이브러리는 내가 개발을 하기위해 필요로 하는 미리구현 되어있는 대상
- 사용자에게 흐름을 직접 제어하게 함 사용자가 언제 어디서 호출할지 결정하게 하도록 함
프레임워크의 종류
스트럿츠 프레임워크
- 자바기반의 JSP만을 위한 프레임워크
- 다양한 운영체제에서 활용할 수 있음
- 오픈소스이기 때문에 개발에 필요한 부분을 수정하여 사용할 수 있음
- 웹 개발은 보통 프론트엔드 영역과 백엔드 영역으로 나뉘는데, 이를 디자이너의 프론트엔드 영역과 개발자의 백엔드 영역으로 분리해서 개발을 하자는 목적으로 만들어진 기술이 MVC model2이다. (Model, View, Controller) 이러한 MVC기반으로 나온 프레임워크가 스트럿츠 프레임워크
- 이렇듯 MVC 모델을 이용한 웹 애플리케이션 구축은 매우 용이하기 때문에 초기에 스트럿츠 프레임워크 기반의 개발이 많이 이루어짐
스프링 프레임워크
- 엔터프라이즈급 애플리케이션 개발에 필요로하는 경량형 프레임워크
- 프로젝트의 규모가 커질수록 스트럿츠 보다는 스프링 프로젝트가 많이 활용이 되고 있는 추세
- J2EE에서 제공하는 대부분의 기능을 지원하기 때문에 JAVA개발에 있어서 대표적인 프레임워크
- JDBC를 비롯하여 iBatis, 하이버네이트, JPA등 DB처리를 위해 널리 사용되는 라이브러리와 연동을 지원
- 전자정부 표준프레임워크의 기반이 되는 기술이기 때문에 스프링 프레임워크의 활용도는 더욱 높아지고 있음
- 스프링 프레임워크의 특징
- 경량컨테이너로 라이프사이클을 관리하고 필요한 객체를 스프링으로부터 받아옴
- DI지원하여 객체간의 의존관계 설정이 가능
- AOP지원
- POJO방식으로 자바객체는 특정한 인터페이스를 구현하고 클라스 상속이 필요치 않음
- 트랜젝션 처리를 위한 일관된 방법을 제공
- 영속성 관련 다양한 API를 지원
- API연동을 지원
앵귤러 JS
- 자바스크립트 기반의 프레임워크
- 자바스크립트 또는 제이쿼리로 만든 코드의 길이를 더욱 단순화 할 수 있음
- 직관적으로 소스를 이해할 수 있게 됨
- 앵귤러 JS는 2012년에 출시 되었으며, 기본적으로 MVC (Model-View-Controller) 모델 지원과 같은 다른 웹 어플리케이션 프레임워크에서도 지원하는 기능을 제공
- 점점 복잡해지고 대형화 되고있는 클라이언트 사이드 스크립트를 MVC 패턴으로 규격화 함으로 해서 프로젝트 유지보수 비용을 최소화 할 수있기 때문에 앵귤러 JS역시 개발자 분들에게 없어서는 안 될 프레임워크
- 앵귤러 JS 특징
- 작성해야 하는 자바스크립트의 코드량을 줄여줌
- 앵귤러 JS의 데이터 모델은 단순 자바스크립트 객체
- 재사용이 쉬운 정적인 UI컴포넌트를 만들 수 있음
- HTML, CSS개발자와 자바스크립트 개발자를 명확하게 분리해 줌
'프로그래밍 기초 공부' 카테고리의 다른 글
Spring이란? (0) 2022.10.03 Tomcat과 Nginx란? (0) 2022.10.02 HTTP의 메서드 GET과 POST의 차이 (0) 2022.09.30 Maven과 gradle (0) 2022.09.26 git ignore란? (1) 2022.09.23