#epic. Oder: Ruck, wenn Scrum zu krass ist?

Bei Scrum handelt es sich eine Management Methode, die zumeist in der Softwareentwicklung eine große Hilfe dabei ist, umfangreiche Projekte steuerbar zu machen. Kernpunkte sind dabei u.a. die Leistungsbereitschaft der Teammitglieder und deren Selbstorganisation, die Aufteilung des Projektes in Timeboxes und regelmäßig stattfindende Meetings.

Das klingt zunächst einfach, bedingt aber eine absolute Disziplin, damit das Konzept aufgeht. Marcus Jacob hat dazu auf der letzten Developer Week einen Vortrag gehalten. Thema: Football, Poker, PM oder: Wir führen Scrum ein!*

Während es zuhauf Dokumentationen, Fachbücher, Artikel, Prozess-Templates u.ä. zu Scrum gibt, soll dieser Blogartikel allerdings etwas vorstellen, das kaum jemand kennt, von dem sich aber viel lernen lässt.

Microsoft Ruck

Rucks […] are similar to scrums in that several players are bound together while fighting over the ball. In the case of rucks, however, the ball is literally up for grabs, unlike in the relatively controlled environment of the scrum. Quelle: isport.com

Dieses Zitat von einer Sportseite drückt es bereits treffend aus. So wie Scrum eine Methode zur “kontrollierten” Softwareentwicklung ist und sich für die Namensgebung einer Sportmetapher bedient, entnimmt Microsoft eben jener Sportart – Rugby – einen weiteren Begriff (Ruck), der im Prinzip die gleiche Bedeutung hat, aber weniger Disziplin erfordert.

Bedeutet nun “weniger Disziplin” nun auch weniger Qualität? Oder sogar Fehler? Nein. Ganz im Gegenteil. In diesem Kontext löst dieses Vorgehensmodell typische Probleme, die verteilte Entwickler-Teams haben: Sie entwickeln nicht zur gleichen Zeit, es steht nicht immer jeder Mitarbeiter zur Verfügung, andere Projekte haben eine höhere Priorität… und im Zweifelsfall befinden sich die Entwickler nicht einmal in der gleichen Zeitzone. Die meisten Prinzipien von Scrum müssten in solchen Fällen über Bord geworfen werden.

Im Kontext der sog. ALM Rangers hat Microsoft daher eine eigene Methode entwickelt, die sich zwar an Scrum anlehnt, dabei aber wesentlich mehr Freiheiten ermöglicht und das ganze konsequenterweise Ruck genannt.

Bei den ALM Rangers handelt es sich um eine Gruppe von Enthusiasten, die kontinuierlich Tools, Dokumentationen, virtuelle Labs und dergleichen mehr außerhalb des regulären Entwicklungszyklusses des Team Foundation Servers bereitstellen. Da deren Hauptaufgabe allerdings häufig durch andere Themen bestimmt wird (mitunter zählen sogar Freelancer zu den ALM Rangers), benötigten sie eine Methode, die es ihnen erlaubt trotz der widrigen Umstände eine hohe Qualität abzuliefern.

image

Herausforderungen eines zeitzonen-übergreifenden Teams

Microsofts Lösung

Hier einige Schlüsselfaktoren, die entscheidend mit zu dem Erfolg bei Microsoft in verteilten Teams wie den ALM Rangers beitragen:

  • Sprint-Planungsmeetings finden virtuell und online statt (via Microsoft Lync und Email).
  • Neben Schätzungen, die das Team verantwortet (z.B. via Planning Poker) wird häufig auf die Schätzung desjenigen zurückgegriffen, der die Umsetzung verantwortet.
  • Das Team entscheidet, wann und wie oft “Standup-Meetings" stattfinden (i.d.R. wöchentlich), dabei schicken abwesende Teammitglieder Status-Updates per Email an den Lead / Ruckmaster.
  • Wer am Sprintreview nicht teilnehmen kann, stellt ein kurzes Demo-Video seiner Arbeit bereit.
  • Auch zur Retrospektive können Erkenntnisse per Email eingereicht werden; eine Zusammenfassung der Ergebnisse stellt der Lead in der Ruck Improvement Community allen Teammitgliedern zur Verfügung.

Darüber hinaus ist der Worfklow gegenüber Scrum leicht verändert und es gibt auch weitere Workitem Typen (wie z.B. sog. Epics, die über einem Feature stehen und ein Thema auf übergeordneter Ebene betrachten).

Da das Thema in Summe allerdings zu umfangreich ist, um es in Gänze in einem Blogartikel zu betrachten, sei an dieser Stelle auf das Material verwiesen, das Microsoft kostenlos zum Download zur Verfügung stellt.

Über die Landing Page “Supporting Guidance and Whitepapers” gibt es weiterführende Informationen und Materialien, die einem helfen in Bild, Ton und Text den Ruck Prozess und die virtuellen Personas zu verstehen und bekommt ergänzend dazu Whitepaper, Sample Solutions, Hands on Labs und dergleichen mehr, um sich auch praktisch mit dem Thema auseinandersetzen zu können.

Fazit

