Codegenerierung aus Modeling Projects – Part 1

Visual Studio unterstützt die Generierung von Code aus einem Modeling Project heraus. Dabei kommen t4 Templates zum Einsatz. Diese können auch erweitert und angepasst werden. Hier eine kleine Anleitung, wie man sinnvoll Code aus einem Model generieren kann. In Teil 1 ist die Standardfunktionalität beschrieben. In Teil 2 werde ich die Anpassung von den T4-Templates beschreiben. In Teil 3 werde ich schließlich ein eigenes Profil mit eigenen Stereotypen erstellen und die Codegenerierung “customizen”. Beginnen Sie zunächst mit einem Package. Dem Package können folgende Eigenschaften zugewiesen werden: Der Name des Paketes entspricht dem C#-Namensraum und optional einem Ordner im Zielprojekt. Über … Continue reading Codegenerierung aus Modeling Projects – Part 1

Strukturelle Integrität

Wenn man als Entwickler in ein neues Projekt kommt, dann fällt es einem fast immer schwer sich im bestehenden Code zu orientieren. Entweder es gibt zu wenig Struktur, d.h. alle Dateien liegen in wenigen oder keinen Projekten/Ordnern, oder zu viel, d.h. alle Dateien verstecken sich hinter einer tiefen Struktur an Ordnern mit mehr oder weniger sinngebenden Namen. Deshalb die Frage: wie müssen wir Code strukturieren, dass sich neue Teammitglieder schnell und problemlos in der Struktur zurecht finden? Es geht mir an der Stelle jetzt erst mal gar nicht um die Aufteilung in eigene Komponenten. Dies alleine kann ganze Büche füllen. … Continue reading Strukturelle Integrität

Fluent Assertions

Was mir bei NUnit besser gefällt als bei MSTest ist die Aussagekraft von den Assertions. “Assert.That(something, Is.EqualTo(anotherthing);” finde ich viel aussagekräftiger als “Assert.AreEqual(anotherthing, something). Besonders die generischen Variante “Assert.AreEqual<string>(expectedstring, actualstring)” finde ich auf den ersten Blick nicht leicht verständlich. Deshalb kam ich auf die Idee eine eigene Lösung mit einem Fluent-Interface für MSTest zu entwickeln. Allerdings hat eine kurze Suche bei Google ergeben, das es hier schon etliches auf dem Markt gibt. Näher angesehen habe ich mir bisher Fluent Assertions. Die Lösung steht auf GitHub zur Verfügung – kann aber bequem über NuGet installiert werden. Die Lösung funktioniert sowohl mit … Continue reading Fluent Assertions

Wichtiger als Qualität?

Was gibt es wichtigeres als Qualität in der Softwareentwicklung? Wenn man die Frage so stellt, bekommt man immer “Nichts!” als Antwort. Trotzdem ist das dann aber nicht das, was wir in der Praxis sehen. Schulung? Keine Zeit. TDD? Keine Zeit. Code Reviews? Keine Zeit. Warum tappen wir in der Softwareentwicklung immer wieder in die gleiche Falle? Schlechte Qualität führt unweigerlich in eine Spirale. Es entstehen Bugs, die wir in nachfolgende Sprints oder schlimmstenfalls sogar Projekte “mitnehmen”. Diese Bugs sind extrem schwer zu planen. Sie sind viel Aufwändiger als gleich gute Qualität anzuliefern. Und sie hindern uns wieder daran “wichtiges” zu … Continue reading Wichtiger als Qualität?

Geschnitten oder am Stück?

Eine der großen Herausforderungen bei agiler Softwareentwicklung ist der Umgang mit Anforderungen. In der Theorie ist alles ganz einfach: die Anforderungen werden als UserStories definiert. Jede UserStory beschreibt ein Stück Software-Inkrement das auslieferbar ist und einen Kundennutzen erfüllt. Das Inkrement muss ein funktionierendes Stück Software sein, dass der Anwender “benutzen” kann. Abbildung 1 zeigt die Schematische Struktur in einer 3-Tier-Architektur. Abbildung 1: Erstellen von Software in Inkrementen Warum fällt es dann in der Praxis den meisten Entwicklern so schwer Inkremente für UserStories zu liefern? Schauen wir uns erst mal an, wie in den meisten Projekten Anforderungen in das “Backlog” gelangen. … Continue reading Geschnitten oder am Stück?

„Entwickler sind die schlechtesten Tester“

Diese Aussage habe ich noch vor einigen Jahren öfter benutzt. Die Argumentation war, dass Entwickler ja die zu entwickelnde Applikation kennen und deshalb immer nur das testen, was auch funktioniert. Wer mich kennt weiß, dass ich heute eine ganz gegenteilige Meinung habe. Aber warum? Testen ist ein elementarer Teil der Softwareentwicklung. So wie es niemandem einfallen würde einen nicht kompilierten C# Code an einen Kunden auszuliefern würde auch niemand eine ungetestet Software ausliefern. Jeder Entwickler testet deshalb auch den ganzen Tag. Alle paar Minuten (oder spätestens nach ein paar Stunden) wird wieder die neue Funktionalität getestet. Nur leider machen die … Continue reading „Entwickler sind die schlechtesten Tester“

Upgrade MCPD SharePoint Developer2010 to MCSD – SharePoint Apps

Laut meinem “Certification Planner” gibt es doch einen MCSD – SharePoint Apps. Auch wenn der auf der offiziellen Seite noch nicht aufgeführt ist. Drei Prüfungen sind dafür notwendig: #480, #489 und #488. Ist man bereits MCPD 2010, dann sind nur zwei zu absolvieren: #480 und #493. Continue reading Upgrade MCPD SharePoint Developer2010 to MCSD – SharePoint Apps

MCSD is back

Offensichtlich verabschiedet sich Microsoft wieder von der Trennung MCTS und MCPD und wir bekommen wieder unserer alten guten MCSD zurück. Folgende MCSD Varianten gibt es gerade: MCSD: Application Lifecycle Management MCSD: Web Applications MCSD: Windows Store Apps Außerdem gibt es den kleinen Bruder MTA (Microsoft Technology Associate): MTA development track—for those intending to build a career as a software developer, this track helps prepare you for hands-on product training and MCSD certification. Start with MTA Software Development Fundamentals and then select the additional topics in this track to help you meet your career development goals: Exam 98-361: Software Development Fundamentals … Continue reading MCSD is back