Archiv

Archive for the ‘.Net’ Category

Praktische Helfer rund um AngularJS

Wenn man sich ein wenig tiefer mit AngularJS beschäftigt stösst man bald einmal an eine steile Lernkurve. Was mit einfachem Data Binding angefangen hat wird plötzlich sehr kompliziert – vor allem wenn es an Direktiven geht. Mit den richtigen Helfern lässt sich allerdings viel vereinfachen. Einige dieser praktischen Werkzeuge und Pakete möchte ich heute vorstellen.

 

Batarang

Eines der häufigsten Probleme auf die ich treffe sind fehlende Daten. Objekte sind nicht dort wo ich sie erwarte oder Listen enthalten nicht die gewünschten Elemente. Aus einer kleinen Änderung wird so schnell eine endlose Suche nach dem Grund eines fehlgeschlagenen Data Bindings.

Batarang ist eine Erweiterung von Chrome und kann nicht nur als Profiler und Debugger verwendet werden, sondern auch zum anzeigen des Scopes. Dies vereinfacht die Suche nach den richtigen Objekten ungemein. Die Handhabung für die einfachen Aufgaben hat man sehr schnell im Griff, für alle anderen Möglichkeiten empfiehlt sich ein Blick in die Anleitung.

Batarang

 

Mehrere Browser zusammen verwenden

Als erstaunlich hilfreich hat sich für mich die Verwendung mehrerer verschiedener Browser erwiesen. Die Fehlermeldungen im Internet Explorer sind gelegentlich besser als die im Firefox, während dieser hin und wieder bessere Meldungen erzeugt als Chrome. Und um es richtig spannend zu machen liefert dann Chrome wiederum die besseren Meldungen als der Internet Explorer.

Kurzum: Um bei einem Problem die bestmögliche Unterstützung durch die Tools für Webentwickler zu bekommen muss man alle 3 Browser installiert haben. So kann man im Fehlerfall zwischen den Browsern hin und her wechseln bis man die Ursache des Problems angezeigt bekommt.

 

Plunker

Hin und wieder genügt der Debugger nicht und es führt nichts an einem 2. Paar Augen vorbei. Um ein Minimalbeispiel ohne grossen Aufwand zugänglich zu machen hat sich für mich der Service von Plunker (Plnkr.co) als äusserst hilfreich erwiesen.

Neben der Community-Funktion gibt es vor allem einen guten Editor der einem die aktuellsten Pakete von AngularJS, Bootstrap und vielen mehr einfach integrieren lässt. So kann man sehr schnell eingrenzen ob das Problem an der eigenen Installation liegt oder ob auch auf einem funktionierenden System die gleichen Probleme bestehen.

Plunker

 

ngMock

AngularJS hat ein eigenes Mocking-Framework. Gerade wenn man Webservices nutzt die nicht unter der eigenen Kontrolle stehen oder man auf eine aufwändige lokale Installation verzichten will ist ngMock eine gute Hilfe. Damit ersetz man zwar keine durchgängigen Tests, aber man kann Probleme eingrenzen die im eigenen Code liegen.

 

ngAnimate

Um den Wechsel zwischen den einzelnen Masken und Seiten ein wenig spannender zu gestalten kann einem ngAnimate viel Arbeit abnehmen. Die entsprechenden Hooks können direkt im Code mit der gewünschten Animation verknüpft werden, was einem sehr viel Tipparbeit erspart.

 

Animate.css

Wer wie ich nicht gerne CSS-Animationen von Hand schreibt sollte unbedingt die vorgefertigten Skripte von Animate.css ausprobieren. In diese Animationen wurde sehr viel Arbeit gesteckt um einen möglichst angenehmen Bewegungseffekt zu erzielen. Um darauf aufzubauen genügt es die entsprechende CSS-Datei einzubinden und an der passenden Stelle aufzurufen.

 

Jasmine

Das JavaScript-Testframework Jasmine hatte ich hier schon kurz beschrieben. Je mehr man mit AngularJS macht desto wichtiger wird es automatisch die bestehende Funktionalität zu überprüfen. Jasmine hat sich diesbezüglich bei mir bewährt und ich kann dieses Framework nur empfehlen.

 

Fazit

Mit den richtigen Werkzeugen kann man auch bei AngularJS viel Zeit und Frust einsparen. Da diese alle kostenlos zur Verfügung stehen gibt es keinen Grund nicht einmal einen Blick auf das eine oder andere Tool zu werfen.