Wer sich mit seinem Team den Herausforderungen moderner Softwareentwicklung stellen will und feststellen muss, dass Methoden wie Scrum im spezifischen Fall nicht funktionieren können, der findet im Ruck Prozess eventuell die Lösung. Es lohnt sich aber in jedem Fall, einen Blick in das Material zu werfen, da auch unabhängig davon einige wirklich interessante Konzepte vermittelt werden (wie z.B. das der Personas). Da es sich dabei um Anwendungsfälle aus der gelebten Praxis handelt, fällt die Adaption umso leichter.

*Im Übrigen ist niemandem aufgefallen, dass das Wort Scrum seine Herkunft im Rugby hat und nicht im Football. :)

#dwx14 – Wiedersehen macht Freu(n)de!

Heute vor einem Monat war es endlich soweit: Während ganz Deutschland noch den Fußball WM Sieg feierte, öffnete das NCC Ost in Nürnberg seine Hallen für die Developer Week 2014. Natürlich ging die WM Stimmung auch hier nicht an uns vorbei, sind wir Speaker doch zur Eröffnung zu Andreas Bouranis WM Hymne “Auf Uns!” unter Applaus auf die Bühne marschiert; es hätte nicht schöner anfangen können!

DWX2014_all_speakers_download_fullsize 

Konferenzen sind für uns immer ein kleines Klassentreffen, auf dem man viele bekannte Gesichter wiedersieht aber auch jedes Mal neue kennenlernt. Als Speaker verschiebt sich der Schwerpunkt somit vom Know-How Erwerb hin zum Socialising. Am besten ist es jedoch, wenn sich beides miteinander kombinieren lässt und ja, das ließ es sich auch dieses Mal wieder ;-)

Dank ca. 250 Sessions ballte sich ein sehr vielfältiges Wissen, das für reichlich Gesprächsthemen zwischen und nach den Vorträgen sorgte. So gab es am ersten Abend Thementische zum gemütlichen Diskutieren, begleitet von Live Musik der Band “The Blackscreen”. Der zweite Abend bot abwechslungsreiche Unterhaltung durch bspw. PowerPoint Karaoke, Coding Dojos und der Microsoft Gadget Garage, die zum Auto- und Spherorennen per Bluetoothsteuerung vom Windows Phone aus verführte. Wer sich zwischendurch mal eine Pause gönnen wollte, konnte auf den Massagesesseln der Firma BrainLight relaxen und wieder zu Kräften kommen. Die Verköstigung war ebenso reichhaltig wie lecker – selbst als Vegetarier kam man auf seine Kosten – und sogar Club Mate und Energy Drinks standen zur freien Verfügung und ließen die Nächte zum Tag werden! Es lässt sich festhalten, dass wirklich für jeden etwas dabei war und Langeweile einfach nicht aufkommen konnte.

Die Developer Week hat sich weiterentwickelt und auf das Teilnehmerfeedback reagiert. So gab es dieses Jahr bspw. keine geschlossene Abendveranstaltung, die im letzten Jahr noch für reichlich Irritation sorgte. Ebenso ging man weiter mit der Zeit und stellte mobile Konferenz Apps zur Verfügung. Leider nur für Android und iOS, weswegen man als Windows Phone Besitzer das Nachsehen hatte. Wer zur letzteren Kategorie gehörte, konnte somit lediglich die WebApp verwenden, die allerdings noch einiges an Verbesserungspotenzial mit sich bringt. Aber ganz im Ernst? Das ist Jammern auf hohem Niveau und kann somit getrost vernachlässigt werden. An dieser Stelle wird zum nächsten Jahr sicherlich nachgebessert.

Von unserer Seite aus bleibt jetzt nur noch ein großes Dankeschön, sowohl an das gesamte Veranstaltungsteam, als auch natürlich an die Teilnehmer der Konferenz und unserer Sessions insbesondere! Es zeigte sich auch dieses Jahr wieder, dass neben Mainstream Themen rund um Scrum auch Sessions über Touch Develop, dem Microsoft Fakes Isolation Framework und sogar Windows Installer XML für großen Anklang beim Publikum sorgten. Uns hat es auf jeden Fall wieder richtig viel Spaß gemacht und wir freuen uns schon auf’s nächste Klassentreffen!

Ich wollte ein virtuelles Test Lab einrichten. Du wirst nicht glauben, über welche Lösung ich dabei gestolpert bin!

Um mal aus dem Nähkästchen zu plaudern: Vor über zehn Jahren ist unser Unternehmen mit Dell Workstations gestartet und unser Geschäftsführer besaß privat u.a. einen Rechner in einem formschönen (…) Thermaltake Gehäuse samt externem Festplatten-Tower.

Nachdem wir einige Jahre später für ein Produkt, das bei uns entstanden ist, ein Test Lab benötigten (zu dem Zeitpunkt waren wir bereits schon lange auf Notebooks umgestiegen und die alten Workstations fristeten im Keller ihr Dasein), nutzen wir kurzerhand eben diese Altsysteme, um daraus (natürlich im Keller – wie praktisch) ein solches Lab zusammenzubauen. Inklusive Cisco Router, KVM Switch und einem Set bestehend aus Tastatur, Maus und – zunächst – CRT Display. Auch der alte Rechner im Thermaltake Gewand kam (als Server) zum Einsatz (kommentiere, wenn Du ein Foto vom Testlab sehen möchtest).

