1. 개요
소프트웨어의 구조를 패턴화한 것이다.건물을 세울 때 기초와 토대가 중요하듯, 소프트웨어 역시 구조를 잘 만들어 두고 시작하는 것이 중요하다. 기초 공사가 제대로 되지 않은 소프트웨어에서 지엽적인 기능 추가나 버그 수정이 반복되다 보면 스파게티 코드가 되기 십상이며, 이는 코드의 가독성과 유지보수성을 낮추는 주요 원인이 된다.
아키텍처 패턴은 소프트웨어의 구성 요소를 연결하는 방법이나 구성 요소 간의 관계 등을 어느 특정한 형태로 구조화함으로써 소프트웨어 설계에서 윤곽을 제시한다. 아키텍처 패턴별로 주요 지향점은 다르지만, 공통적으로 아키텍처 패턴을 적용해 개발된 소프트웨어는 그렇지 않은 경우에 비해 퀄리티 면에서 이점을 갖는다.
2. 목록
2.1. MVC 패턴
Model-View-Controller (모델-뷰-컨트롤러).애플리케이션을 데이터를 처리하는 모델(Model), 사용자에게 보여지는 사용자 인터페이스(UI)를 담당하는 뷰(View), 모델과 뷰 사이에서 흐름을 제어하는 인터페이스를 담당하는 컨트롤러(Controller)로 분리하는 설계 방식이다. 노르웨이의 컴퓨터과학자 트리베 린스카우그(Trygve Reenskaug)가 최초로 정의하여, PC부터 웹 애플리케이션까지 광범위하게 사용되는 디자인 패턴이다.
모델은 컨트롤러에서 호출이 이루어지면, 연동된 데이터베이스에 저장된 데이터를 저장, 수정, 삭제, 가져오기 등 데이터 비즈니스 로직을 처리한다. 그런 다음 뷰는 컨트롤러를 통해 반환된 모델 반환값을 가지고 화면에 출력하여 사용자 인터페이스(UI)를 구성한다. 이때 모델 반환값은 뷰가 저장하지 않는다. 컨트롤러는 모델, 뷰에 관여하며 이들 사이에서 상호 작용하는 인터페이스를 담당한다. 컨트롤러는 모델에게 데이터 비즈니스 로직을 처리하는 명령을 호출하고 그 반환값을 뷰에 전달하여 출력을 하게 한다.
모델과 뷰는 독립적으로 수행되도록 설계되어 있다. 즉, 서로에 대한 디테일을 몰라도 되고, 이는 모델(데이터베이스) 담당과 뷰(사용자 인터페이스(UI)) 담당이 분업을 할 수 있도록 해줌으로써 코드의 가독성, 체계성, 유지 보수성, 재사용성 측면에서 유리하다. 하지만, 컨트롤러를 통해 모델과 뷰를 간접적으로 이어주어 간접적으로 상호 작용하므로, 컨트롤러의 비중이 지나치게 커져서 그만큼 코드의 라인 수가 많아지는 등의 비효율적인 문제점이 존재한다. 그래서 MVP, MVVM과 같은 디자인 패턴이 나온 이유가 바로 MVC의 문제점을 절충하고 보완하기 위해서이다. #