프레임워크 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
'''프레임워크'''(framework)란 [[소프트웨어]] 개발 시 복잡한 문제를 해결하거나 서술하는 데 사용하는 기본 개념 구조를 말한다. 간략히 '''F/W'''라고도 쓴다. '프레임웍'이 아니라 '프레임워크'가 올바른 표기법이다. '''표준 프레임워크'''라고도 한다. Gof의 디자인 패턴으로 유명한 랄프 존슨(Ralph Johnson)은 프레임워크란, 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용할 수 있게 일련의 협업화된 형태로 클래스들을 제공하는 것이라고 정의하였다. <ref name="Flatinum">〈[https://moolgogiheart.tistory.com/87 프레임워크(FRAMEWORK)란? 개념, 장단점, 종류]〉, 《개인사이트》, 2017-06-28 </ref>
+
'''프레임워크'''(framework)란 [[소프트웨어]] 개발 시 복잡한 문제를 해결하거나 서술하는 데 사용하는 기본 개념 구조를 말한다. 간략히 '''F/W'''라고도 쓴다. '프레임웍'이 아니라 '프레임워크'가 올바른 표기법이다. '''표준 프레임워크'''라고도 한다.
  
 
==특징==
 
==특징==
*'''모듈화(modularity)''' - 프레임워크는 구현을 인터페이스 뒤에 감추는 캡슐화를 통해서 모듈화를 강화한다. 또한 프레임워크 모듈화는 설계와 구현의 변경에 따르는 영향을 최소화시킴으로써 쉽게 소프트웨어의 품질을 향상시킬 수 있다.
 
*'''재사용성(reusability)''' - 프레임워크가 제공하는 인터페이스는 여러 애플리케이션에서 반복적으로 사용할 수 있는 일반적인 컴포넌트를 정의할 수 있게 함으로써 재사용성을 높여준다. 재사용성은 도메인 지식과 경험이 있는 개발자들의 노력을 활용하여, 애플리케이션의 요구사항과 소프트웨어 설계에 대한 공통의 솔루션을 반복적으로 재개발하고, 그에 대한 유효성을 다시 확인하는데 소요되는 시간을 줄여준다. 또한 소프트웨어의 품질, 성능, 신뢰성, 상호 운용성을 향상시킬뿐만 아니라, 프로그래머의 생산성을 상당히 높여준다.
 
*'''확장성(extensibility)''' - 프레임워크는 다형성(polymorphism)을 통해 애플리케이션의 프레임워크의 인터페이스를 확장할 수 있게 한다. 새로운 애플리케이션 서비스와 특성을 커스터마이징하는 것을 보장하는데 필수적인 사항이며, 애플리케이션의 가변성으로부터 분리함으로써 재사용의 이점을 얻게 된다.
 
*'''제어의 역흐름(inversion of control)''' - 일반적으로 어떤 모듈을 호출함으로써 해당 모듈을 재사용하게 되는데 프레임워크에서는 이와는 반대되는 제어 흐름으로 재사용성을 지원한다. 프레임워크 코드가 전체 애플리케이션의 처리흐름을 제어하며, 특정한 이벤트가 발생할 때 다형성(Polymorphism)을 통해 애플리케이션이 확장한 메서드를 호출함으로써 제어가 프레임워크로부터 애플리케이션으로 거꾸로 흐르게 된다. 이러한 제어의 역흐름을 통해 프레임워크가 외부의 이벤트에 대해 애플리케이션이 어떠한 메소드들을 수행해야 하는지 결정할 수 있다.
 
 
===구분===
 
:{|class=wikitable cellpadding="10" cellspacing="0" border="1"
 
|+
 
!width = "300px"| 구분
 
!width ="550px"| 종류
 
|-
 
|width ="300px" align="center" style="font-weight:bold"| 자바 프레임워크
 
|width ="550px"| 전자정부 표준 프레임워크, 스트럿츠, 스프링
 
|-
 
|width ="300px" align="center" style="font-weight:bold"| QRM 프레임워크
 
|width ="550px"| 아이바티스(iBatis), 마이바티스(myBatis), 하이버네이트(Hibernate)
 
|-
 
|width ="300px" align="center" style="font-weight:bold"| 자바스크립트 프레임워크
 
|width ="550px"| 앵귤러제이에스(AngularJS), ReactJS, ExtJS, Polymer, Ember
 
|-
 
|width ="300px" align="center" style="font-weight:bold"| 프론트엔드 프레임워크
 
|width ="550px"| Bootstrap, Foundation, MDL
 
|}
 
 
 
===장단점===
 
===장단점===
 
*'''장점'''
 
*'''장점'''
42번째 줄: 18번째 줄:
  
 
* '''[[전자정부 표준 프레임워크]]'''(eGovFrame) : 대한민국 정부가 공공기관 시스템 개발에 공동으로 사용할 목적으로 개발한 [[오픈소스]] 기반의 표준 프레임워크이다. 기존의 [[스프링]] 프레임워크와 [[아이바티스]](iBatis) 프레임워크를 활용하여 개발했다. [[자바]] 언어를 사용한다. [[아파치 라이선스]]로 배포하고 있다.
 
* '''[[전자정부 표준 프레임워크]]'''(eGovFrame) : 대한민국 정부가 공공기관 시스템 개발에 공동으로 사용할 목적으로 개발한 [[오픈소스]] 기반의 표준 프레임워크이다. 기존의 [[스프링]] 프레임워크와 [[아이바티스]](iBatis) 프레임워크를 활용하여 개발했다. [[자바]] 언어를 사용한다. [[아파치 라이선스]]로 배포하고 있다.
* '''[[스프링]]'''(Spring) : [[자바]] 언어를 사용하여 응용 프로그램을 개발하기 위해 사용하는 [[오픈소스]] 기반의 표준 프레임워크이며, 엔터프라이즈급 애플리케이션 개발에 필요로하는 경량형 프레임워크이다. [[아파치재단]]이 관리하고 있다. 프로젝트 규모가 커질수록 스트럿츠보단 스프링 프로젝트가 많이 활용되고 있는 추세다. J2EE에서 제공하는 대부분의 기능들을 지원하고, JDBC를 비롯하여 iBatis, 하이버네이트, JPA등 데이터베이스 처리를 위해 널리 사용되는 라이브러리와 연동을 지원하고 있다. 또한 전자정부 표준 프레임워크의 기반이 되는 기술이기 때문에 활용도가 더욱 높아지고 있다. <ref name="CASTINGN">〈[https://www.castingn.com/sourcing/kkultip_detail/110 프레임워크(framework)란?]〉, 《CASTINGN》, 2020-08-05 </ref>
+
* '''[[스프링]]'''(Spring) : [[자바]] 언어를 사용하여 응용 프로그램을 개발하기 위해 사용하는 [[오픈소스]] 기반의 표준 프레임워크이다. [[아파치재단]]이 관리하고 있다.
* '''[[스트럿츠]]'''(Struts) : [[자바]] 언어를 사용하여 응용 프로그램을 개발하기 위해 사용하는 [[오픈소스]] 기반의 표준 프레임워크이다. 스트럿츠 프레임워크는 [[크레이그 맥클라나한]](Craig McClanahan)이 처음 개발했고, 2000년 5월 [[아파치재단]]에 이관되었다. 자바기반의 JSP만을 위한 프레임워크로, 다양한 운영체제에서 활용할 수 있으며 오픈소스이기 때문에 개발에 필요한 부분을 수정하여 사용할 수 있다. 웹 개발은 보통 프론트엔드 영역과 백엔드 영역으로 나뉘는데, 이를 디자이너의 프론트엔드 영역과 개발자의 백엔드 영역으로 분리하여 개발하자는 목적으로 만들어진 기술이 MVC model2이다. 이러한 MVC기반으로 나온 프레임워크가 스트럿츠 프레임워크이며 MVC 모델을 이용한 웹 애플리케이션 구축을 매우 용이하게 해준다. <ref name="CASTINGN"></ref>
+
* '''[[스트럿츠]]'''(Struts) : [[자바]] 언어를 사용하여 응용 프로그램을 개발하기 위해 사용하는 [[오픈소스]] 기반의 표준 프레임워크이다. [[크레이그 맥클라나한]](Craig McClanahan)이 처음 개발했고, 2000년 5월 [[아파치재단]]에 이관되었다.  
 
* '''[[아이바티스]]'''(iBatis) : [[자바]]로 개발한 응용 프로그램을 [[SQL]]로 개발한 [[데이터베이스]]와 연결시켜 주는 역할을 하는 [[오픈소스]] 기반의 표준 프레임워크이다. [[아파치재단]]이 개발했다.
 
* '''[[아이바티스]]'''(iBatis) : [[자바]]로 개발한 응용 프로그램을 [[SQL]]로 개발한 [[데이터베이스]]와 연결시켜 주는 역할을 하는 [[오픈소스]] 기반의 표준 프레임워크이다. [[아파치재단]]이 개발했다.
 
* '''[[마이바티스]]'''(MyBatis) : 2010년 기존의 [[아이바티스]](iBatis)를 [[포크]]하여 새로 업그레이드한 [[오픈소스]] 기반의 표준 프레임워크이다. [[아파치 라이선스]]를 따른다.
 
* '''[[마이바티스]]'''(MyBatis) : 2010년 기존의 [[아이바티스]](iBatis)를 [[포크]]하여 새로 업그레이드한 [[오픈소스]] 기반의 표준 프레임워크이다. [[아파치 라이선스]]를 따른다.
50번째 줄: 26번째 줄:
 
* '''[[에이에스피닷넷]]'''(ASP.NET) : 동적 웹 페이지를 개발하기 위해 사용하는 [[오픈소스]] 기반의 웹 프로그램 개발 표준 프레임워크이다. 미국 마이크로소프트가 기존 [[ASP]] 기술을 계승하여 개발했다.
 
* '''[[에이에스피닷넷]]'''(ASP.NET) : 동적 웹 페이지를 개발하기 위해 사용하는 [[오픈소스]] 기반의 웹 프로그램 개발 표준 프레임워크이다. 미국 마이크로소프트가 기존 [[ASP]] 기술을 계승하여 개발했다.
 
* '''[[노드제이에스]]'''(node.js) : [[자바스크립트]](JavaScript) 언어를 사용하여 서버 측 응용 프로그램을 개발할 수 있는 [[오픈소스]] 기반의 I/O 프레임워크이다. 2009년 [[라이언 달]](Ryan Dahl)이 개발했다. 기존의 자바스크립트는 프런트 엔드 개발에 주로 사용되었으나, node.js의 출현으로 자바스크립트를 이용하여 서버 측의 백 엔드까지 개발할 수 있게 되었다.
 
* '''[[노드제이에스]]'''(node.js) : [[자바스크립트]](JavaScript) 언어를 사용하여 서버 측 응용 프로그램을 개발할 수 있는 [[오픈소스]] 기반의 I/O 프레임워크이다. 2009년 [[라이언 달]](Ryan Dahl)이 개발했다. 기존의 자바스크립트는 프런트 엔드 개발에 주로 사용되었으나, node.js의 출현으로 자바스크립트를 이용하여 서버 측의 백 엔드까지 개발할 수 있게 되었다.
* '''[[앵귤러제이에스]]'''(AngularJS) : [[구글]]이 관리하는 [[오픈소스]] 기반의 웹 어플리케이션 프레임워크이다. 앵귤러제이에스는 2012년에 출시되었으며, 기본적으로 MVC 모델 지원과 같은 다른 웹 어플리케이션 프레임워크에서도 지원하는 기능을 제공한다. 자바스크립트 또는 제이쿼리로 만든 코드의 길이를 더욱 단순화할 수 있으며, 직관적으로 소스를 이해할 수 있게 된다. 복잡하고 크기가 큰 클라이언트 사이드 스크립트를 MVC 패턴으로 규격화함으로써 프로젝트 유지보수 비용을 최소화할 수 있다. <ref name="CASTINGN"></ref>
+
* '''[[앵귤러제이에스]]'''(AngularJS) : [[구글]]이 관리하는 [[오픈소스]] 기반의 웹 어플리케이션 프레임워크이다.
* '''[[장고]]'''(Django) : [[파이썬]](Python) 언어를 사용하여 웹 애플리케이션과 웹 서비스를 개발하기 위해 사용하는 표준 프레임워크로, 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이뤄져있다. 파이썬 프로그래밍 자체가 다른 프로그래밍에 비해 배우기 쉽고 사용하기에 편리하기 때문에 개발기간을 단축시킬 수 있다. 장고 프레임워크는 강력한 라이브러리들을 그대로 사용할 수 있다는 점이 가장 큰 장점이라고 할 수 있다. <ref name="CASTINGN"></ref>
+
* '''[[장고]]'''(Django) : [[파이썬]](Python) 언어를 사용하여 웹 애플리케이션과 웹 서비스를 개발하기 위해 사용하는 표준 프레임워크이다.
 
* '''[[애니프레임]]'''(Anyframe) : [[삼성SDS㈜]]<!--삼성SDS, 삼성에스디에스-->가 기존의 [[스프링]](Spring) 프레임워크 기반으로 개발한 표준 프레임워크이다.
 
* '''[[애니프레임]]'''(Anyframe) : [[삼성SDS㈜]]<!--삼성SDS, 삼성에스디에스-->가 기존의 [[스프링]](Spring) 프레임워크 기반으로 개발한 표준 프레임워크이다.
 
* '''[[라프제이]]'''(Laf-J) : LG CNS Application Framework for Java의 약자로서, 1999년 [[㈜엘지씨엔에스]](LG CNS)가 개발한 표준 프레임워크이다. 'Laf/J'라고도 쓴다.
 
* '''[[라프제이]]'''(Laf-J) : LG CNS Application Framework for Java의 약자로서, 1999년 [[㈜엘지씨엔에스]](LG CNS)가 개발한 표준 프레임워크이다. 'Laf/J'라고도 쓴다.
65번째 줄: 41번째 줄:
 
* PLAYnexacro,〈[https://www.playnexacro.com/#show:insight:893 웹에서 프레임워크가 필요한 이유]〉, 《PLAYnexacro》, 2019-06-25
 
* PLAYnexacro,〈[https://www.playnexacro.com/#show:insight:893 웹에서 프레임워크가 필요한 이유]〉, 《PLAYnexacro》, 2019-06-25
 
* Code.D,〈[https://moolgogiheart.tistory.com/87 프레임워크(FRAMEWORK)란? 개념, 장단점, 종류]〉, 《개인사이트》, 2017-06-28
 
* Code.D,〈[https://moolgogiheart.tistory.com/87 프레임워크(FRAMEWORK)란? 개념, 장단점, 종류]〉, 《개인사이트》, 2017-06-28
* CASTINGN, 〈[https://www.castingn.com/sourcing/kkultip_detail/110 프레임워크(framework)란?]〉, 《CASTINGN》, 2020-08-05
 
* 저장소, 〈[https://kutar37.tistory.com/entry/%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%EB%9E%80 프레임워크란?]〉, 《개인사이트》, 2018-01-12
 
* Code Dragon, 〈[https://codedragon.tistory.com/5939 프레임워크에 대한 이해-소프트웨어 프레임워크의 정의, 프레임워크의 특징, 프레임워크의 구성요소]〉, 《개인블로그》
 
  
 
== 같이 보기 ==
 
== 같이 보기 ==
75번째 줄: 48번째 줄:
 
* [[프로토콜]]
 
* [[프로토콜]]
 
* [[플랫폼]]
 
* [[플랫폼]]
* [[템플릿]]
 
  
 
{{솔루션|검토 필요}}
 
{{솔루션|검토 필요}}

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)