Wie immer freue ich mich über weitere Vorschläge um meine Arbeit noch ein wenig einfacher zu gestalten.

Schlagworte: , ,

Von Zeit und Datenmengen

22. Juli 2014 Kommentare aus

Bei Datenmigrationen und der Batchverarbeitung kommen 2 Bereiche zusammen bei denen viele Entwickler (mich eingeschlossen) schnell an eine mentale Grenze stossen:

  • Zeit
  • Datenmenge

Wohl ist jedem bekannt das ein Tag 24 Stunden hat und ein Terabyte aus 1024 Gigabyte besteht. Und doch kommt es immer wieder zu bösen Überraschungen.

 

Eine Optimierung am Code ist reine Zeitverschwendung, da die Arbeit in einer Sekunde erledigt ist.

 

Wer hat nicht schon solche Aussagen gehört? Das Problem von dieser einen Sekunde ist nicht die Dauer. Das Problem liegt in der impliziten Aussage über die Geschwindigkeit. Eine Sekunde ist kurz, meine Arbeit gross und daraus folgt mein Code ist schnell. Wenn es so doch nur so einfach wäre…

 

Wie lange kann es auf der Produktion schon gehen wenn es auf dem Testsystem gar nicht messbar ist?

 

Ist die wohl noch schönere Frage. Wer schon einmal versuchte eine grössere Datenmenge zu migrieren kennt die unbequeme Antwort: Lange – viel zu lange.

 

Was genau messen wir?

Wie immer wenn etwas gemessen wird kommt es auf die Relevanz an. Ob 1 Sekunde schnell oder langsam ist hängt davon ab, was darin gemacht wurde. Wie viele Datensätze wurden verarbeitet? Und in welchem Verhältnis steht diese Datenmenge zum Zielsystem?

Die einzelnen Sekunden summieren sich sehr schnell, alles was es dazu braucht ist eine unterschiedliche Menge an Daten auf dem Test- und auf dem Produktionssystem. Bei einem linearen Anstieg wächst die Verarbeitungsdauer gleichmässig mit der Datenmenge. Verdoppelt sich die Datenmenge, verdoppelt sich auch die Verarbeitungsdauer. Hat man 60x mehr Daten in der Produktion als auf dem Testsystem wird aus dieser einen Sekunde bei der Einführung eine Minute.

 

Eine Hochrechnungstabelle

Was passiert aber wenn man statt auf dem Testsystem auf dem Entwicklungssystem gemessen hat? Da ist das Verhältnis vielleicht nicht 1:60, sondern 1:1’000, 1:10’000 oder gar 1:100’000. Wie lange waren nochmal 100’000 Sekunden?

Diese kleine Hochrechnungstabelle nimmt das Rechenbeispiel auf und geht von einer Sekunde für eine bestimmte Menge von Daten aus. 10x mehr Daten ergeben den Faktor 10, der für diesen linearen Anstieg auch in einer 10x längeren Dauer resultiert:

Faktor Datenmenge Dauer
1 00:00:01
10 00:00:10
100 00:01:40
1’000 00:16:40
10’000 02:46:40
100’000 27:46:40 oder 1 Tag 03:46:40
1’000’000 277:46:40 oder 11 Tage 13:46:40

Die 100’000x mehr Daten machen aus der getesteten Sekunde bei der Einführung eine Aufgabe die sich in einem Tag nicht mehr abschliessen lässt. Aber schon bei 10’000x mehr Daten dürfte so mancher Einführungsplan in den kritischen Bereich kommen.

 

Probleme vermeiden

Diese Probleme lassen sich am einfachsten dadurch vermeiden, dass man die Performance-Messungen auf vergleichbaren Systemen mit vergleichbaren Datenmengen macht.

Ist es nicht möglich muss man die Werte entsprechend umrechnen. Dies ist viel aufwändiger und weniger genau, aber immer noch besser als sich einzureden die Arbeit sei in einer Sekunde erledigt. Dabei gilt es aber nicht nur die Datenmenge zu bedenken. SSD-Festplatten sind gerade in Kombination mit kleinen Datenmengen deutlich schneller als so manche Server-Festplatte. Von CPU, Netzwerk und Systemdiensten die auch noch laufen ganz zu schweigen.

 

Fazit

