Framework
소프트웨어 어플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경을 말한다.
컴퓨터 프로그래밍에서 프레임워크는 구조적으로 고정된 부분을 재사용할 수 있도록 하고, 응용별 특정 기능을 추가적인 사용자 작성 코드에 의해 선택적으로 구현 가능하도록 하는 포괄적인 추상 구조, 그리고 이를 지원하는 소프트웨어 플랫폼을 말한다. 즉, 소프트웨어의 개발에 필수적이고 표준적인 부분에 해당하는 설계와 구현을 재사용 가능하도록, 일련의 협업화된 형태의 클래스들로 제공하는 반제품 소프트웨어 모듈이라고 볼 수 있다. 소프트웨어 프레임워크는 지원 프로그램, 컴파일러, 코드 라이브러리, 도구 세트, API 등과 같이 프로젝트나 솔루션 개발을 가능하게 하는 여러 가지 서로 다른 컴포넌트들을 포함한다.
프레임워크 기반으로 개발을 수행하는 경우, 기반 구조를 그대로 재사용하고 비즈니스 로직과 관련된 부분을 추가적으로 구현하면 되기 때문에 빠른 어플리케이션 구축이 가능하다. 또한 동일 프레임워크를 사용하는 어플리케이션들은 비슷한 뼈대 구조를 가지기 때문에 관리 및 테스트가 용이하다.
프레임워크는 명확하게 정의된 API를 가지고 코드를 재사용 가능한 형태로 구조화한다는 점에서 라이브러리와 비슷하다. 그러나 라이브러리에서는 호출 측이 전체 프로그램 제어 구조를 지정할 수 없지만, 프레임워크에서는 이러한 제어의 반전(inversion of control)이 가능하다. 또한 라이브러리와 달리 프레임워크는 사용자가 선택적 오버라이딩(overriding, 상속받은 함수를 재정의 하는 것)이나 특정 기능을 수행하는 사용자 코드로 특수화하여 코드를 확장 재사용할 수 있다.
프레임워크는 프로그래머들이 어플리케이션에 세부적인 사항을 제외한 공통 부분들의 개발에 드는 시간을 줄이고 세부 요구사항 구현에 집중할 수 있도록 하는 것을 목표로 한다. 예를 들어, 은행 웹 사이트 구축 시 웹 어플리케이션 프레임워크를 사용한다면, 개발팀은 은행 업무와 관련된 특정 기능 개발에만 주력할 수 있는 것이다. 하지만 프레임워크 내의 API가 복잡하게 얽혀 있어서 프레임워크 사용 시 코드가 비대화 되고, 프레임워크의 초기 학습 시간이 많이 소요된다는 비판도 있다. 또한 프레임워크는 서로 다른 플랫폼 제품이나 특정 공급 업체와 버전에 의존적이 될 위험이 있다. 따라서 초기에 소프트웨어 개발에 필요한 적절한 프레임워크를 선택하고 최대한 변경 및 전환할 위험을 줄이는 것이 필요하다.
사용자 응용 프로그램을 개발하기 위한 프레임워크의 예로써 다음과 같은 것들이 있다.
- 의사 결정 지원 시스템
- 웹 애플리케이션 프레임워크
- 미들웨어
- 금융 모델링 애플리케이션
- 멀티미디어 프레임워크
- 엔터프라이즈 아키텍처(enterprise architecture) 프레임워크
- Framework(프레임워크)
프레임워크는 Application 개발시 코드의 품질, 필수적인 코드, 알고리즘, 암호화, 데이터베이스 연동 같은 기능들을 어느정도 구성이 되어있는 뼈대(구조)를 제공하도록 만들어진걸 프레임워크라고 합니다.
조금 어렵게 설명드렸는데, 개발 구조나 설계 시 제공되는 인터페이스의 집합입니다. 완성된 어플리케이션은 아니지만 어느정도 프로그래머가 제공된 프레임워크의 구조에서 어플리케이션을 개발해야 합니다.
- Framework와 Library의 차이
프레임워크는 단지 미리 만들어 둔 반제품이나, 확장해서 사용할 수 있도록 준비된 추상 라이브러리의 집합이 아니다.
프레임워크가 어떤 것인지 이해하려면 라이브러리와 프레임워크가 어떻게 다른지 알아야 한다.
라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다.
단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다.
반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다.
프레임워크에는 분명한 제어의 역전 개념이 적용되어 있어야 합니다.
애플리케이션 코드는 프레임워크가 짜놓은 틀에서 수동적으로 동작해야 합니다.
소프트웨어 프레임워크(Software framework)는 복잡한 문제를 해결하거나 서술하는데 사용되는 기본 개념 구조다. 간단히 뼈대, 골조, 프레임워크라고도 한다. :from wikipedia 더 쉽게 말하면 어떤 목적을 더욱 쉽게 달성하기 위한 구조로, 일정하게 짜여진 구조를 가지고 개발할 때 더 편리하게 사용할 수 있다-라고 이해하면 된다. 클래스와 라이브러리가 합쳐진 형태라고 볼 수 있다. 일정한 형태의 틀(규약)을 가지고 다양한 형태의 결과를 만드는 것이다.
딥러닝 프레임워크에는 Pytorch, Tensorflow, keras.
★ Tensorflow & PyTorch - 독자적으로 사용 가능한 framework. Tensorflow는 업계 1위이지만 Pytorch가 상승세를 보이고 있다.
★ Keras - Python 언어로 만들어진 high-level API. Tensorflow 위에 얹어서 사용한다.
라이브러리 Library
공통으로 사용될 수 있는 특정한 기능들을 모듈화 한 것. 내가 자주 사용하는 OpenCV도 컴퓨터 비전 라이브러리다. 코드 상에서 불러와 호출하는 방식으로 사용할 수 있다. 이를 인터페이스 상으로 노출시킨 것이 API(Application Programming Interface).
재사용이 가능한 함수와 클래스들을 모아둔 것
프레임워크와 라이브러리의 차이?
나름대로 정의한 두 단어의 차이를 보면 유추할 수 있다. 제어 흐름에 대한 주도자가 누구냐! 라는 것. 물론 총제적인 주도자는 개발자가 맞긴 하지만(..) 개발자가 코딩을 할 때 필요한 상황에 라이브러리를 불러오고 사용하는 반면 프레임워크는 정해놓은 틀 안에서 필요한 함수와 코드를 작성해서 사용하는 것이다. 이것을 다른 말로 제어의 역전(IoC, Inversion of Control) 또는 역 제어라고 한다.
위키피디아에 따르면 제어의 역전이란 프로그래머가 작성한 프로그램이 재사용 라이브러리의 흐름 제어를 받게 되는 소프트웨어 디자인 패턴을 말한다. 전통적인 프로그래밍에서 흐름은 프로그래머가 작성한 프로그램이 외부 라이브러리의 코드를 호출해 이용한다. 하지만 제어 반전이 적용된 구조에서는 외부 라이브러리의 코드가 프로그래머가 작성한 코드를 호출한다.
설계 목적 상 제어의 역전의 목적:
-작업을 구현하는 방식과 작업 수행 자체를 분리한다.
-모듈을 제작할 때, 모듈과 외부 프로그램의 결합에 대해 고민할 필요 없이 모듈의 목적에 집중할 수 있다.
-다른 시스템이 어떻게 동작할지에 대해 고민할 필요 없이, 미리 정해진 협약대로만 동작하게 하면 된다.
-모듈을 바꾸어도 다른 시스템에 부작용을 일으키지 않는다.
참고링크 : https://yeoulli.tistory.com/2
Q&A
Framework 오류시 어떻게 해야 할까요?
프리스케줄러 설치폴더 아래 있는 fsched.mdb 파일에 일정과 메모가 다 들어있습니다.
fsched.mdb 이름으로 검색해서 나오는 파일중 수정날짜가 가장 최근의 파일을 복사해 놓으시면 됩니다.
또한 프리스케줄러는 종료시마다 자동으로 백업을 하고 자동 백업과 관련된 사항은 아래 링크를 클릭해 참고하시면 됩니다.
http://www.oncelife.pe.kr/bbs/board.php?bo_table=help&wr_id=169
닷넷프레임워크를 이용해서 어떠한 것을 개발할 수 있나요?
".NET Framework 란" 이라고 구글에서 검색하면 많은 설명을 얻을 수 있습니다.
간단하게 말씀드리면 닷넷 프레임 워크는 MS 에서 만든 프로그램이 실행될 수 있는 환경 같은 것입니다.
Java 에서는 JRE (Java Runtime Environment) 와 비슷하다고 할 수 있습니다.
System.Data, System.Core, System.Drawing, System.Windows.Forms 은 닷넷에서 제공하는 Winform 프로그램으로써 UI를 만들 수 있게 합니다.
이를 이용해 프로그램을 만들고 이후 다른 컴퓨터에서 님이 만든 프로그램을 실행 시킬 때
.Net Framework 라는 애가 그 프로그램을 해석해서 실행시켜 주는 역활을 합니다.
예를 들어 님이 닷넷 4.0으로 개발을 했으면, 다른 컴퓨터에서 실행 시 닷넷 4.0이 없을 경우 프로그램 해석이 안되기 때문에 실행이 안됩니다.
이 경우 인터넷에서 닷넷 4.0을 설치 하면 그제야 해석이 가능하기 때문에 실행 시킬 수 있게 됩니다.
`19.11.13(updated. `19.11.13)