Heute – ungefähr sieben Jahre später – möchten wir das Test Lab natürlich virtuell abbilden. Mit aktuellstem Betriebssystem und modernsten Mitteln. Und auf der Suche nach möglichen Abkürzungen fanden wir dies:

Windows Server 2012 R2 Test Lab Guide

Wer die Virtual Labs von Microsoft kennt (und liebt) hat sich sicher das ein oder andere Mal gefragt, wie die das so fein hinbekommen. Immerhin gibt es nicht gerade wenige davon und deren Konfiguration umfasst mitunter neben Domain Controllern, Internetservern und Clients auch noch Edge-Server und dergleichen mehr.

Wer die Virtual Labs nicht kennt, findet indes hier einen Einstieg.

Kurz gesagt: Ziel für den Benutzer ist es, möglichst schnell z.B. Verständnis für eine ihm neue Technologie aufzubauen. Dazu stellt Microsoft eine virtuelle Infrastruktur bereit, die über einen festen Zeitraum (meist etwa 2 Stunden) zur Verfügung gestellt wird und mit der sich der Benutzer via Remote Desktop verbinden kann. Passend zu dem jeweiligen Thema gibt es dann Begleitmaterial in Form von meist Word Dokumenten, die einen Schritt für Schritt durch Konfigurationsszenarien, Anwendungsfälle und vieles mehr leiten.

Das, was uns vollkommen überrascht hat, ist, dass Microsoft nicht nur diese Test Labs vollkommen gratis bereitstellt, sondern auch eine Dokumentation, wie diese erstellt werden können. Der Link oben führt zu dem Word Dokument, das Schritt für Schritt erläutert (inkl. passender Powershell Scripte), wie sich folgende Basis Test Lab Infrastruktur aufbauen lässt:

image 

 

Mehr noch: Das TechNet Wiki enthält darüber hinaus sogar eine Liste von weit mehr als 50 bereits vorhandener TLGs (Test Lab Guides), die ebenfalls frei verfügbar sind.

Hier ein kleiner Auszug:

  • Fabrikam Base Configuration
  • Install Exchange Server 2013
  • Demonstrate IPv6
  • Demonstrate Direct Access
  • System Center 2012 Configuration Manager

Wer sich nun noch dafür interessiert, eigene TLGs für Produkte, Features, Komponenten oder beispielsweise auch eigene Serverprodukte zur Nutzung im eigenen IT Bereich zu schreiben, der wird überdies hier fündig:

Test Lab Guide (TLG) Content Creation Kit

Microsoft liefert mit dem Content Creation Kit eine vollständige Sammlung an Word Templates, Powerpoint Folien und Grafiken, um selber Test Lab Guides zu entwerfen.

Ich weiß nicht, wie es euch geht… aber meine Augen leuchten!

Natürlich kann es auch sein, dass ich mit meinem Fokus auf die Softwareentwicklung auf einsamer Flur stehe, was das Thema betrifft und das für euch IT Spezialisten ein alter Hut ist. In diesem Fall freut euch einfach für mich, denn mir kommt es vor wie der heilige Gral. Falls aber nicht, werft einen Blick darauf! Es gibt sicher auch bei euch das eine oder andere Szenario in dem so eine Dokumentation durchaus sinnvoll ist und gerade auch das TLG Content Creation Kit eine große Hilfe dabei darstellt, eigene Dokumentationen zu erstellen.

Wie man 50.000 Euro Projektkosten einspart

Machen wir uns nichts vor: Wir haben 2014 und die Tagessätze für Berater, Softwareentwickler und dergleichen sind nicht mehr dieselben wie noch vor zehn Jahren. Auch im Großkundensegment sind Tagesätze von deutlich unter 1.000 Euro mittlerweile Gang und Gebe. Die Ursachen hierfür sind vielfältig und liegen nicht allein darin begründet, dass Zwischenhändler, Subgeschäft und Rahmenverträge die Margen auf nicht mehr nur ein Unternehmen verteilen. Häufig sind es auch schlicht die Kosten, die so unverhältnismäßig gestiegen sind, dass der Kunde knapper kalkulieren muss, damit sich ein Projekt rechtfertigen und damit auch beauftragen lässt.

Gestiegene Komplexität

Um Beispiele aus der Windows Welt und im Speziellen der Softwareentwicklung aufzugreifen: Früher gab es zwar weniger Auswahlmöglichkeiten, dafür war die Welt aber auch deutlich weniger komplex. Es gab Windows Forms für clientbasierte Anwendungen mit Benutzeroberflächen und ASP.NET für den Browser. Natürlich gab es auch zu der Zeit bereits Hersteller von Drittlösungen, die das .NET Framework für diese Plattformen ergänzten, aber im Wesentlichen ließ sich mit Boardmitteln bereits fast alles umsetzen. Parallel existierte noch die alte Welt der Visual Basic 6 Entwickler, die ebenfalls mehr oder weniger komfortabel Lösungen auch ohne Informatikstudium bereitstellen konnten (wir sprechen hier noch nicht über Evolvierbarkeit & Co… das kam erst später).

