개발 일지/CS

[CS]Framework

미숫가루설탕많이 2023. 2. 2. 11:21
 "Framework란, 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을
재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것이다."

- Ralph Johnson

 

 프레임워크는 어떠한 목적을 달성하기 위해서 복잡하게 얽혀있는 문제를 해결하기 위한 구조이다.

 

 Frame이란 단어의 사전적 의미는 '뼈대', '틀'이다. 즉, 어떤 대상의 큰 틀이나 외형적인 구조를 의미하며, 프레임워크 역시 소프트웨어 개발에서 하나의 뼈대 역할을 한다고 볼 수 있다.

 

 프레임워크를 사용하면 애플리케이션의 핵심 로직을 개발하는 것에 집중할 수 있다. 이미 기본 구조가 만들어져 있는 상황에서 코드를 작성하기 때문이다.

 

 또한, 애플리케이션을 효율적으로 관리할 수 있다. 프레임워크의 규약에 맞게 코드를 작성하기 때문에 유지보수가 용이하고 다른 사람이 작성한 코드도 빠르게 파악하기 쉽다. 유지보수 이외에도 코드의 재사용이 용이하고 기능 또한 쉽게 확장이 가능하다는 장점이 있다.

 

 하지만 프레임워크에서 정하는 규약을 학습할 시간이 필요하며, 자유롭고 유연한 개발이 어렵다는 점도 있다. 프레임워크는 기본적인 구조라고 했었는데 이 구조를 변경하려면 전체적으로 변경해야 하기 때문에 프레임워크를 변경하는 등의 상황이 생기면 많은 시간과 노력이 필요할 것이다.

 

 

 

 

Framework / Library

 

 추가적으로 알아야 할 부분은 라이브러리(Library)이다. 라이브러리는 재사용이 가능한 기능으로 반복적인 코드 작성을 없애고 필요할 때마다 호출하여 사용할 수 있도록 만들어진 것이다. 이 라이브러리를 통해서 코드의 가독성과 유지보수의 용이성을 기대할 수 있고 프로그래밍 시간 또한 절감된다는 장점이 있다.

 

 라이브러리는 프레임워크와 다르게 쉽게 변경이 가능하며 필요한 기능들을 선택해서 사용할 수 있다. 즉, 프레임워크는 개발을 하기 위해 지켜야 하는 틀이고 라이브러리는 개발을 하기 위해 필요로 하는 미리 구현이 되어있는 것이다.

 

 이 말은 애플리케이션에 대한 제어권으로 표현할 수 있는데, 라이브러리에서 애플리케이션 흐름의 주도권은 개발자에게 있고 프레임워크에서 애플리케이션 흐름의 주도권은 개발자가 아닌 프레임워크에 있는 것이다.

'개발 일지 > CS' 카테고리의 다른 글

[CS] Hamcrest  (0) 2023.03.06
[CS] DDD  (0) 2023.03.04
[DB] ACID  (0) 2023.01.30
[Web] HTTP Messages  (0) 2023.01.26
[Web] AJAX  (0) 2023.01.26