본문 바로가기
IT/이슈 및 정보

MVC 패턴, 직무면접 전 반드시 알고가자!

by ghostzoominn 2020. 9. 23.

「 개발자, 전산직 직무면접 필수 질문 MVC 패턴」

오늘은 개발직군, 전산직렬 모두에서 자주 출제되는 직무면접 질문인 MVC 패턴에 대한 설명을 드리겠습니다.

 

글 마지막부분에 실제 신한은행 면접에서 나온 기출문제도 있으니 확인 하시기 바랍니다.

 

「 MVC 패턴이란? 」

MVC(Model-View-Controller)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴입니다.

 

소프트웨어 디자인 패턴이라는 개념을 쉽게 설명드리자면 어떠한 소프트웨어를 제작하고 유지보수할 때 필요한 부분들을 사전에 나눠놓고, 효율적으로 관리할 수 있도록 설계하는 것 입니다.

 

MVC에서 M(model)은 애플리케이션의 정보(데이터)를 나타내며, V(view)는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, C(controller)는 데이터와 비즈니스 로직 사이의 상호동작을 관리합니다.

 

아래는 MVC 모델을 설명하는 관계도 입니다.

MVC 패턴

파란선은 직접적인 관계를, 빨간선은 간접적인 관계를 나타냅니다.

 

「 MVC 패턴의 구성요소 」

1) 모델

 - 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보합니다. 이와 같은 과정을 통해서 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가·수정할 수 있습니다.

(ex. 처리되는 알고리즘, DB와의 상호작용, 데이터 등)

 

2) 뷰

 - 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어옵니다.

(ex. 최종 사용자에게 보여지는 화면(UI)

 

3) 컨트롤러

 - 모델에 명령을 보냄으로써 모델의 상태를 변경할 수 있습니다.(ex. 한글 파일을 수정함) 또한, 뷰에 명령을 보냄으로써 모델의 표시방법을 바꿀 수 있습니다.(ex. 한글 문서를 스크롤하여 내리면 사용자에게 보여지는 화면이 변경 됨.)

 

「 MVC 패턴을 쓰는 이유는? 」

여기서 MVC패턴을 왜 써야하는지에 대한 질문이 나올 수 있습니다.

 

한 줄로 요약하자면 '효율적인 개발 및 유지보수를 위해서'라고 할 수 있습니다.

 

사용자가 보는 페이지(view), 데이터 처리(Model), 이를 제어하는 컨트롤러(Controller)로 각각 분리하여 프로그램을 개발하면, 중복개발되는 부분을 방지할 수 있어 개발시 효율성이 증대될 뿐 만 아니라, 추후 프로그램의 유연한 확장성을 가질 수 있으며, 어떠한 부분에서 문제가 발생하더라고, 다른 부분에 최소한의 영향을 주며 변경할 수 있습니다.

 

「 MVC 패턴의 단점? 」

이처럼 좋게만 보여지는 MVC패턴에도 문제점은 있습니다.

 

컨트롤러가 Model과 View에 대한 모든 처리를 담당하고 있기때문에, 어느선까지는 효율적인 관리가 가능하지만 프로그램이 복잡하고 무거운 대규모 프로젝트에서는 컨트롤러에 업무가 과중될 수 있습니다.

 

개발과 유지보수가 용이하도록 설계한 모델이지만 일정 수준이상의 복잡한 프로젝트에서는 수정시 테스트가 힘들고, 하나의 수정이 다른 부분에 영향을 미치는 등 역효과가 날 수 있다는 것입니다.

 

따라서 이러한 문제점을 개선할 수 있는 다양한 방법들이 고안되었으며 MVP,MVVM 등이 그 예입니다.

 

「 2019년 상반기 신한은행 면접기출 」

Q1. MVC 디자인 패턴에 대해 알고있나?

 Q1-1. MVC 패턴을 사용할때 문제점은 없나?

 Q1-2. MVC 패턴의 문제점을 어떤식으로 개선할 수 있나?

댓글