<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">
<channel>
    <title>Flominator's Kruschtelecke (Artikel mit Tag .net)</title>
    <link>http://flominator.ramselehof.de/</link>
    <description>für badische und unsym-badische</description>
    <dc:language>de</dc:language>
    <generator>Serendipity 1.4.1 - http://www.s9y.org/</generator>
    <pubDate>Mon, 06 Sep 2010 07:18:43 GMT</pubDate>

    <image>
        <url>http://flominator.ramselehof.de/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Flominator's Kruschtelecke - für badische und unsym-badische</title>
        <link>http://flominator.ramselehof.de/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>See#Party 2010: TypeMock Isolator, Mock-Framework für Brownfield und mehr</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/159-SeeParty-2010-TypeMock-Isolator,-Mock-Framework-fuer-Brownfield-und-mehr.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/159-SeeParty-2010-TypeMock-Isolator,-Mock-Framework-fuer-Brownfield-und-mehr.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=159</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=159</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Der zweite Redner, dem ich auf dem &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.seesharpparty.de&#039;);&quot;  href=&quot;http://www.seesharpparty.de&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;See#Party&lt;/a&gt; in Kreuzlingen &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/157-SeeParty-2010-ALT.NET-Was-noch-zu-beweisen-waere.html&quot;&gt;nach den Vorträgen von Golo Roden&lt;/a&gt;&lt;/span&gt; lauschen durfte, war &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.lieser-online.de/&#039;);&quot;  href=&quot;http://www.lieser-online.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Stefan Lieser&lt;/a&gt;. Von Stefan hatte ich in Ulm letztes Jahr bereits die Session &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/140-.NET-Open-Space-Sued-2009-in-Ulm-Clean-Code-Developer.html&quot;&gt;Clean Code Developer&lt;/a&gt;&lt;/span&gt; gehört. Dieses Mal befasste er sich mit CCD im Umfeld mit Software-Projekten, die bereits über eine breite Codebasis verfügen. Den Vortrag hatte er bereits auf der Konferenz dotnet Collogne 2010 gehalten, wo er auch &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.dotnet-cologne.de/Default.aspx?Page=Vortraege&amp;amp;amp;NS=&amp;amp;amp;AspxAutoDetectCookieSupport=1&#039;);&quot;  href=&quot;http://www.dotnet-cologne.de/Default.aspx?Page=Vortraege&amp;amp;NS=&amp;amp;AspxAutoDetectCookieSupport=1&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;zum Download&lt;/a&gt; bereit steht. Zudem schreibt er mit seinem Kollegen Ralf Westphal an einer &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.heise.de/developer/artikel/Clean-Code-Developer-in-Brownfield-Projekten-855114.html&#039;);&quot;  href=&quot;http://www.heise.de/developer/artikel/Clean-Code-Developer-in-Brownfield-Projekten-855114.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Artikelserie bei Heise&lt;/a&gt;, die sich ebenfalls mit dem Thema befasst.&lt;/p&gt;

&lt;p&gt;Laut Stefan sei das Ziel eines jeden Softwareprojektes, dasselbe Programmfeature jederzeit zum gleichen Preis einbauen zu können. Dies setzt Evolvierbarkeit voraus, einer der &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/clean-code-developer.de/wiki/CcdWertesystem&#039;);&quot;  href=&quot;http://clean-code-developer.de/wiki/CcdWertesystem&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Werte&lt;/a&gt; für Clean Code Developer.&lt;/p&gt;

