<?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"
	>

<channel>
	<title>Bits and Bytes</title>
	<atom:link href="http://bits.goeckeler.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://bits.goeckeler.com</link>
	<description>Coding stuff that comes along ...</description>
	<pubDate>Fri, 12 Dec 2008 10:34:32 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>W-JAX: Was sind nicht-funktionale Anforderungen?</title>
		<link>http://bits.goeckeler.com/2008/11/18/w-jax-was-sind-nicht-funktionale-anforderungen/</link>
		<comments>http://bits.goeckeler.com/2008/11/18/w-jax-was-sind-nicht-funktionale-anforderungen/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 16:20:17 +0000</pubDate>
		<dc:creator>thorsten</dc:creator>
		
		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://bits.goeckeler.com/?p=15</guid>
		<description><![CDATA[Frei nach Arno Haase muss eine Architektur f&#252;r ein Software-System nicht nur die funktionalen Anforderungen erf&#252;llen, sondern nat&#252;rlich auch die nicht-funktionalen Anforderungen. Werden diese ignoriert, werden die implizierten Annahmen der Anwender oder des Managements unweigerlich zum Konflikt oder auch zum Abbruch des jeweiligen Projektes f&#252;hren.

Als kleine Checkliste hilft es, die folgenden Bereiche jeweils zu &#252;berpr&#252;fen. [...]]]></description>
			<content:encoded><![CDATA[<p>Frei nach Arno Haase muss eine Architektur f&#252;r ein Software-System nicht nur die funktionalen Anforderungen erf&#252;llen, sondern nat&#252;rlich auch die nicht-funktionalen Anforderungen. Werden diese ignoriert, werden die implizierten Annahmen der Anwender oder des Managements unweigerlich zum Konflikt oder auch zum Abbruch des jeweiligen Projektes f&#252;hren.</p>
<p><span id="more-15"></span></p>
<p>Als kleine Checkliste hilft es, die folgenden Bereiche jeweils zu &#252;berpr&#252;fen. Hierbei werden die <em>typischen </em>Bereiche abgeklopft, die nat&#252;rlich nicht immer in Betracht gezogen werden m&#252;ssen oder f&#252;r jedes Projekt anwendbar ist.</p>
<table border="0" cellpadding="5">
<tbody>
<tr>
<td>Performanz</td>
<td>Skalierbarkeit</td>
<td>Verf&#252;gbarkeit</td>
</tr>
<tr>
<td>Robustheit</td>
<td>&#196;nderbarkeit</td>
<td>Teilbarkeit</td>
</tr>
<tr>
<td>Sicherheit</td>
<td>Testbarkeit</td>
<td>Usability</td>
</tr>
<tr>
<td colspan="3">Betreibbarkeit</td>
</tr>
</tbody>
</table>
<p>&#196;nderbarkeit kann nat&#252;rlich auch als Wartbarkeit aufgef&#252;hrt werden, also die M&#246;glichkeit zur Ver&#228;nderung und Erweiterung.</p>
<p>Eine kommentierte Liste der Kriterien ist als <a href="http://bits.goeckeler.com/wp-content/uploads/2008/11/nfa.xls">Exel-Datei</a> angeh&#228;ngt.</p>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2008/11/18/w-jax-was-sind-nicht-funktionale-anforderungen/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W-JAX: Spring Desktop ersetzt Spring RCP</title>
		<link>http://bits.goeckeler.com/2008/11/05/w-jax-spring-desktop-ersetzt-spring-rcp/</link>
		<comments>http://bits.goeckeler.com/2008/11/05/w-jax-spring-desktop-ersetzt-spring-rcp/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 14:21:09 +0000</pubDate>
		<dc:creator>thorsten</dc:creator>
		
		<category><![CDATA[Spring]]></category>

		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://bits.goeckeler.com/?p=14</guid>
		<description><![CDATA[Still und heimlich ist die Spring Rich Client Platform von uns gegangen. Nachdem im letzten Jahr nicht wirklich ein Fortschritt erzielt wurde, und auch die Informationen mehr als sp&#228;rlich waren, wird in den n&#228;chsten Wochen und Monaten ein Neuanfang gewagt namens Spring Desktop.
Die v&#246;llig neue Codebasis wird eventuell auf SWT basiert sein, eine verl&#228;ssliche Aussage [...]]]></description>
			<content:encoded><![CDATA[<p>Still und heimlich ist die <em>Spring Rich Client Platform</em> von uns gegangen. Nachdem im letzten Jahr nicht wirklich ein Fortschritt erzielt wurde, und auch die Informationen mehr als sp&#228;rlich waren, wird in den n&#228;chsten Wochen und Monaten ein Neuanfang gewagt namens <em>Spring Desktop</em>.</p>
<p>Die v&#246;llig neue Codebasis wird eventuell auf SWT basiert sein, eine verl&#228;ssliche Aussage seitens <a title="SpringSource" href="http://www.springframework.org/" target="_blank">SpringSource</a> gibt es hierzu noch nicht.</p>
<p>Fraglich ist nat&#252;rlich, was der Vorteil gegen&#252;ber der Eclipse RCP oder dem Swing Application Framework ist, die beide schon jetzt verf&#252;gbar sind.</p>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2008/11/05/w-jax-spring-desktop-ersetzt-spring-rcp/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W-JAX: Fokus f&#252;r Spring 3.0</title>
		<link>http://bits.goeckeler.com/2008/11/05/w-jax-fokus-fuer-spring-30/</link>
		<comments>http://bits.goeckeler.com/2008/11/05/w-jax-fokus-fuer-spring-30/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 08:37:35 +0000</pubDate>
		<dc:creator>thorsten</dc:creator>
		
		<category><![CDATA[Spring]]></category>

		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://bits.goeckeler.com/?p=13</guid>
		<description><![CDATA[W&#228;hrend in Spring 2.5. der besondere Fokus bei der Unterst&#252;tzung von Annotations lag, liegt laut J&#252;rgen H&#246;ller in Spring 3.0 das Augenmerk auf den Themen

Codebasis auf Java 1.5, Unterst&#252;tzung f&#252;r Java 1.5+
Einf&#252;hrung einer Spring Expression Language
Unterst&#252;tzung f&#252;r REST
Validierung mittels Deklaration bzw. Annotation
Unterst&#252;tzung f&#252;r Portlet 2.0

Spring wird nat&#252;rlich nach wie vor f&#252;r Java 1.4.x einsetzbar sein. [...]]]></description>
			<content:encoded><![CDATA[<p>W&#228;hrend in Spring 2.5. der besondere Fokus bei der Unterst&#252;tzung von Annotations lag, liegt laut J&#252;rgen H&#246;ller in Spring 3.0 das Augenmerk auf den Themen</p>
<ol>
<li>Codebasis auf Java 1.5, Unterst&#252;tzung f&#252;r Java 1.5+</li>
<li>Einf&#252;hrung einer Spring Expression Language</li>
<li>Unterst&#252;tzung f&#252;r REST</li>
<li>Validierung mittels Deklaration bzw. Annotation</li>
<li>Unterst&#252;tzung f&#252;r Portlet 2.0</li>
</ol>
<p><span id="more-13"></span>Spring wird nat&#252;rlich nach wie vor f&#252;r Java 1.4.x einsetzbar sein. Um Spring zu bauen wird allerdings Java 1.5+ vorausgesetzt.</p>
<p>Zuk&#252;nftig wird es voraussichtlich nicht mehr ein <code>spring.jar</code> geben, sondern jedes Modul wird getrennt verf&#252;gbar sein, z.B. <code>spring-aop.jar</code>. Ferner werden die Abh&#228;ngigkeiten nicht mehr mitgeliefert, also <code>spring-with-dependencies.jar</code>. Diese enthielten sowieso nur die Bibliotheken, die zur Ausf&#252;hrung des Beispiels notwendig sind, teilweise fehlen also notwendige Bibliotheken.</p>
<p>In Spring 3.0 wird einiges an Code entfernt werden, zum Beispiel der klassische Support f&#252;r TopLink, da sich hier eher die Richtung in JPA bewegt. Einiger Code wird als veraltet markiert, wird aber trotzdem noch verf&#252;gbar sein, zum Beispiel die Unterst&#252;tzung f&#252;r JUnit 3.8, da hier auf JUnit 4.4 umgestellt wurde, sowie die fr&#252;hen Versionen des Spring MVC.</p>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2008/11/05/w-jax-fokus-fuer-spring-30/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W-JAX: Golden Rules for Better Architectures</title>
		<link>http://bits.goeckeler.com/2008/11/04/w-jax-golden-rules-for-better-architectures/</link>
		<comments>http://bits.goeckeler.com/2008/11/04/w-jax-golden-rules-for-better-architectures/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 17:40:24 +0000</pubDate>
		<dc:creator>thorsten</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://bits.goeckeler.com/?p=12</guid>
		<description><![CDATA[Taken from the presentation of Alexander von Zitzewitz.

Apply a consistent packing naming convention.
No cycles in your logical architecture, no cycles in your layers.
No cyclic dependencies between different packages.
Keep coupling low.
Limit lines of code per file, 700 lines should be the maximum value.
Limit cyclomatic complexity of methods, e.g. 15, at least less than 25.
Limit the size [...]]]></description>
			<content:encoded><![CDATA[<p><em>Taken from the presentation of Alexander von Zitzewitz.</em></p>
<ol>
<li>Apply a consistent packing naming convention.</li>
<li>No cycles in your logical architecture, no cycles in your layers.</li>
<li>No cyclic dependencies between different packages.</li>
<li>Keep coupling low.</li>
<li>Limit lines of code per file, 700 lines should be the maximum value.</li>
<li>Limit cyclomatic complexity of methods, e.g. 15, at least less than 25.</li>
<li>Limit the size of packages, e.g. less than 50 types.</li>
</ol>
<p><span id="more-12"></span><strong>Notes on the above</strong></p>
<p>Slice technical stuff horizontally, business stuff vertically. An easy pattern for example is &lt;id&gt;.&lt;project&gt;.&lt;module&gt;.&lt;implementation&gt;, e.g. de.xroot.travel.reservation.dao.hibernate.</p>
<p>Coupling can be measured with ACD (Sum of dependent files for each file). In this case less than 7% for 500 files is good, for 1,000 files it would be better to keep below 4%. Alternative use NCCD, then a factor less than 6 is acceptable.</p>
<p>Coupling can be reduced by using Dependency Inversion, i.e. program against interfaces, and Dependency Injection. Re-use will increase coupling, but that is very good, so a reduction to 1 - a file depends only on itself - is not desirable.</p>
<p>Cylces are evil per definition ;-). All cycles can be broken by using interfaces and eased by abstraction.</p>
<p><strong>Out of the wild</strong></p>
<p>Most projects that adhere to the above rules will be better than 80% of the existing projects. That doesn&#8217;t mean that those are not cool or not a success story. Spring does adhere to those rules, and it is thus easy to read. Hibernate on the other hand is &#8230; well, it is cool and pretty useful. Just don&#8217;t try to understand it.</p>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2008/11/04/w-jax-golden-rules-for-better-architectures/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W-JAX: W-JAX 2008</title>
		<link>http://bits.goeckeler.com/2008/11/04/w-jax-w-jax-2008/</link>
		<comments>http://bits.goeckeler.com/2008/11/04/w-jax-w-jax-2008/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 16:11:10 +0000</pubDate>
		<dc:creator>thorsten</dc:creator>
		
		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://bits.goeckeler.com/?p=11</guid>
		<description><![CDATA[Die W-JAX 2008 hat begonnen, und sie ist eindeutig gr&#246;&#223;er als alle bisherigen. Die S&#228;ale sind voll, teilweise zu voll, daf&#252;r h&#228;lt das Catering dieses Jahr mit, es gibt sogar Cola und Kaffee f&#252;r diejenigen mit wenig Schlaf. In den n&#228;chsten Tagen werden Marc Fischer und Thorsten G&#246;ckeler einige Eindr&#252;cke hier sammeln, nat&#252;rlich wieder rein [...]]]></description>
			<content:encoded><![CDATA[<p>Die W-JAX 2008 hat begonnen, und sie ist eindeutig gr&#246;&#223;er als alle bisherigen. Die S&#228;ale sind voll, teilweise zu voll, daf&#252;r h&#228;lt das Catering dieses Jahr mit, es gibt sogar Cola und Kaffee f&#252;r diejenigen mit wenig Schlaf. In den n&#228;chsten Tagen werden Marc Fischer und Thorsten G&#246;ckeler einige Eindr&#252;cke hier sammeln, nat&#252;rlich wieder rein subjektiv. In anderen Worten, wir geben die Vortr&#228;ge verdichtet mit unseren Worten wieder, dies muss nicht die Meinung des jeweilige Vortragenden gewesen sein.</p>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2008/11/04/w-jax-w-jax-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W-JAX: Secure Coding</title>
		<link>http://bits.goeckeler.com/2007/11/11/w-jax-secure-coding/</link>
		<comments>http://bits.goeckeler.com/2007/11/11/w-jax-secure-coding/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 21:55:05 +0000</pubDate>
		<dc:creator>Blog Administrator</dc:creator>
		
		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://goeckeler.com/bits/?p=9</guid>
		<description><![CDATA[Ma&#223;nahmen und Anregungen &#252;bernommen bzw. abgeleitet aus dem gleichnamigen Vortrag von Bruce Sams
Vermeide Random, verwende stattdessen SecureRandom
Random ist nicht wirklich zuf&#228;llig, wenn zwei aufeinanderfolgende Zufallszahlen bekannt sind, k&#246;nnen alle weiteren erraten werden. Dumm nur, wenn ein Hacker darauf spekulieren kann &#8230;
Vertraue keiner externen Quelle, insbesondere keinen Eingaben des Anwenders
Im einfachsten Fall sprechen wir von Texteingaben, [...]]]></description>
			<content:encoded><![CDATA[<p><em>Ma&#223;nahmen und Anregungen &#252;bernommen bzw. abgeleitet aus dem gleichnamigen Vortrag von Bruce Sams</em></p>
<p><span id="more-9"></span><strong>Vermeide <code>Random</code>, verwende stattdessen <code>SecureRandom</code></strong></p>
<p><code>Random</code> ist nicht wirklich zuf&#228;llig, wenn zwei aufeinanderfolgende Zufallszahlen bekannt sind, k&#246;nnen alle weiteren erraten werden. Dumm nur, wenn ein Hacker darauf spekulieren kann &#8230;</p>
<p><strong>Vertraue keiner externen Quelle, insbesondere keinen Eingaben des Anwenders</strong></p>
<p>Im einfachsten Fall sprechen wir von Texteingaben, es betrifft aber RSS-Feeds, Emails usw. Nach Analyse von (&#246;ffentlichen) Sicherheitsmeldungen konnte ein schlauer Mensch ca. 60% der Fehlfunktionen auf fehlende &#220;berpr&#252;fung der Eingabe klassifizieren - vielleicht mag ja jemand mal die Quelle nachreichen. Aus der Erfahrung von Bruce Sams heraus k&#246;nnen die meisten Sicherheitsprobleme in Webanwendungen dem Datenfluss zugeordnet werden, genauer der ungen&#252;genden Validierung von Eingaben und anderen externen Quellen. Das deckt sich mit meiner Erfahrung, dass die meisten Probleme in Webanwendungen durch &#8220;komische&#8221; Eingaben erzeugt werden.</p>
<p>L&#246;sung: Versuche m&#246;glichst nicht, die Daten im nachhinein zu validieren, sondern bestimme genau, was zul&#228;ssig ist, und was nicht. Was an der Oberfl&#228;che abgefangen werden kann, sollte da auch abgefangen werden. Vertraue der Oberfl&#228;che aber nicht bedingungslos, genau die kann in Webanwendungen manipuliert werden.</p>
<p><strong>&#220;berpr&#252;fe Deinen Code</strong></p>
<p>Die offensichtlichsten Probleme im Code lassen sich auch durch statische Analyse finden. Bevor also eine umfassende Datenflussanalyse durchgef&#252;hrt wird, oder zumindestens ganz wilde Eingabetests, lasse Tools wie <a href="http://findbugs.sourceforge.net" title="FindBugs Home Page" target="_blank">FindBugs </a>und <a href="http://clarkware.com/software/JDepend.html" title="JDepend Home Page" target="_blank">JDepend </a>auf den Code los. Ich selber mag z.B. auch <a href="http://checkstyle.sourceforge.net/" title="Checkstyle Home Page" target="_blank">Checkstyle </a>sehr gerne.</p>
<p>Erg&#228;nze dies durch JUnit-Tests, und zwar mit zuf&#228;lligen Eingaben, mit &#220;berpr&#252;fung der offensichtlichen Grenzbereiche (wie z.B. gar keine Eingabe und &#252;berlange Eingabe), sowie mit allen behobenen Fehlerf&#228;llen. Wichtig: Jeder behobene Fehler sollte wirklich in einem JUnit-Test landen, sonst kommt er irgendwann einmal wieder.</p>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2007/11/11/w-jax-secure-coding/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W-JAX: OSGi</title>
		<link>http://bits.goeckeler.com/2007/11/11/w-jax-osgi/</link>
		<comments>http://bits.goeckeler.com/2007/11/11/w-jax-osgi/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 21:17:02 +0000</pubDate>
		<dc:creator>Blog Administrator</dc:creator>
		
		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://goeckeler.com/bits/?p=8</guid>
		<description><![CDATA[Englische Zusammenfassung der Key-Note von Peter Kriens
Why OSGi (Open Services Gateway Initiative) ?

Wire components together, not only beans or such
Manage these components

What is OSGi?
In this case not the alliance but the specification and the API for a component framework - actually it is a SPI including the test cases. You can feel free and provide [...]]]></description>
			<content:encoded><![CDATA[<p><em>Englische Zusammenfassung der Key-Note von Peter Kriens</em></p>
<p><strong>Why <a href="http://de.wikipedia.org/wiki/OSGi" title="Erkl&#228;rung f&#252;r OSGi in der Wikipedia" target="_blank">OSGi </a>(Open Services Gateway Initiative)</strong><strong> ?</strong></p>
<ol>
<li>Wire <em><strong>components</strong></em> together, not only beans or such</li>
<li>Manage these components</li>
</ol>
<p><span id="more-8"></span><strong>What is OSGi?</strong></p>
<p>In this case not the alliance but the specification and the API for a component framework - actually it is a SPI including the test cases. You can feel free and provide your own implementation - the interfaces are all in Java. You might have heard of Equinox as the Eclipse implementation.</p>
<p><strong>What does it have in stock for you? </strong></p>
<ul>
<li>Register services (which are basically interfaces)</li>
<li>Bind implementations to a service</li>
<li>Find a service (or more precisely the bound implementation)</li>
<li>Listeners on service binding and unbinding</li>
</ul>
<p><strong>Component Life Cycle</strong></p>
<ol>
<li>install</li>
<li>start</li>
<li>stop</li>
<li>update</li>
<li>uninstall</li>
</ol>
<p>You can react on any life cycle update and do what you need to do, e.g. allocate a connection pool on install, free it on uninstall, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2007/11/11/w-jax-osgi/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W-JAX: Return of the Apple</title>
		<link>http://bits.goeckeler.com/2007/11/11/w-jax-return-of-the-apple/</link>
		<comments>http://bits.goeckeler.com/2007/11/11/w-jax-return-of-the-apple/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 16:32:35 +0000</pubDate>
		<dc:creator>Blog Administrator</dc:creator>
		
		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://goeckeler.com/bits/?p=7</guid>
		<description><![CDATA[Wenn etwas wirklich auff&#228;llig war an dieser W-JAX, au&#223;er des merklichen Zuwachses an Rednern und Teilnehmern, so doch die erh&#246;hte Pr&#228;senz von Apples. In der Vergangenheit war schon immer mal der eine oder andere Apple sowie der eine oder andere Linux-Rechner zu bestaunen gewesen, diesmal aber waren Apples &#252;berall.
Kaum ein Vortrag, wo kein Mac OS [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn etwas wirklich auff&#228;llig war an dieser W-JAX, au&#223;er des merklichen Zuwachses an Rednern und Teilnehmern, so doch die erh&#246;hte Pr&#228;senz von Apples. In der Vergangenheit war schon immer mal der eine oder andere Apple sowie der eine oder andere Linux-Rechner zu bestaunen gewesen, diesmal aber waren Apples &#252;berall.</p>
<p><span id="more-7"></span>Kaum ein Vortrag, wo kein Mac OS die Folien beisteuerte, das Verh&#228;ltnis war gef&#252;hlte 60% Apple und 40% Windows.</p>
<p>Interessant aber dass der Apple auch au&#223;erhalb der Vortragsnomaden seinen Siegeszug h&#228;lt, ob in der Lobby oder sonstwo. Nur die Aussteller hatten mehrheitlich auf Windows gesetzt. Nun ja, viele spannende Themen laufen halt auch auf der Kommandozeile ab, vor allen die Skriptsprachen wie Ruby On Rails, Groovy, etc. Und der Apple hat halt neben dem richtig sch&#246;nen und schnellen grafischen Desktop immer sofort ein Terminal parat.</p>
<p>&#220;brigens: Auf meinem Rechner l&#228;uft auf Kundenwunsch weiterhin Windows XP &#8230; man darf doch wohl noch tr&#228;umen.</p>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2007/11/11/w-jax-return-of-the-apple/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W-JAX: Domain Driven Design</title>
		<link>http://bits.goeckeler.com/2007/11/08/w-jax-domain-driven-design/</link>
		<comments>http://bits.goeckeler.com/2007/11/08/w-jax-domain-driven-design/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 13:17:24 +0000</pubDate>
		<dc:creator>Blog Administrator</dc:creator>
		
		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://goeckeler.com/bits/?p=6</guid>
		<description><![CDATA[Zusammenfassung des Vortrages von Arno Haase und Michael Pl&#246;d.
Domain Driven Design - Entwurf getrieben von den fachlichen Anforderungen
Warum?
Weil die Fachlichkeit i.d.R. die Aspekte sind, die am l&#228;ngesten stabil bleiben bzw. sich am wenigsten ver&#228;ndern um die sich letztendlich alles dreht.  Beispiel: Die Kontonummer eines Kunden hat immer Bestand, egal welche Anwendung darauf zur&#252;ckgreift. Aus [...]]]></description>
			<content:encoded><![CDATA[<p><em>Zusammenfassung des Vortrages von Arno Haase und Michael Pl&#246;d.</em></p>
<p>Domain Driven Design - Entwurf getrieben von den fachlichen Anforderungen</p>
<p><span id="more-6"></span><strong>Warum?</strong></p>
<p>Weil die Fachlichkeit i.d.R. die Aspekte sind, die am l&#228;ngesten stabil bleiben bzw. sich am wenigsten ver&#228;ndern um die sich letztendlich alles dreht.  Beispiel: Die Kontonummer eines Kunden hat immer Bestand, egal welche Anwendung darauf zur&#252;ckgreift. Aus Erfahrung wissen wir auch, dass Daten stabiler als Methoden sind, d.h. Artikel werden seit Jahren immer auf die gleiche Weise abgelegt, egal ob die Zugriffssoftware in COBOL oder Java erstellt wurde.</p>
<p><strong>Was sagen die Vortragenden?</strong></p>
<p>&#8220;Einige Dich auf eine Sprache!&#8221; - das ist das eigentliche Motto. <em>Domain</em> entspricht hierbei der Fachlichkeit bzw. dem Fachwissen, und zwar explizit nicht der technischen Sicht. Domain Driven hei&#223;t hierbei Orientierung am Anwender, also wird alles von der fachlichen Ebene getrieben, nicht von der technischen Umsetzung.</p>
<p>Die Modelle bzw. der Code sollte die Sprache der Fachanwender wiederspiegeln, damit die Anwender direkt mit den Entwicklern sprechen k&#246;nnen und ein gemeinsames Verst&#228;ndnis der Begriffe vorhanden ist, auch im Hinblick auf sp&#228;tere &#196;nderungen und Fluktuationen.</p>
<p>Orientiere Dich in der  technischen Umsetzung immer an der Unterst&#252;tzung der fachlichen Anforderungen, und Deine Codebasis wird stabiler und einfacher sein, sowohl in der Entwicklung als auch in der Wartung, selbst wenn die Anwendung skaliert.</p>
<p><strong>Tipps und Tricks</strong></p>
<ol>
<li>Mache die Domain Objects (Gesch&#228;ftsobjekte) als auch die Business Logic (Gesch&#228;ftslogik und -prozesse) explizit, b&#252;ndele sie und denke an die entsprechende Benennung! Factories, Composites, Strategies helfen hier.</li>
<li>Domain Driven Design ist eine notwendige Voraussetzung f&#252;r Model-Driven Software Development (MDSD), da sonst keine (stabile) formale Spezifikation m&#246;glich ist.</li>
<li>Domain Driven Design ist hilfreich f&#252;r Extreme Programming (XP), legt aber mehr Wert auf Dokumentation und kann auch in gro&#223;en Projekten von gro&#223;em Nutzen sein.</li>
<li>&#196;nderungen im Domain Model (sowie in der Domain) sind teuer, lohnen sich aber immer. Verschleppung ist noch teurer, und zwar exponential.</li>
<li>Partionierung der Domains ist ein gutes Mittel, insbesondere um die Kerndom&#228;ne herauszusch&#228;len und die logisch Dom&#228;nen zu trennen und damit beherrschbar zu machen.</li>
<li>In gro&#223;en Projekten muss die Kerndom&#228;ne identifiziert werden und kurz und pr&#228;gnant beschrieben werden, am besten in Form eines &#8220;Vision Statements&#8221;.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2007/11/08/w-jax-domain-driven-design/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W-JAX: Eindr&#252;cke und Kommentare</title>
		<link>http://bits.goeckeler.com/2007/11/07/w-jax-eindruecke-und-kommentare/</link>
		<comments>http://bits.goeckeler.com/2007/11/07/w-jax-eindruecke-und-kommentare/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 16:01:30 +0000</pubDate>
		<dc:creator>Blog Administrator</dc:creator>
		
		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://goeckeler.com/bits/?p=5</guid>
		<description><![CDATA[Die W-JAX 2007 in M&#252;nchen hat begonnen, und in den n&#228;chsten Tagen werden die beiden Teilnehmer unserer Firma Euch mit den Zusammenfassungen der Vortr&#228;ge und den Eindr&#252;cken bei Laune halten. Da wir so nebenbei entweder den Vortr&#228;gen lauschen oder dem Projektstess fr&#246;nen werden die Beitr&#228;ge h&#228;ppchenweise serviert.
Ach so: Alle Eindr&#252;cke und Zusammenfassungen sind h&#246;chst subjektiv [...]]]></description>
			<content:encoded><![CDATA[<p>Die W-JAX 2007 in M&#252;nchen hat begonnen, und in den n&#228;chsten Tagen werden die beiden Teilnehmer unserer Firma Euch mit den Zusammenfassungen der Vortr&#228;ge und den Eindr&#252;cken bei Laune halten. Da wir so nebenbei entweder den Vortr&#228;gen lauschen oder dem Projektstess fr&#246;nen werden die Beitr&#228;ge h&#228;ppchenweise serviert.</p>
<p>Ach so: Alle Eindr&#252;cke und Zusammenfassungen sind h&#246;chst subjektiv und nie ein Zitat &#8230; so haben die Herren und Damen es vorne garantiert nicht gesagt, so hat der Autor es verstanden und wollte es so verstehen.</p>
<p>Danke f&#252;r die Nachsicht!</p>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2007/11/07/w-jax-eindruecke-und-kommentare/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
