by:

Nachdem ich gebeten wurde die Arbeit von einem Kollegen zu bewerten, habe ich mir Gedanken gemacht, wie man möglichst objektiv die Qualität von Software und Dokumentation beurteilen kann.

Hierzu hab ich eine Checkliste erstellt die ich euch nicht vorenthalten möchte.
Ich hege natürlich keinen Anspruch auf Vollständigkeit, freue mich über jegliche Verbesserungsvorschläge, Fragen und/oder Kritik!

code review

Dokumentation

Gibt es eine Technische- und eine Anwenderdokumentation?

Ich glaube es sollte schon bei der Auftragsvergabe über den Umfang, die Zielgruppe und den konkreten Inhalt der Dokumentation diskutiert werden.
Bei der NASA wird angeblich, zuerst jede Funktion dokumentiert, um danach implementiert zu werden, dies hat den Vorteil, das sich die Beteiligten schon im Vorfeld sehr konkrete Gedanken machen müssen.

Quelltext

MVC

Wurde die Darstellung, Businesslogik und das Datenmodel getrennt?
Das Konzept von MVC ist nicht neu, die Segmentierung von gewissen Teilen des Quelltextes ist gerade bei größeren Projekten unumgänglich und sollte von Beginn an berücksichtigt werden.

Framework

Wurde ein Framework verwendet?
Frameworks können dazu beitragen dass der Quelltext in einer gewissen Struktur vorliegen muss.
Sie ersparen außerdem oft Zeit, da gewisse Funktionalitäten bereits abgebildet sind (z.b. Benutzerverwaltung, Sicherheitsüberprüfungen)

Coding Guidelines

Gibt es Coding Guidelines und wurden diese eingehalten?
Die meisten Frameworks haben Coding Guidlines oder Best Practice Beispiele,
die definieren, welche Formatierung, Ordnerstruktur und Namenskonventionen eingehalten werden sollte.

Performance (Benchmark / Profiling)

Alle Programmiersprachen haben Tools, die Aufschlüsse darüber geben, wie oft eine Funktion aufgerufen wird, wie viel Speicher und Zeit sie dabei benötigt, kurz wie viel Ressourcen sie für eine gewisse Aufgabe benötigt.
Ich empfehle grundsätzlich jedes Projekt zu profilen um mögliche Schwachstellen frühzeitig zu erkennen.

Debugger

Ein Debugger sollte zum Werkzeugkasten eines jeden Programmierers gehören und eigentlich selbstverständlich sein.
Ich habe es aber auch schon erlebt, das "Entwickler" noch nie ein Breakpoint oder Observer verwendet haben bzw. von deren Existenz gewusst haben.

Unit Tests

Werden dazu verwendet einzelne Funktionen der Software zu testen.
Ich selber schreibe viel zu selten Unit Tests, halte es dennoch für eine wichtige Aufgabe eines jeden Software Entwicklers.

Statische Codeanalyse

Die statische Codeanalyse kann dazu beitragen das typische Fehler früh erkannt werden, außerdem kann Sie gewährleisten, dass eine gewisse Formatierung und Namenskonventionen eingehalten wurde. 

Peer Reviewing

Beim Peer Reviewing werden weitere Entwickler um ihre fachliche Meinung zum Quelltext gebeten. 
Ich musste leider oft feststellen, das Programmierer Angst haben, Ihren Quelltext von Dritten begutachten zu lassen, obwohl hierfür kein Grund besteht, immerhin machen wir alle Fehler und dies ist der beste Weg um sich und die Qualität der Software zu verbessern. 

Organisation

Versionskontrollsystem

Ein Versionskontrollsystem hilft dabei, zwischen Versionen zu wechseln, Konflikte zu erkennen und die Übersicht zu behalten.
Es wird z.B. erfasst, wer, was, wann geändert hat, des weiteren kann man jede Änderung wieder rückgängig machen.
    
   
Zu den einzelnen Punkten kann man ganze Bücher schreiben, mir ging es hier in erster Linie
darum, einen Überblick zu geben.

Wie schon erwähnt würde ich mich über Feedback sehr freuen,

Happy Hacking

Andreas

 

Weiterführende Links:

 

http://de.wikipedia.org/wiki/Smell_(Programmierung)
http://www.linux-magazin.de/Ausgaben/2012/08/Statische-Analyse

 



Name:
http://blog.stevensanderson.com/2009/08/24/writing-great-unit-tests-best-and-worst-practises/

Name:
Danke für dein Input!
Duplicate Code ist immer ein gutes Indiz dafür das man etwas verbessern kann.
Finde die Code Smell Liste von Wikipedia sehr nützlich, hier sind auch noch viele weitere Indizien aufgelistet, die man sich mal anschauen kann.



Name:
Hallo Andreas! Auch eine Duplicate Code Review kann ich Dir wärmstens ans Herz legen!