어플리케이션의 구조를 Model, View, Controller 세가지 영역으로 분리한 개발 방법론을 말한다. 컴포넌트들의 변경이 다른 영역의 컴포넌트에 영향을 미치지 않고(유지보수 용이) 컴포넌트 간의 결합성이 낮아서 프로그램 수정이 용이하다.(확장성이 뛰어남)