Heute gibt es allein in der Windows Welt nicht mehr nur Windows Forms und ASP.NET. Hinzugekommen sind u.a. Silverlight, WPF, ASP.NET MVC, jQuery, HTML5, nicht zu vergessen die SharePoint Apps, Office Apps, Windows Store Apps, Windows Phone Apps und sogar die guten alten nativen MFC Anwendungen feiern ein Comeback. Ein Trend, der hierbei sichtbar wird: Die Anwendungen werden mehr und mehr ins Internet verlagert und seit neuestem setzt sich auch die Anforderung durch, dass sie möglichst plattformunabhängig funktionieren müssen. Der Begriff BYOD (bring your own device) hat sich zwar – so scheint es auf den ersten Blick – als Rohrkrepierer erwiesen, trifft uns nun aber von hinten wie ein Bumerang: Schließlich wollen Kunden die Anwendungen meist auf allen Plattformen umgesetzt haben.

Gestiegene Kosten

Immer mehr SDKs und APIs ermöglichen die Entwicklung eben solcher Multi-Device Apps, was aber ebenfalls auffällt, ist, dass immer mehr gewohnte Standardkomponenten aus den Boardmitteln verschwinden. Ein Beispiel: Sog. Line of Business (LOB) Anwendungen drehen sich i.d.R. immer um das Verwalten von Stammdaten. Hierbei werden Informationen erfasst, gespeichert und weiterverarbeitet. Im Zentrum steht dabei meist die tabellarische Darstellung der Daten.

Genügt dazu folgende Oberflächengestaltung aus?

image

 

In den meisten Spezifikationen sehen die ersten Roh-Entwürfe tabellarischer Darstellungen tatsächlich so oder so ähnlich aus.

Hier ein Gegenbeispiel:

image

 

Was sich hieraus erkennen lassen sollte sind folgende Funktionen:

  • Gruppierung (hier z.B. nach der Stadt)
  • Sortierung
  • Inline-Bearbeitung (hier z.B. zu erkennen an der TextBox in der Spalte “Name”)
  • Filterung (hier z.B. nach Datum; möglich wären auch komplexe Filter wie beispielsweise Von/Bis/Enthält/Enthält Nicht/Kleiner/Größer/etc.)
  • Paging (bei extrem vielen Einträgen evtl. sinnvoll)
  • Vertikales Scrolling (ob Scrolling UND Paging gleichzeitig sinnvoll sind, darüber lässt sich streiten)
  • Darstellung von Boolean-Werten (hier: Aktiv) als CheckBox
  • Farbliche Unterscheidung (in diesem Fall unbekannt, ob bei der Selektion, aufgrund fachlicher Kriterien oder einfach nur beim Drüberfahren mit der Maus)

Kundenprojekte laufen hier Gefahr, in diese Falle zu tappen: Ohne die Abstimmung mit denjenigen, die die Anforderungen letzten Endes umsetzen (die Entwickler) gelangen Darstellungen wie die zuerst abgebildete in die Spezifikation. Während des Projektes aber kristallisiert sich i.d.R. immer mehr die zweite Abbildung heraus. Dass es sich bei der Umsetzung um eine komplexe und umfangreiche Entwicklung eines Steuerelements handelt (das es so übrigens weder in HTML5, noch JavaScript, Windows Forms oder ASP.NET MVC gibt), steht außer Frage.

Und so steigen die Projektkosten aufgrund der Entwicklung von Steuerelementen problemlos (und exponentiell) um das x-fache. Denn zu der reinen Umsetzung der Anforderungen kommen Fragen nach Wartung, Dokumentation, Plattformunabhängigkeit und vermutlich auch Auslagerung in eigene Bibliotheken für den projektübergreifenden Einsatz.

Selbst im simpelsten Fall wäre es nicht ungewöhnlich für ein Gedankenspiel anzunehmen, zwei Entwickler würden 50 Projekttage mit der Implementierung eines einfachen Tabellen-Steuerelementes für eine ASP.NET MVC Web-Anwendung benötigen, das einen Teil der oben beschriebenen Funktionen implementiert. Weiterhin angenommen, ein Projekttag kostet pro externem Entwickler um die 500 Euro (was nicht viel ist), hat den Kunden dieses Control nun etwa 50.000,00 Euro gekostet. Folgekosten nicht eingerechnet (Bugfixing, Support, etc.)

Kosten einsparen

Wir versuchen, unseren Kunden diese Zusammenhänge wo es geht zu vermitteln und neben der Softwareentwicklung selbst auch beratend in den Projekten zu unterstützen. Natürlich sind auch wir in der Lage, spezifische Anforderungen in Form oben beschriebener Controls umzusetzen und freuen uns über entsprechende Aufträge. Allerdings werden die meisten unserer Projekte eher zentral durch die Umsetzung fachlicher Anforderungen bestimmt. Der Rest ist Mittel zum Zweck.

Daher:

Erfinde nicht das Rad neu,… es sei denn, Du willst etwas über Räder lernen.

Soll heißen: Falls man nicht gerade ein Produkthersteller ist, der sich auf die Entwicklung von Steuerelementen spezialisiert hat, oder Anforderungen hat, die schlicht von keinem solchen umgesetzt werden, dann gibt es keinen vernünftigen Grund, die Kosten für die Entwicklung derartiger Basiskomponenten selbst zu tragen, geschweige denn, externe Entwickler damit zu beauftragen.

