Stub

Ein temporärer Platzhalter

Ein Stub bezeichnet in der Softwareentwicklung einen temporären Platzhalter bzw. Stellvertreter. Ein Stellvertreter ist eine Klasse, die als Schnittstelle zu einem Subjekt – einer Datei, einer Ressource, einem Speicherobjekt oder einer Netzwerkverbindung – auftritt. Als Stellvertreter dieses Subjektes kann der Stub die Erzeugung des Subjekts und den entsprechenden Zugriff darauf steuern. Ein Stub kommt u.a. zum Einsatz, wenn

  • benötigte externe Dienste (Datenbanken, Webservices, Server) im Rahmen einer Programmierung nicht verfügbar sind.
  • benötigte Programmteile noch nicht implementiert wurden.
  • bei Funktionstests das Schreiben und anschließende Löschen von Testdaten in Datenbanken vermieden soll.

Auch bei der Entwicklung verteilter Systeme kommen Stubs zur Anwendung. Dabei wird die benötigte Funktionalität des entfernten Softwaresystems so angesprochen, als wäre sie lokal vorhanden. Die gewünschte Funktion wird aber nicht implementiert, sondern per Anfrage über das Stub an das entfernte System delegiert (Remote Procedure Calls). Steht dabei der benötigte Datentyp fest, kommt ein monomorphischer Stub zum Einsatz, andernfalls ein polymorphischer Stub, der mit einer Hashtablle operiert, die auf eine Liste von Stubfunktionen verweist, aber aufgrund des notwendigen Lookups langsamer agiert.

Anwendungsbereiche für Stubs

Generell wird der Begriff Stub, der aus dem Englischen stammt und übersetzt Stummel oder Stumpf bedeutet, in verschiedenen Bereichen auch fernab der Softwareentwicklung genutzt:

  • Beim kooperativen Verfassen von Artikeln, bei dem Mitwirkende bspw. Details recherchieren wollen bzw. müssen.
  • Als Nachweis eines Arbeitgebers über die Beträge, die er Arbeitnehmern bezahlt hat (ein sogenannter Pay Stub).
  • Als Zeitraum im Zinsgeschäft, der von üblichen Intervallen abweicht (eine sogenannte Stub Period).
  • In Computernetzwerken, bei denen ein Netzwerkabschnitt mit nur einem Ausgangsrouter andere Netzwerke verwendet.
  • In der Elektronik als berechneter Längenabschnitt der Übertragungsleitung, der zum Anpassen der Impedanz in Übertragungsleitungen verwendet wird.

Immer wieder gibt es auch Diskussionen, was der Unterschied zwischen einem Stub und einem Mock-Objekt im Bereich Testing ist. Manche vertreten die Meinung, dass die Unterschiede lediglich marginal sind, da der Zweck von beiden darin besteht darin, alle Abhängigkeiten einer Klasse oder Funktion zu testen; andere hingegen verweisen auf unterschiedliche Erwartungen. Mit Mocks geschriebene Tests folgen normalerweise einem Initialisieren -> Setzen von Erwartungen -> Ausführung -> Überprüfung, während ein Stub einer Initialisierung -> Übung -> Überprüfung folgt.

“Das Fachwissen zu Softwarearchitekturen, die Expertise in der Softwareentwicklung und die sehr flexible Arbeitsweise waren ideal für uns.“

„Ihren Blog lese ich schon lange und mit großer Freude. Systematisch, auf den Punkt und ansprechend.“