Frustfreie Web.config auch im Team

Eine sehr nützliche Funktion im Visual Studio und MSBuild ist die Möglichkeit, bei der Veröffentlichung von Webseiten die Web.config entsprechend der gewählten Zielkonfiguration automatisch anpassen zu lassen. Der Vorgang nennt sich Transformation und beschreibt im Prinzip nichts weiter als anhand von Transform-Dateien die Web.config zu verändern. Das Prinzip ist identisch mit der bekannten Xml Transformation mittels XSLT (in Visual Studio heißt nur alles wieder mal anders).

Während das Konzept beim Web-Publishing bereits sinnvoll ist (um z.B. für Debug, Release, Stage, etc. unterschiedliche Konfigurationen parat zu haben), wäre der Einsatz während der Entwicklung selbst allerdings genauso praktisch. Beispielsweise könnten einzelne Teammitglieder unterschiedliche lokale Entwickler-Datenbankinstanzen haben, die sich auf die ConnectionStrings in der Web.config auswirken. Das Problem, das daraus i.d.R. entsteht, ist, dass jeder Entwickler die Web.config bei sich lokal anpasst und dadurch auscheckt. Sollte sie dann “aus Versehen” mal mit eingecheckt werden, klappt bei anderen Entwicklern im Zweifelsfall die Datenbankverbindung nicht mehr, sobald sie ihren Workspace aktualisieren. Im schlimmsten Fall werden dadurch Basisänderungen an der Web.config überschrieben wenn man nicht aufpasst.

Die Lösung für dieses Problem wäre, jedem Entwickler eine eigene Transform-Datei bereitzustellen und dafür zu sorgen, dass personenabhängige Einstellungen ausschließlich darin stattfinden. Dazu muss die Web.config allerdings zur Compilezeit generiert werden und darf zudem nicht mehr Teil der Quellcodeverwaltung sein.

Wie das im Einzelnen funktioniert zeigt folgende Schritt für Schritt Anleitung:

Das Publishing Target und die Config Transformation lokal konfiguriert

Kostenlose Aufzeichnungen der #msts14 - Jetzt weiterbilden!

Nur kurze Zeit nach der Microsoft Technical Summit 2014 wurden auf Channel 9 wie versprochen die Aufzeichnungen zu den Sessions veröffentlicht. Sowohl die Videos als auch die Präsentationen sind übersichtlich in der Agenda zu der Veranstaltung verlinkt.

Unseren Beitrag zum Microsoft Fakes Isolation Framework gibt es dort ebenfalls zu sehen. Viel Spaß beim Anschauen (wir hatten auf jeden Fall Spaß beim Halten der Session)! 

Microsoft Technical Summit 2014 - Pre-Review und ein Announcement!

Diese Woche findet vom 11.11.2014 bis zum 13.11.2014 in Berlin die Technical Summit 2014 statt. Microsoft hat bekannter Weise die Visual Studio Evolution mit der TechNet Conference zusammengelegt und lädt diese Woche für drei Tage Softwareentwickler und IT Infrastrukturspezialisten gemeinsam ein, von Experten aufregende und z.T. neue Technologien vorgestellt zu bekommen. Die Agenda zeigt dabei nicht nur einen Querschnitt durch alle relevanten Technologien, sondern auch das Who is Who der Speaker-Szene.

Die angebotenen Sessions bewegten sich inhaltlich von Einstiegs-Themen bis hin zu Deep Dives und auch zukunftsorientierten Bereichen wie IoT (Internet of Things) und Application Insights (im Zusammenhang mit Predictive Analytics und den entsprechenden Angeboten via Microsoft Azure).

Uns hat die Konferenz sehr gefallen und wenn wir auch nicht die ganze Zeit da waren, konnten wir den Dienstag immerhin nutzen, um ebenfalls als Speaker dem interessierten Publikum erneut das Microsoft Mocking Framework Fakes näherzubringen. Nachdem wir einige technische Hürden genommen haben (merke: Immer einen Displayport-Adapter dabei haben), konnten wir neben einer kleinen Historie einen umfangreichen Einstieg in Microsoft Fakes liefern inkl. spannender Informationen über Microsoft Pex. Pex hat im Zusammenspiel mit dem Fakes-Vorläufer Moles das Leben eines Softwareentwicklers beim Schreiben von Unit Tests enorm erleichtert. Die Pex Engine ermöglichte es, Codepfade automatisch analysieren zu lassen, um auf der Basis sogar Grundgerüste für sinnvolle Unit-Tests zu generieren. Microsoft sprach bei Pex (Program Exploration) von einem Whitebox Testing Tool. 

Announcement

Durch die Produktifizierung von Moles ist Pex lange Zeit auf der Strecke geblieben. Bis vor kurzem gab es lediglich ein kostenlos erhältliches Addin über die Visual Studio Gallery, das auf die Pex Engine aufsetzt und mit Visual Studio 2013 kompatibel ist. Code Digger - so der Name - stellte einen eingeschränkten Funktionsumfang von Pex zur Verfügung.

Zusammen mit der heutigen Ankündigung von Visual Studio 2015 und der neuen Community Edition (die die Express SKU ersetzt) wurde angekündigt, dass Pex nachzieht! Microsoft spricht an dieser Stelle von Smart Unit Tests und dieses Feature ist großartig!

With Visual Studio 2015 preview, we have introduced Smart Unit Tests. Explore your .NET code to generate test data and a suite of unit tests. For every statement in the code, a test input is generated that will execute that statement. A case analysis is performed for every conditional branch in the code. For example, if statements, assertions, and all operations that can throw exceptions are analyzed. This analysis is used to generate test data for a parameterized unit test for each of your methods, creating unit tests with maximum code coverage. Then you bring your domain knowledge to improve these unit tests.

