<?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; Qualität</title>
	<atom:link href="http://www.swe-blog.net/blog/archives/tag/qualitat/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>Event Driven Software Development</title>
		<link>http://www.swe-blog.net/blog/archives/61</link>
		<comments>http://www.swe-blog.net/blog/archives/61#comments</comments>
		<pubDate>Sun, 08 Feb 2009 17:55:37 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Anti Pattern]]></category>
		<category><![CDATA[Anti-Muster]]></category>
		<category><![CDATA[Bad Practice]]></category>
		<category><![CDATA[Erfolg]]></category>
		<category><![CDATA[Event Driven Software Development]]></category>
		<category><![CDATA[Qualität]]></category>

		<guid isPermaLink="false">http://www.swe-blog.net/blog/?p=61</guid>
		<description><![CDATA[Alles braucht einen Namen und was wir nicht benennen können ist schwer bis gar nicht in unserer Begriffswelt unterzubringen und es fiele auch ziemlich schwer über diese Dinge zu sprechen, die wir nicht  benennen können.  All das, dem wir einen Namen geben können existiert und wir können es zum Gegenstand unserer Betrachtungen machen. [...]]]></description>
			<content:encoded><![CDATA[<p>Alles braucht einen Namen und was wir nicht benennen können ist schwer bis gar nicht in unserer Begriffswelt unterzubringen und es fiele auch ziemlich schwer über diese Dinge zu sprechen, die wir nicht  benennen können.  All das, dem wir einen Namen geben können existiert und wir können es zum Gegenstand unserer Betrachtungen machen. </p>
<p>Ein gutes Beispiel hierfür ist <strong>Event Driven Software Development</strong>. Als Abkürzung ist EDSD etwas sperrig, ausgesprochen klingt es nach Dynamik und Aktivität,  und strotzt nur so vor Energie. Vom Namen her hat Event Driven Software Development her also die absolute Chance zum neuen Shotting-Star der Software-Entwicklung aufzusteigen. </p>
<p>Wir alle wissen, daß sich die Anforderungen an unsere Software schon recht früh ändern können und die Änderungswünsche nicht nur von außen, sondern auch innen, direkt aus dem Team kommen. Im Idealfall erkennen wir Dinge, die anders, besser und effizienter erledigt werden können oder es wird schnell mal eine Funktion eingebaut, die die Sonderkonstellation 4711 wunderbar abdeckt. Dann kommen noch anderen Abteilungen auf uns zu, die für die eine Veranstaltung oder jeden Kunden eine bestimmte Funktion brauchen. Wir als Softwareentwickler verstehen uns natürlich als Dienstleister nach innen und außen und bemühen uns allen gerecht zu werden und jeden Wunsch so gut wie möglich umzusetzen.  All dies bezeichne ich als Events auf die wir bei der Entwicklung reagieren müssen und die sich als <strong>Change Request</strong> auf die Entwicklungsziele auswirken können. </p>
<p>Unsere Aufgabe ist es diese Events zu steuern und ihre potentielen <strong>Auswirkungen einzuschätzen</strong> und sie <strong>zu managen</strong>. Je weiter ein Projekt voranschreitet, desto geringer sollten die Änderungen an ihm werden, da wir sonst unser Ziel nicht erreichen können oder es zumindest gefährden. Also ist die <strong>Zeit</strong> ein wichtiges Kriterium bei der Behandlung von externen Ereignissen, die zu Änderungsanforderungen führen können. Bis hierher wird es sicherlich keinen Widerspruch geben.</p>
<p>Aber kann jede Änderung, die nicht hinsichtlich Zeit unkritisch ist, auch umgesetzt werden? <strong>Nein</strong> lautet hier die Antwort. Jede Änderung muß auch danach beurteilt werden, wie gut sie sich in das Produkt, also die Software, einfügt und auch zu den Zielen, die erreicht werden sollen, beiträgt.</p>
<p>Letztendlich zeichnen sich gute Produkte auch durch <strong>Konsistenz</strong> aus. Konsistenz stellt daher auch ein <strong>Qualitätsmerkmal</strong>  dar, daß es im Auge zu behalten gilt. Denn die wirklich guten Produkte sind in sich konsistent.</p>
<p>Bei jeder Änderung muß also auch <strong>kritisch</strong> gefragt werden:</p>
<ol>
<li>Trägt diese Änderung zum (strategischen) <strong>Projektziel</strong> bei?</li>
<li>Fügt sich diese Änderung <strong>harmonisch </strong> in das Produkt ein?</li>
<li>Kann das durch die Änderung angestrebte Ziel auch <strong>anders erreicht</strong> werden?</li>
<li>Ist jetzt der richtige <strong>Zeitpunkt</strong> für diese Änderung?</li>
<li>Gibt es andere Änderungsanforderungen, die den gleichen Gegenstand haben und <strong>zusammen umzusetzen</strong> sind oder <strong>sich ausschließen</strong>?</li>
</ol>
<p>Diese Fragen müssen jedesmal gestellt und beantwortet werden. Falls diese Fragen zu keinem positiven Ergebniss führen, sollte die Änderung hintenangestellt werden, denn ansonsten sind wir nur am Hin-Und-Her-Springen und verlieren Zeit und Qualität. Diese Punkte, scheint mir, werden zu oft vergessen, denn kurzzeitiges Denken siegt oft über langfristigen Erfolg.  Denn die Rechnung kommt erst später, denn je später eine notwendige Korrektur erfolgt, desto teurer ist sie. </p>
<p>Event Driven Software Entwicklung ist  also ein <strong>Anti-Muster</strong> und verweist auf eine <strong>schwache Steuerung</strong> innerhalb eines Projekts und sollte die Frage nach der Projekt oder Firmenkultur aufwerfen.</p>
<p>Meine These lautet: <strong>Gute Software ist eine notwendige Voraussetzung für langfristigen Erfolg.</strong></p>
<p>Richtig ist aber auch, daß gute Software ein notwendiger Grund für Erfolg ist, aber kein hinreichender. Nur aufgrund guter Software stellt sich kein Erfolg ein, aber es wird leichter erfolgreich zu sein. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/61/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sisyphos wäre heute Software-Entwickler</title>
		<link>http://www.swe-blog.net/blog/archives/20</link>
		<comments>http://www.swe-blog.net/blog/archives/20#comments</comments>
		<pubDate>Fri, 31 Oct 2008 23:41:05 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Josuttis]]></category>
		<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Schlechter Code]]></category>
		<category><![CDATA[Zeit]]></category>

		<guid isPermaLink="false">http://www.sw-blog.net/blog/?p=20</guid>
		<description><![CDATA[Regelmäßig lese ich „The World of IT“ und „Bernds Management Blog“ auf den Seiten der iX, die von OOSE-Chef Bernd Österreich, Jutta Eckstein und Nicolai Josuttis geschrieben werden. Mit durchschnittlich einer Veröffentlichung pro Monat  ist es auch ein leichtes jede Veröffentlichung zu lesen. Falls Sie auch diese Blogs lesen: Ist Ihnen schon einmal aufgefallen, [...]]]></description>
			<content:encoded><![CDATA[<p>Regelmäßig lese ich „The World of IT“ und „Bernds Management Blog“ auf den Seiten der iX, die von OOSE-Chef Bernd Österreich, Jutta Eckstein und Nicolai Josuttis geschrieben werden. Mit durchschnittlich einer Veröffentlichung pro Monat  ist es auch ein leichtes jede Veröffentlichung zu lesen. Falls Sie auch diese Blogs lesen: Ist Ihnen schon einmal aufgefallen, daß jeder der genannten eine für eine bestimmte Grundhaltung steht? An welche ich dabei denke will ich heute für mich behalten, besonders da ich mich mit dem letzten Beitrag von Nicolai Josuttis auseinander setzen möchte.<br />
<span id="more-20"></span><br />
„Software-Putzmänner und die nächste IT-Revolution“ stand da eines Abends im September in meinem RSS-Reader und ich habe interessiert die verlinkte Seite aufgerufen. Der Text hat mich so beschäftigt, daß auch ihn auch jetzt noch kommentieren möchte.</p>
<p>Josuttis schreibt darin über einem Vortrag auf der Agile 2008 zum Thema Software-Qualität, der von Robert C. Martin gehalten wurde. Martin stellt fest, daß wir in der Software-Branche zu viel Mist produzieren. Vorallen tun wir das, weil einfach zu wenig Zeit dafür zur Verfügung steht um sauber zu arbeiten zwischen all den Budgetplänen, Tagessätzen und Releaseterminen. Insofern ist das Sujet bekannt und die meisten von uns können das wohl aus der einen oder anderen Erfahrung bestätigen. </p>
<p>Das eigentlich interessante ist, daß Josuttis das wohl aus eigener Erfahrung kennt und auch darlegt, wie er versucht diesem Problem beizukommen und damit glatt die nächste Revolution in der IT-Welt vorhersagt. </p>
<p>Josuttis versucht dem Problem beizukommen, in dem die Entwicklung von Fachlichkeiten vom „Sauermachen“ trennt. Es gibt also zwei Gruppen. Die einen schreiben fleißig Code und die anderen bringen ihn in Ordnung. Schlechter Code ist demnach in Ordnung, da er später glattgezogen wird. An die großen Hypes Agilität und SOA anknüpfend entwickelt er diesen Gedanken weiter und stellt die Frage, warum wir nicht endlich schlechten Code akzeptieren, schließlich haben wir mit der Agilität sich wandelnde Anforderungen akzeptiert und sogar kultiviert und SOA das gleich mit heterogenen Systemen getan. Schlußendlich sollten wir aufhören, schlechten Code zu bekämpfen, sondern sinnvoll damit umgehen.<br />
So sehr er mit vielem auch Recht hat, umso mehr irrt er hier doch und kommt zu einem falschen Schluß. <strong>Schlechter Code ist zu bekämpfen.</strong></p>
<p>Eine allgemein gültige Definition von gutem Code gibt es nicht. Daher für aber viele von Qualität. Mir gefällt am besten die DIN-Definition, wonach Qualität „die Beschaffenheit einer Einheit bezüglich ihrer Eignung, festgelegte und abgeleitete Erfordernisse (Qualitätsanforderungen) zu erfüllen“ ist. Zugegebener Maßen klingt das etwas sperrig und erschließt sich nicht direkt, denn was sind „abgeleitete  Erfordernisse“. Qualität hat viele Ausprägungen, wie da wären:</p>
<ul>
<li>Funktionalität</li>
<li>Zweckdienlichkeit</li>
<li>Sicher</li>
<li>Robustheit</li>
<li>Benutzbarkeit</li>
<li>Zuverlässigkeit</li>
<li>Änderbarkeit</li>
<li>Portierbarkeit</li>
<li>Prüfbarkeit</li>
<li>Geschwindigkeit</li>
</ul>
<p>Jeder wird zugeben, daß eine Software, die nicht die geforderten Funktionen bringt aus Kundensicht nichts wert ist. Insofern ist Funktionalität ein hinreichendes Qualitätsmerkmal, aber allein nicht ausreichend.  Je länger eine Software lebt, umso wichtiger werden auch Merkmale wie Wartbarkeit und Änderbarkeit und können zum Schluß mehr über den Erfolg Ihrer Software entscheiden als die eigentliche Funktionalität. </p>
<p>Natürlich muß man am Code verzweifeln, wenn man die perfekte Architektur und eine konsistente Einhalt von Codierrichtlinien erwartet und hofft, daß alle Entwickler den gleichen Stil pflegen und sich mit der gleichen Hingabe ihrer Aufgabe widmen. Die Welt ist nicht perfekt und wir sind es nicht, warum sollte es unsere Software sein? Perfekte Software ist schlichtweg unmöglich. Sie ist unmöglich, weil sich die Welt rund um die Software ständig ändert. So ändern sich die Anforderungen, im Idealfall werden sie konkreter und damit für alle besser. Wir wissen besser, was unser Kunde will und der Kunde erhält eher das, was er braucht. So ändern sich die Tools mit denen wir arbeiten. Werden sie besser, so verbessert sich unser Stil Software zu entwickeln - oder wirft uns um Jahre zurück.  So ändern auch wir uns. Mit jedem Projekt wächst unser Wissen und Können, auch wenn wir uns ehrlicher Weise auch bei ählichen Fehlern immer wieder selber stellen.  Das war wir gestern geschrieben haben, ist uns Wissen, Können und Vermögen von gestern und das kann das Beste gewesen sein, was wir zu diesem Zeitpunkt leisten konnten.<br />
Allerdings ist das alles <strong>kein Grund schlechte Software zu akzeptieren</strong>. Oder möchten Sie schlechte Software benutzen. Jeder von uns erwartet, daß der Geldautomat zu jeder Tageszeit funktioniert und nicht irgendwie, sondern richtig. Und freut sich,  wenn das zu übernehmende Projekt gut geführt und die Sofware sauber implementiert ist.</p>
<p>Vielmehr sollten wir uns umso mehr bemühen gute Software mit perfekten Code zu entwicklen. Wie schon weiter oben geschrieben ist das Ziel nicht erreichbar, doch wenn wir es uns als Ziel setzen werden die Ergebnisse weit besser sein, als wenn wir uns von vornherein nur mit Mittelmäßigkeit begnügen. Denn sobald wir dies verinnerlicht haben, <strong>werden wir uns mit noch weniger zufrieden geben</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/20/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>