Wenn man eine Performance-Messung nur auf die Dauer reduziert führt dies zu völlig falschen Annahmen. Um lange Wartezeiten bei der produktiven Einführung zu verhindern muss daher unbedingt beachtet werden wie sich die Daten und Systeme gegenüber der Produktion unterschieden. Mehr Daten bedeutet eine längere Verarbeitungszeit. Und nur weil es auf irgendeinem System schnell ist bedeutet dies nicht automatisch das man aufs optimieren verzichten kann. Ganz abgesehen davon dass eine exponentielle Zunahme der Verarbeitungszeit alles noch viel schlimmer macht…

 

Schlagworte: ,

Tipps für die Vorbereitung der Zertifizierungen 70-480 (HTML5 & JavaScript) und 70-492 (Upgrade MCSD: Web Applications)

30. Juni 2014 Kommentare aus

Nach gut 2 Jahren SharePoint war es wieder an der Zeit mein Wissen bezüglich Webanwendungen auf einen aktuellen Stand zu bringen. Ich nutzte diese Gelegenheit um auch gleich meine Microsoft-Zertifizierungen zu aktualisieren. Die dabei gewonnenen Erkenntnisse bei der Prüfungsvorbereitung sind das Thema dieses Beitrages.

 

Sinn und Zweck der Zertifizierungen

Zertifizierungen haben nicht gerade einen guten Ruf. Geht es dann noch um eine Zertifizierung von Microsoft über ein Thema wie HTML5 nimmt das Verständnis nochmals deutlich ab. Zu viel machte Microsoft im letzten Jahrzehnt in diesem Bereich falsch. In den letzten Jahren hat aber ein gründliches umdenken stattgefunden, das glücklicherweise nicht nur auf die Entwicklungsabteilung von Microsoft beschränkt ist. Bei der Zertifizierung 70-480 geht es um HTML5 und nicht ein nur von Microsoft verwendete Teilmenge. Man kann das gelernte somit auch problemlos bei einem Rails-Projekt einsetzen.

Für mich liegt der Sinn dieser Zertifizierungen darin, dass man sich mit der ganzen Bandbreite der jeweiligen Technologie auseinandersetzen muss. Im Alltagseinsatz nutzt man oft nur wenige Funktionen und beschränkt seine Lösungen auf das bekannte. Muss man sich aber mit allen Web-Frameworks von Microsoft beschäftigen entdeckt man neue Möglichkeiten um passendere Lösungen zu entwickeln. Das geht allerdings nur wenn man sich in der Vorbereitungsphase vertieft mit der Materie beschäftigt – nur einen Braindump auswendig lernen genügt da nicht.

 

Starker Praxisbezug

Die neuste Generation der Microsoft-Zertifizierungen ist äusserst praxisbezogen. Ohne praktische Kenntnisse und Programmiererfahrung kann man diese Prüfungen nicht bestehen. Die Fragen gehen stellenweise sehr in die Details, im Gegensatz zu früher aber ausnahmslos in relevante Bereiche die jedem bekannt sind der die entsprechende Technologie bereits verwendet hat.

 

Vorbereiten auf 70-480

Die erste Anlaufstelle ist noch immer die Prüfungsseite. Darin werden die geprüften Themen aufgeführt und es finden sich Links zu Büchern und Vorbereitungskursen. Die Bücher brachten mich bei dieser Zertifizierung allerdings nicht weiter. Der “Training Guide” ist nicht für die Prüfung gedacht und das Buch “Exam Ref 70-480″ ist nach mehreren Verschiebungen wohl frühestens Ende Juli erhältlich. Als Alternative kann ich diese 3 Bücher empfehlen

Basierend auf der Liste der bewerteten Fähigkeiten habe ich auf GitHub eine Linksammlung und zahlreiche Beispiele zusammengetragen. In Kombination mit den Übungsfragen von MeasureUp und sehr vielen praktischen Übungen habe ich mir das benötigte Wissen aufgebaut und die Prüfung erfolgreich bestanden.

 

Vorbereitung 70-492

Das Upgrade von MCPD Web Developer 4 auf MCSE Web Applications war eine grössere Herausforderung, da hier 2 Zertifizierungen (70-486 zu ASP.Net MVC 4 und 70-487 zu Azure und Web Services) kombiniert werden. Um es richtig spannend zu machen werden diese Teile einzeln bewertet und die schlechtere Punktezahl ist entscheidend für das bestehen der Prüfung.

