<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.codecomplete.de/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" 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/"><channel><title>XAML Blog : Business Case</title><link>http://www.codecomplete.de/blogs/xamlblog/archive/tags/Business+Case/default.aspx</link><description>Tags: Business Case</description><dc:language>en</dc:language><generator>CommunityServer 2007 (Build: 20416.853)</generator><item><title>Projekterfahrung: WPF und Maskenmassen</title><link>http://www.codecomplete.de/blogs/xamlblog/archive/2007/04/03/projekterfahrung-wpf-und-maskenmassen.aspx</link><pubDate>Tue, 03 Apr 2007 06:56:00 GMT</pubDate><guid isPermaLink="false">81aaacb2-e9d6-4141-b1a3-d6a38e006815:55</guid><dc:creator>jpkleinau</dc:creator><slash:comments>0</slash:comments><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.codecomplete.de/blogs/xamlblog/commentapi.aspx?PostID=55</wfw:comment><comments>http://www.codecomplete.de/blogs/xamlblog/archive/2007/04/03/projekterfahrung-wpf-und-maskenmassen.aspx#comments</comments><description>&lt;p&gt;Projektaufgabe war die Unterstütztung eines Flash Design Unternehmen bei der Migration einer Installations- und Werbe-CD-ROM nach Windows Vista. Basis der vorherigen Version sind Macromedia Flashprogramme für Windows 98 und Windows XP, die über XML Dateien konfiguriert werden. Die CD-ROM hat eine Millionenauflage und beinhaltet über &lt;strong&gt;600&lt;/strong&gt; Masken mit dynamisch wechselnden Inhalten. Ziel war die Portierung der Anwendung zu Windows Presentation Foundation und .Net 3.0. Die Migration musste innerhalb von &lt;u&gt;&lt;em&gt;3 Monaten&lt;/em&gt; &lt;/u&gt;abgeschlossen werden. Dabei sollen die Konfigurations- und Steuerungsdateien für die Inhalte der Flash-Version weitgehend übernommen werden. &lt;a id="more-22"&gt;&lt;/a&gt;In der Rolle des Beraters und Entwicklers unterstützte ich die erfahrenen Flashprogrammierer bei der Umsetzung. Die Flashfirma sah in uns die Chance, die Risiken bei der Benutzung der Betaversionen der Werkzeuge und dem Einsatz der neuen Technologie deutlich zu mindern.&lt;/p&gt;
&lt;h2&gt;Realisierung&lt;/h2&gt;
&lt;p&gt;Als Erstes musste ein Konzept her, dass vor allen der Aufgabe der Parallelisierung der Arbeit ermöglichen sollte. Das war keine leichte Aufgabe, zwar unterstützt das Designer-/Entwicklerkonzept der WPF durch den Interactive Designer schon die theoretische Trennung von Design und Implentation. Doch in der Praxis zeigt sich, dass es unmöglich ist, gleichzeitig 10 Grafiker und 3 Entwickler an dem selben Projekt arbeiten zu lassen, damit man pro Monat 300 Masken fertig bekommt. Das fertige Konzept erlaubt die gleichzeitige Arbeit von Grafikern, Anwendungsentwicklern in einem agilen Prozessmodell. Während Grafiker im &lt;font size="2"&gt;Expression &lt;strong&gt;Blend&lt;/strong&gt;&lt;/font&gt; die Masken entwerfen wird die Anwendungslogik geschrieben und das Verhalten der Anwendung konfiguriert.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.jpkleinau.de/wp/wp-content/uploads/2007/01/tonl_framework.jpg" alt="" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Dazu musste ein Framework geschaffen werden, dass zusätzlich zu dem schon vorhandenen WPF Funktionen wie die Anwendungsnachrichten bündelt, erlaubt Masken nachzuladen und dynamisch zu befüllen. Kern des Frameworks ist ein XAML Player, der beliebige Masken der Windows Presentation Foundation laden, abspielen und mischen kann. Dabei werden Inhalte mit HTML automatisch in XAML gewandelt. Die Masken können zur Lade- und Laufzeit von der Anwendungslogik modifiziert werden. Die Steuerungsdateien der Flash-Anwendung werden 1:1 übernommen und durch eine relationale XML Datei erweitert.&amp;nbsp; Ich lieferte eine Workbench für die Steuerungsdateien, so dass Fehlermeldungen, dynamische Wertänderungen, Logausgaben und Programmverhalten nachvollziehbar werden.&lt;/p&gt;
&lt;h4&gt;Integrierte Workbench und Know-How Transfer&lt;/h4&gt;
&lt;p&gt;&lt;img src="http://www.jpkleinau.de/wp/wp-content/uploads/2007/01/tonl_workbench.jpg" alt="" /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;font size="1"&gt;(Workbench - der Playerinhalt wurde entsprechend Copyright unkenntlich gemacht)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Neben dem XAML Player wurde eine Workbench implentiert, die wie ein Debugger den Ablauf der Anwendung in den Steuerungsdateien anzeigen kann. Diese diente vor allem der Kontrolle und dem Lernen der Mitarbeiter. Nachdem die Lernkurve zum Framework abgeschlossen war, wurde die Workbench nicht weiter entwickelt. Der Featurestop entsprach der Methodik zur Agilen Entwicklung. Es bestand keine Notwendigkeit mehr, die Workbench bis zur Produktreife zur entwickeln, da die in das Projekt involvierten Mitarbeiter nun ausreichend Wissen erworben hatten, auch in Visual Studio zu arbeiten.&lt;/p&gt;
&lt;h4&gt;Hohe Produktivität durch Trennung von Design und Entwicklung&lt;/h4&gt;
&lt;p&gt;Da Design und Implementation komplett getrennt wurden, konnten die Grafiker die Masken eigenständig im &lt;font size="2"&gt;Expression &lt;strong&gt;Blend &lt;/strong&gt;&lt;/font&gt;entwerfen und unabhängig von der Anwendung in die Qualitätssicherung geben. Somit stimmten die Masken pixelgenau, bevor die Anwendungslogik fertig war. Um die richtigen Texte zu verwenden, wurden Datenobjekte zur Verfügung gestellt.&lt;/p&gt;
&lt;h4&gt;Vollständiger Werterhalt fachlichen Wissens und bestehender Konzepte&lt;/h4&gt;
&lt;p&gt;Das Framework erlaubte die Verwendung der 98/ME/XP Steuerungsdateien. Somit musste hier kein Lernaufwand betrieben werden und die Testroutinen für die alten Steuerungsdateien konnten vollständig übernommen werden.&lt;/p&gt;
&lt;h4&gt;Technologien&lt;/h4&gt;
&lt;p&gt;.NET 3.0, WPF, XML, Visual Studio Team System, Expression Blend&lt;/p&gt;&lt;img src="http://www.codecomplete.de/aggbug.aspx?PostID=55" width="1" height="1"&gt;</description><category domain="http://www.codecomplete.de/blogs/xamlblog/archive/tags/Xaml/default.aspx">Xaml</category><category domain="http://www.codecomplete.de/blogs/xamlblog/archive/tags/Business+Case/default.aspx">Business Case</category></item></channel></rss>