Es gibt eine große Anzahl von Herstellern, die bereits Produkte vermarkten, die nicht nur über umfangreiche Unterstützung verschiedenster Plattformen verfügen, sondern auch entsprechenden Support mitbringen und umfassende Dokumentationen. Schließlich leben sie davon. Nach einem Vergleich zwischen den Kosten für Einzelplatz, Mehrfach- oder Firmenlizenzen mit den möglichen Kosten, die bei einer Eigenentwicklung entstehen können, lässt sich die Erkenntnis, dass der Preis in keinem Verhältnis zum Nutzen steht, nur noch schwer abstreiten.

Sinnvoller ist es also, zum Projektstart genaue Überlegungen hinsichtlich der UI-Anforderungen anzustellen, dabei die Softwareentwickler und deren Kompetenzen einzubeziehen und im Anschluss daran ganz regulär unterschiedliche Frameworks zu evaluieren, die einer Entscheidungsmatrix nach passen könnten. Selbst die Anpassung der eigenen Anforderungen an das dann ausgewählte Zielframework (falls dieses nicht alle Kriterien erfüllt) ist in den meisten Fällen noch immer sinnvoller, als stattdessen den Eigenbau zu bevorzugen.

Fazit

Wenn die Antwort auf folgende Fragen Ja lautet, spricht das für die Entwicklung eigener Steuerelemente:

  • Ist das Ziel, die Steuerelemente an andere Unternehmen zu lizenzieren?
  • Gibt es keine Steuerelemente von Drittherstellern, die die (kritischen) Anforderungen unterstützen?
  • Ist geplant, unternehmenseigene Bibliotheken langfristig zu entwickeln und in jedem Fall unabhängig von Drittherstellern zu sein?

Wenn die Antwort auf folgende Fragen Ja lautet, spricht das gegen die Entwicklung eigener Steuerelemente:

  • Handelt es sich bei den Anforderungen weitestgehend um Standards?
  • Liegt der zentrale Fokus in der Implementierung fachlicher Anwendungen?
  • Ist Multi-Plattformfähigkeit ein Thema?

Falls Sie an einem Punkt sind, an dem Sie sich entscheiden müssen, ob sie in den Erwerb von Lizenzen eines Drittherstellers investieren, oder lieber selbst Hand anlegen und dabei Unterstützung benötigen, sprechen Sie uns bitte an.

Sehr gerne helfen wir Ihnen bei der Entscheidung und stehen auch für die Evaluation möglicher Lösungen zur Verfügung. Wir verkaufen weder Lizenzen noch verdienen wir daran, kennen dafür aber verschiedenste Frameworks, haben Experten im Requirements Engineering, der Softwareentwicklung und dem Lizenz-Management. Damit sind wir der richtige Ansprechpartner für Sie, um nachhaltig Ihre Projektkosten zu optimieren und die Softwareentwicklung mit hoher Effizienz auf den Kern Ihrer Anforderungen zu lenken: Dem Bau von Fahrzeugen,… ohne zuvor das Rad neu erfinden zu müssen.

Und hier geschieht ein Wunder! - Installer bauen auf der #dwx14

Chef: “Und Schmitt? Ist unser neuer Quanten-Warp-Dimensions-Taschenrechner für Windows Desktop fertig?

Schmitt: “Ja Chef! Wenn Sie ihn testen wollen, müssen Sie nur das Multiphasen SDK installieren, sämtliche Dateien in das Programme Verzeichnis kopieren und kurz die 47 Registry Strings anlegen, die ich Ihnen gleich maile. Die Datenbankverbindung konfigurieren Sie dann in der app.config Datei, und in der…

Chef: “Halt! Stop! Das geht so nicht! Das muss automatisiert werden, warum haben wir denn keinen Installer?

projektplanungGenau jetzt stellt sich die Frage, wie denn nun eigentlich dafür Sorge getragen wird, dass unsere zahlenden Kunden auch möglichst bequem dazu in die Lage versetzt werden, unsere neuste Software einzusetzen. Der Installer ist hier ein essentieller Projektbestandteil, der nur zu gerne vernachlässigt wird und gerne auch erst viel zu spät eingeplant wird.

Beim ersten Projekt stellt sich dann auch noch die Frage, wie man dies überhaupt realisieren kann…

- Selber ein Programm entwickeln, dass die Arbeit durchführt? Wohl kaum. Der Aufwand wäre deutlich zu hoch.

- Drittanbieter-Software wie bspw. InstallShield für die Erstellung verwenden? Schon besser, bringt aber Lizenzkosten mit sich und ist grade für komplexe Szenarien auch nur sehr komplex zu bedienen.

Wie wäre es ansonsten mit Windows Installer XML (WiX)? WiX basiert - wie der Name schon sagt - auf XML, jeder Entwickler wird sich hier also schnell zu Hause fühlen. Da es ein Open Source Produkt ist, fallen auch keine Lizenzkosten an, außerdem gibt es eine konsequente und zügige Weiterentwicklung. Und das Beste für uns Entwickler ist dabei, dass es Visual Studio Projekttemplates gibt, wodurch die Erstellung des MSI’s auf ein simples Kompilieren eben jenen Projektes reduziert wird! Der Buildprozess muss also nicht durch etwaige Aufrufe von Fremdsoftware aufwändig erweitert werden, um die Routinen zum Erstellen des MSI’s zu steuern.

Das die Erstellung eines Installers nichts mit Wundern zu tun hat, sondern tatsächlich für die meisten Fälle sogar relativ einfach zu realisieren ist, zeigen wir in der Session “Installer bauen leicht gemacht” auf der diesjährigen DWX!