Die Themenvielfalt der bewerteten Fähigkeit auf der Prüfungsseite erstaunt daher nicht. Allerdings gibt es für einmal weder passende Bücher noch entsprechende Übungsfragen. Ich konnte diese Lücke mit den vielen Kursen von Pluralsight rund um Azure, ASP.Net MVC und Web API füllen. Dies benötigte zwar viel Zeit, allerdings kann ich einige der präsentierten Ansätze ohne grosse Änderungen direkt für produktive Zwecke verwenden. Die Namen der entsprechenden Kurse habe ich zusammen mit der Linkliste ebenfalls auf GitHub veröffentlicht.

Rückblickend wäre es wohl dennoch einfacher gewesen die entsprechenden Übungsfragen und Exam Ref Bücher zu 70-486 und 70-487 zu verwenden.

 

Fazit

Gegenüber den 2010er Zertifizierungen haben die Prüfungsfragen an Praxisbezug gewonnen und fordern viel Wissen von den Kandidaten. Damit wächst aus meiner Sicht auch die Relevanz der aktuellen Microsoft-Zertifizierungen.

Neben fundierten Praxiskenntnissen ist für eine Vorbereitung aber auch ein genaues Studium der bewerteten Fähigkeit wichtig. Falls die von mir zusammengetragenen Links dabei helfen würde ich mich über eine entsprechende Rückmeldung freuen.

Schlagworte: ,

5 Podcasts für Software-Entwickler

17. Juni 2014 4 Kommentare

Podcasts sind für mich ein sehr angenehmes Format um mich auf dem Laufenden zu halten. Alles was es braucht ist eine Mobiltelefon und eine vernünftige App die Podcasts verwalten kann. Und natürlich die passenden Podcasts. Heute möchte ich 5 Podcasts vorstellen die ich regelmässig höre und ich für Software-Entwickler empfehlen kann.

Mir gefällt an diesen Podcasts vor allem der regelmässige Blick über den Tellerrand. Sich nicht nur auf ein spezifisches Thema oder eine Technologie zu limitieren macht angesichts der kurzen Halbwertszeit von Frameworks und Toolkits Sinn. So bleiben viele der besprochenen Themen auch dann noch relevant wenn wir schon den nächsten Hype vor uns haben.

 

Ruby Rogues

Ruby Rogues ist eine wöchentliche Diskussionsrunde die sich vorwiegend um Ruby dreht. Hat man sich einmal an das wilde Durcheinander gewöhnt schätzt man sehr bald den grossen Themenmix und das fundierte Wissen der Moderatoren.

Neben dem Book Club gefallen mir besonders die Episoden bei denen es um allgemeine Themen wie dem Lernen oder Software-Qualität geht. Hier kommen aus meiner Sicht die unterschiedlichen Erfahrungen der Rogues besonders gut hervor und ermöglichen sehr spannende Diskussionen.

Ein grosses Plus für diesen Podcast sind die Abschriften die es für jede Folge gibt. Damit kann man auch später einzelne Themen oder Links einfach finden ohne sich die genaue Folge merken zu müssen.

 

Hanselminutes

Scott Hanselman dürfte den meisten .Net Entwicklern durch seine Präsentationen rund um ASP.net bekannt sein. Sein Podcast Hanselminutes ist glücklicherweise keine Microsoft-Werbeveranstaltung sondern behandelt die Themen die ihn persönlich interessieren.

Jede Woche bespricht Scott mit einem Gast in rund 30 Minuten ein Thema aus dem IT-Bereich. Dabei ist es immer wieder erstaunlich mit wie viel Hintergrundwissen seine Gäste aufwarten können.

Besonders lustig wird es wenn Richard Campbell ein bis zwei Mal pro Jahr für eine Hanselminutiae Folge zu besuch kommt. Diese Gespräche über alles was die beiden gerade so machen sind sehr spannend und die Liste von Gadgets meist endlos.

 

This Developer’s Life

Leider nur sehr unregelmässig und mit grossen Pausen erscheint This Developer’s Life. Die Gemeinschaftsproduktion von Scott Hanselman und Rob Conery nimmt sich in rund einer Stunde grösseren Themen an, die einem meist sehr lange im Gedächtnis haften bleiben. Space, Typo, Cancer und Getting Fired sind nur eine kleine Auswahl der Themenvielfalt.

 

.Net Rocks!

