인프런 커뮤니티 질문&답변

진영님의 프로필 이미지

작성한 질문수

아키텍처 패턴 with iOS - GUI Architecture Patterns(이론)

Smalltalk MVC (2) - MVC의 본질

MVC의 본질에 대한 질문

해결된 질문

24.01.05 22:27 작성

·

284

0

 안녕하세요! MVC의 본질에 대한 강의를 듣다가 문득 궁금증이 생겨서 글을 남깁니다.

 

강의자님께서 유저의 멘탈모델과 컴퓨터 모델을 일치시키는 것이 MVC의 본질이라고 하셨습니다. 또한, 유저의 멘탈모델이라는 것이 사용자가 애플리케이션을 사용하면서 "내부적으로 이렇게 되있을 것이다." 라고 생각하는 것이라고 설명해주셨습니다.

 

첫 번째 궁금증은 유저의 멘탈모델과 컴퓨터 모델을 일치시킨다는 것은 곧 '유저가 애플리케이션의 인터페이스만 봐도 어떤 일이 발생할지, 어떻게 동작될지 대충 예상이 될 정도로 애플리케이션을 유저 친화적으로 만든다'라고 해석해도 될까요?

 

두 번째 궁금증은 만약, 위의 저의 해석이 맞다면, "프레젠테이션 계층과 유저의 멘탈모델, 즉 내부 구현 계층이 분리되면 유저 친화적인 애플리케이션을 개발할 수 있다."로 귀결될 수 있는데, 사실 프레젠테이션 계층과 모델 계층의 분리는 어디까지나 개발자를 위한 분리인 줄 알았는데, 사용자를 위한 분리였다는 의미로 해석되어 상당히 혼란스럽니다...

 

좋은 강의 제공해주셔서 감사합니다! 좋은 답변 기대할께요~

답변 1

0

배언수님의 프로필 이미지
배언수
지식공유자

2024. 01. 06. 05:31

안녕하세요, 진영님.

MVC의 본질을 이해하는 것이 도움이 되는 이유는 유저친화적인 애플리케이션을 만들 수 있기 때문이라기 보다는 같은 MVC라는 이름을 가지고 있다고 하더라도, 입력을 받는 것이 뷰인 환경도 있는가 하면 컨트롤러인 환경도 있고, 컨트롤러가 중재자 역할을 하는 환경도 있고, 뷰를 위한 별도의 모델이 존재하거나 전략 패턴, 컴포지트 패턴, 커맨드 패턴, 옵저버 패턴 등 다양한 디자인 패턴을 사용하는 등 수많은 형태의 MVC가 있기 때문입니다.

그럼 이렇게 다양한 형태의 MVC가 존재한다면 자연스럽게 '도대체 MVC라는게 무엇이냐. 이것이 MVC다라고 한마디로 정의내릴 수 있는 것이 있기는 한 것이냐'라는 물음이 생겨날 수 있고 여기에 대한 답이 될 수 있는 것이 모델 계층을 바라보는 시각이 될 수 있는 것입니다. 과거에는 모델이 뷰나 컨트롤러 같은 프레젠테이션 계층과 분리되지 않은 개발환경도 있었는데, 그런 개발방식을 잘못된 분리라고 생각했기 때문에 모델을 프레젠테이션 계층으로부터 분리시키는 것이 중요하다고 생각했고, 개발환경마다 상황에 따른 지엽적인 차이는 있을 수 있지만 이런 원칙을 지킨다면 MVC라고 할 수 있다라는 것을 강조하는 의미로 받아들이시면 되겠습니다.

진영님의 프로필 이미지
진영
질문자

2024. 01. 06. 17:04

아, 그러면 MVC를 'MVC의 각 계층이 담당하는 역할로 정의하는 것이 아닌 모델 계층과 프레젠테이션 계층의 분리'로 이해하면 될까요?

배언수님의 프로필 이미지
배언수
지식공유자

2024. 01. 06. 18:54

어떤 하나의 원리로 모든 내용을 꿰뚫으려는 시도보다는 계층의 분리 또한 MVC의 한 측면인 것이고 개발환경마다 나타나는 각 컴포넌트들의 역할과 함께 포괄적으로 이해하시는게 좋습니다.

진영님의 프로필 이미지
진영
질문자

2024. 01. 06. 19:05

답변해주셔서 감사합니다🙇

진영님의 프로필 이미지

작성한 질문수

질문하기