Architecture) MVC 구조에 대해 블록 그림을 그리고, 각 역할과 흐름을 설명하시오.

MVC 패턴이란?

  • Model(모델), View(뷰), Controller(컨트롤러)

Traditional MVC

Traditional MVC

  • 다이어그램을 보면 Model, View 그리고 Controller, 이 세 요소가 서로 강하게 연결되어 있음을 알 수 있다.
  • Model에서는 애플리케이션에서 사용할 데이터들을 관리하고, View유저 인터페이스를 표현 및 관리한다.
  • Controller는 View와 Model의 다리 역할을 해 View의 입력을 Model이 반영하고, Model의 변화를 View에 갱신하는 역할을 한다.
  • 강하게 연결된 셋은 독립성이 낮기 때문에 이들 각각의 재사용성은 굉장히 떨어지며, 그렇기 때문에 현재 iOS 개발에는 전통적인 MVC 아키텍쳐는 맞지 않다고 볼 수 있다.

Apple’s MVC

  • 위의 이유로 애플에서는 새로운 MVC 아키텍쳐를 제시했다.

Cocoa MVC

  • 기존 MVC 패턴과는 다르다.
  • ControllerView와 Model의 중재자 역할을 함으로써 View와 Model에 독립성을 주었다.

하지만
Controller의 역할을 수행하는 UIViewController의 이름에서도 알 수 있듯이,
ControllerView를 포함하는 것은 물론, View의 Life Cycle까지 관리하기 때문에 View와 Controller를 분리하기 어렵고, 재사용도 어렵다. 또한 테스트도 불가능하다.
ViewController가 너무 많은 역할을 하기 때문에 MVC를 Massive View Controller라고 부르기도 한다.

  • 그러므로 실제 다이어그램은 다음과 같은 흐름을 갖게 된다.

Reality Cocoa MVC

  • View와 Controller가 강하게 연결되어 있어 View Controller가 거의 모든 일을 한다.

좋은 아키텍쳐의 기준에 얼마나 부합하는가?
Distribution - Model과 View가 독립되었지만, View와 Controller가 너무 밀접하게 연관되어있기 때문에 독립성을 확보하지 못한다.
Testability - View와 Controller가 강하게 연결되어 있기 때문에, 오로지 Model만 테스팅을 진행할 수 있다.
Ease of use - 다른 패턴들에 비해 코드 길이가 적고, 친숙한 아키텍처이기 때문에 개발자들이 쉽게 유지보수 할 수 있다.

  • Cocoa MVC 패턴은 개발 진행 속도에 있어서는 가장 빠르다고 할 수 있다.
  • 따라서 아키텍처가 중요하지 않을 때는 선택할만한 패턴이지만, 나중에 유지보수가 어렵다는 문제가 있다.

참고

Architecture) MVC 구조에 대해 블록 그림을 그리고, 각 역할과 흐름을 설명하시오.

https://suzumsz.github.io/2021/09/28/Architecture/MVC/

Author

Sujeong Kim

Posted on

2021-09-28

Updated on

2021-10-05

Licensed under

댓글