Noch immer ein Geheimtipp? Microsoft Fakes auf der #dwx14

Mittlerweile sollte eigentlich jeder, der mit Visual Studio arbeitet, vom Microsoft Fakes Isolation Framework wissen. Es ist zwar noch immer lediglich in der Premium und der Ultimate SKU integriert, dafür aber arbeitet es nahtlos mit dem Visual Studio zusammen und ermöglicht wahre Zauberkunststücke beim Testen von .NET Komponenten. Im Vergleich zu bekannten Mocking Frameworks wie z.B. Rhino Mocks, moq oder NSubstitute verzeichnet Google Trends immerhin ein Ansteigen der Suchanfragen im Zusammenhang mit Microsoft Fakes.

Das Interesse an Rhino Mocks scheint demnach eher abnehmend zu sein sein, moq - eines der ältesten Frameworks - hält sich seit ca. 2011 auf konstant hohem Level. Das Interesse an Fakes schwankt zwar, bewegt sich aber immerhin auf gleichem Level wie das an NSubstitute, das seit Ende 2011 kontinuierlich steigt.

In dieser Session auf der #dwx14 wird den Interessierten und Einsteigern in dieses Thema ein erster Einblick gezeigt, so dass im Anschluss mit ungebremster Motivation von egal welcher Richtung nach Microsoft Fakes migriert werden kann. :)

 

Pokern auf der DWX14 – Scrum lässt grüßen!

Haben wir das nicht alle schon erlebt? Man sitzt in einer Besprechung mit einem Projektleiter, bekommt grob skizziert was die neue Anwendung können soll und hat dann gefühlte 10 Sekunden Zeit, um eine Aufwandsschätzung abzugeben. Aussagen wie “Das können wir so nicht schätzen, da fehlen noch viel zu viele Informationen!” führen dann gerne zu Reaktionen wie “Ok, dann sagen wir einfach mal 50 Tage!”. Und als wäre das nicht schon verheerend genug, nein, die Aufwandsschätzung wird vom Kunden dann als Festpreis verstanden, ganz unabhängig davon, wie viele zusätzliche Wünsche noch einfließen werden…

Am Ende hat das Projekt dann im besten Fall 100 Tage gedauert, die Timeline wurde 3 mal verschoben und der Absatz an Haarfärbungsmitteln hat wieder ein Stück weit zugenommen, um die neu gewachsenen grauen Haare zu kaschieren. Naja und vielerorts findet man dann eine der unzähligen Varianten folgenden Bildes an den Wänden hängen:

Projektmanagement

 

Aber muss das wirklich so sein? Kann man da nicht etwas dran verbessern? Natürlich! Genau an dieser Stelle setzen agile Entwicklungsmethoden ein, um den Gesamtprozess zu definieren. Natürlich können Aufwände belastbarer geschätzt und Deadlines gehalten werden. Das geht sogar mit viel Spaß an der Sache und einem kontinuierlichem Projektfortschritt, der allen Beteiligten zeigt, wie die Anwendung Stück für Stück wächst. Und genau über dieses “wie” wird die TOP TECHNOLOGIES auf der #dwx14 berichten! In der Session “Football, Poker, PM oder: Wir führen Scrum ein!” werden wir anhand von Scrum zeigen, wie man ein Projekt durchführen und dabei sogar ohne schiefe Blicke zu ernten Pokern kann!

Microsoft Touch Develop auf der #dwx14

Die TOP TECHNOLOGIES hat eine lange Historie, was das Thema Touch Develop betrifft. Bereits 2012 haben wir darüber berichtet, nachdem es kurz zuvor noch ein spaßiges April-Video von Microsoft gab, in dem das Thema verulkt wurde.

Seit dem hat sich viel getan. Touch Develop gibt es mittlerweile in der Version 3.2 auf dem Windows Phone und die Verfügbarkeit hat sich seit dem Sprung auf 3.x spürbar erhöht: Egal ob Windows Phone, Windows, Mac, iPhone, Android, Tablets jeder Art: Touch Develop kann überall verwendet werden – einen aktuellen Internet Browser vorausgesetzt.

Mittlerweile zieht es nicht mehr nur Spiele-Entwickler auf diese Plattform, sondern auch Entwickler von Tools und kleineren Business Apps. Auf der diesjährigen #dwx14 wird TOP TECHNOLOGIES zudem zeigen, wie einfach es ist, mittels Touch Develop auf dem Windows Phone Software zu entwickeln, mit der sich via Bluetooth sogar externe Geräte ansprechen lassen. Und mit “externe Geräte” meinen wir Roboter!

Touch Develop vereint gleich mehrere Eigenschaften unter einer Haube, die es zu einer ernstzunehmenden Möglichkeit haben heranreifen lassen, Software zu entwickeln: Plattformunabhängigkeit, die Möglichkeit Sensoren auszulesen und der kontextabhängige Editor, mit dem sich selbst auf kleinen Touch-Displays sehr schnell Ergebnisse erzielen lassen.

Diese Session bietet einen Einstieg mit Touch Develop  in die Zukunft der mobilen Softwareentwicklung.

How to turn virtually ANY website you like into a real Windows Phone app in only minutes

