ABOUT ME

  • 프레임워크(Framework)란?
    카테고리 없음 2023. 8. 16.

     

    프레임워크의 기본적인 정의는 이렇다.

     

    프레임워크(framework)는 어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조며,
    소프트웨어 개발에 있어 하나의 뼈대 역할을 한다

     

    항상 그렇듯이 정의만 보고 제대로 이해한 적이 없다.

    보통 좀 더 쉽게 프레임워크를 설명하기 위해서 라이브러리의 개념과 비교해 많이 설명하곤 한다.

     

     

    ▶︎ 프레임 워크(framework)란 무엇인가?

     

    단어 자체로 보자면 Frame은 틀과 구조, Work 일하다 인데, 이 둘을 합치면 

    틀을 가지고 일한다 가 된다.

    말 그대로 프레임워크는 일정한 형태의 틀에 맞추어 다양한 결과물을 만들도록 하는 것이다.

     

    이해하기 쉽게 레고로 예를 들어보겠다.

     

     

    위의 레고들이 있다고 치자. 이 레고는 하나의 집을 만들기 위한 부품들이다. 

    그리고 이 레고들을 조합해 아래의 집을 조립할 수 있다.

     

     

    레고 세트를 조립할 때, 세트 안에는 특정 모델을 만들기 위한 지침서와 기본 구조가 포함되어 있다.

    이 지침서는 어떤 순서로 블록을 조합해야 하는지, 어떤 블록이 어디에 들어가야 하는지를 보여주며, 기본적인 구조를 제공한다. 여러 레고 블록을 조합해 원하는 모델을 만들 수 있지만,

    그 모델을 만들기 위해 필요한 구조와 지침이 이미 제공된다.

     

    이것을 프로그래밍, 소프트웨어에서 대입한다면?

     

    위의 예시에서, 저 집을 만들 때 직접 레고들을 제작할 계획이 아니라면, 

    저 레고들과 지침서를 제공해주는 곳이 있어야할 것이다.

    IT에서도 마찬가지로 저 요소들을 제공해주는 프로그램이 필요한데 바로 그것이 개발자들이 말하는 프레임워크이다. 엄밀히 이야기하면 프레임워크 제공 프로그램이라 불러야 하지만 그냥 프레임워크라 불린다. 

     

    이 프레임워크는 어떤 프로그램을 쉽게 만들기 위한 요소와 룰을 제공해 줌으로서 소프트웨어의 생산성과 품질을 높이는 역할을 하는 것이다.

     

    결론적으로 소프트웨어에서의 프레임워크는 

    '특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램' 으로 이야기 할 수 있습니다.

     

    ▶︎ 라이브러리(Library)란?

     

    레고 상자 안에는 다양한 종류의 레고 블록들이 들어있다. 이 블록들은 다양한 색상과 크기로 제공되며, 원하는 모델을 만들 때 필요한 다양한 블록을 선택하여 사용할 수 있다.

    빨간색 블록을 쓰든 초록색 블록을 쓰든 자신이 원하는 모델에 알맞은 자재만 쓰면 되는 것이다.

     

    여기서 알맞은 자재가 바로 라이브러리 이다.

     

    라이브러리자재들의 모음이다.

     

    프레임워크를 가지고 프로그램을 프레임워크에서 제공하는 요소와 그것을 사용하기 위한 규약을 지키면 그 밖에 나머지는 어떤 라이브러리를 가져다가 써도 어떤 패키지를 가져다가 써도 상관이 없는 것이다

     

    라이브러리는

    '소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구들' 이라고 할 수 있다.

     

    ▶︎ 프레임워크 vs 라이브러리

     

    위의 설명을 보면 사용방식에 확연한 차이점이 보인다.

    프레임워크는 어떠한 구조와 규칙안에서 작업을 수행해야하는 반면에,

    라이브러리는 그저 재사용 가능한 코드의 모음으로 개발자가 필요한 기능을 선택하여 라이브러리를 활용하기만 하면 된다.

     

    그리고 프레임워크와 라이브러리의 또 다른 차이는 '제어의 흐름을 누가 쥐고 있느냐'에 있다.

     

    개발자는 프레임워크가 제어하는 흐름 안에서 작업을 수행한다.즉, 개발자가 코드를 호출하는 것이 아니라 프레임워크가 개발자의 코드를 호출하여 필요한 시점에 수행된다.

    라이브러리는 개발자가 필요한 기능을 호출하면 해당 기능을 수행한 결과를 반환받는다. 제어 흐름은 개발자가 직접 결정한다.

     

    둘의 공통점으로는 프로그램을 쉽게 만들기 위한 것으로

     

    - 재사용성 -

       프레임워크와 라이브러리는 모두 개발자가 필요한 작업을 더 효율적으로 수행하기 위해 재사용 가능한 코드와 기능을 제공

     

    - 개발 속도 향상 - 

       프레임워크와 라이브러리는 기본적인 작업이나 복잡한 기능을 미리 구현해 놓았기 때문에 개발자가 처음부터 모든 것을 만들 필요가 없다. 이로써 개발 속도를 향상시킬 수 있음

     

    등의 이점이 있다.

     

    - 요약 -
    프레임워크와 라이브러리는 모두 코드 재사용과 개발 효율성 증가를 목표로 하는 도구들이지만, 제어 흐름과 역할에서 차이가 있다.

     

     

     

    - 참고

    https://curryyou.tistory.com/363

    https://moolgogiheart.tistory.com/87

    https://engkimbs.tistory.com/673

    https://www.youtube.com/watch?v=pJTpl3umvE8&t=143s

Designed by Tistory.