Carl Franklin und Richard Campbell machen zusammen seit einer gefühlten Ewigkeit .Net Rocks. Thematisch sind die beiden in der .Net Welt beheimatet und kennen dort alles was Rang und Namen hat.

Mit 2 Folgen a 60 Minuten pro Woche ist es kaum möglich alle Folgen zu hören. Bei der Menge kann man aber problemlos einen “eigenen” Kanal mit ausgewählten Episoden zusammenstellen und hat immer noch genug Material.

 

Herding Code

Herding Code erscheint rund alle zwei Wochen und wird von K. Scott Allen, Kevin Dente, Scott Koon und Jon Galloway moderiert. Thematisch ist dieser Podcast noch mehr auf .Net fokussiert als .Net Rocks, was einem durch die unterschiedlichen Meinungen ein recht genaues Bild über das .Net Ökosystem liefert.

 
Soweit meine Liste mit Podcasts. Da auch ich gerne neue Podcasts kennen lernen sind weitere Empfehlungen sehr willkommen.

Schlagworte: , ,

Buch-Rezension zu “Training Guide: Programming in HTML5 with JavaScript and CSS3″

21. Mai 2014 Kommentare aus

HTML5 & CSS3 Training GuideWer sich für die Zertifizierung 70-480 “Programming in HTML5 with JavaScript and CSS3″ vorbereitet trifft bald einmal auf den gleichnamigen Training Guide von Glenn Johnson. Dieser ist nicht nur auf der offiziellen Seite zur Prüfung als Vorbereitungsmaterial aufgeführt, sondern folgt auch dem Aufbau der Trainingsbücher von Microsoft Press für die .Net 4 Zertifizierungen.

Diese Bücher waren mal besser und mal schlechter geeignet
um neben der Prüfung auch im Praxisalltag eingesetzt zu werden. Man konnte sich damit aber immer gut auf die Zertifizierung vorbereiten. Mit diesem Training Guide ist dies leider nicht der Fall.

 

Prüfungsumfang nicht abgedeckt

Noch im Intro gibt es einen kleinen und wichtigen Hinweis der gerne überlesen wird:

This book covers some of the topics and skills that are the subject of the Microsoft certification exam 70-480. If you are using this book to complement your study materials, you might find this information useful. Note that this book is designed to help you in the job role; it might not cover all exam topics.

Wie gross die Lücke zwischen Training Guide und Prüfung ist hängt von der Interpretation der bewerteten Fähigkeiten ab. Man wird aber kaum um zusätzliche Bücher und viel eigenen Code herumkommen um sich gut vorzubereiten.

Da das Buch aber dennoch sehr auf die Prüfung fokussiert ist sind in der Praxis zusammenhängende Arbeiten über mehrere Kapitel verstreut. Ein ständiges hin und her ist damit unvermeidlich und schmälert den Nutzen abseits der Zertifizierung erheblich.

 

Zielpublikum?

Bisher ist mir nicht klar an wen sich dieses Buch eigentlich richtet. Als Vorbereitung für die Prüfung fehlt zu viel, für den Praxisalltag passt die Struktur nicht. Da die Grundlagen ebenfalls nur unzureichend behandelt werden ist es auch nicht als Einstiegsbuch in die Themen HTML5 und CSS3 geeignet.

Übrig blieben somit noch die Entwickler die ihre ModernUI-Anwendungen nicht mehr in C# sondern in HTML5 und JavaScript schreiben wollen. Allerdings wird dieses Thema nur im 1. Kapitel behandelt und was dort steht hilft einem auch nur bei der Auswahl der richtigen Visual Studio Version.

 

Alternativen

Als zwingende Ergänzung und je nach Wissensstand auch als Alternative kann ich diese Bücher empfehlen:

In diesen 3 Büchern wird weit mehr behandelt als für die Zertifizierung notwendig ist, allerdings helfen einem diese Konzepte wartbaren Code zu schreiben. Den Zeitaufwand dürfte man so schnell eingespart haben.

 

Fazit

Trotz zahlreicher guter Erklärungen kann ich dieses Buch nicht weiterempfehlen. Der mit dem Titel implizierte Hauptzweck der Prüfungsvorbereitung wird zu wenig umgesetzt und als Praxisbuch sind die behandelten Themen zu verzettelt.

Wer sich weder für die Zertifizierung noch für Windows Store Apps interessiert findet mit “HTML 5 and CSS 3” eine deutlich bessere Alternative.

 