Despite the rest of the content on this blog, this article is written in english for the simple reason of reaching more people, because this topic is widely unknown and just needs to be shared. So read carefully because I am going to show you a way of turning virtually any website you like into a real Windows Phone app in no time.

Any website?

Technically speaken: Yes. Any website. However, a lot of websites have static content. Those sites aren’t really interesting enough to invest time turning them in to a real Windows Phone app. Even if it’s only minutes we are talking about. So what types of websites are we interested in then? Websites that regularily add content of course. Websites that run blogs, news sites or company sites that continuously post new articles about interesting topics or products.

So what’s the trick?

No trick. You only have to know about two things:

  1. There is App Studio. A web application made available by Microsoft that allows you to create Windows Phone AND Windows 8 apps in (almost) no time (more on that later).
  2. App Studio is able to work with static as well as dynamic content. The latter is realized by configuring syndication feeds as data source.

While most people already know about syndication feeds (aka RSS feeds) and realized that most blogs offer those feed URLs to extend their reach, think about this: Even websites that do NOT offer RSS feeds most often add content in a constantly recurring way. So why not simply generate a feed on our own… and have that feed set as data source for our Windows Phone app?

So there’s a trick after all.

If this can be called a trick, then yes, there actually is. Let’s have a look at an example. The town, I am living in has a small yet popular cinema. It is called Beluga (yes, just like the whale). Of course the Beluga has a website that also shows their current program. The program of the current week is published here. I always wanted to have a simple (real) Windows Phone app that only shows this program. What follows is a Step by Step explanation about what I did to realize this app in less than 30 minutes.

Preview

 

Step 1 – The Syndication Feed

At first, I thought about creating a WCF service that parses the website, generates a syndication feed and host it on Windows Azure. This is generally a great idea. However, Windows Azure is not a free service and while an early prototype of the WCF service actually worked pretty well, I thought again. I couldn’t be the only one who needed a feed for a website that doesn’t offer one itself. And wouldn’t it be neat creating some sort of wizard that allows to define dynamic rules so that a feed can be created in no time for any website? Well… actually others did think about this as well and one of the best services I could find that does exactly this, is feed43.com (pronounced feed for free).

So I registered on feed43.com, entered http://www.beluga-kino.de/index.php?show=week as source page address and had a look at its html code. It took me a little while to find out how the rule engine at feed43.com works. This is what I came up with:

Extraction rules > Global Search Pattern:

<h3>{%}<div id='icons'>

 

This pattern reduces the area of the site to look for recurring items to all content between the <h3> tag and the <div> tag that follows right after the weeks’ program.

Extraction rules > Item (repeatable) Search Pattern:

<div class='plakat'>{*}<img src='{%}'{*}<h2>{*}href='{%}'{*}'>{%}</a></h2>{%}<table

 

While this might look complicate at first sight, it is actually pretty easy to understand (although I am confident there are more elegant ways of describing the items on specifically this site, but whatever… it works, so why complain?). Every % character defines a snippet to extract, so there will be four snippets made available as %1 to %4. The * mark areas to skip and make it easy to navigate through the content of the html code.

On this specific website, this rule extracts the following contents:

%1: Source of the image tag to the movies’ film poster

%2: Link to the movies’ details

%3: The movies’ title

%4: The movies’ short description

These templates can be used now to create the syndication feed. Feel free to have a look at the result here.

Step 2 – The Windows Phone app

Of course, I am already registered as a Windows Phone developer (are you?). In case you are not registered yet, this would be a good time to do so. For this article it is perfectly alright to only register on http://appstudio.windowsphone.com as I am using this service to create this little app anyway.

Logging into App Studio gives us a lot of options. I didn’t choose one of the production ready templates but rather started from scratch using an empty app. I created an application logo, provided an app title and created exactly one section called “Wochenprogramm” (weekly program). This section only has two pages: One for the overview about all movies for this week and another showing details. What’s great about AppStudio is the integrated preview of what people will see on their phone. This works in realtime. no kidding. Go ahead and click around the preview and actually try out the settings you make.

Here is the configuration I added for the two pages:

AppStudio_Content_Page_1

 

AppStudio_Content_Page_2

As Datasource, I entered the address for the syndication feed provided by feed43.com: http://www.feed43.com/beluga-kino.xml.

On the Themes tab, I choose to use a custom background image. Fortunately, App Studio offers to either upload an own image from your computer or even OneDrive, or to select an image from the App Studio resources (which I did).

On the Tiles tab, I uploaded some template images I created using Gimp.

On the Publish Info tab, I added some description text and then went straight to the Finish section pressing the respective button on the top right of the site.

Step 3 - Finishing

What makes App Studio really great is that you can get your app right on your phone in virtually no time. All you have to do is touch the Generate button, scan the generated QR code with your phone and simply agree to install the app on your phone.

If this is the first time you do this, you might have to install the Microsoft Corporate Certificate first so that side loading of apps generated with App Studio is possible. However, App Studio explains how to do this (Spoiler: By clicking a link on your phone provided with an email sent automatically. Yes, it is really that simple).

What makes App Studio even better, is that you can even download a publishing package for your app that you can use to publish it into the Windows Phone store. Keep in mind however, that there are some criterias that your app must meet to comply with the Windows Phone Store publishing rules. Also, if you want to publish your app into the store, you will have to register for a real Windows Phone developer account (which costs about 15 USD per year at the time of this writing).

