<?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; Software Engineering</title>
	<atom:link href="http://www.swe-blog.net/blog/archives/category/softwareengineering/feed" rel="self" type="application/rss+xml" />
	<link>http://www.swe-blog.net/blog</link>
	<description>Menschen. Prozesse. Technik.</description>
	<lastBuildDate>Wed, 28 Jul 2010 00:42:09 +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>MapReduce &amp; Apache Hadoop-Vortrag auf Slideshare</title>
		<link>http://www.swe-blog.net/blog/archives/168</link>
		<comments>http://www.swe-blog.net/blog/archives/168#comments</comments>
		<pubDate>Fri, 22 Jan 2010 15:45:46 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Java & Co]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Apache Hadoop]]></category>
		<category><![CDATA[MapReduce]]></category>
		<category><![CDATA[Slideshare]]></category>

		<guid isPermaLink="false">http://www.swe-blog.net/blog/?p=168</guid>
		<description><![CDATA[Wie gestern versproche, habe ich meinen Vortrag zu MapReduce und Apache Hadoop auf Slideshare online gestellt.

View more documents from oliver.b.fischer.

]]></description>
			<content:encoded><![CDATA[<p>Wie gestern versproche, habe ich meinen Vortrag zu MapReduce und Apache Hadoop auf Slideshare online gestellt.</p>
<div style="width:425px;text-align:left" id="__ss_2972670"><!--a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/oliver.b.fischer/mapreduce-apache-hadoop" title="MapReduce &amp; Apache Hadoop">MapReduce &amp; Apache Hadoop</a--><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mr-hadoop-100122091621-phpapp01&rel=0&stripped_title=mapreduce-apache-hadoop" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mr-hadoop-100122091621-phpapp01&rel=0&stripped_title=mapreduce-apache-hadoop" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">documents</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/oliver.b.fischer">oliver.b.fischer</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/168/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entwicklungslandschaft Teil 3 &#8211; Isolation</title>
		<link>http://www.swe-blog.net/blog/archives/109</link>
		<comments>http://www.swe-blog.net/blog/archives/109#comments</comments>
		<pubDate>Sat, 02 Jan 2010 11:21:11 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Entwicklungslandschaft]]></category>
		<category><![CDATA[Entwicklungslandschaft.Serie]]></category>
		<category><![CDATA[Entwicklungsumgebung]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Infrastruktur]]></category>

		<guid isPermaLink="false">http://www.swe-blog.net/blog/?p=109</guid>
		<description><![CDATA[Wenn wir mit anderen zusammenarbeiten besteht immer die Gefahr sich gegenseitig zu stören. Wir arbeiten im gleichen Projekt, bearbeiten die selben Klassen, schreiben in die selbe Datenbank, gegen die der Kollege seine Tests fährt, machen Änderungen, die sich gegenseitig ausschließen. Oft stellt das kein Problem dar, wenn es koordiniert oder zumindest mit dem Wissen der [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.swe-blog.net/blog/wp-content/uploads/2009/10/entwicklungslandschaft-isol.png'><img src="http://www.swe-blog.net/blog/wp-content/uploads/2009/10/entwicklungslandschaft-isol.png" alt="Isolation" title="Isolation" width="270" height="200" class="alignleft size-full wp-image-111" /></a>Wenn wir mit anderen zusammenarbeiten besteht immer <strong>die Gefahr sich gegenseitig zu stören</strong>. Wir arbeiten im gleichen Projekt, bearbeiten die selben Klassen, schreiben in die selbe Datenbank, gegen die der Kollege seine Tests fährt, machen Änderungen, die sich gegenseitig ausschließen. Oft stellt das kein Problem dar, wenn es koordiniert oder zumindest mit dem Wissen der Kollegen geschieht. Was ist aber, wenn wir genau das nicht wollen? Wenn wir in Ruhe die nächsten zwei Wochen an einem ganz besonderen Feature arbeiten wollen oder ein größeres experimentelles Refactoring vornehmen wollen? Es geht aber nicht nur um die großen Aufgaben. Auch in unserer alltäglichen Arbeit, sollte die Gefahr mit der Arbeit Anderer zu kollidieren möglichst gering sein.</p>
<p>Wir müssen uns also <strong>isolieren können</strong> und unsere <strong>Entwicklungslandschaft muß das unterstützten</strong>, uns dafür die technischen Möglichkeiten geben. Solange es für ein gesamtes Team nur eine Datenbank, auf der alle arbeiten, oder nur einen Application Server gibt, gelingt das nicht. Solche Systeme nenne ich immer scherzhaft <strong>Synchronisationssingularitäten</strong>, also Punkte, an denen alle Arbeiten <strong>zusammenlaufen laufen</strong>. Aber was bedeutet jetzt Isolation für eine Entwicklungslandschaft? </p>
<p>Hier meine Definition:</p>
<blockquote><p>Isolation ist die Fähigkeit einer Entwicklungslandschaft an dem SUD (System Under Development) Änderungen vorzunehmen, ohne dabei von Anderen ungewollt beeinflußt zu werden oder Andere ungewollt zu beeinflußen.</p></blockquote>
<p>Ein sehr gutes praktisches Beispiel für Isolation <strong>unterstützende Werkzeuge in einer Entwicklungslandschaft sind Versionsverwaltungssysteme</strong> wie <a href="http://subversion.tigris.org/">Subversion</a> oder <a href="http://git-scm.com/">Git</a>, das die Isolation durch seinen dezentralen Ansatz noch weiter vorantreibt als früher CVS oder jetzt Subversion. Aber der Einsatz eines Versionskontrollsystems <strong>kann nur ein erster Schritt sein</strong>. Abgesehen davon: zeitgemäße Softwareentwicklung ohne Versionskontrollsystem ist ein Widerspruch in sich. </p>
<p>Heute lassen sich die meisten Systeme, die wir für Entwicklung und Test benötigen ohne Probleme für jeden Entwickler bereitstellen. Eine eigene Datenbank auf dem Laptop, ein <a href="http://mina.apache.org/ftpserver/">lokaler FTP-</a> oder Mailserver oder auch Applikation-Server sind immer möglich. Manche dieser Systeme müssen sogar nicht festinstalliert werden, sondern <strong>können im Rahmen eines Builds installiert</strong> und konfiguriert werden. JBoss, <a href="https://glassfish.dev.java.net/">GlassFish</a> und <a href="http://tomcat.apache.org/">Apache Tomcat</a> können aus ZIP-Archiven vollständig installiert und angepaßte Konfigurationsdateien anschließend generiert werden. Wird eine saubere Installation gebraucht, wird die alte gelöscht und eine neue automatisch installiert. Mit etwas Ehrgeiz ist das durchaus möglich.</p>
<p>Aber Isolation bringt noch weitere Vorteile für die Software-Entwicklung: </p>
<ul>
<li><strong>Ruhe und Ungestörtheit</strong>, weil es nicht ungewollt zu Konflikten mit den Arbeiten von anderen Entwicklern im Team kommt. Änderungen werden nur noch gewollt zusammengeführt.</li>
<li><strong>Verbesserung der Reproduzierbarkeit</strong>, weil alle positiven und negativen Effekte nur durch mich selber verursacht wurden und beispielsweise Testergebnisse so nicht verfälscht werden.</li>
<li><strong>Besseres Konfigurationsmanagement und Setup</strong>, weil Isolation als Ziel besondere Maßnahmen erfordert, die zwangsläufig auch zu Zielen wie besserer Modularisierung und Konfigurierbarkeit führen.</li>
</ul>
<p>Wenn wir beim Aufbau unserer Entwicklungslandschaft Isolation <strong>konsequent von Anfang an</strong> verfolgen und beachten, erhalten wir die Chance <strong>besser im Team zusammenarbeiten</strong> zu können, weil wir es dann geschafft haben <strong>gegenseitige Abhängigkeiten</strong> weiter aufzulösen. Gerade für agil arbeitende Teams sollte Isolation immer ein zu erreichendes Ziel sein, den deren Fehlen <strong>stört den Arbeitsfluß</strong>.</p>
<div class="ressource"><strong>Quellen und Verweise</strong></p>
<ul>
<li><a target="_blank" href="http://www.swe-blog.net/blog/archives/tag/entwicklungslandschaftserie">Alle Artikel der Entwicklungslandschaften-Serie</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/109/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Podcasts &amp; Software-Archäologie</title>
		<link>http://www.swe-blog.net/blog/archives/124</link>
		<comments>http://www.swe-blog.net/blog/archives/124#comments</comments>
		<pubDate>Fri, 20 Nov 2009 21:01:34 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Reverse Engineering]]></category>
		<category><![CDATA[Software Engineering Radio]]></category>
		<category><![CDATA[Sofware Engineering]]></category>

		<guid isPermaLink="false">http://www.swe-blog.net/blog/?p=124</guid>
		<description><![CDATA[Alle zwei Jahre steht auch bei mir eine Verlängerung des Handyvertrags an und die je nach Anbieter unterschiedlichen Angebote sorgen dafür, daß wohl viele Handys in Deutschland nach zwei Jahren den Besitzer wechseln. Der Erstbesitzer macht einen Technologiesprung und es findet sich doch immer jemand im Bekanntenkreis, der ein (neueres) Handy gebrauchen könnte. 
So auch [...]]]></description>
			<content:encoded><![CDATA[<p>Alle zwei Jahre steht auch bei mir eine Verlängerung des Handyvertrags an und die je nach Anbieter unterschiedlichen Angebote sorgen dafür, daß wohl viele Handys in Deutschland nach zwei Jahren den Besitzer wechseln. Der Erstbesitzer macht einen Technologiesprung und es findet sich doch immer jemand im Bekanntenkreis, der ein (neueres) Handy gebrauchen könnte. </p>
<p>So auch bei mir und daher besitze ich jetzt seit zwei Wochen ein <a href="http://europe.nokia.com/find-products/devices/nokia-e71" target="_blank">Nokia E71</a>. Sicherlich, nicht das aktuellste Modell auf dem Markt, aber genau das was ich brauche. Zumindest glaube zu brauchen. Es ist klein, handlich und leichter als mein altes <a  target="_blank" href="http://europe.nokia.com/find-products/devices/nokia-e61">E61</a>. Und es hat unerwartete Nebenwirkungen: ich höre jetzt auch <strong>Podcasts</strong>. Auf dem Laptop war mir das immer nicht bequem genug. Schlimmstenfalls muß man da auch noch zuhören, sich also konzentrieren. Das klappt zwar neben der Arbeit, <strong>aber geht auch zu deren Lasten</strong>. Jetzt ist das anders. Die Podcasts aktualisieren sich automatisch über mein WLAN und da das Handy praktisch überall dabei ist, findet sich immer irgendwo etwas Zeit für ein wenig Edutainment. Aber nun zur Sache...</p>
<p>So komme ich endlich auch einmal dazu mir Podcasts des <strong><a target="_blank"  href="http://www.se-radio.net/">Software Engineering Radios</a></strong> anzuhören.  So zum Bespiel die <a target="_blank" href="http://www.se-radio.net/podcast/2009-11/episode-148-software-archaeology-dave-thomas">Episode 148</a> mit Dave Thomas  zum Thema <strong>Software-Archäologie</strong>. </p>
<p>Thomas führt in diesem Podcasts ein paar interessante Dinge aus. Zum Beispiel, daß er am Code sehen kann, <strong>unter welchen Umständen die Software geschrieben wurde</strong>. Für mich ist das nachvollziehbar, denn unsere Arbeitsumstände haben einen maßgeblichen Einfluß darauf wie wir arbeiten und was wir erreichen können. Das erinnert mich aber auch an <strong>Conways Gesetz</strong>… Suchen sie einmal danach im weltweiten Gewebe.</p>
<p>Während des Podcasts wird auch das Thema <strong>Lesen von Code</strong> behandelt und daß dies eine viel zu <strong>stark vernachlässigte Disziplin</strong> ist. Das findet absolut meine Zustimmung. Und jeder der in Teams arbeitete weiß wie schwer ist manchmal schon sein kann, zu verstehen, was der Kollege da geschrieben hat und seine <strong>Gedankengänge  nachzuvollziehen</strong>. Wie schwer ist es also erst sich in ein ganz fremdes System einzuarbeiten, eventuell noch auf einer anderen technischen Basis? Neulich habe ich mich mit der Implementierung von Hadoop beschäftigt. Und dabei mußte ich selber wieder erstaut feststellen, daß selbst wenn man im Grunde weiß wie etwas funktioniert, es doch eine Weile dauert ehe man die entsprechenden Teile im Code gefunden hat und zu verstehen beginnt, wie diese zusammenspielen. Am Ende ist es aber auch ein gutes Gefühl nicht nur zu wissen wie etwas ungefähr funktioniert, sondern <strong>es genau zu verstehen.</strong> </p>
<p>Thomas bemängelt in dem Podcast, daß in der Ausbildung an den Universitäten diese Disziplin nicht gelehrt wird. In anderen Fächern, wie den Geisteswissenschaften etwa, sei es gang und gäbe sich mit der Arbeit von anderen zu beschäftigen, indem deren Bücher und andere Veröffentlichungen von relevanten Autoren gelesen, analysiert und kritisiert werden.  </p>
<p>Auch Mediziner lernen die menschliche Anatomie nicht beim ersten Kontakt mit den Patienten kennen, sondern schon bei der Sektion. Stellen sie sich einmal vor, sie kommen zu einem Arzt und hören: „Ah, so sieht das aus. Noch nie gesehen... Darf ich da einmal anfassen?“  Sie würden kopfschüttelnd den Raum verlassen und diesen Arzt für immer meiden. </p>
<p>Also warum nicht, wie Thomas es vorschlägt, Seminare an Universitäten anbieten, die sich nur mit der Analyse von bestehender Software beschäftigen? <strong>Nicht nur mit den abstrakten Konzepten, sondern mit deren konkreter Umsetzung durch exisitierende Systeme.</strong></p>
<p>Das ist nicht schwer. Java ist eine leichte Sprache und die Unterstützung durch Entwicklungsumgebungen ist sehr gut. Große quell-offene Softwareprojekte sind im Java-Umfeld frei verfügbar. Ich nenne hier nur einmal die <strong>üblichen Verdächtigen</strong>: Hibernate, Tomcat, JBoss, … </p>
<p>Jedes dieser Systeme setzt <strong>freiverfügbare Standards</strong> wie JPA, Servlet, JSP und EJB um. Warum nicht die Umsetzung dieser Standards untersuchen am Beispiel von konkreten Implementierungen. Welche Algorithmen lassen sich finden? Wie sieht die Architektur aus und wird diese auch konsequent umgesetzt?</p>
<p>Davon würde jeder profitieren können. Also, vielleicht gibt es ja einen Leser dieses Blocks, der sich dieser Idee annehmen möchte…</p>
<div class="ressource"><strong>Quellen und Verweise</strong></p>
<ul>
<li><a target="_blank" href="http://www.se-radio.net/podcast/2009-11/episode-148-software-archaeology-dave-thomas">Episode 148: Software Archaeology with Dave Thomas</a></li>
<li><a target="_blank" href="http://media.pragprog.com/articles/mar_02_archeology.pdf">Artikel zu Software Archaeology</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/124/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entwicklungslandschaft Teil 2 &#8211; Schnelligkeit</title>
		<link>http://www.swe-blog.net/blog/archives/103</link>
		<comments>http://www.swe-blog.net/blog/archives/103#comments</comments>
		<pubDate>Sat, 26 Sep 2009 06:39:40 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Blühende Landschaften]]></category>
		<category><![CDATA[Entwicklungslandschaft]]></category>
		<category><![CDATA[Entwicklungslandschaft.Serie]]></category>
		<category><![CDATA[Entwicklungsumgebung]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Infrastruktur]]></category>

		<guid isPermaLink="false">http://www.swe-blog.net/blog/?p=103</guid>
		<description><![CDATA[ Woher das Wort Schnelligkeit kommt weiß ich leider nicht. Auch ein Blick in den Kluge konnte mir nicht weiterhelfen. Für eine Entwicklunglandschaft bedeutet Schnelligkeit aber etwas ähnliches wie für den Sportler. Im Sport wird Schnelligkeit in zwei Arten aufgeteilt:

Aktionsschnelligkeit und 
Reaktionsschnelligkeit

Aktionsschnell ist jemand, der etwas in kürzerer Zeit machen kann als andere, zum Beispiel [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.swe-blog.net/blog/wp-content/uploads/2009/09/entwicklungslandschaft-schnelligkeit.png'><img src="http://www.swe-blog.net/blog/wp-content/uploads/2009/09/entwicklungslandschaft-schnelligkeit.png" alt="Schnelligkeit als Kriterium einer Entwicklungsumgebung" title="Schnelligkeit als Kriterium einer Entwicklungsumgebung" width="270" height="200" class="alignleft size-full wp-image-104" /></a> Woher das Wort Schnelligkeit kommt weiß ich leider nicht. Auch ein Blick in den <a href="http://de.wikipedia.org/wiki/Etymologisches_W%C3%B6rterbuch_der_deutschen_Sprache" target="_blank">Kluge</a> konnte mir nicht weiterhelfen. Für eine Entwicklunglandschaft bedeutet Schnelligkeit aber etwas ähnliches wie für den Sportler. Im Sport wird Schnelligkeit in zwei Arten aufgeteilt:</p>
<ul>
<li><strong>Aktionsschnelligkeit</strong> und </li>
<li><strong>Reaktionsschnelligkeit</strong></li>
</ul>
<p><strong>Aktionsschnell</strong> ist jemand, der etwas in kürzerer Zeit machen kann als andere, zum Beispiel Laufen. <strong>Reaktionsschnell</strong> ist jemand, der sich in kurzer Zeit auf Signale und Reize reagieren kann.</p>
<p>Auch Entwicklungsumgebungen kennen solche zwei Arten der Schnelligkeit. Die Aktionsschnelligkeit einer Entwicklungumgebung ist die Fähigkeit Entwicklungsaufgaben in möglichst kurzer Zeit effizient durchführen zu können. </p>
<p>Eine <strong>gute Build-Umgebung</strong> erlaubt es uns schnell überprüfen zu können, ob unser Code gebaut werden kann. Eine <strong>gute Testumgebung</strong> schafft uns die Möglichkeit unsere Änderungen schnell überprüfen zu können. Habe ich etwas kaputt gemacht?</p>
<p>Eine Entwicklungslandschaft kann zwar nicht reaktionsschnell sein, zumindest nicht direkt, aber sie kann eine hohe <strong>Änderungsschnelligkeit</strong> haben. Das heißt nichts anderes, als daß sich Änderungen in der Entwicklungslandschaft schnell vornehmen lassen. </p>
<p>Bis hier wird jeder sicherlich zustimmen können und jeder wird wohl auch ein Build-Script haben, daß seinen Code baut oder zumindest etwas ähnliches. Doch gehört dazu noch mehr als das, was in den meisten Entwicklungsumgebungen zu finden ist. Uns geht die Aktionsschnelligkeit <strong>verloren</strong>, wenn wir bei häufigen Tätigkeiten immer manuell eingreifen müssen. Wir sind zwar bei den einzelnen Schritten schnell, verlieren dann aber Zeit beispielsweise mit Kopieren von Dateien oder ähnlichem. </p>
<p>Aber wozu brauchen wir diese Schnelligkeit eigentlich? Sicher will keiner lange auf irgendetwas warten. Das ist klar. Wir brauchen diese Schnelligkeit vorallem für eins: <strong>um flexibel zu bleiben</strong>. Wir alle sind in der einen oder anderen Art faul und sobald bestimmte Aufgaben uns zu aufwendig erscheinen, versuchen wir sie zu umgehen. Wir bauen oder testen weniger und ab dem Punkte sind wir auf dem absteigenden Ast...</p>
<p>Und wie kommen wir zu einer schnellen Entwicklungsumgebung:</p>
<ul>
<li>Analysieren Sie die Abhängigkeiten in ihrer Entwicklungsumgebung und durchtrennen sie sie dort, wo sie nicht notwendig sind.</li>
<li>Cachen Sie Zwischenergebnisse wo immer möglich. Nicht alles muß immer wieder erzeugt oder generiert werden.</li>
<li>Wählen sie die richtigen Tools aus.</li>
</ul>
<p>Um wirklich schnell zu sein, braucht es aber auch einen hohen Automatisierunggrad. Aber das ist ein anderes Thema...</p>
<div class="ressource"><strong>Quellen und Verweise</strong></p>
<ul>
<li><a target="_blank" href="http://www.swe-blog.net/blog/archives/tag/entwicklungslandschaftserie">Alle Artikel der Entwicklungslandschaften-Serie</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/103/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entwicklungslandschaft Teil 1 &#8211; Blühende Landschaften</title>
		<link>http://www.swe-blog.net/blog/archives/99</link>
		<comments>http://www.swe-blog.net/blog/archives/99#comments</comments>
		<pubDate>Sat, 05 Sep 2009 10:13:14 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Entwicklungslandschaft]]></category>
		<category><![CDATA[Entwicklungslandschaft.Serie]]></category>
		<category><![CDATA[Entwicklungsumgebung]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Infrastruktur]]></category>

		<guid isPermaLink="false">http://www.swe-blog.net/blog/?p=99</guid>
		<description><![CDATA[Softwareentwickler verbringen die meiste Zeit ihrer Arbeit mit ihrer Entwicklungsumgebung. Daher bin ich oft überrascht, auf welch schlecht aufgebauten Entwicklungsumgebungen ich in Software-Projekten stoße. 
Vielleicht sollte ich aber eher von Entwicklungslandschaft als von -umgebung sprechen, da für mich alles zur Entwicklungslandschaft zählt, was wir für unsere Software-Entwicklung benötigen. Das schließt alles mit ein, angefangen vom [...]]]></description>
			<content:encoded><![CDATA[<p>Softwareentwickler verbringen die meiste Zeit ihrer Arbeit mit ihrer Entwicklungsumgebung. Daher bin ich oft überrascht, auf welch schlecht aufgebauten Entwicklungsumgebungen ich in Software-Projekten stoße. </p>
<p>Vielleicht sollte ich aber eher von Entwicklungslandschaft als von -umgebung sprechen, da für mich alles zur Entwicklungslandschaft zählt, was wir für unsere Software-Entwicklung benötigen. Das schließt alles mit ein, angefangen vom Datenbanksystem bis hin zu Issue-Tracking-System.</p>
<p>Schon <a target="_blank" href="http://www.cs.st-andrews.ac.uk/~ifs/index.html">Ian Sommerville</a> nennt als eine zentrale Anfoderung an Software-Entwicklungsumgebungen (-landschaften), daß verschiedene Werkzeuge für unterschiedliche Phasen zur Verfügung stehen sollen, die Menge der Funktionen der Entwicklungsumgebung aber zu jeder Zeit durch neue Werkzeuge erweitern lassen muss, um neue Funktionen integrieren zu können, da wir nicht wissen, welche Funktionen später umzusetzen sind. Kurz gesagt, sie soll flexibel sein.</p>
<p><a href='http://www.swe-blog.net/blog/wp-content/uploads/2009/09/entwicklungslandschaft-allgemein.png'><img src="http://www.swe-blog.net/blog/wp-content/uploads/2009/09/entwicklungslandschaft-allgemein.png" alt="" title="Aspekte einer Entwicklungslandschaft" width="400" height="295" class="alignleft size-full wp-image-102" /></a></p>
<p>Oft sind Entwicklungslandschaften jedoch das ganze Gegenteil: starr und sogar hinderlich bei der Arbeit. Im einfachsten Falle kosten sie einfach nur Zeit. Die Probleme in einer Entwicklungslandschaft fangen schon an, wenn mehrere Entwickler dazu gezwungen sind auf der gleichen Datenbank parallel zu entwickeln und enden in stundenlangenen Installationen von Tools und deren Konfiguration. </p>
<p>Dabei muß unsere Entwicklungslandschaft genauso flexibel oder besser gesagt agil <img src='http://www.swe-blog.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  sein wie wir selber. Die <strong>gute Entwicklungsumgebung</strong> muß uns bei allen Änderungen unterstützen, uns einladen neues auszuprobieren und flexibel zu bleiben. Sobald wir eine Änderung, einen Test oder Idee verwerfen, nur weil sie nicht mit <strong>angemessenem</strong> Aufwand mit unserer Entwicklungslandschaft umzusetzen ist, ist es Zeit über sie nachzudenken.</p>
<p>Damit dies einfacher fällt, habe ich hier meine Kriterien für eine gute Entwicklungslandschaft zusammengestellt:</p>
<ul>
<li><strong>Angemessenheit</strong> Eine Entwicklungslandschaft muß vom Entwicklungs- und Pflegeaufwand zur Projektgröße und -dauer passen. Je größer, je länger oder je mehr Entwickler an dem Projekt teilnehmen, desto mehr rentiert sich auch ein größerer Aufwand für die Entwicklungsumgebung.
<li><strong>Zweckdienlichkeit</strong> Alle Komponenten der Entwicklungslandschaft sind effektiv für ihren Einsatzzweck und effizient einsetzbar.
<li><strong>Isolation</strong> Jeder Entwickler muß die Möglichkeit und Sicherheit haben, Änderungen unabhängig von anderen durchführen zu können und auch nicht durch die Änderungen anderer ungewollt beeinflußt zu werden. Und hierbei denke ich nicht nur an den Einsatz eines Versionskontrollsystems.
<li><strong>Automatisierung</strong> Wiederkehrende Tätigkeiten müssen automatisierbar sein. Die Entwicklungsumgebung muß hierfür die notwendige Unterstützung anbieten. Stichwörter sind hier beispielsweise <a href="http://ant.apache.org">Ant</a> und <a href="http://maven.apache.org">Maven</a>.
<li><strong>Schnelligkeit</strong> Jede regelmäßig ausgeführte Tätigkeit muss sich in der Entwicklungslandschaft schnell ausführen lassen.
<li><strong>Anpassbarkeit</strong> Jeder Entwickler muß die Möglichkeit haben seine persönliche Entwicklungslandschaft an seinen Erfordernissen entsprechend zu konfigurieren.
<li><strong>Erweiterbarkeit</strong> Neue temporär und permantente Funktionen müssen sich leicht in die bestehende Entwicklungslandschaft integrieren lassen.
<li><strong>Neutralität</strong> Einzelne Komponenten der Entwicklungslandschaft müssen sich leicht gegen andere Tools mit einer äquivalenten Funktionalität austauschen lassen. Funktionalität und Werkzeug müssen also so weit wie möglich orthogonal sein.
</ul>
<p>In den nächsten Tagen werde ich die einzelnen Punkte näher erläutern...</p>
<div class="ressource"><strong>Quellen und Verweise</strong></p>
<ul>
<li><a target="_blank" href="http://www.swe-blog.net/blog/archives/tag/entwicklungslandschaftserie">Alle Artikel der Entwicklungslandschaften-Serie</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/99/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ward Cunnigham über technische Schulden</title>
		<link>http://www.swe-blog.net/blog/archives/94</link>
		<comments>http://www.swe-blog.net/blog/archives/94#comments</comments>
		<pubDate>Sun, 03 May 2009 17:43:02 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Fundstücke]]></category>
		<category><![CDATA[Online]]></category>
		<category><![CDATA[Deficit Programming]]></category>
		<category><![CDATA[Event Driven Software Development]]></category>
		<category><![CDATA[Technical Debt]]></category>
		<category><![CDATA[Ward Cunningham]]></category>

		<guid isPermaLink="false">http://www.swe-blog.net/blog/?p=94</guid>
		<description><![CDATA[Vor einiger Zeit habe ich ein Phänomen beschrieben, welches ich Event-Driven-Software-Development nenne und dessen Kern von Martin Fowler als Technische Schulden beschrieben wird.
In Fowlers Blog habe ich jetzt einen Verweis auf ein Video von Ward Cunnigham gefunden, in welchem er den Begriff Technische Schulden erläutert und in 4 Minuten und 44 Sekunden auf den Punkt [...]]]></description>
			<content:encoded><![CDATA[<p>Vor einiger Zeit habe ich ein <a href="http://www.swe-blog.net/blog/archives/61">Phänomen beschrieben, welches ich Event-Driven-Software-Development</a> nenne und dessen Kern von Martin Fowler als <a href="http://www.swe-blog.net/blog/archives/62">Technische Schulden</a> beschrieben wird.</p>
<p>In Fowlers Blog habe ich jetzt einen Verweis auf ein Video von Ward Cunnigham gefunden, in welchem er den Begriff Technische Schulden erläutert und in 4 Minuten und 44 Sekunden auf den Punkt bringt.</p>
<div align="center">
<p><object width="445" height="364"><param name="movie" value="http://www.youtube.com/v/pqeJFYwnkjE&hl=de&fs=1&color1=0xe1600f&color2=0xfebd01&border=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/pqeJFYwnkjE&hl=de&fs=1&color1=0xe1600f&color2=0xfebd01&border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="445" height="364"></embed></object></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/94/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vortrag zu Architekturkommunikation</title>
		<link>http://www.swe-blog.net/blog/archives/82</link>
		<comments>http://www.swe-blog.net/blog/archives/82#comments</comments>
		<pubDate>Wed, 11 Mar 2009 21:04:00 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Menschen]]></category>
		<category><![CDATA[Online]]></category>
		<category><![CDATA[Gernot Starke]]></category>

		<guid isPermaLink="false">http://www.swe-blog.net/blog/?p=82</guid>
		<description><![CDATA[Gernot Starke  hat in seinem Blog einen Hinweis auf seinen auf der WJAX
gehaltenen Vortrag zum Thema Architekturkommunikation hingewiesen, der als Video online zur Verfügung steht.

Starke widmet sich in seinem Vortrag dem Zusammenhang von Architektur und Kommunikation und weiß das überzeugend zu vermitteln.
Nach seiner Ansicht ist eine der wesentlichen Aufgaben eines Architekten die Kommunikation mit [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gernotstarke.de/">Gernot Starke </a> hat in seinem <a href="http://it-and-more.blogspot.com/">Blog</a> einen Hinweis auf seinen auf der WJAX<br />
gehaltenen Vortrag zum Thema <a href="http://it-republik.de/jaxenter/news/JAX-TV-Angewandte-Architekturkommunikation-047571.html">Architekturkommunikation</a> hingewiesen, der als Video <a href="http://it-republik.de/jaxenter/news/JAX-TV-Angewandte-Architekturkommunikation-047571.html">online zur Verfügung steht</a>.</p>
<p><a target="_blank" href="http://it-republik.de/jaxenter/news/JAX-TV-Angewandte-Architekturkommunikation-047571.html"><img src="http://www.swe-blog.net/blog/wp-content/uploads/2009/03/vortrag-starke.png" alt="" title="Gernot Starke während des Vortrags" width="500" height="302" class="" /></a></p>
<p>Starke widmet sich in seinem Vortrag dem Zusammenhang von Architektur und Kommunikation und weiß das überzeugend zu vermitteln.</p>
<p>Nach seiner Ansicht ist eine der wesentlichen Aufgaben eines Architekten die Kommunikation mit allen am Projekt beteiligten Stakeholdern. Richtig dachte ich nur während des ganzen Videos. Gute Architekturen zu entwerfenist das eine, sie zum Leben zu erwecken und zu halten etwas anderes. <a href="http://www.swe-blog.net/blog/archives/3">Dafür<br />
müssen alle miteingebunden werden</a>, die davon betroffen seien könnten. Und <del datetime="2009-03-11T20:54:55+00:00">leider muß</del> es muß auch immer wieder wiederholt werden.</p>
<p>Hier ein paar nebenbei notierte Aussagen von Starke:</p>
<ul>
<li>Architektur beschäftigt sich mit <strong>Strukturen und Konzepten</strong>.
</li>
<li>Implizite Annahmen treten immer da auf, wo etwas nicht<br />
dokumentiert ist, wo es <strong>notwendig </strong>gewesen war. (Alt bekannt!)
</li>
<li>
Implizite Annahmen schaffen <strong>Mißverständnispotential</strong>. (Ich nenne<br />
das einfach mal heterogene Projektentwicklung. Klingt doch<br />
netter.)
</li>
<li>
Architektur ist nicht das Kodieren von selbigen, da Code<br />
allein ab einer gewissen Größe <strong>keine Basis für Verständnis<br />
</strong>ist.
</li>
<li>
Verständnis (von Architekturen) muß <strong>erst geschaffen werden</strong> und<br />
kann erst danach gefördert werden.
</li>
<li>
Dokumentation muß minimalistisch sein, womit gemeint ist, daß<br />
<strong>nur die relevanten oder stabilen Punkte</strong> dokumentiert werden sollten,<br />
die für das Verständnis der Anwendung notwendig sind.
</li>
<li>
Dokumentation muß <strong>wartbar</strong> sein.
</li>
</ul>
<p>Starke schafft es diese Punkte überzeugend zu vermitteln.</p>
<p><a target="_blank" href="http://it-republik.de/jaxenter/news/JAX-TV-Angewandte-Architekturkommunikation-047571.html">Fazit: Anschauen!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/82/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>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>40 Jahre Software Engineering</title>
		<link>http://www.swe-blog.net/blog/archives/18</link>
		<comments>http://www.swe-blog.net/blog/archives/18#comments</comments>
		<pubDate>Wed, 22 Oct 2008 21:46:35 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Softwarekrise]]></category>

		<guid isPermaLink="false">http://www.sw-blog.net/blog/?p=18</guid>
		<description><![CDATA[Wenn das ObjectSpektrum nicht seine aktuellen Ausgabe dem Thema 40 Jahre Software Engineering gewidmet hätte, wäre dieses Ereignis wohl auch an mir ohne besonderen Wahrnehmung vorbei gegangen. Zugegeben, 40 Jahre sind kein rundes Jubiläum, aber ein guter Anlaß um das Thema wieder in den Mittelpunkt zu rücken.

Nach meiner Meinung wird das Thema Software Engineering auch [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn das <a href="http://www.sigs-datacom.de/sd/publications/os/index.htm">ObjectSpektrum</a> nicht seine aktuellen Ausgabe dem Thema 40 Jahre Software Engineering gewidmet hätte, wäre dieses Ereignis wohl auch an mir ohne besonderen Wahrnehmung vorbei gegangen. Zugegeben, 40 Jahre sind kein rundes Jubiläum, aber ein guter Anlaß um das Thema wieder in den Mittelpunkt zu rücken.<br />
<span id="more-18"></span><br />
<a href='http://www.sw-blog.net/blog/wp-content/uploads/2008/10/kuchen.jpg'><img src="http://www.sw-blog.net/blog/wp-content/uploads/2008/10/kuchen.jpg" alt="" title="40 Jahre Software Engineering" width="300" height="275" class="alignleft size-full wp-image-19" /></a>Nach meiner Meinung wird das Thema Software Engineering auch heute noch in vielen Firmen zu sehr vernachläßigt und der Erfolg eines aktiv betriebenen Software Engineering-Prozesses in Frage gestellt. Der Grund dafür ist, daß es es sich dabei um einen umfassenden Prozess handelt, der viele Teildisziplinen beinhaltet und heute mehr den je eine Querschnittstätigkeit darstellt. Als Software-Ingenieur ist nicht mehr der reine Techniker gefragt, sondern eine Person, die sowohl die Technik beherrscht und sich im sozialen Raum sicher bewegen kann, um auch Aufgaben wie Projektmanagement und Anforderungsdefinition zu übernehmen. </p>
<p>Daß wir heute im Bereich des Software Engineerings noch lange nicht die Erfolgsquote und Qualitätsziele erreichen wie in anderen Branchen, dürfte aber nicht nur daran liegen. Vielmehr wird Software Engineering noch zu sehr als <strong>Produktion von Software</strong> verstanden. Doch Software entsteht nicht am <strong>Fließband</strong>.</p>
<p>Jedes Projekt ist ein Entwicklungsprojekt, dessen Ergebnis wir am Anfang noch nicht kennen (können). Wir habennur eine Vorstellung von den ungefähren Zielen, die erreicht werden sollen. Oft ist der Weg dahin noch unbekannt oder unklar. Insofern ist jedes Softwareprojekt eher wie ein <strong>Forschungsprojekt </strong>zu betrachten. Das macht auch die Planung so schwierig, ist aber auch die Grundlage für die <strong>Freude</strong> an der Softwareentwicklung.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/18/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
