<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://dev.kaibel.net/index.php?action=history&amp;feed=atom&amp;title=Stub_%28Softwareentwicklung%29</id>
	<title>Stub (Softwareentwicklung) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="http://dev.kaibel.net/index.php?action=history&amp;feed=atom&amp;title=Stub_%28Softwareentwicklung%29"/>
	<link rel="alternate" type="text/html" href="http://dev.kaibel.net/index.php?title=Stub_(Softwareentwicklung)&amp;action=history"/>
	<updated>2026-05-09T11:29:18Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in dev.kaibel.net</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>http://dev.kaibel.net/index.php?title=Stub_(Softwareentwicklung)&amp;diff=15&amp;oldid=prev</id>
		<title>PhilKa: Die Seite wurde neu angelegt: „{{DISPLAYTITLE:Stub (Softwareentwicklung)}} {{Infobox Software | Name           = Stub | Kategorie      = Softwareentwicklung / Verteilte Systeme | Verwandte Begriffe = Remote Procedure Call, Mock, Skeleton (Softwareentwicklung) }}  == Einführung == Ein &#039;&#039;&#039;Stub&#039;&#039;&#039; (deutsch sinngemäß „Platzhalter“ oder „Stummel“) ist ein Softwaremodul, das in der Softwareentwicklung oder in verteilten Systemen als Stellvertreter für eine andere…“</title>
		<link rel="alternate" type="text/html" href="http://dev.kaibel.net/index.php?title=Stub_(Softwareentwicklung)&amp;diff=15&amp;oldid=prev"/>
		<updated>2025-09-23T13:07:11Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „{{DISPLAYTITLE:Stub (Softwareentwicklung)}} {{Infobox Software | Name           = Stub | Kategorie      = Softwareentwicklung / Verteilte Systeme | Verwandte Begriffe = &lt;a href=&quot;/index.php?title=Remote_Procedure_Call&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Remote Procedure Call (Seite nicht vorhanden)&quot;&gt;Remote Procedure Call&lt;/a&gt;, &lt;a href=&quot;/index.php?title=Mock&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Mock (Seite nicht vorhanden)&quot;&gt;Mock&lt;/a&gt;, &lt;a href=&quot;/index.php?title=Skeleton_(Softwareentwicklung)&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Skeleton (Softwareentwicklung) (Seite nicht vorhanden)&quot;&gt;Skeleton (Softwareentwicklung)&lt;/a&gt; }}  == Einführung == Ein &amp;#039;&amp;#039;&amp;#039;Stub&amp;#039;&amp;#039;&amp;#039; (deutsch sinngemäß „Platzhalter“ oder „Stummel“) ist ein Softwaremodul, das in der &lt;a href=&quot;/index.php?title=Softwareentwicklung&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Softwareentwicklung (Seite nicht vorhanden)&quot;&gt;Softwareentwicklung&lt;/a&gt; oder in verteilten Systemen als Stellvertreter für eine andere…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:Stub (Softwareentwicklung)}}&lt;br /&gt;
{{Infobox Software&lt;br /&gt;
| Name           = Stub&lt;br /&gt;
| Kategorie      = Softwareentwicklung / Verteilte Systeme&lt;br /&gt;
| Verwandte Begriffe = [[Remote Procedure Call]], [[Mock]], [[Skeleton (Softwareentwicklung)]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Einführung ==&lt;br /&gt;
Ein &amp;#039;&amp;#039;&amp;#039;Stub&amp;#039;&amp;#039;&amp;#039; (deutsch sinngemäß „Platzhalter“ oder „Stummel“) ist ein Softwaremodul, das in der [[Softwareentwicklung]] oder in verteilten Systemen als Stellvertreter für eine andere Komponente fungiert. Stubs werden verwendet, um eine Funktionalität nachzubilden, die (noch) nicht vorhanden ist, oder um entfernte Aufrufe zu kapseln.&lt;br /&gt;
&lt;br /&gt;
Stubs sind in mehreren Bereichen verbreitet:&lt;br /&gt;
* In der Test- und Entwicklungsphase als Platzhalter für Module.&lt;br /&gt;
* In verteilten Systemen zur Kapselung entfernter Funktionsaufrufe (Remote Procedure Calls, [[RPC]]).&lt;br /&gt;
* In der Schnittstellenentwicklung zur Isolierung einzelner Komponenten.&lt;br /&gt;
&lt;br /&gt;
== Grundprinzip ==&lt;br /&gt;
Ein Stub übernimmt Aufgaben für ein nicht vorhandenes oder entferntes Modul:&lt;br /&gt;
* Er nimmt Funktionsaufrufe entgegen.&lt;br /&gt;
* Er bereitet Daten ggf. auf (Marshalling).&lt;br /&gt;
* Er leitet sie an ein Zielmodul oder einen Server weiter oder simuliert eine Antwort.&lt;br /&gt;
&lt;br /&gt;
Auf diese Weise können Entwickler unabhängig voneinander Komponenten entwickeln und testen.&lt;br /&gt;
&lt;br /&gt;
== Einsatz in verteilten Systemen ==&lt;br /&gt;
In verteilten Systemen wird zwischen &amp;#039;&amp;#039;&amp;#039;Client-Stubs&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;Server-Stubs&amp;#039;&amp;#039;&amp;#039; (oft auch Skeletons genannt) unterschieden:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Client-Stub&amp;#039;&amp;#039;&amp;#039; – nimmt lokale Funktionsaufrufe entgegen, serialisiert Parameter (Marshalling) und sendet sie an den Server.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Server-Stub&amp;#039;&amp;#039;&amp;#039; (oder Skeleton) – empfängt die Daten, deserialisiert sie (Unmarshalling) und ruft die entsprechende Serverfunktion auf.&lt;br /&gt;
&lt;br /&gt;
Dieses Muster abstrahiert die Netzwerkdetails und lässt entfernte Aufrufe wie lokale Funktionsaufrufe erscheinen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel mit RPC ==&lt;br /&gt;
In [[Remote Procedure Calls]]:&lt;br /&gt;
* Die Schnittstelle wird in einer IDL (Interface Definition Language) beschrieben.&lt;br /&gt;
* Ein Compiler (z. B. `rpcgen` bei [[ONC RPC]]) generiert automatisch Stubs.&lt;br /&gt;
* Entwickler schreiben dann nur noch die Geschäftslogik; Netzwerkdetails übernimmt der Stub.&lt;br /&gt;
&lt;br /&gt;
== Stubs vs. Mocks vs. Skeletons ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Begriff !! Beschreibung !! Typischer Einsatz&lt;br /&gt;
|-&lt;br /&gt;
| Stub || Einfacher Platzhalter oder Vermittler für eine Funktion/Methode || Frühe Entwicklung, RPC&lt;br /&gt;
|-&lt;br /&gt;
| Mock || Simuliert Verhalten mit vorgegebenen Antworten und Überprüfung von Aufrufen || Unit Tests&lt;br /&gt;
|-&lt;br /&gt;
| Skeleton || Gegenstück zum Client-Stub auf der Serverseite || RPC-Server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorteile ==&lt;br /&gt;
* Ermöglicht parallele Entwicklung: Ein Team kann Stubs nutzen, während ein anderes Team das echte Modul entwickelt.&lt;br /&gt;
* Abstrahiert Netzwerk- und Implementierungsdetails.&lt;br /&gt;
* Vereinfachung von Tests und Integration.&lt;br /&gt;
&lt;br /&gt;
== Nachteile ==&lt;br /&gt;
* Stubs müssen konsistent mit der endgültigen Implementierung gehalten werden.&lt;br /&gt;
* Zusätzlicher Code-Generierungs- und Pflegeaufwand.&lt;br /&gt;
* Gefahr falscher Annahmen über Laufzeit- oder Fehlerverhalten.&lt;br /&gt;
&lt;br /&gt;
== Schnittstellendefinition ==&lt;br /&gt;
Stubs basieren oft auf klar definierten Schnittstellen:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Interface Definition Language (IDL)&amp;#039;&amp;#039;&amp;#039; – definiert Funktionen, Parameter und Datentypen.&lt;br /&gt;
* Automatische Stub-Generierung durch Compiler/Tools.&lt;br /&gt;
* Plattform- und sprachübergreifende Nutzung möglich.&lt;br /&gt;
&lt;br /&gt;
Beispiel in RPCL für ONC RPC:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
program MATH_PROG {&lt;br /&gt;
    version MATH_VERS {&lt;br /&gt;
        int ADD(int a, int b) = 1;&lt;br /&gt;
    } = 1;&lt;br /&gt;
} = 0x20000001;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sicherheitsaspekte ==&lt;br /&gt;
Stubs selbst führen keine Sicherheitsprüfungen durch, sie können jedoch:&lt;br /&gt;
* Authentifizierungs- oder Autorisierungsinformationen weiterleiten.&lt;br /&gt;
* Eingaben validieren, bevor sie an entfernte Systeme gesendet werden.&lt;br /&gt;
* Transportverschlüsselung (z. B. TLS) nutzen, um Daten abzusichern.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Andrew S. Tanenbaum: &amp;#039;&amp;#039;Verteilte Systeme – Prinzipien und Paradigmen&amp;#039;&amp;#039;&lt;br /&gt;
* W. Richard Stevens: &amp;#039;&amp;#039;UNIX Network Programming&amp;#039;&amp;#039;&lt;br /&gt;
* RFC 5531 – &amp;#039;&amp;#039;RPC: Remote Procedure Call Protocol Specification Version 2&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Remote Procedure Call]]&lt;br /&gt;
* [[Mock (Softwareentwicklung)]]&lt;br /&gt;
* [[Skeleton (Softwareentwicklung)]]&lt;br /&gt;
* [[Marshalling (Informatik)]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Softwareentwicklung]]&lt;br /&gt;
[[Kategorie:Verteiltes Rechnen]]&lt;br /&gt;
[[Kategorie:Middleware]]&lt;/div&gt;</summary>
		<author><name>PhilKa</name></author>
	</entry>
</feed>