[Concept] MVC(Model View Controller)

Van·2023년 5월 29일
0
post-thumbnail

Goal

  • MVC에 대해 간략하게 설명할 수 있다
  • 각각 Model, View, Controller의 컨셉을 알아보자

Introduction

모델-뷰-컨트롤러(model–view–controller, MVc)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다.
출처 : 위키백과<모델-뷰-컨트롤러>


MVC

MVC(Model-View-Controller) 패턴은 애플리케이션을 크게 세 가지 구성요소로 나누며 각 구성 요소는 특정한 역할을 수행하며, 역할 간의 의존성을 최소화하여 코드의 유지 보수성과 테스트 용이성을 개선합니다.

MVC 패턴의 등장

애플리케이션 개발의 규모가 커지면서 코드가 복잡해지고 유지 보수의 어려움에 대한 대응으로 등장하였습니다.

이전에는 사용자 인터페이스, 데이처 처리, 비즈니스 로직이 모두 하나의 모듈 또는 클래스에 결합되어 있었습니다. 이러한 부분은 프로젝트의 규모가 작으면 큰 문제가 되지 않았지만 규모가 점점 커지면서 코드의 양이 늘어나고 이로 인해서 코드의 가독성과 재사용성이 저하되며, 변경이나 확장에 따른 영향이 전체 코드에 퍼지는 문제가 발생했습니다.

이러한 상황을 해결 하고자 등장한 MVC 디자인 패턴의 주요 목적은 애플리케이션의 비즈니스 로직화면을 구분하는데 중점을 두고 있습니다. 이러한 "관심사 분리"는 개발을 진행하는데 있어서 더 나은 업무의 분리와 향상된 관리를 제공합니다.

즉, 서로 분리되어 각자의 역할에 집중할 수 있게끔하여 애플리케이션을 만든다면 유지 보수성, 확장성, 유연성이 증가하고 코드의 중복이 사라지는 효과를 가질 수 있습니다.

Model

모델은 애플리케이션의 데이터와 비즈니스 로직을 담당합니다.
데이터베이스, 파일 시스템, 외부 서비스 등과 상호작용하여 데이터를 가져오고 조작하는 역할을 수행하며 모델은 독립적으로 존재하며, 데이터의 유효성 검사, 검색, 수정, 삭제 등과 같은 작업을 수행할 수 있습니다. 모델은 일반적으로 객체 지향 프로그래밍에서 클래스로 표현되며, 데이터와 해당 데이터를 조작하는 메소드를 포함합니다.

View

뷰는 사용자에게 데이터를 시각적으로 표현하는 역할을 합니다.
주로 사용자 인터페이스 컴포넌트로 구성되며, 사용자가 데이터를 읽을 수 있도록 합니다. 뷰는 모델에서 가져온 데이터를 표시하고, 사용자의 입력을 수신하여 컨트롤러로 전달합니다. 여러 개의 뷰가 하나의 모델을 기반으로 할 수 있으며, 동일한 데이터를 다른 방식으로 표현할 수 있습니다.

Controller

컨트롤러는 모델과 뷰 간의 상호작용을 관리합니다.
사용자의 입력을 처리하고, 적절한 모델 작업을 트리거하며, 모델의 변경 사항을 뷰에 반영합니다. 컨트롤러는 사용자와 애플리케이션의 다른 부분 사이의 중재자 역할을 수행하며, 뷰와 모델 간의 결합도를 낮추고 재사용성을 높이는 데 중점을 둡니다. 컨트롤러는 사용자 입력을 받아 해당 입력에 따라 적절한 동작을 수행하고, 결과를 모델에 요청하거나 뷰에 전달합니다.


MVC 패턴이 가진 한계

물론 MVC 패턴이 가진 많은 장점도 있지만, 몇 가지 한계점도 가지고 있습니다.

1. 복잡성

상대적으로 복잡한 구조를 가지고 있습니다. 이는 개발자가 패턴을 이해하고 올바르게 구현하기 위해 노력해야 함을 의미합니다. 특히, 대규모 프로젝트에서 모델, 뷰, 컨트롤러 간의 상호작용과 데이터의 흐름을 관리하기 어려울 수 있습니다.

2. 경직성

각 구성 요소의 역할과 책임을 명확하게 정의하고 분리합니다. 이로 인해 기능이나 요구사항의 변경이 발생할 경우 구성 요소 간의 의존성 수정이 필요할 수 있습니다. 이는 유연성과 확장성에 제한을 줄 수 있습니다.

3. 뷰와 컨트롤러 간의 과도한 의존성

뷰와 컨트롤러 간의 밀접한 상호 작용이 요구됩니다. 이로 인해 뷰와 컨트롤러 간의 의존성이 높아질 수 있습니다. 이는 코드의 재사용성과 테스트 용이성을 저하시킬 수 있습니다.

4. 뷰와 모델의 동기화

MVC 패턴에서는 뷰와 모델 사이의 동기화를 수동으로 관리해야 합니다. 모델의 변경 시 뷰를 업데이트하고, 사용자의 입력을 모델에 반영해야 합니다.


요약

MVC 디자인 패턴은 크게 세 가지 구성요소로 모델, 뷰, 컨트롤러로 나누어 개발하는 것을 말합니다. 이러한 디자인 패턴이 등장한 이유는 프로젝트 규모가 점점 커지게 되면 애플리케이션의 결합도가 자연스레 증가하여 개발을 진행하는데 있어서 코드가 복잡해지고 기능들이 서로에게 강하게 결합되어 코드의 수정 및 테스트가 어려워 집니다. 때문에 MVC의 가장 큰 핵심은 "관심사 분리"로 애플리케이션의 결합도를 느슨하게 만들어 어느 한 쪽의 코드가 변경 되더라도 서로 영향이 없는 독립된 모듈 형태로 만드는 것을 목표로 합니다.

profile
그럭저럭 어렵지 않게 Smile!

0개의 댓글