Zum Buch

Training Guide: Programming in HTML5 with JavaScript and CSS3” von Glenn Johnson, 2013 Microsoft Press, ISBN 978-0-7356-7438-7, 682 Seiten, Englisch

Schlagworte: , , ,

Heruntergeladene Assemblies entsperren

7. Mai 2014 Kommentare aus

Ein Sicherheitsfeature von Windows ist für Entwickler besonders mühsam: Die Blockierung von aus dem Internet geladenen .Net-Assemblies. Versucht man so eine *.dll in einem Visual Studio Projekt zu verwenden trifft man auf diese Fehlermeldung:

Error 172 Could not load the assembly file://**/*.dll. This assembly may have been downloaded from the Web. If an assembly has been downloaded from the Web, it is flagged by Windows as being a Web file, even if it resides on the local computer. This may prevent it from being used in your project. You can change this designation by changing the file properties. Only unblock assemblies that you trust. See http://go.microsoft.com/fwlink/?LinkId=179545 for more information.

 

Da sich der Entwickler ein wenig Zeit für eine sinnvolle Fehlermeldung genommen hat findet man im MSDN eine entsprechende Lösung. Für einzelne Dateien genügt es diese im Explorer zu öffnen und mittels Rechtsklick den Eigenschaften-Dialog zu öffnen. Dort wird einem der Zulassen-Knopf prominent angezeigt:

Datei von fremden Computern zulassen

Diese Lösung dürfte den meisten bekannt sein. So lange man nur wenige Dateien entsperren muss kommt man damit auch gut zurecht. Hat man allerdings ein Projekt mit unzähligen Assemblies, die noch für alle möglichen Windows-Plattformen in Unterprojekte gegliedert sind, braucht es etwas Besseres.

 

Streams

Um Dateien massenhaft und rekursiv über verschachtelte Ordner zu entsperren empfiehlt Microsoft das Tool “Streams” von Sysinternals. Auch wenn dies mittlerweile in die Jahre gekommen ist macht es seinen Job noch immer zuverlässig.

Nach dem herunterladen und installieren steht einem Streams als Konsolenanwendung zur Verfügung. Startet man das Tool ohne Parameter zeigt es einem die möglichen Optionen an:

C:\>D:\Pfad\zu\Streams\streams.exe
Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

usage: D:\Pfad\zu\Streams\streams.exe [-s] [-d] <file or directory>
-s     Recurse subdirectories
-d     Delete streams

Um den Ordner _DEV rekursiv zu entsperren genügt dieser Aufruf:

C:\>D:\Pfad\zu\Streams\streams.exe –s –d _DEV

 

Fazit

Ein an sich guter Schutz für Gelegenheitsanwender ist für Entwickler in der täglichen Arbeit ein Hindernis. Je nach Projekt wird man sehr häufig Dateien aus dem Internet herunterladen und jedes Assembly von Hand entsperren ist auf die Dauer nicht nur mühsam, sondern braucht auch viel Zeit. Mit einem Werkzeug wie Streams lässt sich dieses Problem aber glücklicherweise sehr einfach lösen.

Schlagworte: , ,

Code mittels NDepend analysieren

9. April 2014 1 Kommentar

Um möglichst schnell in ein komplexeres Projekt einzusteigen hilft einem eine gute Übersicht. Visual Studio bietet je nach Ausgabe eine recht gute Code Analyse. Will man mehr wissen oder ist man an bestimmten Konstellationen im Code interessiert, stösst man aber schnell an Grenzen. Hier benötigt man einmal mehr die Werkzeuge und Ergänzungen von Drittherstellern.

Als ich vor einigen Wochen gebeten wurde mir NDepend anzuschauen kam mir dies sehr gelegen. NDepend ist ein Tool zur statischen Code Analyse für .Net. Damit lässt sich der Code nicht nur auf vorgefertigte Qualitätskriterien überprüfen, sondern man kann auch eigene Abfragen definieren.

 

Download und Installation

Auf NDepend.com kann man die Demo-Version als Zip herunterladen. Die Installation beschränkt sich aufs entpacken der Datei und einem Doppelklick auf die Installationsdatei.

Wenn einem die Möglichkeiten von NDepend gefallen bekommt man eine entsprechende Lizenz ab 299€. Leider gibt es keine GUI-basierende Möglichkeit um den Lizenzschlüssel einzugeben. Die Lizenzdatei muss man in den entpackten Ordner kopieren bevor man Visual Studio startet. Sonst wird nach Ablauf der Evaluationsperiode NDepend beim nächsten Start von Visual Studio deinstalliert.