&lt;p&gt;Der Erreichung dieses hehren Ziels stehen laut Stefan Ängste vor folgenden Dingen im Weg:&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Regressionsfehler: Was passiert alles, wenn ich diese Änderung vornehme?&lt;/li&gt;
    &lt;li&gt;manuelle Arbeiten: Welche Knöpfe muss ich drücken, um ein Release zu erzeugen?&lt;/li&gt;
    &lt;li&gt;Personalmangel: Wenn wir weiterhin auf dieser alten Technologie aufsetzen, kriegen wir irgendwann keine Entwickler mehr dafür!&lt;/li&gt;
    &lt;li&gt;Verlust von Quellcode: Liegt auf irgendeinem Rechner vielleicht noch eine wichtige Datei, die wir zum Bauen der Software benötigen?&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;Zur Bekämpfung dieser Ängste empfiehlt Stefan ein 6-Punkte-Programm:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;1. Versionskontrolle einführen&lt;/b&gt;&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;Source Safe steht aus gutem Grund nicht in den Folien - das ist kein Versionskontrollsystem&lt;/li&gt;
    &lt;li&gt;Subversion ist auch schon nicht mehr Stand der Technik, besser verteilte Lösung wie git oder mercurial nutzen&lt;/li&gt;
    &lt;li&gt;Anmerkung von mir: mit &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/svk.bestpractical.com/view/HomePage&#039;);&quot;  href=&quot;http://svk.bestpractical.com/view/HomePage&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;SVK&lt;/a&gt; kann man eventuell Subversion als verteiltes Versionskontrollsystem nutzen&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;2. Kontinuierliche Integration&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Wer den Build bricht, muss eine Woche das T-Shirt mit der Aufschrift &amp;quot;I broke the build&amp;quot; tragen. Das T-Shirt wird nur einmal im Jahr gewaschen &lt;img src=&quot;http://flominator.ramselehof.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt; 3. automatisierte Tests&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;&amp;quot;Wilde&amp;quot; Abhängigkeiten&lt;/li&gt;
    &lt;li&gt;fehlende &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/127-.NET-Open-Space-Sued-2009-in-Ulm-Inversion-of-ControlDependency-Injection.html&quot;&gt;Dependency Injection&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;Verletzung des &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.objectmentor.com/resources/articles/srp.pdf&#039;);&quot;  href=&quot;http://www.objectmentor.com/resources/articles/srp.pdf&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Single Responsibility Principle&lt;/a&gt; (erkennbar an Klassennamen mit den Worten &amp;quot;Class&amp;quot;, &amp;quot;Manager&amp;quot;, &amp;quot;Service&amp;quot;, &amp;quot;Core&amp;quot; und beliebigen Konjunktionen)&lt;/li&gt;
    &lt;li&gt;fehlende Trennung von Portal/Logik/Adapter&lt;/li&gt;
    &lt;li&gt;externe Abhängigkeiten zu Datenbanken, Webservices etc.&lt;/li&gt;
    &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/site.typemock.com/typemock-isolator-product/&#039;);&quot;  href=&quot;http://site.typemock.com/typemock-isolator-product/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;TypeMock Isolator&lt;/a&gt; nutzt die &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.blong.com/Conferences/DCon2003/Internals/Profiling.htm&#039;);&quot;  href=&quot;http://www.blong.com/Conferences/DCon2003/Internals/Profiling.htm&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Profiling API&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;damit: Konstruktoren und statische Methodenaufrufe abfangen und durch Attrappen ersetzen&lt;/li&gt;
    &lt;li&gt;damit: sealed und internal-Methoden aus dem .NET-Framework ersetzen (DateTime.Now und .Today faken, Konstruktor von EventArgs aufrufen)&lt;/li&gt;
    &lt;li&gt;&amp;quot;private&amp;quot; Methoden zu testen: &amp;quot;internal&amp;quot; machen und über InternalsVisibleTo(&amp;quot;TestKlassenAssembly&amp;quot;) Zugriff erlauben&lt;/li&gt;
    &lt;li&gt;Variablen die intern instanziert werden, kann man über einen zweiten Konstruktor ebenfalls durch Attrappe ersetzen&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;4.  Partitionen identifizieren&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Aufteilen der Anwendung in mehrere Benutzeroberflächen&lt;/li&gt;
    &lt;li&gt;einen Teil isolieren und diesen sanieren &lt;/li&gt;
    &lt;li&gt;Teil anhand strategischer Gesichtspunkte bestimmen &lt;/li&gt;
    &lt;li&gt;Strategie kontinuierlich anpassen: Kerngeschäft, häufige Supportfälle&lt;/li&gt;
    &lt;li&gt;ggf. sogar Datenbank aufteilen&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;5.  Architektur planen&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;wie man es heute machen würde, wenn man es &amp;quot;richtig&amp;quot; machen würde&lt;/li&gt;
    &lt;li&gt;Ziel finden, auf das man hinarbeiten kann&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;6. &amp;quot;Refactoring to architecture&amp;quot;&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;auf die Planarchitektur hinarbeiten&lt;/li&gt;
    &lt;li&gt;Unit-Tests ergänzen&lt;/li&gt;
    &lt;li&gt;Veränderungen iterativ angehen&lt;/li&gt;
    &lt;li&gt;&amp;quot;großer Wurf&amp;quot; nicht möglich: Entwickler können häufig auf Anhieb nicht einmal genau beschreiben, was der Code tut&lt;/li&gt;
    &lt;li&gt;für eine 100% Ablösung mit einer neu geschriebenen Version müsste man auch sämtliche Schwachstellen und Fehler in den Schnittstellen nachbauen&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;Im Laufe seines Vortrags erklärte Stefan noch einen Weg, sich in langen Methoden beim Refactoring zurechtzufinden: Man färbt im Visual Studio die Kommentare weiß ein, damit sie sich nicht mehr vom Hintergrund abheben. Nun erkennt man häufig Codeblöcke, aus denen sich Methoden extrahieren lassen. Die Kommentare darüber sind meist schon als Methodennamen ausreichend.&lt;/p&gt;

&lt;p&gt;Fazit: TypeMock Isolator scheint genau das richtige Werkzeug für diesen Zweck zu sein. Nun muss ich nur noch meinen Vorgesetzten davon überzeugen, denn TypeMock ist &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.typemock.com/BuyBundle.php&#039;);&quot;  href=&quot;http://www.typemock.com/BuyBundle.php&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;doch ein wenig kostspielig&lt;/a&gt;. Es bleibt spannend &lt;img src=&quot;http://flominator.ramselehof.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Update 2010-09-06: Vorgesetzter schlug vor, sich einmal &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/research.microsoft.com/en-us/projects/moles/&#039;);&quot;  href=&quot;http://research.microsoft.com/en-us/projects/moles/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Moles von Microsoft&lt;/a&gt; anzuschauen. Hat jemand Erfahrungen damit?&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Thu, 02 Sep 2010 08:06:18 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/159-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>bodensee</category>
<category>kreuzlingen</category>
<category>mocking</category>
<category>ssp2010</category>
<category>testen</category>

</item>
<item>
    <title>See#Party 2010: ALT.NET / Was noch zu beweisen wäre</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/157-SeeParty-2010-ALT.NET-Was-noch-zu-beweisen-waere.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/157-SeeParty-2010-ALT.NET-Was-noch-zu-beweisen-waere.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=157</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=157</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Am Samstag besuchte ich die erste &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.seesharpparty.de/&#039;);&quot;  href=&quot;http://www.seesharpparty.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;See#Party&lt;/a&gt; im schweizerischen Kreuzlingen, direkt hinter Kostanz am Bodensee. Die Konferenz drehte sich um das Thema C#, das den Großteil meiner beruflichen Tätigkeit beherrscht. In den folgenden Beiträgen werde ich nun die dort besuchten Vorträge kurz zusammenfassen:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Keynote von Golo Roden: ALT.NET&lt;/b&gt;&lt;br /&gt;
