디자인 패턴과 아키택처 & MVC패턴

1 minute read

디자인 패턴과 아키텍처 개념과 차이

소프트웨어 아키텍트와 소프트웨어 개발자 사이의 차이

  • 소프트웨어 아키텍처가 한 소프트웨어의 뼈대나 고수준의 기반을 담당하는데에 반해,

    소프트웨어 디자인은 각각의 모듈들이 어떤 것을 하는지,

    클래스의 범위, 함수의 목적 등 코드 수준의 디자인을 담당하는 것

MVC, MVVM 패턴 등 아키텍처 또는 디자인패턴이라고 불리우는데

사실 둘다 어떤 틀을 정하느냐에 따라 같은 의미를 지닌다.

야곰이 설명해주신 비유 중 한옥집을 만들 때 한옥집에 대한 설계가 아키텍처가 되고(큰그림),

한옥집에 ‘화장실이 밖에있어 내부에 신식으로 바꾸고 싶다’라고 하는 부분적인 해결방안

디자인 패턴이 된다.

소프트웨어 디자인 & 디자인 패턴

소프트웨어 아키텍처가 한 소프트웨어의 뼈대나 고수준의 기반을 담당하는데에 반해,

소프트웨어 디자인은 각각의 모듈들이 어떤 것을 하는지, 클래스의 범위,

함수의 목적 등 코드 수준의 디자인을 담당하는 것이다.

개발자라면 SOLID법칙이 무엇인지, 디자인 패턴이 어떻게 일반적인 문제들을 해결하는지

이해하고 있는 것이 중요!!!!

  • Single Responsibility(단일 책임 원칙)
  • Open Closed(개방-폐쇄 원칙)
  • Liskov substitution(리스코프 치환 원칙)
  • Interface Segregation(인터페이스 분리 원칙)
  • Dependency Inversion(의존 역전 원칙)

소프트웨어 아키텍처 정의

  • 유연성, 확장성, 실행가능성, 재사용성, 보안성과 같은 소프트웨어의 특성들을

    기술적, 사업적 기대에 부응하는 구조화된 해법으로 바꾸는 과정이다.

위 정의를 보면 아키텍처는 일반적으로 서비스의 설계를 의미하지만

개발자들 사이에서는 각 플랫폼(우리는 ios)에 맞는 설계를 말한다.

서비스에 맞는 설계 속에 ios에서는 MVC패턴을 일반적으로 따르게 설계되어 있다.

아키텍처 정의 끝판왕 영상


MVC 패턴 (Model-View-Controller)

Apple은 ios에 맞는 아키텍처로 MVC패턴을 권장하고 있다.

스크린샷 2021-03-10 오전 2 49 13

각각의 역할

  • Model

    모델은 앱의 비즈니스 로직과 데이터를 관리하는 영역이다.

    앱의 두뇌 역할을 담당한다고도 볼 수 있다.

    예를들어 계산기앱이라면 계산을 하는 로직과 관련된 데이터,

    채팅앱이라면 채팅기능 관련 로직과 데이터가 모델의 영역에 포함되게 된다.

    서버로부터 데이터를 불러오거나 데이터 정합성을 관리하는 것도 모델의 역할이다.

  • View

    뷰는 사용자에게 데이터를 보여주거나, UI를 담당하는 영역이다.

    UI와 UI로직을 담당한다고 볼 수 있다.

    중요한 것은 뷰는 ‘어떻게’ 보여질지에 대해서만 관리되고 어떤 것을 보여줄지에 대해서는 알지 못한다.

    즉, 자신의 컨트롤러가 누구인지, 어떤 데이터가 보여지는지 등에 대해 알 수 없다.

  • 컨트롤러

    컨트롤러는 뷰와 모델을 이어주는 역할을 한다. 뷰와 모델이 서로 독립적이어야 하므로

    컨트롤러가 척추와 근육 역할을 하는 것이다.

    ios에서 컨트롤러는 주로 UIViewController의 서브클래스로 선언된다.

    컨트롤러는 뷰와 모델과 자유롭게 소통하지만 반대로 뷰나 모델은 자신을 제어하는 컨트롤러가 누구인지 모른다.

Comments