<?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>Softwarearchitektur</title>
	<atom:link href="http://www.softwarearchitektur.de/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.softwarearchitektur.de</link>
	<description>Was ich schon immer über Softwarearchitektur schreiben wollte.</description>
	<lastBuildDate>Thu, 20 May 2010 20:41:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Eclipse Summit Europe 2010</title>
		<link>http://www.softwarearchitektur.de/?p=473</link>
		<comments>http://www.softwarearchitektur.de/?p=473#comments</comments>
		<pubDate>Thu, 20 May 2010 20:41:31 +0000</pubDate>
		<dc:creator>Wolfgang Strunk</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Konferenz]]></category>

		<guid isPermaLink="false">http://www.softwarearchitektur.de/?p=473</guid>
		<description><![CDATA[
Vom 2.-4. November findet wieder die Eclipse Summit Europe in Ludwigsburg statt. Ich bin jetzt zweimal dort gewesen und war beide Male begeistert von der Möglichkeit, mit den Eclipse-Entwicklern und PMC Mitgliedern zu diskutieren, aber auch konkrete Probleme meiner Firma anzusprechen.
Der &#8220;Call for Papers&#8221; ist noch nicht rausgegangen und daher ist auch noch Zeit, die [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.eclipsesummit.org/"><img src="http://www.eclipsecon.org/summiteurope2010/static/image/friends/600x96.jpg" border="0" alt="Eclipse Summit Europe 2010" width="600" height="96" /></a></p>
<p>Vom 2.-4. November findet wieder die Eclipse Summit Europe in Ludwigsburg statt. Ich bin jetzt zweimal dort gewesen und war beide Male begeistert von der Möglichkeit, mit den Eclipse-Entwicklern und PMC Mitgliedern zu diskutieren, aber auch konkrete Probleme meiner Firma anzusprechen.</p>
<p>Der &#8220;Call for Papers&#8221; ist noch nicht rausgegangen und daher ist auch noch Zeit, die eigenen Ideen dort zu präsentieren.<br />
Jetzt heißt es, die Mittel für die Konferenzteilnahme einzuwerben. <img src='http://www.softwarearchitektur.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarearchitektur.de/?feed=rss2&amp;p=473</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jährliches Meeting der GI Fachgruppe Softwarearchitketur</title>
		<link>http://www.softwarearchitektur.de/?p=488</link>
		<comments>http://www.softwarearchitektur.de/?p=488#comments</comments>
		<pubDate>Tue, 11 May 2010 18:51:42 +0000</pubDate>
		<dc:creator>Wolfgang Strunk</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Konferenz]]></category>

		<guid isPermaLink="false">http://www.softwarearchitektur.de/?p=488</guid>
		<description><![CDATA[Am 15.+16. July 2010 trifft sich in München die Fachgruppe Softwarearchitektur der Gesellchaft für Informatik. Das ganze ist in diesem Jahr verpackt in eine kleine Konferenz mit dem Titel Software Architectures for the Cloud.
Ich erinnere mich noch deutlich an das Jahr 2004 und das Gründungstreffen des  GI-Arbeitskreises Software Architektur.  Komischerweise ging es damals in [...]]]></description>
			<content:encoded><![CDATA[<p>Am 15.+16. July 2010 trifft sich in München die Fachgruppe Softwarearchitektur der Gesellchaft für Informatik. Das ganze ist in diesem Jahr verpackt in eine kleine Konferenz mit dem Titel <a title="Software Architectures for the Cloud" href="http://wwwmatthes.in.tum.de/wikis/sebis/softarch2010" target="_blank"><strong>Software Architectures for the Cloud</strong></a>.</p>
<p>Ich erinnere mich noch deutlich an das Jahr 2004 und das Gründungstreffen des  GI-Arbeitskreises Software Architektur.  Komischerweise ging es damals in Oldenburg eigentlich nur darum, ein Buch zu schreiben. Es wirkte irgendwie wie abgesprochen und etliche Teilnehmer waren doch etwas überrascht. Das ganze kam mir darüber hinaus sehr akademisch vor und ich habe mich die letzten 6 Jahre deshalb aus den GI Aktivitäten herausgehalten.</p>
<p>Die <a title="Software Architectures for the Cloud" href="http://wwwmatthes.in.tum.de/wikis/sebis/softarch2010" target="_blank">Agenda</a> für dieses Jahr sieht aber eigentlich recht spannend aus. Ich denke, daß ich in diesem Jahr den Kontakt &#8216;mal wieder aufnehmen werde, zumal ich Florian Matthes auch persönlich ganz gut kenne.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarearchitektur.de/?feed=rss2&amp;p=488</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Experts Summit in Munich</title>
		<link>http://voelterblog.blogspot.com/2010/04/software-experts-summit-in-munich.html</link>
		<comments>http://voelterblog.blogspot.com/2010/04/software-experts-summit-in-munich.html#comments</comments>
		<pubDate>Wed, 07 Apr 2010 18:45:00 +0000</pubDate>
		<dc:creator>Markus Völter</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-19398645.post-2902153871190572162</guid>
		<description><![CDATA[On June 9 there will be a nice little 1 day conference on software engineering in Munich. The speakers are all part of the IEEE Software industry advisory board. Since the board meeting will take place the two days before in Munich, the chair of the bo...]]></description>
			<content:encoded><![CDATA[On June 9 there will be a <a href"http://www.software-experts-summit.de/index.php">nice little 1 day conference</a> on software engineering in Munich. The speakers are all part of the IEEE Software industry advisory board. Since the board meeting will take place the two days before in Munich, the chair of the board, Frances Paulisch, has taken the chance to do a littel conference "on the side". <br /><br />The conference, although branded "SIEMENS", is accessible to non-SIEMENS folks. So if you're interested, take a look at the <a href="http://www.software-experts-summit.de/agenda.php">agenda</a>, it does look interesting.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19398645-2902153871190572162?l=voelterblog.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.softwarearchitektur.de/?feed=rss2&amp;p=237</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buchrezension: Stefan Tilkov &#8211; REST und HTTP: Einsatz der Architektur des Web für Integrationsszenarien</title>
		<link>http://feedproxy.google.com/~r/jandiandme2/~3/MvYV0WoC85Q/buchrezension-stefan-tilkov-rest-und.html</link>
		<comments>http://feedproxy.google.com/~r/jandiandme2/~3/MvYV0WoC85Q/buchrezension-stefan-tilkov-rest-und.html#comments</comments>
		<pubDate>Tue, 23 Feb 2010 10:24:00 +0000</pubDate>
		<dc:creator>Eberhard Wolff</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Rezensionen]]></category>
		<category><![CDATA[Integration]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-14001982.post-7452059395777854911</guid>
		<description><![CDATA[Ein neues Feature von Spring 3 ist die Unterstützung von REST. Dieser Architektur-Ansatz für verteilte Systeme nutzt HTTP und die Ansätzes des Webs deutlich anders, als man dies zum Beispiel von Web Services gewohnt ist. Wie man technisch REST-Anwen...]]></description>
			<content:encoded><![CDATA[Ein neues Feature von Spring 3 ist die Unterstützung von REST. Dieser Architektur-Ansatz für verteilte Systeme nutzt HTTP und die Ansätzes des Webs deutlich anders, als man dies zum Beispiel von Web Services gewohnt ist. Wie man technisch REST-Anwendungen implementiert sollte klar sein - eben mit Spring 3. Aber ist bei diesem Ansatz zu beachten?<br /><br />Genau diesen Bereich deckt Stefan Tilkov mit seinem Buch "REST und HTTP: Einsatz der Architektur des Web für Integrationsszenarien" ab. Es enthält eine ausführliche Darstellung des REST-Ansatzes als Architektur und beantwortet daher genau die Fragen, die man bei einem Einstieg in REST hat. Man kann an dem Buch deutlich erkennen, dass der Autor viele Erfahrungen im Bereich Architektur und insbesondere REST gesammelt hat. Er wägt verschiedene Ansätze ab, kommt zu schlüssigen Empfehlungen und betrachtet das gesamte Thema erfrischen unideologisch. Auch die Abgrenzung zu den WS-*-Technologien gelingt so sehr gut und nachvollziehbar. Die zum Teil dann doch spitzen Kommentare finden sich in den Fußnoten und dienen eher der Auflockerung.<br /><br />Das Buch führt zunächst kurz in REST ein, um dann das Gezeigte durch eine Fallstudie in der Praxis zu zeigen. Dann werden die wesentlichen Elemente (Ressourcen, Verben, Hypermedia, Repräsentationsformate) detailliert erläutert und am Beispiel des Atom-Protokolls praktisch verdeutlicht.<br /><br />Schließlich geht es um Features wie Sitzungen, Skalierbarkeit, Caching, Sicherheit, Dokumentation und erweiterte Anwendungsfälle, die dann an einer Erweiterung der ersten Fallstudie praktisch gezeigt werden. Dabei wird die Fallstudie komplexer und deckt viele typische Anforderungen im Enterprise-Umfeld ab. Den Abschluss bildet eine Betrachtung zu "Enterprise SOA mit REST".<br /><br />Insgesamt ist das Buch eine kurzweilige, kompakte und sehr gut gelungene Einführung in REST und auf jeden Fall zu empfehlen.<br /><br />Wer gleich zugreifen will:<br /><br /><center><br /><iframe src="http://rcm-de.amazon.de/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=springbuch-21&o=3&p=8&l=as1&m=amazon&f=ifr&md=1M6ABJKN5YT3337HVA02&asins=3898645835" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br /></center><br /><br />bzw.<br /><br /><a href="http://www.amazon.de/gp/product/3898645835?ie=UTF8&tag=springbuch-21&linkCode=as2&camp=1638&creative=19454&creativeASIN=3898645835">REST und HTTP: Einsatz der Architektur des Web für Integrationsszenarien</a><img src="http://www.assoc-amazon.de/e/ir?t=springbuch-21&l=as2&o=3&a=3898645835" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14001982-7452059395777854911?l=jandiandme.blogspot.com' alt='' /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jandiandme2?a=MvYV0WoC85Q:QfWuW_71c7c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jandiandme2?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jandiandme2?a=MvYV0WoC85Q:QfWuW_71c7c:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jandiandme2?i=MvYV0WoC85Q:QfWuW_71c7c:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jandiandme2?a=MvYV0WoC85Q:QfWuW_71c7c:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jandiandme2?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jandiandme2/~4/MvYV0WoC85Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.softwarearchitektur.de/?feed=rss2&amp;p=176</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some Thoughts on Cathedrals and Software Architectures</title>
		<link>http://martinlippert.blogspot.com/2009/12/some-thoughts-on-cathedrals-and.html</link>
		<comments>http://martinlippert.blogspot.com/2009/12/some-thoughts-on-cathedrals-and.html#comments</comments>
		<pubDate>Fri, 11 Dec 2009 09:39:00 +0000</pubDate>
		<dc:creator>Martin Lippert</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>
		<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-18490491.post-923288710762486635</guid>
		<description><![CDATA[While preparing a talk on module systems and architectures I remembered some old talks I listened to talking about architectures and arguing why an explicit software architect is necessary within professional projects. Many of them used the analogy of ...]]></description>
			<content:encoded><![CDATA[<div style="text-align: left;">While preparing a talk on module systems and architectures I remembered some old talks I listened to talking about architectures and arguing why an explicit software architect is necessary within professional projects. Many of them used the analogy of building a dog-house versus building a cathedral. For a small dog house, you don't need an architecture. But for the cathedral you do. Hm, agree, but where is the point?</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_A_IF8Fq8cIQ/SyIbpiPjAXI/AAAAAAAAAH8/NXWnfWBbKiw/s400/IMG_0060.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5413920102433358194" /></div><div style="text-align: left;"><br /></div><div>I think the world has changed. Today for most software systems the analogy of building something like a cathedral is no longer a good choice. And I hope that people no longer have a cathedral in mind when designing software. We have learned that building software is a learning process, that requirements change all the time, that we need a short time-to-market, and most of all that we need feedback all the time - and react to this feedback quickly. Agile methods reflect this and allows us to move forward to modern ways of software development.</div><div style="text-align: center;"><br /></div><div>But our view on architectures need to reflect this. Modern software architectures need to be build for flexibility, for changing requirements all the time, for changing even fundamental layers of our software in a flexible way without causing tremendous costs. Having a cathedral in mind don't help you here. But if you still like the analogy of building real buildings (even though I think this is not always a good analogy to building software at all), you should take a look at some modern office buildings. Maybe they are not as beautiful as some of the old cathedrals, but they are built for flexibility.</div><div><br /></div><div><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_A_IF8Fq8cIQ/SyIbQr3WEYI/AAAAAAAAAH0/S3M3dJXMTBc/s400/Flexible-Office-Building.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5413919675519472002" /></div><div><br /></div><div>But building flexible architectures is not an easy task. We need to build a flexible architecture and at the same time just what we need without designing all possible stuff upfront. Sounds like contradictory goals, eh? Hm, in some way, they are. I think modularity can help you to solve this conflict. Modularity (and I mean modularity on a higher level than individual classes or packages, but more something like Bundles in OSGi) helps you to think about dependencies, coupling, cohesion, and many of these nice design principles. And I think we all agree on having a good, decoupled design makes life easier when things change - and they will change.</div><div><br /></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18490491-923288710762486635?l=martinlippert.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.softwarearchitektur.de/?feed=rss2&amp;p=200</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slides from Meet-The-Experts on Architecture</title>
		<link>http://martinlippert.blogspot.com/2009/12/slides-from-meet-experts-on.html</link>
		<comments>http://martinlippert.blogspot.com/2009/12/slides-from-meet-experts-on.html#comments</comments>
		<pubDate>Fri, 11 Dec 2009 09:23:00 +0000</pubDate>
		<dc:creator>Martin Lippert</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Planet-Eclipse]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-18490491.post-553843351758635082</guid>
		<description><![CDATA[Last friday I was invited to give a talk at the Meet-the-Experts event in Solingen. I talked about my view on architectures in an agile world and how module systems drive those architectures for a flexible future. Here are the slides:How Module Systems...]]></description>
			<content:encoded><![CDATA[Last friday I was invited to give a talk at the <a href="http://www.meettheexperts.de/">Meet-the-Experts event</a> in Solingen. I talked about my view on architectures in an agile world and how module systems drive those architectures for a flexible future. Here are the slides:<div><ul><li><a href="http://www.martinlippert.org/events/MeetTheExperts-Architektur-2009-ModuleSystemsAndArchitectures.pdf">How Module Systems Drive Architectures (pdf)</a></li></ul><div>Enjoy!</div><div><br /></div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18490491-553843351758635082?l=martinlippert.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.softwarearchitektur.de/?feed=rss2&amp;p=201</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Über Architekturen und Perfektion</title>
		<link>http://feedproxy.google.com/~r/jandiandme2/~3/UJHa6AjLlhM/uber-architekturen-und-perfektion.html</link>
		<comments>http://feedproxy.google.com/~r/jandiandme2/~3/UJHa6AjLlhM/uber-architekturen-und-perfektion.html#comments</comments>
		<pubDate>Fri, 06 Nov 2009 11:49:00 +0000</pubDate>
		<dc:creator>Eberhard Wolff</dc:creator>
				<category><![CDATA[Architektur]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-14001982.post-6575476594067042145</guid>
		<description><![CDATA[Wenn ich mir Architekturen ansehen, wie sie typischerweise präsentiert werden, muss ich an dieses Photo denken:Ein völlig sauber, möglichst quadratisches Gebäude mit rechten Winkeln - das ist es, was man meistens als Ziel für die Architektur präs...]]></description>
			<content:encoded><![CDATA[Wenn ich mir Architekturen ansehen, wie sie typischerweise präsentiert werden, muss ich an dieses Photo denken:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Wg2HaCi8uwU/SvP9SnmvblI/AAAAAAAAABw/OPPTkoIS2XM/s1600-h/11102009038.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_Wg2HaCi8uwU/SvP9SnmvblI/AAAAAAAAABw/OPPTkoIS2XM/s320/11102009038.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5400938874458304082" /></a><br /><br /><br />Ein völlig sauber, möglichst quadratisches Gebäude mit rechten Winkeln - das ist es, was man meistens als Ziel für die Architektur präsentiert bekommt. Oder die tatsächliche Architektur des Systems soll wirklich so aussehen. Meistens gibt es da aber dann die sprichwörtlichen "kleinen" Ausnahmen.<br /><br />In Wirklichkeit erinnern mich die tatsächlichen Architekturen eher an das hier:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Wg2HaCi8uwU/SssE6Afa3wI/AAAAAAAAABo/g3hVcciecJU/s1600-h/IMG_0598.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 222px; height: 320px;" src="http://4.bp.blogspot.com/_Wg2HaCi8uwU/SssE6Afa3wI/AAAAAAAAABo/g3hVcciecJU/s320/IMG_0598.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5389406773689638658" /></a><br /><br />Das ist das Spiel "Villa Paletti", zum bekommen <a href="http://www.amazon.de/gp/product/B00006NSWG?ie=UTF8&tag=springbuch-21&linkCode=as2&camp=1638&creative=19454&creativeASIN=B00006NSWG">bei Amazon</a><img src="http://www.assoc-amazon.de/e/ir?t=springbuch-21&l=as2&o=3&a=B00006NSWG" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />. Dabei geht es darum, dass jeder Spieler Säulen seiner Farbe ganz nach oben auf das Gebäude stellen muss, bis es einstürzt. Es gewinnt der Spieler mit den wertvollsten Säulen auf der obersten Ebene.<br /><br />Wenn man sich die dabei entstehenden Konstruktionen anschaut, sind sie sicher ein Gräuel, wenn man ein Gebäude mit möglichst vielen rechten Winkeln und klaren Strukturen bevorzugt. Und natürlich ist das Ziel einer Software-Architektur nicht, dass sie am Ende einstürzt.<br /><br />Aber die entstehenden Entwürfe haben auch Vorteile: Auf dem Bild kann man erkennen, dass die oberste Ebene nur von zwei Säulen unterstützt wird. Hier kommt man also mit einem sehr geringen Material-Einsatz aus - und bei einem klassischen Entwurf würde man sicher jede Ebene mindestens mit drei Säulen unterstützen. Es kann also im Laufe des Spiels eine Konstruktion entstehen, die mit weniger Material mehr Höhe erreicht, als dies bei einer im Vorhinein geplanten Konstruktion der Fall wäre. <br /><br />Die andere interessante Eigenschaft des Spiels ist, dass man ständig evolutionär weiterentwickelt. Das Gebäude umfasst  immer alle Bausteine und wird schrittweise "optimiert", also höher. Das ist bei dem Gebäude auf dem anderen Bild sicher nicht der Fall. Dort wird das Gebäude gebaut, es dann irgendwann "fertig" und kann danach eigentlich nicht mehr wirklich verändert werden. Bevor es "fertig" ist, kann man es nicht benutzen. Für Software ist das eine schlechte Eigenschaft, weil man dann die Software nicht ernsthaft weiterentwickeln kann.<br /><br />Ich bin nun der Meinung, dass "Villa Paletti" eine wesentlich bessere Metapher für Software-Entwicklung ist als das Gebäude weiter oben. Warum?<br /><ul><br /><li>Software entsteht evolutionär. Es wird ständig weiterentwickelt, angepasst usw - ein klarer, rechteckiger Entwurf kann dabei nicht entstehen.</li><br /><li>Selbst wenn ein "sauberer" Entwurf entstehen könnte - das "Villa Paletti"-Modell ist teilweise überlegen, wie man am Beispiel des Material-Einsatzes sieht.</ul><br /></li><br /><br />Für die Software-Entwicklung bedeutet das aus meiner Sicht, dass wir uns von den klaren, rechteckigen Entwürfen verabschieden müssen - wir werden sie eh nicht realisieren können. Wenn man es dennoch versucht, landet man bei Stackenblocken, weil man es eben nicht schafft, alles in rechten Winkeln anzuordnen. Zu Stackenblocken gibt es unter <a href="http://www.youtube.com/watch?v=QEN5-_93gQg">http://www.youtube.com/watch?v=QEN5-_93gQg</a> ein sehr sehenswertes Video.<br /><br />Das bedeutet aus meiner Sicht:<br /><ul><br /><li>Lebe damit, dass die Architektur nicht perfekt sein wird!</li><br /><li>Beeinflusse aktiv, welche Teile architekturell besser und schlechter sind. Wenn nicht alles perfekt sein kann, muss man dafür sorgen, dass zumindest die wichtigen Teile eine gute Architektur haben.</li><br /><li>Setze also Prioritäten: Probleme, mit denen man leben kann, sollte man nicht korrigieren. Beispielsweise ist ein sauberer Entwurf kein Wert an sich, sondern er hilft bei der Weiterentwicklung. Ein sauberer Entwurf für einen Teil, den man nicht weiterentwickeln wird, macht daher kaum Sinn.</li><br /><li>Entwickel daher die Architektur und die Software evolutionär weiter. Man kann nicht ein sauberes, neues Gebäude bauen - es wird früher oder später wieder umgebaut werden, das muss evolutionär passieren und das Umschalten auf das neue Gebäude wird nicht einfach sein.</ul><br /></li><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14001982-6575476594067042145?l=jandiandme.blogspot.com' alt='' /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jandiandme2?a=UJHa6AjLlhM:LU49F3Ol9uY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jandiandme2?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jandiandme2?a=UJHa6AjLlhM:LU49F3Ol9uY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jandiandme2?i=UJHa6AjLlhM:LU49F3Ol9uY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jandiandme2?a=UJHa6AjLlhM:LU49F3Ol9uY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jandiandme2?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jandiandme2/~4/UJHa6AjLlhM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.softwarearchitektur.de/?feed=rss2&amp;p=191</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ObjektSpektrum-Article on Agility &amp; Architecture</title>
		<link>http://martinlippert.blogspot.com/2009/06/objektspektrum-article-on-agility.html</link>
		<comments>http://martinlippert.blogspot.com/2009/06/objektspektrum-article-on-agility.html#comments</comments>
		<pubDate>Fri, 26 Jun 2009 20:28:00 +0000</pubDate>
		<dc:creator>Martin Lippert</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Entwicklungsprozeß]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-18490491.post-2334453386962290892</guid>
		<description><![CDATA[Together with my colleague Stefan Roock I wrote an article on building architectures in an agile way for the current issue of the German ObjektSpektrum magazine. The article is part of a controversy with Thomas Lieder about how to incrementally build a...]]></description>
			<content:encoded><![CDATA[Together with my colleague <a href="http://www.stefanroock.de/">Stefan Roock</a> I wrote an article on building architectures in an agile way for <a href="http://www.sigs-datacom.de/sd/publications/os/2009/04/index.htm">the current issue of the German ObjektSpektrum magazine</a>. The article is part of a controversy with Thomas Lieder about how to incrementally build architectures in agile projects.<br /><br />In the introductory part of the controversy we talk about the basics of agile methods and the goal of keeping a flat cost curve for features over a long period of time. To achieve this goal we need to change and refactor the software all the time. This is an integral part of agile software development. We learned that its not possible to foresee the future and therefore decided to design only the next steps - and refactor, if we learn over time and find better designs if new requirements appear. This is quite clear on the low-level of individual classes and nicely supported by test-driven development and refactoring tools.<br /><br />If we use the same argumentation for the architecture of a project, the discussions get a lot more controversy. People don't believe that it is easy to change and refactor the architecture of a system incrementally and flexible over time. We found this discussion often times quite unstructured and using the term architecture in various flavors and meanings. To ease the discussion about agile architectures we divide between the basic architectural style and the concrete architecture of a concrete system. Our opinion is that the basic architectural style is hard to change over time (for example changing a system from a standalone-rich-client application into a multi-user app-server-based system could be quite hard). In contrast to this we believe that changing the concrete architecture and structure of a system could be done incrementally and agile over time. This is obviously not true for every application. They need to be build from ground-up for flexibility and change. But how to build a system that is easier to change over time, even on the architectural level?<br /><br />From our point of view, there are three fundamental characteristics of design you need to remember every day to build flexible architectures: <span style="font-weight: bold;">understandable</span>, <span style="font-weight: bold;">loosely coupled</span> and <span style="font-weight: bold;">free of redundance</span>. There are many well-known design principles that helps you to build such systems. Keep them in mind, build loosely coupled components, think about good APIs between them - and you are on the right track to build flexible applications and flexible architectures.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18490491-2334453386962290892?l=martinlippert.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.softwarearchitektur.de/?feed=rss2&amp;p=214</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Incremental Design at SEACON 2009</title>
		<link>http://martinlippert.blogspot.com/2009/06/incremental-design-at-seacon-conference.html</link>
		<comments>http://martinlippert.blogspot.com/2009/06/incremental-design-at-seacon-conference.html#comments</comments>
		<pubDate>Fri, 26 Jun 2009 09:08:00 +0000</pubDate>
		<dc:creator>Martin Lippert</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Konferenz]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-18490491.post-8187625189843681488</guid>
		<description><![CDATA[A few days ago I gave a short talk on Incremental Design at SEACON 2009, a new buzzword-free conference in Hamburg, Germany. Aside of the fact that this was the first conference in my beautiful home town (and only 15min away from home), I enjoyed to me...]]></description>
			<content:encoded><![CDATA[A few days ago I gave a <a href="http://www.sigs-datacom.de/sd/kongresse/seacon_2009/session_details.htm?&amp;ID=43">short talk on Incremental Design</a> at <a href="http://www.sigs-datacom.de/sd/kongresse/seacon_2009/index.htm">SEACON 2009</a>, a new buzzword-free conference in Hamburg, Germany. Aside of the fact that this was the first conference in my beautiful home town (and only 15min away from home), I enjoyed to meet a lot of people there. I also made up a few slides for my talk, which you can now download as PDF (in German):<br /><ul><li><a href="http://www.martinlippert.org/events/SEACON-2009-Inkrementeller-Entwurf.pdf">Inkrementeller Entwurf (pdf)</a></li></ul>And last but not least I used my new presentation tool called <a href="http://www.session-five.com/">Session Five</a> for the first time. Was absolutely great!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18490491-8187625189843681488?l=martinlippert.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.softwarearchitektur.de/?feed=rss2&amp;p=215</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>REST: ein Architekturstil und kein weiteres Protokoll</title>
		<link>http://www.softwarearchitektur.de/?p=126</link>
		<comments>http://www.softwarearchitektur.de/?p=126#comments</comments>
		<pubDate>Tue, 09 Jun 2009 21:55:33 +0000</pubDate>
		<dc:creator>Wolfgang Strunk</dc:creator>
				<category><![CDATA[Architekturstil]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://www.softwarearchitektur.de/?p=126</guid>
		<description><![CDATA[Ich war schon immer ein Freund davon, nicht alles selbst zu erfinden, sondern den Austausch mit anderen zu suchen und Best Practices anzunehmen. Um so mehr war ich erfreut, in der IT-Szene München eine Vortragsankündigung der JBoss User Group München zum Thema &#8220;Java API for RestFul Web Services und RESTEasy&#8221; zu finden. REST wurde bei [...]]]></description>
			<content:encoded><![CDATA[<p>Ich war schon immer ein Freund davon, nicht alles selbst zu erfinden, sondern den Austausch mit anderen zu suchen und Best Practices anzunehmen. Um so mehr war ich erfreut, in der <a title="IT-Szene München" href="http://www.it-szene.de/">IT-Szene München</a> eine Vortragsankündigung der <a title="JBoss User Group München" href="http://www.jbug-munich.org/index.php/home" target="_blank">JBoss User Group München</a> zum Thema &#8220;Java API for RestFul Web Services und RESTEasy&#8221; zu finden. REST wurde bei uns schon länger als mögliche Schnittstelle für neue Clients diskutiert, ohne daß ich eine Ahnung gehabt hätte wie sich dieses &#8220;<em>Protokoll</em>&#8221; von den bisher verwendeten WebServices unterscheidet.</p>
<p>Die wichtigste Erkenntnis vorneweg: REST ist kein weiteres Protokoll, um Clients anzubinden sondern ein eigener Architekturstil, der zu einem anderen Anwendungsentwurf führt. Die Referenten <a title="Stefan Tilkov" href="http://www.innoq.com/blog/st/">Stefan Tilkov</a> und <a title="Serge Pagop" href="http://www.innoq.com/blog/sp/">Serge Pagop</a> präsentierten zunächst einmal die Konzepte von Rest, um dann anhand der Implementation von JBoss <a title="RESTeasy" href="http://www.jboss.org/resteasy/">RESTEasy</a> konkrete Implementierungsbeispiele zu geben. Der konzeptionelle Überblick war prägnant und unterhaltsam und hat mich überzeugt, diesen Architekturstil mindestens prototypisch einzusetzen. Die Beispielsession hätte meiner Meinung nach noch konkreter mit Edit-Compile-Run Zyklen durchgeführt werden sollen.</p>
<p>Bei einem WebService Modell werden die Objekte und ihre Zugriffsmethoden über WSDL/SOAP einem entfernten Klienten zur Verfügung gestellt. Es existieren Tools, um auf Basis der WSDL-Beschreibung clientseitige Stubs zu generieren und dann in der präferierten Programmiersprache auf die Ojekte im Server zuzugreifen. Es wird also das auf dem Server vorhandene Objektmodell mit den angebotenen spezifischen Operationen lokal im Client zugreifbar gemacht.</p>
<p>Ganz anders bei REST. REST wurde von Roy Fielding in seiner Doktorarbeit definiert. REST kann man im wesentlichen durch die folgenden 5 Merkmale beschreiben:</p>
<ol>
<li>Jedes &#8220;Ding&#8221; bzw. jede Ressource hat eine ID</li>
<li>Die Resourcen werden über Links verknüpft.<br />
Der Server stellt dem Klienten die Verknüpfungen zwischen verschiedenen Ressourcen als Links zur Verfügung. Auch Statusübergänge werden als Link repräsentiert.</li>
<li>Es gibt standardisierte Methoden für alle Ressourcen
<ul>
<li> Get</li>
<li>Put</li>
<li>Post</li>
<li>Delete (und einige wenige andere)</li>
</ul>
</li>
<li>Jede Ressource kann verschiedene Repräsentationen haben<br />
Es ist also möglich für verschieden Arten von Klienten unterschiedliche Repräsentationen nach außen zu geben: beispielsweise eine PDF-Repräsentation zum Drucken einer Rechnung und eine XML-Repräsentation zum Weiterleten der Teileliste an den Empfänger. Die benötigte Repräsentation wird zwischen Sender und Empfänger ausgehandelt. Selbst verschieden Versionen einer Ressource-Repräsentation können über diesen Mechanismus nach außen gegeben werden.</li>
<li>statuslose Kommunikation<br />
Eine Grundannahme ist, daß der Server keine Information über den Status des Klienten hält. Der Status eines Serverobjektes kann bzw. muß jederzeit wieder abgerufen werden können. Was der Klient jedoch damit macht, ob er eine URI bereits gelesen hat, ist Sache des Klienten und nicht des Servers. Es  gibt somit einen Ressourcenstatus, der im Server gespeichert wird, und einen Klientenstatus, den der Klient selbst speicher muß. Durch dieses Design kann der Server wesentlich besser skalieren.</li>
</ol>
<p>Durch dieses einfache Modell,das in der HTTP Spezifikation festgelegt ist, können einheitliche und jedem bekannte Mechanismen für den Zugriff genutzt werden.Außerdem sind auch Fehlermeldungen mit einer festen Bedeutung vordefiniert und es ist möglich, für HTTP vorgesehene Cache- und Load-Balancing Mechanismen auch für den Zugriff auf den eigenen Backend-Server einzusetzen. Nicht zuletzt erlaubt es REST, den KLienten in jeder beliebigen Programmiersprache zu erstellen, für die eine HTTP-Client Bibliothek zur Verfügung steht.</p>
<p>Die REST Schnittstellen werden über Annotationen an bestehende Java Beans hinzugefügt.Die Annotationen beschreiben im wesentlichen den Pfad (die URI) einer Ressource und wie die öffentlichen Methoden mit auf Methoden der Objekte im Server und auf die Parameter dieser Methoden abbgebildet werden. Es bietet sich an, die Annotationen nicht in dem POJO selbst hinzuzufügen, sondern eine Ressourcenfassade einzuführen.</p>
<p>Stefan Tilkov präsentierte noch einen Ausflug zum Thema &#8220;<em>asynchronous response handling</em>&#8220;um aufzuzeigen, wie man in REST länger laufende Operationen oder Transaktionen modelliert. Auch hier hilft der HTTP Standard weiter: es gibt eine spezifische Antwort &#8220;202 accepted&#8221; die in einem solchen Fall zurückgegeben werden sollte. Sie zeigt an, daß die Bearbetung nicht abgeschlossen ist.Eine vom Klienten angegebene &#8220;Return URL&#8221; könnte vom Server aufgerufen werden, um sein Ergebnis zu posten.</p>
<p>Die Entscheidung für REST ändert definitiv die Architektur von Klient und Server, da nicht einfach das vorhandene Objektmodell über ein weiteres Protokoll zur Verfügung gestellt wird.Die wesentlichen Vorteile von REST sind, daß der Server einfach über einen Browser getestet werden kann und daß es einfach aus dynamischen Sprachen wie Ruby, JavaScript oder Python  genutzt werden kann.</p>
<h3>Links</h3>
<ol>
<li>Fielding, Roy Thomas: <a title="Architectural Styles and the Design of Network-based Software Architectures" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">Architectural Styles and the Design of Network-based Software Architectures</a>. Doctoral dissertation, University of California, Irvine, 2000</li>
<li>Tilkov, Stefan:<a title="A Brief Introduction to REST" href="http://www.infoq.com/articles/rest-introduction">A Brief Introduction to REST</a> . Online publication, Dec 10, 2007</li>
<li><a title="RESTEasy @ JBoss" href="http://www.jboss.org/resteasy/" target="_blank">RESTEasy</a>, Online publication</li>
<li><a title="Jersey" href="https://jersey.dev.java.net/" target="_blank">Jersey</a>, Online publication</li>
<li><a href="http://www.ibm.com/developerworks/webservices/library/ws-version/" target="_blank">Best practices for Web services versioning</a>, Online publication<br />
Kyle Brown, Michael Ellis, IBM January 30, 2004</li>
<li><a title="The REST Statelessness Constraint" href="http://soundadvice.id.au/blog/" target="_blank">The REST Statelessness Constraint</a>, Online Publication, Sat, 2009-Jun-13</li>
</ol>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1199px; width: 1px; height: 1px;">
<h1>Best practices for Web services versioning</h1>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarearchitektur.de/?feed=rss2&amp;p=126</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
