Model View Viewmodel
모델-뷰-뷰 모델(model-view-viewmodel, MVVM)은 하나의 소프트웨어 아키텍처 패턴으로-마크업 언어 또는 GUI 코드로 구현하는-그래픽 사용자 인터페이스(뷰)의 개발을 비즈니스 로직 또는 백-엔드 로직(모델)로부터 분리시켜서 뷰가 어느 특정한 모델 플랫폼에 종속되지 않도록 해준다. MVVM의 뷰 모델은 값 변환기인데, 이는 뷰 모델이 모델에 있는 데이터 객체를 노출(변환)하는 책임을 지기 때문에 객체를 관리하고 표현하기가 쉬워진다는 것을 의미한다. 이러한 점에서, 뷰 모델은 뷰 보다는 더 모델인 것이며, 모든 뷰들의 디스플레이 로직을 제외한 대부분의 것들을 처리한다. 뷰 모델은 '백-엔드 로직에 대한 접근'과 그 주변부의 '뷰에서 지원하는 유즈 케이스 집합'으로 구성되도록, 중재자 패턴으로 구현할 수도 있다.
MVVM은 마틴 파울러(Martin Fowler)의 '프레젠테이션 모델 디자인 패턴' 의 변형이다. 이는 사용자 인터페이스의 이벤트-기반 프로그래밍을 단순화하기 위해 마이크로소프트의 아키텍트인 켄 쿠퍼(Ken Cooper)와 테드 피터스(Ted Peters)에 의해 발명되었다. 이 패턴은 (마이크로소프트의 닷넷 그래픽 시스템인) 윈도우 프레젠테이션 파운데이션 (WPF) 및 (WPF의 인터넷 응용 프로그램 파생품인) 실버라이트에 통합되었다. 마이크로소프트의 WPF 와 실버라이트 아키텍트인, 존 구스먼(John Gossman)은 2005년 자신의 블로그에 MVVM을 발표하였다.
모델-뷰-뷰모델은 모델-뷰-바인더(model-view-binder)라고도 하는데, 특히 닷넷 플랫폼과 상관없이 구현된 경우를 지칭한다. (자바로 작성된 웹 프레임워크인) ZK와 (자바스크립트 라이브러리인) KnockoutJS는 모델-뷰-바인더를 사용한다.