Agile Softwareentwicklung mit C#

Gary McLean Hall zeigt in seinem ansprechenden und kurzweiligen Buch "Agile Softwareentwicklung mit C#" aktuelle Methoden und Vorgehensweisen der Softwareentwicklung im Einklang mit der .NET-Plattform.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 5 Min.
Von
  • Robin Sedlaczek
Inhaltsverzeichnis

Gary McLean Hall
Agile Softwareentwicklung mit C#

Microsoft Press, 2015
462 Seiten, € 39,90
ISBN 978-3-86490-285-7

Gary McLean Hall, seines Zeichens langjähriger und erfahrener Experte der .NET-Platfform, mit einschlägigen Erfahrungen in Firmen wie LateRooms.com, Nephila Capital und Beautiful Games Studio, zeigt in seinem neuen Buch "Agile Softwareentwicklung mit C#" aktuelle Methoden und Vorgehensweisen der Softwareentwicklung im Einklang mit der .NET-Plattform. Im Buch, das im Original von Microsoft Press und im Deutschen vom dpunkt.verlag veröffentlicht wurde, verdichtet der Autor auf 448 Seiten die wichtigsten Prinzipien moderner Softwareentwicklung. Das Buch ist in 4 Themenbereiche gegliedert, wobei die ersten zwei Bereiche den Hauptteil des Werkes darstellen.

Im ersten Teil geht der Autor auf die Grundlagen agiler Softwareentwicklung ein. Dabei geht es zuerst um agile Prozesse. Gemeint sind strukturierte Vorgehensweisen in der Softwareentwicklung. Moderne Prozesse zeichnen sich durch ihre Agilität aus. Um einen solchen Prozess zu zeigen, wird Scrum als Beispiel gewählt. Ausgehend von klassischen Prozessmodellen, dem Wasserfallmodell, werden die Vorteile von Scrum aufgeführt. Dazu gibt es eine recht genaue Beschreibung des Prozesses, ausgehend von den Rollen über Artefakte wie Features, User Stories, Tasks, Defekte, Backlogs und Burn-Down-Diagramme hin zum iterativen Vorgehen in Sprints und seiner Anwendung in einem agilen Team. Auch Nachteile des Prozesses und Vorbedingungen für den Einsatz von Scrum werden erläutert.

Dieser Teil ist rein theoretisch, leider fehlt ein Bezug zum Beispiel zum Einsatz von Scrum mit Visual Studio und dem Team Foundation Server. Anschließend wird es dann technisch. Der Autor erklärt in zwei Kapiteln, was Softwarekomponenten sind, was Abhängigkeiten zwischen ihnen bedeuten und wie diese mittels Schnittstellen und modernen Entwurfsmustern entkoppelt werden können, um zu einer flexiblen und erweiterbaren Anwendungsarchitektur zu gelangen, in der Änderungen und Erweiterungen willkommen sind. Themen wie statische und dynamische Typisierung, Mixins und Fluent Interfaces finden hier ihren Platz. Das Ganze wird mit UML-Diagrammen, Codebeispielen und Vorgehensweise im Visual Studio veranschaulicht.

Im letzten Kapitel des ersten Teils geht es dann um Unit-Tests und Refaktorisierung. Prinzipien und Vorgehensweisen im Unit-Testing, wie testgetriebene Entwicklung, Fake-Implementierungen und Mocking-Frameworks werden als Mittel aufgezeigt, um eine nachhaltige Qualität, auch nach Rafaktorisierungen aufgrund von Erweiterungs- und Änderungsanforderungen, in einem Softwareprojekt zu gewährleisten.

Der zweite Teil des Buches ist mit fünf Kapiteln ganz den SOLID-Prinzipien gewidmet. SOLID steht für Single-Responsibility-Prinzip, Open/Closed-Prinzip, Liskovsches Substitutionsprinzip, Interface Segregation und Dependency Injection. Der Autor beschreibt wieder anhand zahlreicher UML-Diagramme und Codebeispiele, was diese Prinzipien bedeuten, welche Auswirkungen Verstöße gegen die Prinzipien haben können und wie man diesen am besten, etwa mit gängigen Software-Pattern, begegnet.

In diesem Abschnitt geht es ans Eingemachte der objektorientierten Softwareentwicklung. Der Autor schafft es, diese teils recht akademischen Themen anschaulich und verständlich dem Leser zu erläutern. Dabei baut er auf den im ersten Teil vermittelten Grundlagen auf und führt diese konsequent durch die besagten Prinzipien, um schließlich zu flexiblen und erweiterbaren Softwarearchitekturen zu gelangen. Stichworte Schnittstellen, Komponenten, Entkopplung, Ersetzbarkeit und Erweiterbarkeit.

Im dritten Teil des Buches beschreibt der Autor ein fiktives praktisches Beispiel. Darin findet sich ein kleines Team zusammen, das eine Anwendung entwickeln soll. Dargestellt wird das Beispiel in der Dialogform, wobei die Teammitglieder miteinander kommunizieren. In diesem Beispiel werden viele fachliche Themen des Buchs in ein fiktives Szenario gegossen. Der Leser wird damit in eine durchaus reale Szene gezogen: von der Teamfindung über die Anforderungsanalyse bis hin zu Sprint-Planungen, Diskussionen über den Softwareentwurf, die Durchführung der Sprints und deren Auswertung. Dieser Abschnitt ist sehr anschaulich, könnte jedoch etwas umfangreicher sein.

Im Anhang geht es dann noch einmal um den Einsatz von Git als Versionsverwaltung und den Aufbau eines Continuous-Integration-Szenarios. Dieser Abschnitt gibt einen kurzen Einblick in dieses wichtige Thema, ist sicher aber nicht Bestandteil des Buches. Mit diesen Themen sind andere Bücher gefüllt.

Das Buch ist ein durchaus gut strukturiertes und anschauliches Buch. Die wichtigsten Themen moderner Softwareentwicklung werden entlang eines roten Fadens erläutert, angewandte akademische Themen werden anschaulich und greifbar dem Leser dargestellt, der damit in die Lage versetzt wird, Entsprechendes anzuwenden. Alle Themen werden mit UML-Diagrammen und Codebeispielen nachvollziehbar erläutert. Anti-Patterns und schlecht riechender Code werden aufgezeigt, und das ganze Buch ist durchzogen von Entwurfsmustern.

Der Autor zeigt dazu passend zur Problemstellung die entsprechenden Muster, mit denen das Problem gelöst werden kann. Das Ganze dann im Kontext von C# und Visual Studio – ein wirklich sehr ansprechendes und kurzweiliges Buch.

Robin Sedlaczek
hat 15 Jahre Erfahrung als professioneller Softwareentwickler, leitete einige Softwareprojekte und arbeitet seit 4 Jahren als CTO bei der Fairmas GmbH. In seiner Freizeit vermittelt er sein Wissen in Fachvorträgen, Onlinekursen, Fachartikeln und in seinem Blog.
(ane)