<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Engineering Blog &#187; Pattern</title>
	<atom:link href="http://www.swe-blog.net/blog/archives/tag/pattern/feed" rel="self" type="application/rss+xml" />
	<link>http://www.swe-blog.net/blog</link>
	<description>Menschen. Prozesse. Technik.</description>
	<lastBuildDate>Fri, 28 Jan 2011 17:40:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ping-Pong spielen</title>
		<link>http://www.swe-blog.net/blog/archives/37</link>
		<comments>http://www.swe-blog.net/blog/archives/37#comments</comments>
		<pubDate>Tue, 25 Nov 2008 20:28:50 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Muster]]></category>
		<category><![CDATA[Nachrichtenaustausch]]></category>
		<category><![CDATA[Pattern]]></category>
		<category><![CDATA[ping]]></category>
		<category><![CDATA[Software Architektur]]></category>
		<category><![CDATA[Transportweg]]></category>

		<guid isPermaLink="false">http://www.sw-blog.net/blog/?p=37</guid>
		<description><![CDATA[Schnittstellen zwischen Systemen, sind heute as A und O vieler Systeme. Gerade für Geschäftsanwendungen ist der Datenaustausch mit anderen Systemen ein zentraler Leistungsaspekt. Doch wie kann sichergestellt werden, daß alle Systeme erreichbar sind? Bei direkt gekoppelten Schnittstellen mit einem synchronen Aufruf kein Problem. Doch was kann tun, wenn die beteiligten Systeme nur indirekt und asynchron [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.sw-blog.net/blog/wp-content/uploads/2008/11/ping.png'><img src="http://www.sw-blog.net/blog/wp-content/uploads/2008/11/ping-150x150.png" alt="" title="ping in Aktion" width="150" height="150" class="alignleft size-thumbnail wp-image-38" /></a>Schnittstellen zwischen Systemen, sind heute as A und O vieler Systeme. Gerade für Geschäftsanwendungen ist der Datenaustausch mit anderen Systemen ein zentraler Leistungsaspekt. Doch wie kann sichergestellt werden, daß alle Systeme erreichbar sind? Bei direkt gekoppelten Schnittstellen mit einem synchronen Aufruf kein Problem. Doch was kann tun, wenn die beteiligten Systeme nur indirekt und asynchron kommunizieren können? <code>ping</code> zeigt und hier den Weg auf.<br />
<span id="more-37"></span><br />
In vielen Fällen tauschen Systeme nicht direkt aus, sondern über Drittsysteme wie E-Mail oder FTP. Diese Systeme fungieren dann als Relay und leiten die Nachricht an den eigentlichen Empfänger oder an ein weiteres Relay-System weiter. Das Problem ist, daß der Sender ab der Übergabe an ein Relay-System nichts mehr über den Zustellstatus der Nachricht weiß. <strong>Fire and forget.</strong> Daher ist es bewährt und erprobt ein Acknowledge für empfangene Nachrichten zu schicken. So kann der Sender feststellen, ob seine Nachricht empfangen wurde.</p>
<p>Was ist aber, wenn einfach nur festgestellt werden soll, ob einen Nachricht empfangen <strong>werden kann</strong>, also ob der Transportweg funktioniert? In Geschäftsanwendungen ist der Nachrichtenaustausch meist an Fachprozesse gebunden. Daher ist es nicht sinnvoll einfach zum Test eine Nachricht zu verschicken, soll auf der Empfangsseite keine Aktion ausgelöst werden. Doch wie kann der Transportweg anders getestet werden?</p>
<p><code>ping</code> ist ein kleines Programm aus Unix-Urzeiten, mit dem die Erreichbarkeit von Rechnern in Netzwerken überprüfen läßt. Dafür verschickt es eine ICMP-Echo-Nachricht an einen Rechner und erwartet eine Antwort von diesem System, auch Pong genannt. Erhält <code>ping</code> keine Antwort, ist davon auszugehen, daß der Rechner nicht erreichbar ist.</p>
<p>Das gleiche Prinzip kann für Fachanwendungen genutzt werden. Hierzu muß lediglich eine eigene <strong>Ping-Nachricht</strong> für die Systemschnittstellen definiert werden, wobei folgende Anforderungen zu erfüllen sind:</p>
<ul>
<li>Ihre Übermittlung muß vom Zielsystem quittiert werden.</li>
<li>Sie muß den gleichen Transport-Mechanismus durchlaufen wie die eigentlichen Nachrichten.</li>
<li>Sie darf keinen fachlichen Prozess auf der Empfängerseite auslösen.</li>
</ul>
<p>So definiert, steht ein <strong>universelles Werkzeug</strong> bereit, um den Nachrichtenaustausch leicht und zuverlässig testen zu können. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/37/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leberwurststulle</title>
		<link>http://www.swe-blog.net/blog/archives/17</link>
		<comments>http://www.swe-blog.net/blog/archives/17#comments</comments>
		<pubDate>Thu, 16 Oct 2008 04:45:10 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Menschen]]></category>
		<category><![CDATA[Muster]]></category>
		<category><![CDATA[Pattern]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Verhalten]]></category>

		<guid isPermaLink="false">http://www.sw-blog.net/blog/?p=17</guid>
		<description><![CDATA[Zu DDR-Zeiten gab es folgenden Witz: Zwei Schüler sind auf dem Schulhof. Der eine öffnet seine Tasche, nimmt seine Stullen raus und wirft sie weg. Worauf der andere fragt: „Warum wirfst du sie weg, du weißt ja noch gar nicht, was drauf ist.“ Der erste Schüler antwortet: „Leberwurst. Ich habe sie ja selber gemacht.“
Dieser Witz [...]]]></description>
			<content:encoded><![CDATA[<p>Zu DDR-Zeiten gab es folgenden Witz: Zwei Schüler sind auf dem Schulhof. Der eine öffnet seine Tasche, nimmt seine Stullen raus und wirft sie weg. Worauf der andere fragt: „Warum wirfst du sie weg, du weißt ja noch gar nicht, was drauf ist.“ Der erste Schüler antwortet: „Leberwurst. Ich habe sie ja selber gemacht.“</p>
<p>Dieser Witz ist mir bei der Lektüre von <a href="http://www.amazon.de/gp/product/3446412549?ie=UTF8&tag=softwenginblo-21&linkCode=as2&camp=1638&creative=6742&creativeASIN=3446412549">„Adrenalin Junkies und Formular Zombies“</a> von <a href="http://www.systemsguild.com/GuildSite/TDM/TDMBio.html">Tom DeMarco</a> und Co eingefallen, als ich mich gefragt habe, welche Verhaltensmuster ich selber kenne, die aufgeschrieben werden sollten.</p>
<p>Leberwurststullen gibt es dann, wenn die Entwickler in einer Firma niemals mit dem eigenen Produkt arbeiten würden und sich wundern, daß andere es tun. Ein Beispiel hierfür war mein rumänischer Kollege Florian, der sich immer geweigert hatte Online-Banking-Systeme zu benutzen. Auf unsere Nachfrage wieso meinte er nur, daß er in einem Team zur Entwicklung von Online-Banking-Systemen gewesen wäre und wüßte wie diese geschrieben würden. So etwas macht einen dann immer sprachlos. Nach Leberwurst riecht es auch, wenn ein Team mit einer selbstentwickelten Software arbeitet, die es selber für schlecht und unausgereift hält, es aber für Kundenprojekte einsetzt.</p>
<p>Diese beiden Varianten haben den gleichen Ursprung, wenn auch unterschiedliche Auswirkungen. In beiden Fällen haben alle Beteiligten das bewußte oder unbewußte Gefühl, daß etwas mit der Software die entwickelt wird oder dem Softwareentwicklungsprozess nicht stimmt. Daher können sie kein inneres Vertrauen zu ihrem Produkt entwickeln, nutzen es selber nicht und es bildet sich teilweise eine leicht zynische Haltung gegenüber dem Produkt. Das ist vergleichbar mit Bankern, die bei vollem Bewußtsein Kredite an nicht zahlungsfähige Häuslebauer vergeben und uns so die aktuelle Finanzkrise beschert haben. </p>
<p>In unserem Falle sind aber nicht die Entwickler daran schuld. Vielmehr fehlen in solchen Firmen zwei Dinge: Zum einen eine offene Kultur der konstruktiven Kritik und zum anderen ein Bewußtsein für Qualität. Eigentlich schade, den Qualität ist eigentlich gar nicht so teuer, denn auch wenn immer mit Aufwänden argumentiert wird, entsteht Qualität in aller erster Linie durch den Willen dazu.</p>
<div class="ressource"><strong>Quellen und Verweise</strong>
<ul>
<li> <a href="http://www.systemsguild.com/">Homepage von der The Atlantic Systems Guild</a></li>
<li> <a href="http://www.systemsguild.com/GuildSite/TDM/TDMBio.html">Homepage von Tom DeMarco</a></li>
<li> <a href="http://www.amazon.de/gp/product/3446412549?ie=UTF8&tag=softwenginblo-21&linkCode=as2&camp=1638&creative=6742&creativeASIN=3446412549">Adrenalin Junkies und Formular Zombies bei Amazon Deutschland</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/17/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