Details dazu wie das funktioniert, finden sich hier und in den kommenden Tagen auch auf diesem Blog.

Wir gehen jetzt erst einmal feiern!

Update

Vielen Dank an Tao Xie, dem dritten im Bunde hinter Microsoft Pex & Fakes neben Nikolai Tillmann und Jonathan "Peli" de Halleaux, für die Veröffentlichung eines spannenden Dokuments mit Informationen zum Migrationspfad von Pex zu Fakes und Code Digger (Jetzt: Smart Unit Tests). Das kostenlose Dokument gibt es hier zum Download.

Top n NuGet Pakete, die jeder kennen sollte

In diesem Beitrag wird sukzessive eine Liste sinnvoller NuGet Pakete erstellt (und kontinuierlich ergänzt), die jeder kennen sollte. Nachdem bereits ältere Posts regelmäßig bei eigenen Recherchen zu Themen immer wieder auftauchen, hat sich gezeigt, dass unser Blog sich hervorragend als externes Gedächtnis eignet. Und da nicht nur wir draufschauen, haben alle etwas davon.

Vorschläge für weitere Pakete? Comment please and subscribe.

Und los geht's:

  1. Newtonsoft Json.NET
  2. Fody
  3. ...

Newtonsoft Json.NET

Bei Json.NET handelt es sich um eine Bibliothek, die die Arbeit mit Json deutlich vereinfacht. (De-) Serialisierung, Schema-Validierung und Linq2Json werden damit zum Kinderspiel. Via NuGet einfach eingerichtet ist die Bibliothek verfügbar für Windows und Windows Phone (auch als Portable Class Library).

Fody

Fody ist eine IL Weaver Bibliothek. Als solche füllt sie eine Lücke, die das .NET Framework durch fehlende AOP (Aspekt Orientierte Programmierung) mitbringt: Verschiedene Fody Plugins vereinfachen den Umgang mit Cross Cutting Concerns wie z.B. der Implementierung des INotifyPropertyChanged Interfaces bei datengebundenen Applikationen (PropertyChanged.Fody)

 

Jahresgebühr entfällt. Mitgliedschaft im Windows Dev Center Programm auf Lebenszeit!

Gestern hat der General Manager für Windows Apps und Store, Todd Brix, bekanntgegeben, dass künftig keine Jahresgebühr mehr fällig wird, um im Dev Center Programm Mitglied zu sein. Nachdem bereits vor einiger Zeit die Programme für Windows und Windows Phone Entwicklung zusammengeführt wurden, war das der nächste logische Schritt.

Nach einer einmaligen Gebühr von gerade mal 14 Euro Netto fallen somit ab sofort keine Folgekosten mehr an.

Benefits

Gleichzeitig hat Microsoft das Dev Center Benefits Programm gestartet, um die Möglichkeiten zur Entwicklung und Vermarktung von Apps zu verbessern. Die sog. Benefit Pakete teilen sich auf in Explorer, Expert und Master. Die Idee dahinter ist, Anfängern genau die Hilfestellung zu geben, die sie benötigen, um zügig in das Design und die notwendige Architektur für die Entwicklung von Windows und Windows Phone Apps einzusteigen. Das Bewerben von Apps und mögliche Publisher Verträge sind Bestandteil des Expert Levels, während im Master Paket der VIP Zugang zu Ressourcen wie Developer und Marketing Support und Early Access für SDKs freigeschaltet wird.

Details dazu und zu weiteren Optimierungen in diesem Kontext kann man hier nachlesen.

 

Stakeholder an die Macht – Projektbeteiligte erhalten kostenlosen Zugriff auf Visual Studio Online

Brian Harry berichtete nach der Early Adopter Phase Anfang Juli bereits davon, dass viele Projektzuordnungen von Mitarbeitern wieder aufgehoben wurden. Der Zusammenhang mit dem Ende der Einführungszeit war offensichtlich: Zuvor war der Zugriff kostenfrei, nun konnten “nur noch” bis zu fünf Nutzer gratis Visual Studio Online nutzen.

Da Microsoft allerdings erhöhten Reibungsverlusten in den Entwicklungsprojekten zuvorkommen möchte, hat Brian angekündigt, mit der Stakeholder Rolle eine neue Lizenz einzuführen, die es einer praktisch unlimitierten Anzahl Projektbeteiligter ermöglichen soll, weiterhin kostenfrei auf den gehosteten Team Foundation Server zuzugreifen und in allen für ihre Arbeit relevanten Belangen zu nutzen.

Assigning a stakeholder license

 

Als Stakeholder können Nutzer nun gegenüber der früheren Work Item Only View folgendes:

  • Die Projekt Homepage betrachten
  • Auf die meisten arbeitsrelevanten Funktionen zugreifen
  • Das Backlog einsehen
  • Einträge hinzufügen und bearbeiten
  • WorkItem-Abfragen erstellen und ausführen
  • Benachrichtigungen abonnieren

Aus unserer Sicht ist Microsoft mit der Einführung der Stakeholder Lizenz in VSO ein ganz großer Wurf gelungen, deren Umsetzung extrem schnell nach der initialen Ankündigung realisiert werden konnte. Dass diese Funktion mit dem kommenden Update sogar in weniger als einem halben Jahr danach On Premise verfügbar sein wird zeigt die enormen Vorteile der neuen Rapid Release Strategie von Microsoft.

Mehr Informationen darüber, welche Funktionen und Möglichkeiten den Projektbeteiligten nun offen stehen, finden sich auf der eigens dazu eingerichteten Landing Page.

#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. :)

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.

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. :)

 

Ü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