Anzeige

Software-Interface

Der Einsatz von Software-Interfaces ist ein elementares Mittel zur Entwicklung von langlebigen und tragfähigen Software-Architekturen. Deshalb sollten sie so früh wie möglich in der Architektur etabliert werden, um diese zu stabilisieren. Der Software-Architekt kann so eine schnelle Aufgabenverteilung auf unabhängige Personen, Teams oder Standorte ohne weitere „Reibungsverluste“ sicherstellen. 

Welche Varianten Sie beim Interface-Design kennen sollten und wie diese in den Programmiersprachen C und C++ implementierbar sind, verrät dieser Beitrag.

Das Interface-Konzept und Designvarianten

Ein Software-Interface stellt eine Summe von Funktionen mit der kompletten Semantik (Name, Parameter, Parametertypen, Rückgabetypen, spezielle Modifizierer) für den Zugriff und die Realisierung bereit.

Mindestens ein Element (Accessor) greift auf das Interface zu. Der Zugreifer erwartet das Interface (Required Interface).

Mindestens ein Element (Realization) muss das Interface implementieren. Die Realisierung stellt das Interface bereit (Provided Interface).

Das Interface dient zur Entkopplung zwischen dem Zugreifer und der Realisierung, weiter übergeordnet zur Entkopplung zwischen Architekturelementen.

 

Bild 1: Interface-Konzept

 

Bei verschiedene Designvarianten zwischen Zugreifer und Interface(es)

  • greift ein Zugreifer auf ein oder mehrere Interfaces zu
  • greifen mehrere Zugreifer auf ein oder jeweils ein Interface zu
  • greifen mehrere Zugreifer auf ein oder mehrere Interfaces zu
  • greifen mehrere Zugreifer auf unterschiedliche Interface-Ebenen zu oder
  • greifen mehrere Zugreifer auf jeweils unterschiedliche Interface-Ebenen zu

Bei den Designvarianten der Interface-Realisierung sind möglich:

  • ein Interface mit einer Realisierung
  • ein Interface mit mehreren oder partiellen Realisierungen
  • mehrere Interfaces in einer oder mehreren Realisierungsvarianten

Interface-Typisierung

Interfaces lassen sich (abhängig von verschiedenen Zugreifern) thematisch aufteilen, beispielsweise pro Architekturelement jeweils eines für die Konfiguration, die Diagnose und den Normalbetrieb. Generell lassen sich Interfaces in drei unterschiedliche Typen kategorisieren:

  • Das Call-Interface bietet dem Zugreifer aus dem Architekturelement A beispielsweise Funktionen an, um Werte aus dem Architekturelement B zu lesen, Werte hineinzuschreiben oder dort Algorithmen auszulösen.
     
  • Das Callback-Interface meldet aktiv neue Werte oder Ereignisse vom Architekturelement B an A. Bei der Struktur ist zu beachten, dass die Realisierung des Callback-Interfaces über Architekturelement-Grenzen hinweg geht und sich hier in Architekturelement A befindet. Im Zusammenspiel mit dem Call-Interface ist so in der Summe immer noch eine unidirektionale Abhängigkeit zwischen den beiden Architekturelementen A und B erreichbar.
     
  • Falls die Registrierung des Callbacks dynamisch zur Laufzeit und nicht statisch zur Compilezeit durchgeführt wird, ist dafür ein spezielles Element (Manager) in der Software-Architektur verantwortlich. Dieser Manager kann mittels eines speziellen Callback-Registrierungsinterfaces ein oder mehrere Callback-implementierende Elemente registrieren und de-registrieren.

Zur Umsetzung der in Bild 2 dargestellten Struktur lässt sich das Observer-Pattern anwenden.

Das konkrete Subjekt erfährt einen neuen Wert. Durch den Aufruf einer entsprechenden Funktion aus dem Observer meldet das konkrete Subjekt allen zuvor registrierten konkreten Observern den neuen Wert. Das Observer-Pattern hat sich inzwischen zu einem sehr populären Pattern für Embedded-Software entwickelt.

 

Bild 2: Callback-Struktur mit Registrierungsinterface

 

Thomas Batt, Trainer und Coach
Thomas Batt
Trainer und Coach, MicroConsult
Thomas Batt verantwortet bei MicroConsult als zertifizierter Trainer und Coach die Themenbereiche Systems/ Software Engineering für Embedded-/Realtime-Systeme sowie Entwicklungsprozess-Beratung.

Weitere Artikel

Software

Softwarebeschaffung: Ab 2022 gilt neue Vorschrift für Behörden

Die Umwelt entlasten, zum Klimaschutz beitragen und bei all dem den eigenen Geldbeutel schonen: Was sich fast zu schön anhört, um wahr zu sein, ist mit zweitverwerteten Software-Lizenzen möglich.
Collaboration

Collaboration-Tools ohne Risiko einsetzen: 5 zentrale Punkte

Collaboration-Lösungen sind gefragter denn je. Dazu haben veränderte Rahmenbedingungen, wie das vermehrte Arbeiten im Homeoffice beigetragen. So verzeichnete Microsoft Teams, ein Bestandteil von Microsoft 365, im April 2021 weltweit 145 Millionen tägliche…
Cloud Security

Cloud Optix für AWS jetzt noch effektiver

Sophos stellt seine AWS (Amazon Web Services)-Erweiterungen für Sophos Cloud Optix vor. Neu ist die automatisierte Erkennung und Reaktion auf Sicherheitsvorfälle in der AWS-Infrastruktur.
Digitales Meeting

New-Work-Umgebungen und Meetings optimal schützen - aber wie?

Mit der strategischen Einführung von New Work verankern Firmen das flexible Arbeiten in Projektteams, das „Work from Anywhere“-Prinzip und hybride Meetings langfristig in ihrer Unternehmensstrategie. Dazu müssen sie in vielen Fällen die ad hoc entstandenen…
Windows 11

Windows 11 – Vor dem Upgrade

Mit Windows 11 stellt Microsoft ein Betriebssystem mit neuen, fortschrittlichen Funktionen zur Verfügung, das sowohl Einzelnutzern als auch Unternehmen eine Reihe potenzieller Vorteile bietet. Während private Anwender sich jedoch in der Regel um nur einen PC…

Anzeige

Jetzt die smarten News aus der IT-Welt abonnieren! 💌

Mit Klick auf den Button "Zum Newsletter anmelden" stimme ich der Datenschutzerklärung zu.