&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.goloroden.de/&#039;);&quot;  href=&quot;http://www.goloroden.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Golo Rodens&lt;/a&gt; Vortrag drehte sich um einen Punkt aus dem &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.joelonsoftware.com/articles/fog0000000043.html&#039;);&quot;  href=&quot;http://www.joelonsoftware.com/articles/fog0000000043.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Joel-Test zur Bestimmung der Qualität eines Software-Teams&lt;/a&gt;, der da lautet: &amp;quot;Do you use the best tools money can buy?&amp;quot; Seine Schlussfolgerung war, dass sich ein guter .net-Entwickler nicht nur auf Microsoft konzentrieren darf, sondern nach Alternativen Ausschau halten soll. In diesem Zusammenhang stellte er die ALT.NET-Bewegung vor, deren zentrale Anlaufstelle die &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.altnetpedia.com/&#039;);&quot;  href=&quot;http://www.altnetpedia.com/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;altnetpedia&lt;/a&gt; bietet.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Was noch zu beweisen wäre&lt;/b&gt;&lt;br /&gt;
Die erste Session, die ich besuchte, wurde ebenfalls von Golo gehalten und drehte sich um mathematische Probleme und ihre Lösbarkeit. Neben theoretischen Grundlagen der &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Komplexit%C3%A4tstheorie&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Komplexit%C3%A4tstheorie&quot;&gt;Komplexitätstheorie&lt;/a&gt;, die mich stellenweise ein wenig überforderten, präsentierte er einige spannende Probleme, darunter: &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Gro%C3%9Fer_fermatscher_Satz&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Gro%C3%9Fer_fermatscher_Satz&quot;&gt;Fermats letzter Satz&lt;/a&gt;, das &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Halteproblem&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Halteproblem&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Halteproblem&lt;/a&gt;, das &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Rucksackproblem&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Rucksackproblem&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Rucksackproblem&lt;/a&gt; und - mein Highlight - &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Globales_Matching#Stable_Marriage&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Globales_Matching#Stable_Marriage&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Stable Marriage&lt;/a&gt; mit drei Geschlechtern. Sein Fazit: Wenn man keinen effizienteren Algorithmus zu einem Problem finden kann, gibt es vielleicht gar keinen und man ist gar nicht unfähig &lt;img src=&quot;http://flominator.ramselehof.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; Bereits vor der Veranstaltung hatte Golo bereits über ein Buch &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.des-eisbaeren-blog.de/post/2009/08/18/Review-von-Computers-and-Intractability.aspx&#039;);&quot;  href=&quot;http://www.des-eisbaeren-blog.de/post/2009/08/18/Review-von-Computers-and-Intractability.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;gebloggt&lt;/a&gt;, in dem ausführlicher auf diese Thematik eingegangen wird.&lt;/p&gt;