What makes App Studio even more better, is that you can also download a source code package of your generated app. You can use Visual Studio 2013 (or even the express edition) to open the solution and start improving the app by writing real code (if you carefully followed this article and also had a look at the video linked at the top, you might have noticed a little modification I achieved by altering the generated source code of this sample app).

Conclusion

Although this article didn’t provide you with a lab tutorial that you can follow, you should get the idea: It is amazingly simple to create Windows Phone apps. And even if you like to create apps for your favourite websites, the tools are there.

One word of warning though: If you plan to create a Windows Phone or even a Windows 8 app that uses content from an external source, always keep in mind that you need the owners’ permission for any usage whatsoever.

Wie erstelle ich ein Video zu einer Windows Phone App

Vor kurzem hat Microsoft mit Windows Phone 8.1 ein Update für seine mobile Plattform (zunächst für Softwareentwickler) veröffentlicht, das den Namen Update eigentlich nicht verdient. Es wurde vielerorts davon berichtet, dass sich ein Windows Phone mit dem OS 8.1 praktisch wie ein ganz neues Gerät anfühle. Das kann ich bestätigen. Aber ohne viel auf die Liste neuer Features einzugehen (das haben andere bereits zur Genüge getan), möchte ich kurz ein Thema ansprechen, das bei vielen (Entwicklern) zu Kopfzerbrechen führt:

Wie zeichne ich den Windows Phone Bildschirm auf?

Nachdem ich zu einem der neuen Features ein kurzes Video gedreht habe, möchte ich ein paar Tipps geben, mit denen es jedem Entwickler leichter fallen wird, für z.B. Youtube ein passendes kleines Video zu den eigenen Apps zu erstellen.

Hier zunächst das Ergebnis:

Die App wurde für dieses Video einfach in einem Windows Phone Emulator gezeigt. Der Vorteil gegenüber z.B. der ProjectMyScreen App von Microsoft ist z.B. der, dass der Emulator u.a. keine privaten Daten zeigt und damit zu jeder Zeit für solche Zwecke genutzt werden kann. Ein Nachteil kann sein, dass man durch die Virtualisierung auch Performanceverluste zu verzeichnen hat. Die Aufzeichnung kann dabei beispielsweise mit der frei erhältlichen Software CamStudio erfolgen. Die Positionierung des Emulators und korrekte Einstellungen der Recordersoftware sind dabei das A und O.

Und so klappt das ganz einfach:

Als kleines Hilfsmittel habe ich mir ein Wallpaper für meinen Desktop erstellt. Die Größe entspricht meiner Bildschirmauflösung (1.600 x 900). Das Bild ist weiß. Die Zielauflösung des Videos (in meinem Fall: 1.280 x 768) habe ich als schwarzes Rechteck eingebettet und Markierungen ergänzt für die Position des Rechteckes:


 

Den gestarteten Emulator habe ich einfach auf diesem Rechteck so platziert, dass der Emulator selbst im Rechteck positioniert ist, dessen Steuerelemente aber außerhalb. Auf die Art entsteht links vom Emulator genug Freifläche für z.B. Texte oder ähnliches.

 

 

Der Trick ist nun, CamStudio korrekt zu konfigurieren. Unter Region gibt es den Menüpunkt Fixed Region. Hier lassen sich via Fixed Top-Left Corner die obere Linke Ecke festlegen (die wir ja aus dem Bild kennen) und mit Width und Height der Bereich definieren (1.280 x 768).

Um nun wie im Video den Mauszeiger als gelben Kreis hervorzuheben, ist es erforderlich, unter Options im Menüpunkt Cursor Options die Option Hightlight Cursor zu selektieren. Das Problem ist allerdings, dass das Highlighting nur bei sichtbarem Cursor angezeigt wird. Und wir wollen ja keinen Mauszeiger sehen. Ein Trick ist es daher mit z.B. Gimp ein 1x1 Pixel großes transparentes Bild zu erstellen und als Cursor From File in CamStudio zu laden.

Vorteilhaft ist es nun auch noch, das Starten und Stoppen der Aufzeichnung als Tastenkürzel zu konfigurieren. Allerdings zeigt CamStudio dann Bestätigungsfenster an, die ich in diesem Fall in der Postproduction herausgeschnitten habe. Hierzu eignet sich hervorragend die Software Video Deluxe von MAGIX.

Das war es auch schon. Ein paar Tricks hier und da und schon steht dem eigenen App-Video nichts mehr im Wege.

Hast Du weitere Tipps? Hast Du mit anderer Software bessere Erfahrungen gemacht? Einfach in die Comments schreiben!

Über die Autoren

Christian Jacob ist Leiter des Geschäftsbereiches Softwarearchitektur und -entwicklung und zieht als Trainer im Kontext der .NET Entwicklung sowie ALM-Themen Projekte auf links.

Marcus Jacob fokussiert sich auf die Entwicklung von Office-Addins sowie Windows Phone Apps und gilt bei uns als der Bezwinger von Windows Installer Xml.

Martin Kratsch engagiert sich für das Thema Projektmanagement mit dem Team Foundation Server und bringt mit seinen Java- und iOS-Kenntnissen Farbe in unser ansonsten von .NET geprägtes Team.

Aktuelle Kommentare

Comment RSS