Das bekannteste Software-Architekturmodell ist das Model-View-Controller-Modell (M-V-C-Modell), das zuerst in der Programmiersprache Smalltalk Verwendung fand, und das mittlerweile zur Standardarchitektur für Software-Systeme geworden ist, die eine grafische Benutzeroberfläche benötigen. Das Prinzip des M-V-C-Modells, das in Abb. 2-1 dargestellt ist, ist die Trennung von Verantwortlichkeiten. Die Darstellung der Information (View) wird hierbei von der Funktionalität der Anwendung (Modell) und der Verarbeitung (Controller) der Benutzereingaben getrennt. Nachfolgend werden die Aufgaben der Teilsysteme erläutert: Das Model (Datenbasis) besteht aus einer oder mehreren Klassen, die darauf spezialisiert sind, Daten zu bearbeiten. Es stellt die eigentliche Funktionalität dar und stellt errechnete Inhalte zur Verfügung. Das Modell hat keinerlei Kenntnisse über eine bestimmte Darstellungsart und ist somit unabhängig von etwaigen Visualisierungsmöglichkeiten. Ein Modell sendet ausschließlich Nachrichten an den Controller und empfängt auch nur Nachrichten von diesem. Die View (Präsentationsschicht) stellt eine oder mehrere Komponenten dar, deren Aufgabe es ist, Aspekte des Modells zu visualisieren. Idealerweise sollte die View auch unabhängig von einem spezifischen Modell arbeiten können, damit sie auch für andere Aufgaben eingesetzt werden kann. Eine View sendet Nachrichten an den Controller und empfängt Nachrichten von außen nur vom Controller. Der Controller stellt eine Abstraktion des Steuerungsablaufs dar und hat die Aufgabe, die Kommunikation zwischen Modell und der Darstellung zu steuern. Er stellt das Kernstück der Anwendung dar, bei dem sämtliche Fäden zusammenablaufen. Der Controller, der auch aus mehreren Klassen bestehen kann, sendet Nachrichten sowohl an das Modell als auch an die View und empfängt Nachrichten von beiden. Diese Trennung erlaubt es, die View eines Applets oder einer Anwendung entsprechend den Anwenderwünsche zu ändern. Änderungen an einem der drei Teilsysteme können unabhängig voneinander vollzogen werden. Das Hinzufügen weiterer Views auf die Daten im Modell oder die Reaktion auf weitere Benutzereingaben können nach der Bereitstellung der Software realisiert werden. Das Modell ist prinzipiell unabhängig von den anderen Komponenten und kann somit für verschiedene Plattformen identisch sein, was zur besseren Portierbarkeit von Programmen führt. Abb. 2.1: Das Model-View-Controller-Modell