Läuft NDepend genügt es das gewünschte Projekt in Visual Studio zu öffnen und über den Menüpunkt “NDepend” die Analyse zu starten. Dieser Vorgang ist zwar recht schnell, kann je nach Projektgrösse aber dennoch einige Minuten dauern.

 

HTML-Report

Das erste was einem als Resultat begegnet ist der HTML-Report. Dieser enthält die wichtigsten Punkte und soll als Zusammenfassung fürs Management dienen. Leider ist die Funktionalität äusserst beschränkt und damit einzig als Druckversion für die Gesamtsicht zu gebrauchen.

NDepend Report

 

Visual NDepend

Mit Visual NDepend hat man ein deutlich besseres Werkzeug zur Verfügung. Hier kann man die Grafiken genauer anschauen und auch einzelne Klassen auf der TreeMap finden. Klickt man auf Klassen- oder Methodennamen öffnet sich Visual Studio und zeigt einem die passende Stelle an.

Da alle Funktionen nur hier schön zusammengefasst werden dürften die meisten Benutzer vor allem mit Visual NDepend arbeiten. Man hat zwar immer noch den Wechsel zwischen Visual Studio und Visual NDepend, dafür kommt man aber sehr schnell zu den gewünschten Informationen.

Visual NDepend

 

Integration in Visual Studio

Die Integration in Visual Studio ist sehr gut und man kann mittels Rechtsklick auf eine Klasse die einzelnen Auswertungen direkt aufrufen. Bei der Gesamtübersicht wurde auf dem Dashbard allerdings nicht alles aus Visual NDepend übernommen. Es ist zwar alles in Untermenüs vorhanden, aber bis man die einzelnen Grafiken findet kann es dauern…

NDepend VS2013

 

Eigene Abfragen

NDepend glänzt vor allem durch die Abfragesprache CQLinq. Damit kann man selber den Code nach eigenen Kriterien durchsuchen (wie mehr als 4 Methoden mit mehr als 3 Parameter und mehr als 10 Attribute pro Klasse). Hat man gewisse Konstellationen entdeckt die häufig zu Problemen führen hilft einem CQLinq beim aufspüren.

Die Dokumentation zu CQLinq ist sehr ausführlich und sollte vor dem Experimentieren konsultiert werden. Die Hilfestellung bei Fehlern im Editor ist nicht gerade optimal und da die Abfragen immer gleich ausgeführt werden wird man sehr schnell mit Fehlermeldungen eingedeckt.

NDepend Query Editor

 

Verbesserungspotential

Die Inkonsistenzen der 3 Ansichten (HTML-Report, Visual NDepend und Visual Studio) sind nicht gerade Benutzerfreundlich. Hat man sich einmal daran gewöhnt kann man damit arbeiten. Allerdings ist es schade wenn man viel Zeit mit der Suche nach einer bestimmten Auswertung verliert nur weil sich diese in einem anderen Tool befindet.

Mit einer verständlicheren Kategorisierung der Fehler könnten die Reports auch dem Fachdienst bei der Beurteilung helfen. Code Climate schafft dies mit der Benotung A bis F für einzelne Klassen. Während ein A sehr gut ist gilt ein F als dringend zu verbessern. Zudem wird schön aufgezeigt wie sich der Code über die Zeit entwickelt, was einen zusätzlichen Motivationsschub gibt. Leider fehlen solche einfachen Werte bei NDepend, auch wenn Ansätze zum Verfolgen der Veränderungen vorhanden sind.

 

Fazit

NDepend ist ein tolles Tool für Entwickler die mehr über ihren Code wissen wollen. Um die Möglichkeiten voll auszuschöpfen wird man aber einiges an Zeit investieren müssen um selber CQLinq Abfragen zu erstellen.

Ausserhalb der Entwicklung sind die Einsatzmöglichkeiten von NDepend allerdings sehr beschränkt. Die Probleme bei der Benutzerführung und die Inkonsistenzen sind wie die Reports wenig hilfreich um mit dem Fachdienst über Qualitätsverbesserungen zu diskutieren.

Schlagworte: , ,
Folgen

Erhalte jeden neuen Beitrag in deinen Posteingang.

Schließe dich 297 Followern an