Eine Schnittstelle (engl. interface) ist in der Informatik ein Modellelement in der Unified Modeling Language (UML), einer Modellierungssprache für Software und andere Systeme.
Eine Schnittstelle deklariert eine Liste von Attributen, Operationen und Signalempfängern, die alle öffentliche Sichtbarkeit haben.
Die UML2 unterscheidet zwischen angebotenen und benötigten Schnittstellen. Eine angebotene Schnittstelle ist eine Schnittstelle, die ein Classifier, in der Regel eine Klasse, realisiert und damit anbietet. Eine benötigte Schnittstelle ist eine Schnittstelle, die ein Classifier benötigt, um seine Funktion wahrzunehmen.
Wenn ein Classifier eine Schnittstelle anbietet, dann sichert er damit zwei Dinge zu: Erstens deklariert er, dass er alle Operationen der Schnittstelle realisiert und zweitens verspricht er, dass er alle Attribute auf eine geeignete Art und Weise umsetzt. Dass er dabei über genau die gleichen Attribute wie die Schnittstelle verfügen muss, ist nicht zwingend. Es reicht aus, dass der Classifier ein Attribut zum Beispiel mit einem Paar von Operationen nachbildet, wobei die eine Operation den lesenden und die andere den schreibenden Zugriff auf das Attribut simuliert. Man spricht in diesem Zusammenhang auch von einem Paar von Setter- und Getter-Operationen.
Im Fall einer benötigten Schnittstelle gelten diese Aussagen sinngemäß nicht als Zusicherung, sondern als Anforderung. Ein Classifier, der eine Schnittstelle benötigt, erwartet, dass die Operationen und Attribute auf geeignete Art und Weise durch einen zweiten Classifier, der die Schnittstelle realisiert, zur Verfügung gestellt werden.
Dass eine Schnittstelle eine angebotene oder eine benötigte Schnittstelle eines Classifiers ist, stellt ein UML-Modell immer als Abhängigkeitsbeziehung zwischen dem Classifier und der Schnittstelle dar. Im Fall der angebotenen Schnittstelle handelt es sich um eine Schnittstellenrealisierungsbeziehung, bei einer benötigten Schnittstelle um eine Verwendungsbeziehung. Die beiden Arten von Schnittstellen werden in einem Klassendiagramm unterschiedlich und in verschiedenen Varianten dargestellt, wobei die zugrunde liegenden Abhängigkeitsbeziehungen nicht in jeder Notationsvariante explizit ausgewiesen wird (siehe nächster Abschnitt).