기출문제/정보처리기사

2022년 2회 정보처리기사 기출문제 20번

엉클지니 2025. 2. 23. 22:18

20. 소프트웨어 아키텍처 모델 중 MVC(Model-View-Controller)와 관련한 설명으로 틀린 것은?

    MVC 모델은 사용자 인터페이스를 담당하는 계층의 응집도를 높일 수 있고, 여러 개의 다른 UI를 만들어 그 사이에 결합도를 낮출 수 있다.

     모델(Model)은 뷰(View)와 제어(Controller) 사이에서 전달자 역할을 하며, 뷰마다 모델 서브시스템이 각각 하나씩 연결된다.

    (View)는 모델(Model)에 있는 데이터를 사용자 인터페이스에 보이는 역할을 담당한다.

    제어(Controller)는 모델(Model)에 명령을 보냄으로써 모델의 상태를 변경할 수 있다.

 

MVC(Model-View-Controller) 패턴은 소프트웨어 아키텍처에서 흔히 사용되는 디자인 패턴으로, 애플리케이션의 구조를 세 가지 주요 구성 요소로 나누어 관리하는 방식입니다. 이제 각 항목을 하나씩 분석하면서 틀린 설명을 찾고, 그에 대한 해설과 예시를 통해 쉽게 이해할 수 있도록 설명해 드리겠습니다.

1. MVC 모델의 기본 구성

  • 모델(Model): 애플리케이션의 데이터와 비즈니스 로직을 담당합니다. 데이터를 관리하고, 데이터 상태를 변경하는 역할을 합니다.
  • 뷰(View): 사용자에게 데이터를 보여주는 역할을 합니다. UI(사용자 인터페이스)를 구성하며, 사용자가 볼 수 있는 화면을 담당합니다.
  • 컨트롤러(Controller): 사용자의 입력을 받아 모델에 전달하고, 모델의 상태를 업데이트한 후 그 결과를 다시 뷰에 전달하는 역할을 합니다.

각 선택지에 대한 해설

① "MVC 모델은 사용자 인터페이스를 담당하는 계층의 응집도를 높일 수 있고, 여러 개의 다른 UI를 만들어 그 사이에 결합도를 낮출 수 있다."

  • 해설: 이 설명은 맞습니다. MVC 패턴을 사용하면 UI와 비즈니스 로직을 분리할 수 있어 UI를 변경하더라도 모델(Model)이나 컨트롤러(Controller)와의 결합도가 낮아지며, 응집도도 높아집니다. 즉, 한 모델을 여러 UI에서 재사용할 수 있기 때문에 결합도가 낮아지고, 응집도는 높아집니다.

❷ "모델(Model)은 뷰(View)와 제어(Controller) 사이에서 전달자 역할을 하며, 뷰마다 모델 서브시스템이 각각 하나씩 연결된다."

  • 해설: 이 설명은 틀립니다. 모델(Model)은 뷰(View)와 컨트롤러(Controller) 사이에서 전달자 역할을 하지 않습니다. 모델은 비즈니스 로직과 데이터를 관리하는 주체입니다. 뷰(View)는 모델의 데이터를 사용자에게 보여주고, 컨트롤러는 사용자의 입력을 받아 모델에 명령을 전달하는 역할을 합니다. 모델은 독립적이며, 뷰마다 별도의 모델 서브시스템이 연결되지는 않습니다. 하나의 모델이 여러 뷰와 연결될 수 있습니다.

③ "뷰(View)는 모델(Model)에 있는 데이터를 사용자 인터페이스에 보이는 역할을 담당한다."

  • 해설: 이 설명은 맞습니다. 뷰는 모델에서 데이터를 가져와 사용자에게 표시하는 역할을 합니다. 즉, 모델에 있는 데이터를 UI로 변환하여 사용자에게 시각적으로 보여주는 부분입니다.

④ "제어(Controller)는 모델(Model)에 명령을 보냄으로써 모델의 상태를 변경할 수 있다."

  • 해설: 이 설명도 맞습니다. 컨트롤러는 사용자의 입력을 받아 모델에 명령을 보내 모델의 상태를 변경할 수 있습니다. 예를 들어, 사용자가 버튼을 클릭하면 그에 해당하는 명령이 컨트롤러를 통해 모델로 전달되고, 모델의 상태가 변경됩니다.

결론

  • 틀린 설명은 ❷번입니다.
  • ❷번 설명에서는 모델이 뷰와 컨트롤러 사이에서 전달자 역할을 한다고 했지만, 모델은 전달자가 아니라 데이터와 비즈니스 로직을 관리하는 주체입니다. 뷰와 모델은 간접적으로 연결되고, 모델은 여러 뷰와 연결될 수 있습니다.

예시

  • 예시 1: 쇼핑몰 애플리케이션에서, 사용자가 상품 목록을 보는 화면이 있을 때, **뷰(View)**는 상품 정보를 화면에 표시하는 역할을 하고, **모델(Model)**은 상품 데이터(가격, 이름 등)를 관리하며, **컨트롤러(Controller)**는 사용자가 선택한 상품에 대한 정보를 받아 모델에 업데이트를 요청합니다.
  • 예시 2: SNS 애플리케이션에서 사용자가 새로운 게시글을 작성하면, **컨트롤러(Controller)**는 사용자의 입력을 받아 **모델(Model)**에 새로운 게시글 데이터를 저장하도록 명령하고, **뷰(View)**는 그 게시글을 화면에 표시합니다.

이처럼 MVC 패턴은 애플리케이션의 각 부분을 분리하여 관리하므로, 코드의 유지보수성이 높아지고, UI를 변경할 때 비즈니스 로직에 영향을 주지 않게 됩니다.

반응형