Model-view-controller (MVC), bir programın her bir öğesini iyi tanımlanmış işlevsellik alanlarına ayıran bir tür yazılım mimarisi ve tasarım desenidir. Model-view-controller mimarisinde, model, verileri yöneten, kaydeden, alandan alan ve işleyen tüm dahili program mantığı ile ilgilenir. Bakış açısı, kullanıcı için modelden bilgilerin gösterilmesinden sorumludur ve ayrıca kullanıcının programa girdi vermesi için bir yol sağlar. Kontrolör görünümden girdi alır, değerlendirir veya başka türlü işler ve sonuçta kullanıcıya görünüm boyunca gösterilen verileri veya program durumunu değiştirmek için modelle etkileşime girer. Her ne kadar model-izleyici-denetleyici tasarımı, işlevselliği kapsamaya yönelik bir program gerektirse de, üç bölümün yine de bir şekilde birbirleriyle etkileşime girmesi gerekir ve genellikle diğer daha agresif tasarım modellerinin aksine, bir anlamda birbirlerine bağımlı olmaları gerekir.
Oldukça sık, model görünümü denetleyicisi deseni, bir grafik kullanıcı arabirimini (GUI) yöneten uygulamalarda görülür. MVC paternini kullanarak, GUI'nin farklı görsel unsurları görünüm, bir kullanıcının ne tıkladığı ve nerede kontrol edeceği tarafından kaydedilmesi ve işlenmesi kontrolör tarafından gerçekleştirilir ve aslında bilginin değiştirilmesi veya yükleme bilgisi model tarafından yapılır. Bir uygulamanın kesin tasarımına bağlı olarak, MVC modelinin her bir bileşeni, diğer birimlerle etkileşime girme mekanizmasına sahip olabilir; örneğin model ekranı yenilemek için doğrudan talimat vermesi veya görüntüyü anlatacak bir yöntemi olması gibi denetleyicinin ekranı yenilediğini ve yeni girişi kabul etmediğini kontrol edin. Sıkı bir kara kutu yaklaşımı gerektiren bazı tasarım modellerinden farklı olarak, model görünüm denetleyicisi programları biraz daha esnek olma eğilimindedir, ancak bazı uygulamalar bir MVC programının modüler olarak değiştirilmesini veya hata ayıklamasını zorlaştırabilir.
Bazı durumlarda, model görünümü denetleyicisi düzeninin her bir bileşenden yalnızca birini içermesi gerekmez. Bir örnek, çoklu monitör veya çoklu istemci cihazlarında görülebilen bir ekran gibi çoklu görünümleri olan bir uygulamadır. Tek bir modele cevap veren, birçok kullanıcının bir veritabanına erişmesine izin veren bir uygulamada birden fazla görünüm ve denetleyici kullanılabilir. Bununla birlikte, model görünümü denetleyici bileşenlerinin bire bir oranını koruyan sistemler tasarlamak daha yaygındır.
Model-view-controller bileşenlerinin birbirlerine güvenmesine rağmen, MVC modelini kullanan bir sistemin belirli parçalarını değiştirmek, özellikle de nesne yönelimli olmayan durumlarda hiç bir model kullanılmamasından daha kolay olabilir uygulamalar. Bir uygulama, bileşenler arasında etkileşimi sağlamak için geri aramalar veya dinleyiciler ve gözlemciler kullanıyorsa, diğer bileşenler etkilenmeden her bir bileşen değiştirilebilir. Bu, modeli veya denetleyiciyi etkilemeden yeni bir GUI'nin uygulanabileceği anlamına gelir. Bununla birlikte, model görünüm denetleyici sistemindeki temel değişikliklerin her bir bileşen için küçük miktarda yeniden kodlama gerektirebileceği belirtilmelidir.


