본문 바로가기

Software 공부/Software Web Knowledge

[Software][Knowledge] Framework (프레임워크)

반응형

※ 아직 모르는 것이 많아서 정리 중입니다.

   잘못된 부분이 있다면 댓글로 알려주세요.

※ 공부를 통해서 내용이 수정될 수 있습니다.


Framework (프레임워크)

  • 'FRAME 프레임(틀, 규칙or법칙)'+'WORK 워크(일, 소프트웨어의 목적)’
  • (내가 생각한 한 문장) 프레임워크란?
    • 프레임워크 = 글(Code)을 쓰기 위한 양식
    • 소프트웨어를 만들기 위한 규칙들이 모여져 있어서 양식이라고 생각한다.
    • 양식이라는 큰 틀을 벗어나면 안되고 목적에 맞게 여러개의 양식들이 있다.
    • 양식안에 글을 쓰기 위해서는 양식의 규칙이 있다. 그 안에 맞춰서 써야한다.
  • 어떤 프로그램을 만들기 위한 기본 틀
  • 복잡한 문제를 해결하거나 서술하는데 사용하는 기본 개념 구조
  • Frame(규칙) 안에 있는 다양한 기능 제공

 


Library (라이브러리)

  • 재사용이 가능한 필요기능으로 언제든지 필요한 곳에 호출하여 사용할 수 있도록 Class나 Function으로 만들어진 것
  • 필요한 기능들이 모여있는 코드의 묶음
  • (내가 생각한 한 문장) 라이브러리란?
    • 라이브러리 = 글(Code)를 쓸 때의 구성 형식의 인용
    • 서론-본론-결론, 기-승-전-결 같이 구성에 형식이 있다.
    • 어떤 글을 쓰냐에 따라 다르지만 이 형식은 사용을 해도 되고 안해도 된다.
    • 필요에 따라서 잘 만들어진 글의 형식에서 단어, 문장을 바꿔 사용하는 것 같이 느껴졋다.
  • 활용할 수 있는 도구들의 집합
  • 사용 여부는 코드 작성자 선택 사항.
  • 새로운 라이브러리 제작 시에도 엄격한 규칙이 존재하지 않음

Framework (프레임워크) & Library (라이브러리) 비교

  • 가장 큰 차이점은 "시스템 흐름"을 누가 가지고 있는가.
    • 프레임워크 : 시스템 흐름 프레임워크가 제어
    • 라이브러리 : 시스템 흐름 개발자가 제어

Framework (프레임워크) 특징

  • 장점
    • 효율적
      • zero에서 시작 보다 시간적 비용적 절약이 된다.
      • 생산성이 좋아진다. 개발 속도가 향상 된다.
      • 코드의 재사용성이 높고 확장성이 좋다.
      • 새로운 이슈나 기능이 업데이트를 통해 사용할 수 잇다.
    • 품질 향상
      • 프레임워크에서 제공하는 검증된 코드들을 사용한다.
      • 다수의 개발자가 사용하면서 수정을 반복했다.
      • 개발자가 실수하기 쉬운 부분도 커버를 해준다.
      • 오료가 적은 결과물을 얻을 수 있다.
      • 업데이트된 기능을 사용하여 품질을 올릴 수 있다.
    • 유지보수성이 좋다
      • 가이드가 있어서 체계적으로 관리할 수 있다.
      • 체계적이라는 것은 기본 구조를 담당자가 바뀌어도 확인하기 쉽다는 것이다.

  • 단점
    • 학습 시간
      • 본인이 짠 것이 아니기 때문에 학습이 필요하다.
      • 그 안에 잇는 코드를 습득하고 이해하는데 시간이 오래 걸린다.
    • 제약 사항
      • 프레임워크 특징상 설계자가 설계한 구조가 있다.
      • 개발자는 자유롭고 유연하게 개발하는데 한계가 있다.
    • 프로젝트 크기
      • 많은 코드를 작성하여 구축이 된 것이 프레임워크다.
      • 로딩시간이 길어지고, 성능이 저하될 수 잇다.
      • 프로젝트 완성시 크기가 크다.

Framework (프레임워크) 종류

  • JAVA
    • Spring
    • Grails
    • Play
    • GWT, 자바서버페이스, 스트럿츠, Vert.x 등
  • Python
    • Djnago
    • Flask
  • PHP7
    • Laravel
    • Symfony
  • C#
    • .NET
    • ASP.NET
  • Go
  • Ruby
    • Rubt on rails
    • Sinatra
  • Node.js
    • Express.js

 

반응형