프레임워크

  • 이현복

    ### what?

    프레임 워크와 혼동되는 개념인 라이브러리와 비교하여 설명하겠다


    프레임 워크란?

    일정한 형태의 틀, 부품을 갖고 다양한 형태의 결과물을 만드는 것을 의미한다. 다시 말해 제공 받은 일정한 요소와 틀, 규약을 가지고 무언가를 만드는 일을 의미한다.

    프레임워크란 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼 룰을 제공하는 프로그램 이다.

    라이브러리란?

    결과물을 만드는 것을 고려하지 않고, 도구의 모음을 이야기 하는 것을 의미한다.

    공통점과 차이점

    공통점

    프로그램을 쉽게 만들기 위해 만든 것이다.

    차이점

    자유도. 프레임워크는 꼭 규약을 지키며 만들어가야 한다. 하지만 라이브러리는 도구이기 때문에 더 자유도가 높다. 프레임 워크가 가진 규약을 지킨다면 나머지 다른 부분은 어떤 도구를 써도 무방하다.

    출처 : https://engkimbs.tistory.com/673

    ### why?

    생산성이 향상되기 때문이다.


    프레임 워크를 쓰는 이유?

    프레임 워크를 통해 어떤 프로그램이 쉽게 만들어지기 위한 요소와 룰을 제공받아 소프트웨어의 생산성과 품질이 높아진다.

    라이브러리를 쓰는 이유?

    다양한 기능을 제공하는 도구를 통해 소프트웨어를 쉽게 개발할 수 있다.

    ### how?

    프레임워크 개발의 이해와 시작 - Kimstar 3.0

    • 먼저 구현 -> 문제 해결 방법을 작은 집합으로 나눔 -> 구현체 중 컨텍스트를 인자화해 변경할 수 있도록 수정
    • 도메인 전문가가 만들때 : Up-Front 디자인 방식
    • 코딩 전문가가 만들때
      • 반복적인 구현을 통해 코드를 개선해 나감
      • 반복 개발시 Hot Spots과 Frozen Spots를 잘 구분해서 다음번 개발시 잘 구성하자
      • App이 다 만들어지면 이전 프레임워크와 비교하여 재사용성 부분을 반영
    • 구현클래스에서 추상클래스 유추하기
      • 구현클래스에서 일반적인 부분들을 뽑아서 추상클래스 만들기
      • 1) 공통 기능의 구현클래스 준비
      • 2) 구현 클래스의 공통 기능을 하나의 메소드로 옮긴다.
      • 3) 옮겨진 구현 클래스의 멤버로 있는 메소드의 이름을 동일하게
      • 4) 이름을 변경한 메소드의 인자, 리턴값을 동일하게 일반화
      • 5) 해당 메소드를 분리하거나 병합할 필요시 리팩토링
      • 6) 같은 메소드명이지만 다른 구현이라면 추상클래스에서 메소드명을 반영
      • 7) 구현 클래스의 메소드 내용이 같다면 수퍼클래스로 구현을 옮김
    • 상향식 설계
      • 하향식 : 구현 클래스 먼저 만들고 이를 바탕으로 추상클래스 만듬
      • 상향식보다 쉽다.
      • R = I + J = AX + AY = A(X + Y) –> 여기서 A는 공통부분
      • 필요한 설계 원칙
        • 의존 관계 역전 원칙(The Dependency Inversion Principle)
        • 인터페이스 분리 원칙(The Interface Segregation Principle)
        • 리스코프 치환 원칙(The Liskov Substitution Principle)
        • 단일 책임 원칙(The Single Responsibility Principle)
        • 개방 폐쇄 원칙(The Open-Closed Principle)

  • 고준희

    Framework/Library

    [What]

    소프트웨어는 혼자서 만들 수는 없다. 왜냐하면 우리는 누군가가 만든 소프트웨어 위에서 동작하는 소프트웨어를 만들고 있는 것이기 때문이다. 우리가 소프트웨어를 만들 때 자기 혼자 만드는 것보다는 다른 사람이 이미 잘 만들어놓은 것을 부품으로 이용해 내가 만들고자 하는 것을 빠르게 조립해서 만드는 것이 오늘날 소프트웨어를 만드는 기본 중의 기본이라고 할 수 있다. 이때 라이브러리와 프레임워크 두 가지 개념이 등장한다. 이 둘은 다른 사람의 도움을 받아 소프트웨어를 만든다는 점에서 비슷하다. 라이브러리는 도서관이라는 뜻인데 어떤 부품들이 되는 소프트웨어가 정리정돈 되어있는 곳이다. 즉 라이브러리라 함은 내가 필요한 부품을 가져오는 느낌이다.

    Frame(틀)work 같은 경우는 우리가 만들고자 하는 것이 무엇이냐에 따라서 예를 들면 게임이냐 웹이냐 채팅이냐에 따라 언제나 필요한 공통적인 것이 있고 우리가 만들고자 하는 것의 기획 의도에 따라서 달라지는 부분이 있을 것인데 그중에서 공통적인 부분은 프레임워크가 만들어 놓고 우리는 만들고자 하는 것의 기능에 따라서 달라지는 부분만 살짝살짝 수정하는 것을 통해서 우리가 만들고자 하는 것을 처음부터 끝까지 만들지 않도록 해주는 반제품과 같은 것을 프레임워크라고 부른다.

    라이브러리는 소프트웨어를 만드는 내가 라이브러리를 가져와 쓰는 느낌이라면 프레임워크는 우리가 프레임워크 안으로 들어가서 작업하는 느낌이다. 어쨌건 둘 다 다른 사람과 협력하는 모델이다.

    [Why]

    What에서 설명했듯이 소프트웨어 생산의 효율성 증대를 위해 사용한다.

    [How]

    자바 : Struts, Spring, 전자정부 프레임워크

    QRM : myBatis(iBatis), Hibernate

    자바스크립트 : AngularJS, React, Polymer, Ember

    프론트엔드 : Bootstrap, Foundation, MDL

  • 정효인

    # Framework

    ## What?

    • frame+work. 정해진 frame(규칙) 안에서 work(코딩)하는것.

    ## Why?

    • 다양한 도구를 제공함으로써 개발자에게 편리성을 제공한다. 프레임워크/라이브러리가 없다면 모든 개발자는 어떠한 프로그램을 개발하고자 할 때마다 같은 툴을 사용하고 있을 수 있음에도 불구하고 각자 그 툴을 구현해야 할 것이다. 이것은 효율성이 없다.

    ## How?

    • ReactJS, Django: 대표적인 프레임워크(프레임워크, 라이브러리 구분은 관점에 따라 달라질 수 있다.ex) 리액트는 사용자가 react.js를 ‘선택’하여 사용한다는 점에서 라이브러리로 볼 수 있지만, 코드 속 component들은 react에서 정해준 component 기반으로 작성하여야 하므로 프레임워크라고도 볼 수 있다.)

  • 김윤재

    프레임워크(framework)

  • 임수환

    • .