&lt;p&gt;Leider konnte ich Golos Folien bisher nirgends online finden, werde sie aber ggf. nachliefern.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Mon, 30 Aug 2010 14:15:56 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/157-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>bodensee</category>
<category>kreuzlingen</category>
<category>ssp2010</category>
<category>wiki</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Visual Studio Team System 2010</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/141-.NET-Open-Space-Sued-2009-in-Ulm-Visual-Studio-Team-System-2010.html</link>
            <category>Software</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/141-.NET-Open-Space-Sued-2009-in-Ulm-Visual-Studio-Team-System-2010.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=141</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=141</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Nach der Session &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/140-.NET-Open-Space-Sued-2009-in-Ulm-Clean-Code-Developer.html&quot;&gt;Clean Code Developer&lt;/a&gt;&lt;/span&gt; und einem weiteren leckeren Mittagessen, folgte die letzte Session, die ich noch besuchen konnte: &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/blogs.msdn.com/cbinder/default.aspx&#039;);&quot;  href=&quot;http://blogs.msdn.com/cbinder/default.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Christian Binder&lt;/a&gt; informierte darin über Neuheiten zur kommenden Version der Entwicklungsumgebung aus dem Hause Microsoft. Da wir im Unternehmen &amp;quot;nur&amp;quot; Visual Studio und kein Team System einsetzen, war es für mich stellenweise ein wenig schwer, den Ausführungen zu folgen. Hier sind die Punkte, die ich (zumindest ansatzweise) verstanden habe und die mir notierenswert erschienen:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;UI-Automation-Testing (Coded UI-Test/ Test Edition) &lt;ul&gt;
        &lt;li&gt;Elemente aus UI greifen und automatisieren&lt;/li&gt;
        &lt;li&gt;unterstützt werden sollen Win32, WinForms, WPF und Document Object Model von Internet Explorer und Firefox&lt;/li&gt;
        &lt;li&gt;später auch Silverlight (Community Technology Preview nach RTM von  VSTS 2010)&lt;/li&gt;
        &lt;li&gt;nutzt  Accessabillty-Frameworks wie &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/en.wikipedia.org/wiki/Microsoft_UI_Automation&#039;);&quot;  href=&quot;http://en.wikipedia.org/wiki/Microsoft_UI_Automation&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;UIA&lt;/a&gt; von Anwendungen zur Barrierefreiheit (Screen Reader etc.)&lt;/li&gt;
        &lt;li&gt;Controls von Drittanbietern müssen gewisse Schnittstellen implementieren, damit auch sie erfasst werden&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Tools für manuelles Testen&lt;ul&gt;
        &lt;li&gt;Anlegen eines Work-Items &amp;quot;Testcase&amp;quot;, das an Requirement/UserStory hängt&lt;/li&gt;
        &lt;li&gt;spezielle UI für Tester, die keine Entwickler sind (Manual Test Runner/Test Edition oder Test Essentials) &lt;/li&gt;
        &lt;li&gt;Tester klickt durch und nimmt dies ggf. per Rekorder auf&lt;/li&gt;
        &lt;li&gt;Screenshots und Videoaufzeichnung des manuellen Tests möglich &lt;/li&gt;
        &lt;li&gt;Bugs können direkt aus dem Manual Test Runner erzeugt werden &lt;/li&gt;
        &lt;li&gt;Integration mit Team Test Lab &lt;/li&gt;
        &lt;li&gt;Umwandlung in einen kodierten Test (C#) möglich&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Team Test Lab&lt;ul&gt;
        &lt;li&gt;Environment (derzeit als &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Hyper-V&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Hyper-V&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Hyper-V&lt;/a&gt; evtl. später auch als virtuelle Maschine per vmWare-Schnittstelle) aus Buildprozess heraus erzeugen und Build nach dort deployen&lt;/li&gt;
        &lt;li&gt;Verbindung mit Requirements&lt;/li&gt;
        &lt;li&gt;kann in Verbindung mit dem Manual Test Runner verwendet werden, um Tests gegen diese Test Environments auszuführen&lt;/li&gt;
        &lt;li&gt;Screenshot bei Verletzung eines Requirements&lt;/li&gt;
        &lt;li&gt;ggf. Erzeugung eines neuen Bugs mit der virtuellen Umgebung im Anhang (sehr schnelle Reproduktion möglich)&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Test Impact Collector&lt;ul&gt;
        &lt;li&gt;feststellen, welche Tests überhaupt von einer Änderung betroffen sind und durchlaufen werden sollten&lt;/li&gt;
        &lt;li&gt;Unit-Tests und manuelle Tests&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Oberfläche der neuen IDE ist komplett in WPF geschrieben&lt;ul&gt;
        &lt;li&gt;bei Microsoft intern von über 3000 Anwenden &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/blogs.msdn.com/bharry/archive/2009/07/13/july-09-devdiv-dogfood-statistics.aspx&#039;);&quot;  href=&quot;http://blogs.msdn.com/bharry/archive/2009/07/13/july-09-devdiv-dogfood-statistics.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;genutzt&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;durch Extensibility API stark auf Erweiterbarkeit ausgelegt&lt;/li&gt;
    &lt;li&gt;UML/DSL-Designer in Architect Edition (Arc Edition)&lt;ul&gt;
        &lt;li&gt;Kommunikationslinien zwischen den einzelnen Architekturschichten können mit Code verglichen werden -&amp;gt; unzulässige Kommunikationen im Code finden (oder auch zwischen Namespaces)&lt;/li&gt;
        &lt;li&gt;keine veralteten Architektur-Flipcharts mehr&lt;/li&gt;
        &lt;li&gt;erlaubt Reverse Engineering: Methodenaufrufe -&amp;gt; Sequenzdiagramm&lt;/li&gt;
        &lt;li&gt;Analyse von Codeabhängigkeiten&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Profiler (Developer Edition) &lt;ul&gt;
        &lt;li&gt;besonders hilfreich bei Threading-Problemen &lt;/li&gt;
        &lt;li&gt;während der Entwicklung von Windows 7 genutzt, um Performace-Probleme zu lösen&lt;/li&gt;
        &lt;li&gt;Hotpath zeigt an, wo meiste Rechenzeit liegen gelassen wird&lt;/li&gt;
        &lt;li&gt;Testcase-Profiler kann Auswirkungen von Änderungen auf die Rechenzeit zeigen&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;komfortableres Reporting, daher können Entscheider sich zukünftig selbst ihre Zahlen ziehen und entlasten damit die Entwickler&lt;/li&gt;
    &lt;li&gt;langsame Anwendungen können bald nicht mehr durch neue Rechner beschleunigt werden, wenn sie Single-Threaded arbeiten und nur wenige der Multiprozessoren dadurch belastet sind&lt;/li&gt;
    &lt;li&gt;Verfolgen von Veränderungen in (Changesets) in Branches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fazit: Es scheint ein sehr umfangreiches Entwicklungssystem zu werden, das den Entwickler und alle restlichen Beteiligten eines Softwareprojektes in großem Maße unterstützen wird. Da solche Qualität ihren Preis hat, bleibt jedoch fraglich, welche Unternehmen sich das leisten können, leisten wollen und leisten werden ...&lt;/p&gt;

&lt;p&gt;Update: Dank geht an Christian Binder für das Feedback. Bitte schaut euch seine &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/blogs.msdn.com/cbinder/archive/2009/08/10/vsts-2010-beta-quickhits-video-index.aspx&#039;);&quot;  href=&quot;http://blogs.msdn.com/cbinder/archive/2009/08/10/vsts-2010-beta-quickhits-video-index.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;kurzen Videos zur Beta 1&lt;/a&gt; an.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Tue, 21 Jul 2009 13:19:24 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/141-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>barcamp</category>
<category>microsoft</category>
<category>nos_sued</category>
<category>ulm</category>
<category>visualstudio</category>
<category>vsts2010</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Clean Code Developer</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/140-.NET-Open-Space-Sued-2009-in-Ulm-Clean-Code-Developer.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/140-.NET-Open-Space-Sued-2009-in-Ulm-Clean-Code-Developer.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=140</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=140</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Die vorletzte Session auf dem Open Space, die ich nach &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/132-.NET-Open-Space-Sued-2009-in-Ulm-TestenGetting-Things-Done.html&quot;&gt;Testen/Getting Things Done&lt;/a&gt;&lt;/span&gt; besucht habe, drehte sich um das Programm &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.clean-code-developer.de/&#039;);&quot;  href=&quot;http://www.clean-code-developer.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Clean Code Developer&lt;/a&gt; von &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.ralfw.de/&#039;);&quot;  href=&quot;http://www.ralfw.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Ralf Westphal&lt;/a&gt; und &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/lieser-online.de/&#039;);&quot;  href=&quot;http://lieser-online.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Stefan Lieser&lt;/a&gt;. Letzterer war höchstpersönlich anwesend, um uns in die Geschichte und die Details von CCD einzuweisen:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;guter Entwickler erzeugt Qualität -&amp;gt; hält seine Werte ein&lt;/li&gt;
    &lt;li&gt;Analogie dazu: (Guter) Arzt wäscht sich vor Operation die Hände und lässt sich das nie nie nie ausreden&lt;/li&gt;
    &lt;li&gt;Werte für Codequalität&lt;ul&gt;
        &lt;li&gt;Korrektheit (funktional, optisch, leistungsfähig, ..)&lt;/li&gt;
        &lt;li&gt;Evolvierbarkeit (Einbau desselben Features kostet zu jedem Zeitpunkt gleich viel)&lt;/li&gt;
        &lt;li&gt;Produktionseffizienz&lt;/li&gt;
        &lt;li&gt;Reflexion&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Ergebnis: 40 Bausteine zum Erreichen von mehr Codequalität&lt;/li&gt;
    &lt;li&gt;Aufteilung in fünf &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.clean-code-developer.de/wiki/CcdGrade&#039;);&quot;  href=&quot;http://www.clean-code-developer.de/wiki/CcdGrade&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Grade&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;zur Festigung wird jeder Grad mindestens 21 Tage gehalten&lt;/li&gt;
    &lt;li&gt;am Ende wird wieder von vorn begonnen, da man immer noch besser werden kann&lt;/li&gt;
    &lt;li&gt;Dokumentation des aktuellen Grades über ein &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.clean-code-developer.de/wiki/CcdArmband&#039;);&quot;  href=&quot;http://www.clean-code-developer.de/wiki/CcdArmband&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Armband&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Armband bringt Leute ins Gespräch und hilft, die Idee zu verbreiten&lt;/li&gt;
    &lt;li&gt;nicht alle Entwickler interessieren sich für sauberen Code&lt;/li&gt;
    &lt;li&gt;häufig ist keine Zeit zur Einarbeitung vorhanden. &lt;/li&gt;
    &lt;li&gt;Ist das Erlernen neuer Fertigkeiten zu Erhaltung der Arbeitskraft in der täglichen Arbeitszeit erhalten oder muss man dafür in der Freizeit investieren? Es hängt vom Lohn ab&lt;/li&gt;
    &lt;li&gt;These: es dauert nicht länger, Clean Code zu schreiben, als Crappy Code (zumindest langfristig gesehen)&lt;/li&gt;
    &lt;li&gt;Python und Ruby on Rails liefern bereits beim Anlegen eines neuen Projektes ein Verzeichnis für Unit-Tests, warum nicht auch Visual Studio?&lt;/li&gt;
    &lt;li&gt;Grenze zwischen PHP (unsauberes Skripting, bä bä bä) und Java (ganz toll objektorientiert mit Unit-Tests und so) ist deutlich. Bei C# sind die ganzen VB-Pfuscher durch .NET auch im Boot.&lt;/li&gt;
    &lt;li&gt;Microsoft vermarktet häufig nur Tools, die dem Benutzer mit viel Klickibunti das Leben erleichtern. Codequalität scheint ein wenig vernachlässigt zu werden.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fazit: Bei uns im Büro erfuhr ich bereits Ende letzten Jahres von dieser Initiative. Ich hatte sie mir auch bereits auf &amp;quot;vielleicht/irgendwann&amp;quot; notiert, aber bisher noch keinen konkreten Einstiegspunkt für mich gefunden. Nun scheint es mir, dass man auch ohne den Kauf des Buches aktiv loslegen kann. Vermutlich werde ich daher in den nächsten Wochen die &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.clean-code-developer.de/wiki/CcdRoterGrad&#039;);&quot;  href=&quot;http://www.clean-code-developer.de/wiki/CcdRoterGrad&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Seite zum roten Grad&lt;/a&gt; in Angriff nehmen ...&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Mon, 20 Jul 2009 13:11:05 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/140-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>barcamp</category>
<category>nos_sued</category>
<category>ulm</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Testen/Getting Things Done</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/132-.NET-Open-Space-Sued-2009-in-Ulm-TestenGetting-Things-Done.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/132-.NET-Open-Space-Sued-2009-in-Ulm-TestenGetting-Things-Done.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=132</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=132</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;Testing&lt;/b&gt;&lt;br /&gt;
Die erste Session am Sonntag hatte mit &amp;quot;Testen&amp;quot; ein etwas zu umfangreiches Themengebiet. Daher ging die Diskussion nicht ganz in die Richtung, die ich mir gewünscht hätte. Trotzdem gab es ein paar erwähnenswerte Infos:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;UI-Tests lohnen sich vermutlich nur für Standardarbeitsschritte, sonst zu hohes Preis-Leistungs-Verhältnis&lt;/li&gt;
    &lt;li&gt;Webtests sind meist trivial und finden keine richtigen Fehler&lt;/li&gt;
    &lt;li&gt;Visual Studio (in welcher Edition?) erlaubt Klickreihenfolge im Browser abzuspielen und als Lasttest mehrfach auszuführen&lt;/li&gt;
    &lt;li&gt;Lasttests bei ERP-Systemen heißt, einmal die Weihnachtszeit nachzuspielen&lt;/li&gt;
    &lt;li&gt;Tester stumpfen bei häufiger Wiederholung ab und sehen Fehler nicht mehr =&amp;gt; Vorteil von UI-Tests&lt;/li&gt;
    &lt;li&gt;bestes Preis-Leistungsverhältnis haben Unit-Tests für Rechenfunktionen&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Getting Things Done&lt;/b&gt;&lt;br /&gt;
Nachdem mich das klingelnde Handy aus dem Raum geholt hatte, entdeckte ich eine kleine, aber eine Diskussionssrunde zum Thema &lt;em&gt;Getting Things Done&lt;/em&gt;. Obwohl es nicht direkt um &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/75-Getting-Things-Done.html&quot;&gt;das Buch&lt;/a&gt;&lt;/span&gt; ging, gab es auch dort ein paar Anregungen:&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;alle Mails nach dem Urlaub löschen -&amp;gt; wer etwas will, der kommt schon wieder&lt;/li&gt;
    &lt;li&gt;(wirklich) dringende Sachen sollten per Telefon geschehen, dort ist auch Rausreißen aus der aktuellen Tätigkeit legitim&lt;/li&gt;
    &lt;li&gt;Was ist schon wirklich dringend?&lt;/li&gt;
    &lt;li&gt;Abteilungsleiter veröffentlicht seinen Wochenplan, damit seine Untergebenen sehen, was er die Woche über tut&lt;/li&gt;
    &lt;li&gt;Corporate-Mikroblogging wie &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/114-Barcamp-Stuttart-Corporate-Twitter-Yammer.html&quot;&gt;Yammer&lt;/a&gt;&lt;/span&gt; kann ebenfalls dabei helfen, zu sehen, was die Leute um einen herum so tun&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Fri, 17 Jul 2009 13:31:10 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/132-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>barcamp</category>
<category>gtd</category>
<category>nos_sued</category>
<category>testen</category>
<category>ulm</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Mocking/Interfaces</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/130-.NET-Open-Space-Sued-2009-in-Ulm-MockingInterfaces.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/130-.NET-Open-Space-Sued-2009-in-Ulm-MockingInterfaces.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=130</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=130</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Nachdem zu &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/127-.NET-Open-Space-Sued-2009-in-Ulm-Inversion-of-ControlDependency-Injection.html&quot;&gt;Inversion of Control und Dependency Injection&lt;/a&gt;&lt;/span&gt; auf dem Open Space in Ulm keine Fragen mehr kamen, handelten wir spontan noch zwei andere Themen ab:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Mocking&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;&amp;quot;normale&amp;quot; Frameworks wie z.B. &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/ayende.com/projects/rhino-mocks.aspx&#039;);&quot;  href=&quot;http://ayende.com/projects/rhino-mocks.aspx&quot; onclick=&quot;window.open(this.href, &#039;&lt;u&gt;blank&#039;); return false;&quot;&gt;Rhino Mocks&lt;/a&gt; nutzen &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Stellvertreter&amp;lt;/u&amp;gt;(Entwurfsmuster)&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Stellvertreter&lt;/u&gt;(Entwurfsmuster)&quot;&gt;Proxy-Mechanismus&lt;/a&gt;mit Vererbung&lt;/li&gt;
    &lt;li&gt;Problem: statische Klassen sind nicht mockbar&lt;/li&gt;
    &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.typemock.com/&#039;);&quot;  href=&quot;http://www.typemock.com/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Typemock&lt;/a&gt; erlaubt Nutzung der Profiler-API; dadurch auch Mocking statischer Objekt möglich (Date.Now trotzdem nicht)&lt;/li&gt;
    &lt;li&gt;Frameworks mit Automock-Funktionalität ermöglichen es, dynamisch zu mocken, was gerade benötigt wird&lt;/li&gt;
    &lt;li&gt;RhinoMocks nutze früher Record-Replay-Modus, heutiges Prinzip ist Arrange-Act-Assert&lt;/li&gt;
    &lt;li&gt;siehe auch: &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/der-albert.com/archive/0001/01/01/einfacheres-mocken-von-eigenschaften-eines-objektes.aspx&#039;);&quot;  href=&quot;http://der-albert.com/archive/0001/01/01/einfacheres-mocken-von-eigenschaften-eines-objektes.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Einfacheres Mocken von Eigenschaften eines Objektes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Interfaces&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Interfaces verhindern, dass man &amp;quot;virtual&amp;quot; vergisst&lt;/li&gt;
    &lt;li&gt;abstrakte Basisklassen können bereits Funktionalitäten implementieren&lt;/li&gt;
    &lt;li&gt;Methoden abstrakter Basisklassen können ggf. überschrieben werden, MÜSSEN sie aber nicht&lt;/li&gt;
    &lt;li&gt;Interfaces erfordern bei Erweiterung neue Methoden in allen von ihnen abgeleiteten Klassen&lt;/li&gt;
    &lt;li&gt;Methoden von Interfaces müssen nicht implementiert werden, &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/der-albert.com/archive/0001/01/01/interfaces-muessen-nicht-implementiert-werden.aspx&#039;);&quot;  href=&quot;http://der-albert.com/archive/0001/01/01/interfaces-muessen-nicht-implementiert-werden.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;wenn die Basisklassen sie bereits implementieren&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Kommentare zu Methoden des Interfaces sollten per Konvetion dort im Interface geschrieben werden, nicht in der Implementierung&lt;/li&gt;
    &lt;li&gt;alternativ können mit &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/submain.com/products/ghostdoc.aspx&#039;);&quot;  href=&quot;http://submain.com/products/ghostdoc.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;ghostdoc&lt;/a&gt; Kommentare von beerbten Objekten kopiert werden&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Fazit&lt;/b&gt;&lt;br /&gt;
Mein Highlight der zweiten Hälfte der Session waren das Beispiel für das neue Arrange-Act-Assert-Schema bei RhinoMocks sowie der Verweis auf ghostdoc. Dieses Tool kann ich nur wärmstens empfehlen, um automatische Dokumentationskommentare zu generieren. Meist sind sie relativ treffend, falls nicht, sind sie dann zumindest lustig.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Thu, 16 Jul 2009 13:27:54 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/130-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>barcamp</category>
<category>mocking</category>
<category>nos_sued</category>
<category>ulm</category>
<category>vererbung</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Inversion of Control/Dependency Injection</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/127-.NET-Open-Space-Sued-2009-in-Ulm-Inversion-of-ControlDependency-Injection.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/127-.NET-Open-Space-Sued-2009-in-Ulm-Inversion-of-ControlDependency-Injection.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=127</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=127</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Nach dem &amp;quot;Kampf&amp;quot; von &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/125-.NET-Open-Space-Sued-2009-in-Ulm-Castle-Monorail-vs.-Microsoft-MVC.html&quot;&gt;Castle Monorail vs. Microsoft MVC&lt;/a&gt;&lt;/span&gt; geht es heute um &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Inversion_of_Control&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Inversion_of_Control&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Inversion of Control&lt;/a&gt; bzw. &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Dependency_Injection&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Dependency_Injection&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Dependency Injection&lt;/a&gt;. Hier also meine Notizen zu diesem spannenden und häufig unterschätzten Thema:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;Klasse bezieht von ihr genutzte Klassen &amp;quot;von außen&amp;quot;&lt;/li&gt;
    &lt;li&gt;Nutzung von Interfaces statt konkreter Implementierung &lt;/li&gt;
    &lt;li&gt;Zuweisung des konkreten Objektes &amp;quot;von außen&amp;quot; - manuell oder per IoC-Container&lt;/li&gt;
    &lt;li&gt;Konfigurationsstrategien für den Container&lt;ul&gt;
        &lt;li&gt;via XML - aufwändig, bäääh!&lt;/li&gt;
        &lt;li&gt;Objekte einzeln und &amp;quot;von Hand&amp;quot; hinein packen&lt;/li&gt;
        &lt;li&gt;relevante Objekte per Reflection aufsammeln (+ Sonderfälle explizit zuweisen)&lt;ul&gt;
            &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/structuremap.sourceforge.net/Default.htm&#039;);&quot;  href=&quot;http://structuremap.sourceforge.net/Default.htm&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;StructureMap&lt;/a&gt; (gut strukturiert)&lt;/li&gt;
            &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.castleproject.org/container/index.html&#039;);&quot;  href=&quot;http://www.castleproject.org/container/index.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;WindsorCastle&lt;/a&gt; (wenn man schon Monorail oder ActiveRecord nutzt)&lt;/li&gt;
            &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.codeplex.com/unity&#039;);&quot;  href=&quot;http://www.codeplex.com/unity&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Unity&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/ninject.org/&#039;);&quot;  href=&quot;http://ninject.org/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Ninject&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.springframework.net/&#039;);&quot;  href=&quot;http://www.springframework.net/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Spring&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&amp;quot;von Hand&amp;quot; per Attribut&lt;/li&gt;
        &lt;/ul&gt;&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Constructor injection: wenn keine Default-Implementierungen vorhanden sind&lt;/li&gt;
    &lt;li&gt;Setter injection: praktisch, da nur bei Bedarf Default-Implementierungen überschrieben werden&lt;/li&gt;
    &lt;li&gt;Performance: Zeitverlust durch IoC im Vergleich zu new ist verschwindend gering im Vergleich zur Lebenszeit des Objektes&lt;/li&gt;
    &lt;li&gt;IoC hilft, Singletons zu erzeugen (die im Vergleich zum &amp;quot;normalen&amp;quot; Pattern sogar überschrieben werden können)&lt;/li&gt;
    &lt;li&gt;Idealfall: alles wird injiziert&lt;ul&gt;
        &lt;li&gt;Attribute sind nicht injizierbar - Ausweg bietet &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.codeplex.com/CommonServiceLocator&#039;);&quot;  href=&quot;http://www.codeplex.com/CommonServiceLocator&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;CommonServiceLocator&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Container lässt sich beim Testen auch ausmocken&lt;/li&gt;
&lt;/ul&gt;

 
    </content:encoded>

    <pubDate>Wed, 15 Jul 2009 13:34:11 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/127-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>barcamp</category>
<category>nos_sued</category>
<category>ulm</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Castle Monorail vs. Microsoft MVC</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/125-.NET-Open-Space-Sued-2009-in-Ulm-Castle-Monorail-vs.-Microsoft-MVC.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/125-.NET-Open-Space-Sued-2009-in-Ulm-Castle-Monorail-vs.-Microsoft-MVC.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=125</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=125</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Nach den gestrigen &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/123-.NET-Open-Space-Sued-2009-in-Ulm-Tag-1-Scrum.html&quot;&gt;Scrum-Notizen&lt;/a&gt;&lt;/span&gt; hier gleich der Mitschrieb zur nächsten Session vom Ulmer Open Space. Leider gab es in der Session keinen wirklichen Vergleich zwischen den beiden &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Model_View_Controller&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Model_View_Controller&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;MVC&lt;/a&gt;-Frameworks, da niemand der Anwesenden gleichzeitig beide so richtig gut kannte. Trotzdem empfand ich einige Fakten aus der Session als relativ interessant:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;Ziel muss immer sein, die Logik in den Views minimieren&lt;/li&gt;
    &lt;li&gt;MS MVC ermöglicht Austausch von Controllern und View-Engines&lt;/li&gt;
    &lt;li&gt;weitere Viewengines sind z.B.: &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/andrewpeters.net/2007/12/19/introducing-nhaml-an-aspnet-mvc-view-engine/&#039;);&quot;  href=&quot;http://andrewpeters.net/2007/12/19/introducing-nhaml-an-aspnet-mvc-view-engine/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;NHaml&lt;/a&gt; (.NET-Port der bekannten Rails-Engine) und &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/sparkviewengine.com/&#039;);&quot;  href=&quot;http://sparkviewengine.com/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Sparkview&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Webforms sind ebenfalls als Viewengine nutzbar (aber ohne Lifecycle)&lt;/li&gt;
    &lt;li&gt;Lock-In-Effekt ist größte Gefahr bei Wahl der Viewengine&lt;/li&gt;
    &lt;li&gt;gute Viewengines erlauben Nutzung typisierter Models&lt;/li&gt;
    &lt;li&gt;NVelocity-Views zeigen $Variable, wenn selbige nicht gefüllt ist &lt;ul&gt;
        &lt;li&gt;Quelltext nach $ durchsuchen zur automatisierten Fehlersuche&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;ASP-View von Monorail kann IntelliSense, MS MVC auch&lt;/li&gt;
    &lt;li&gt;Microsoft MVW beherrst ASP Dynamic Data, mit dem man schnell &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/CRUD&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/CRUD&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;CRUD&lt;/a&gt;-Formulare erzeugen kann&lt;/li&gt;
    &lt;li&gt;Deployment von MS MVC in bin oder GAC möglich&lt;/li&gt;
    &lt;li&gt;Server startet in bestimmten Fällen neu (u.a. bei Änderung zu vieler Dateien)&lt;/li&gt;
    &lt;li&gt;Dateiendung muss an ASP.NET übergeben bzw. dafür registriert werden&lt;/li&gt;
    &lt;li&gt;Seiten ohne Endung: Bilder und Javascripte explizit per StaticFileHandler bearbeiten, um die Performance zu verbessern. &lt;/li&gt;
    &lt;li&gt;Microsofts Lösung kann mit &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.codeplex.com/MVCContrib&#039;);&quot;  href=&quot;http://www.codeplex.com/MVCContrib&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;MvcContrib&lt;/a&gt; sinnvoll erweitert werden&lt;/li&gt;
    &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/der-albert.com/archive/2009/06/25/quelltext-zur-asp-net-mvc-user-group-tour-im-juni-2009.aspx&#039;);&quot;  href=&quot;http://der-albert.com/archive/2009/06/25/quelltext-zur-asp-net-mvc-user-group-tour-im-juni-2009.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Beispiel&lt;/a&gt; zum MVC-Framework von Microsoft, das &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/der-albert.com/Default.aspx&#039;);&quot;  href=&quot;http://der-albert.com/Default.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Albert&lt;/a&gt; dann ausführlich in einer separaten Session vorstellte.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fazit: Es gibt keine technischen Gründe, sich für oder gegen &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.castleproject.org/monorail/index.html&#039;);&quot;  href=&quot;http://www.castleproject.org/monorail/index.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Castle Monorail&lt;/a&gt; zu entscheiden. Langfristig ist aber (leider?) davon auszugehen, dass es mehr Tools, Support und Community-Angebote für das Microsoft Framework geben wird.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Tue, 14 Jul 2009 13:38:31 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/125-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>asp</category>
<category>barcamp</category>
<category>mvc</category>
<category>nos_sued</category>
<category>ulm</category>
<category>webdesign</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Tag 1: Scrum</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/123-.NET-Open-Space-Sued-2009-in-Ulm-Tag-1-Scrum.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/123-.NET-Open-Space-Sued-2009-in-Ulm-Tag-1-Scrum.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=123</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=123</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Nachdem &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/blog.thomasbandt.de&#039;);&quot;  href=&quot;http://blog.thomasbandt.de&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Thomas Bandt&lt;/a&gt; ja schon &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/blog.thomasbandt.de/39/2269/de/blog/review-net-open-space-sued-2009.html&#039;);&quot;  href=&quot;http://blog.thomasbandt.de/39/2269/de/blog/review-net-open-space-sued-2009.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;erklärt&lt;/a&gt; hat, was beim .NET Open Space Süd 2009 so passiert ist, kann ich mich hier ja glücklicherweise auf das Posten meiner Notizen beschränken.&lt;/p&gt;

&lt;p&gt;Die erste Session drehte sich um das Thema  &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Scrum&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Scrum&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Scrum&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Einführung&lt;/b&gt;&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;keine Aussage, wie entwickelt wird - das Team soll dies selbst regeln&lt;/li&gt;
    &lt;li&gt;Vorgesetzter kann als Scrummaster problematisch sein, da er &amp;quot;über&amp;quot; den Teammitgliedern steht&lt;/li&gt;
    &lt;li&gt;Aufgaben (geforderte Features) für nächsten Sprint werden in Punkten abgeschätzt - NICHT IN STUNDEN&lt;/li&gt;
    &lt;li&gt;Länge eines Sprints: 2-4 Wochen, im Web-Bereich häufig nur eine Woche&lt;/li&gt;
    &lt;li&gt; keine Belohnungen/Sanktionen, da sonst die Qualität leidet&lt;/li&gt;
    &lt;li&gt;Regel: keine neue Karte nehmen, wenn man noch alte hat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Daily Scrum&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Diskussionen abblocken und nach dem Meeting klären&lt;/li&gt;
    &lt;li&gt;prägnant erreichte Ziele von heute und geplante Ziele für nächsten Tag nennen, nicht erzählen, was denn so alles über den Tag passiert ist&lt;/li&gt;
    &lt;li&gt;Scrummaster muss Probleme heraushören (auch nicht explizit genannte)&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Nutzen&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;sichtbaren Ergebnis für den Kunden nach jedem Sprint&lt;/li&gt;
    &lt;li&gt;starke Kommunikation im Team&lt;/li&gt;
    &lt;li&gt;Commitment auf die Aufgabe&lt;/li&gt;
    &lt;li&gt;Product owner ist Teil des Teams&lt;ul&gt;
        &lt;li&gt;hat mehr Verantwortung&lt;/li&gt;
        &lt;li&gt;muss während des Sprints zur Verfügung stehen&lt;/li&gt;
        &lt;li&gt;muss klare Vorgaben geben&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;mehr Struktur, klare Vorgaben&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Gefahren&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Scrum allein enthält keine langfristige Planungskomponente &lt;/li&gt;
    &lt;li&gt;evtl. mangelnde Effizienz über Projektlaufzeit&lt;/li&gt;
    &lt;li&gt;keine Sicht auf großes übergeordnetes Ziel&lt;/li&gt;
    &lt;li&gt;Erfolg steht und fällt mit der Qualität des Backlogs&lt;/li&gt;
    &lt;li&gt;keine Basis für Angebotserstellung&lt;ul&gt;
        &lt;li&gt;Lösungsansatz: Spezifikation im ersten Sprint erstellen&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Sonstige Themen in der Session&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Release spring: Phase kurz vor einem Release, in der nur noch kosmetische Änderungen durchgeführt werden und parallel relativ zuverlässig getestet werden kann&lt;/li&gt;
    &lt;li&gt;Sprint-Burn-Down-Charts zeigen an, wie gut man in der Zeit liegt:&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://flominator.ramselehof.de/uploads/meine_fotos/burn_down_sprint.jpg&#039;&gt;&lt;!-- s9ymdb:59 --&gt;&lt;img width=&quot;110&quot; height=&quot;64&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://flominator.ramselehof.de/uploads/meine_fotos/burn_down_sprint.serendipityThumb.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;&amp;quot;Kartenstatus&amp;quot;-Diagramm dient dem gleichen Zweck, spart aber die Malarbeit, durch Zuordnung der Karten zu einem Status:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://flominator.ramselehof.de/uploads/meine_fotos/card_diagramm.jpg&#039;&gt;&lt;!-- s9ymdb:60 --&gt;&lt;img width=&quot;110&quot; height=&quot;94&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://flominator.ramselehof.de/uploads/meine_fotos/card_diagramm.serendipityThumb.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Fazit&lt;/b&gt;&lt;br /&gt;
Schöner Rundumschlag zum Thema mit einer guten Mischung aus Theorie und Erfahrungen. Highlight war für mich der Input von &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.artiso.com/problog/&#039;);&quot;  href=&quot;http://www.artiso.com/problog/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Thomas Schissler&lt;/a&gt;, der das Konzept seines Unternehmens vorstellte: Dort werden am Anfang  zwischen 30 und 60% der Projektlaufzeit für die Erstellung der Oberfläche genutzt. Erst wenn Kunde mit Oberfläche einverstanden ist, wird implementiert. Dies erscheint mir ein sehr sinnvoller Ansatz!&lt;/p&gt;

&lt;p&gt;In einer späteren Session erfuhr ich dann auch, was passiert, wenn Scrum falsch eingesetzt wird. In diesem Fall muss SCRUM einfach rückwärts gelesen werden &lt;img src=&quot;http://flominator.ramselehof.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Mon, 13 Jul 2009 13:55:16 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/123-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>barcamp</category>
<category>nos_sued</category>
<category>projektmanagement</category>
<category>scrum</category>
<category>ulm</category>

</item>

</channel>
</rss>