Peter Bucher - Mein Experiment, meine Spielereien, meine Welt...   ·   Stefan Falz   ·   Jürgen Gutsch   ·   Golo Roden   ·   ASP.NET Zone   ·   Microsoft ASP.NET
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe

Die Forderung nach Softwarequalität

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Roden? Ja, Bucher! angekündigt, jeweils zum ersten eines jeden Monats einen Kommentar zu einem vorab gemeinsam gewählten Thema verfassen zu wollen. Bisher sind in dieser Reihe folgende Kommentare erschienen:

Heute, am 1. Februar 2009, ist es nun wieder so weit, und unser Thema für diesen Monat lautet:

Die Forderung nach Softwarequalität

Zum Blogpost von Golo gehts hier lang: Die Forderung nach Softwarequalität

In früheren Blogeintrag habe ich über das Thema “Perfektes Design” geschrieben und damit eine weitreichende Diskussion ausgelöst.
Auf myCSharp.de wurde letztens mit dem Titel “Alltag in unserer Branche (?)” darüber diskutiert, wie die Entwickler die Qualität der Softwareentwicklung im Alltag erleben, oder eben nicht.

Für mich ist es extrem wichtig, dass ich meinen Stil und die Qualität meiner Arbeit / Software – egal ob privat oder im Geschäft – stetig steigern kann.

Was mache ich dafür?

  • Beschäftigung mit Design Patterns
  • Beschäftigung mit Architektur
  • Mich über diverse relevanten Themen informieren und viel ausprobieren
  • Viel fremden Code lesen
  • Viel lesen und schreiben

Die Beschäftigung mit den Themen “Design Patterns” und “Architektur” führen zu sehr vielen interessanten Erkentnissen, die mir vorher nicht bewusst waren und steigern die Qualität des Codes immens.

Zu den relevanten Themen zählen für mich unter anderem die N schichtige Architektur, IoC (Inversion of Control) / Dependency Injection, Software Testing und Coding Styles.

Lesen alleine hilft leider nicht soviel wie es sollte, Abhilfe schafft hier das praktische Anwenden.
Beispielsweise habe ich die neu entdeckten Themen direkt auf meine Homepage angewendet und verwende dort eine mehrschichte Architektur mit einem IoC Container und – zumindest ein paar – Unit Tests.

Ich war ziemlich schnell begeistert von diesen neuen Themen und die Umsetzung war auch nicht extrem schwierig, es hat jedoch Zeit gekostet.

Aber: Diese Zeit hat sich gelohnt!

Was hat es schlussendlich gebracht die neuen Techniken in meine Homepage zu implementieren?
Nach aussen hin nicht viel, aber ich habe viel dazu gelernt und eine Erweiterung / Änderung ist um einiges einfacher und flexibler durchzuführen und nicht zuletzt ist der Code auch verständlicher geworden und die möglichen Fehler haben sich minimiert.

Das waren jetzt meine Interessen und mein privates Umfeld.

Wie erlebt man denn die Softwarequalität im Arbeitsumfeld?

Vielfach ist es so, dass dort noch Altlasten vorhanden sind, die Architektur nicht (mehr) optimal ist.
Dies kann zukünftig geplante Features hinauszögern, die Entwicklung (vorallem die Veränderung an bestehendem) verlangsamen und noch einiges mehr.

Kann sich ein Entwickler am Arbeitsplatz voll entfalten und seine Erfahrungen ganz einbringen?

Ich denke: In den den meisten Fällen wird das nicht möglich sein, ausser es ist eine frische Firma mit der richtigen Einstellung und Führung, sowie interessierten und erfahrenen Mitarbeitern.

Quellcodeverwaltung ist im kommerziellen Umfeld sowieso Pflicht, aber was ist hiermit:

  • Code Richtlinien fürs Team
  • Die Pflicht für Kommentare (Vorher wird nicht eingecheckt)
  • Prüfung dass der Code kompiliert (dito)
  • Unit Testing
  • UI Tests
  • Code Reviews
  • Evt. sogar einen Ansatz zum Pair Programming
  • Weiterbildungen der Entwickler

Okay, das ist jetzt vielleicht zuviel verlangt aber vielerorts gibt es Firmen wo nicht einmal einen Punkt ansatzweise umgesetzt wird, das ist schade.

Code Richtlinien führen zur besseren Lesbarkeit, besserer Wartung und Konsistenz im Code.
Pflicht für Kommentare (Damit sind im .NET-Umfeld vorallem XML-Kommentare gemeint) machen es um einiges einfacher für einen neuen Entwickler, sich in ein Projekt einzuarbeiten und APIs zu benutzen.
Zudem kann so sehr einfach eine API-Referenz generiert werden.

Ist es sinnvoll Code einzuchecken der nicht kompiliert? Ich sage: Nein!
Wenn es Feierabend ist und der Code partout nicht kompiliert kann man ihn einshelven (TFS), oder an einen anderen Ort einchecken, aber nicht zur richtigen Quellcodeverwaltung.

Wie oben geschrieben, habe ich mich erst seit kurzem mit dem Thema Testing befasst, nichts desto trotz sehe ich schon jetzt extrem viel Sinn im Testing und würde nicht mehr ohne wollen.

Unit Tests sowie auch UI Tests helfen dem Entwickler und auch der Qualitätssicherung (Wenns sowas gibt) automatisiert nach Änderungen zu prüfen ob ein Code an einer anderen Stelle negativen / ungewollten Einfluss nimmt, bzw. den Workflow stört.
Ohne Tests müssten sehr viele Fälle manuell getestet werden, was nicht praktikabel / durchführbar und mühsam ist.
Da wird sehr gerne irgend ein Fall vergessen (davon gibt es ja genug), es wird nur beiläuftig getestet oder die Entwickler verlieren Tage mit debuggen und sich wiederholenden, langsamen Oberflächentests.

Zu Code Reviews habe ich bisher auch nicht so viel Erfahrungen, aber mit der Erfahrung die ich bisher sammeln konnte bin ich überzeugt davon, dass dies die Qualität und vorallem auch die eigene Arbeitsweise extrem ins positive gesteigert werden kann.

Seit mehr als einem Monat arbeite ich mit Golo Roden an einem relativ kleinen Projekt mit ASP.NET.
Relativ klein in dem Sinne, dass das Projekt schon längst fertig sein könnte, wenn es jemand anderes gemacht hätte. Das liegt jedoch nicht daran das Golo und ich schlecht und langsam arbeiten, sondern dass dieses Projekt auch als Übungswiese dient und auch das Ziel verfolgt die eigene Arbeitsweise und die Qualität der Software zu steigern.

Das heisst, die Software sollte schlussendlich sehr gut erweiterbar, wartbar sein und es sollte auch Spass machen weiterhin daran zu arbeiten.
Dabei habe ich nicht nur gemerkt das Golo und ich uns perfekt ergänzen, sondern auch dass es sehr, sehr positiv ist wenn der zweite Spieler auf dem Feld auch auf eigene Fehler oder Unsauberkeiten hinweist und meistens schon Verbesserngsvorschläge bringt. Synergie heisst hier das Zauberwort und sehr viel ist nicht dazu nötig, jedoch ist der Ertrag immens.

Aus diesem Grunde habe ich “Ansatz zu Pair Programming” geschrieben. Es muss ja nicht so sein, dass das Paar nebeneinander sitzen und sich die längste Zeit auf die Finger schauen muss.
Sondern dass es die längste Zeit Reviews mit Feedback gibt und ab und zu auch miteinander geredet (In unserem Fall telefoniert) wird, um Gedanken 1:1 auszutauschen.
Es braucht Zeit zu lernen, es braucht auch Zeit richtig zu lernen wie es auch Zeit und Geld braucht sich im Rahmen der Firma weiterzubilden – aber es lohnt sich auf jeden Fall.

Die Wahl zur Informatik bedeutet in jedem Fall den Willen zum stetigen Lernen zu haben und das auch umzusetzen.
Wenn dies nicht vorhanden ist, ist die Informatik nicht der richtige Platz, ausser die Zeit bleibt stehen (was sie ja bekanntlich nicht tut ;-)).

Ich würde aufgrund meinen Erfahrungen in diesem Gebiet dazu raten am Arbeitsplatz nicht zu resignieren, sondern seine Arbeit nach bestem Gewissen durchzuführen.
Wenn man Glück hat, können auch obere Etagen davon überzeugt werden, die Qualität – im Interesse aller in der Firma, sowie auch den Kunden – der Software zu steigern und einen guten Stil in die Arbeit einzubringen.

Zuletzt will ich noch die Initiative von Ralf Westphal und Stefan Lieser erwähnen, die sich mit oben genannten Themen beschäftigt und Prinzipien / Regeln zu einem saubereren Code immer wieder ins Gedächnis rufen soll: http://clean-code-developer.de/

Veröffentlicht Sonntag, 1. Februar 2009 09:37 von Peter Bucher

Kommentare

# re: Die Forderung nach Softwarequalität

Hallo Peter,

das gibt gleich mal fünf Sterne :-)

Du sprichst bzw. schreibst mir aus der Seele. *daumenhochstreck*

Gruß

Jürgen

Montag, 2. Februar 2009 08:58 by Jürgen Gutsch

# Sinn und Zweck von AOP

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Golo? Ja, Bucher! angekündigt,

Montag, 2. März 2009 22:45 by Peter Bucher

# Sinn und Zweck von AOP

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Golo? Ja, Bucher! angekündigt,

Montag, 2. März 2009 22:56 by Peter Bucher

# Interfaces vs abstrakte Klassen

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Golo? Ja, Bucher! angekündigt,

Dienstag, 14. April 2009 22:50 by Peter Bucher

# Woran erkennt man einen guten Entwickler?

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Golo? Ja, Bucher! angekündigt,

Freitag, 1. Mai 2009 14:09 by Peter Bucher

# Primärschlüssel: GUID vs Identity

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Golo? Ja, Bucher! angekündigt,

Donnerstag, 2. Juli 2009 22:38 by Peter Bucher

# C# oder VB: Welche Sprache soll ich lernen?

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Golo? Ja, Bucher! angekündigt,

Montag, 3. August 2009 19:04 by Peter Bucher

# Alles var – oder nicht?

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Golo? Ja, Bucher! angekündigt,

Dienstag, 1. September 2009 09:48 by Peter Bucher

# Heisst die Zukunft RIA?

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Roden? Ja, Bucher! angekündigt,

Donnerstag, 15. Oktober 2009 18:33 by Peter Bucher

# Wieviel Sinn machen Unittests?

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Golo? Ja, Bucher! angekündigt,

Montag, 2. November 2009 09:43 by Peter Bucher

# Reflection – Fluch oder Segen?

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Roden? Ja, Bucher! angekündigt,

Dienstag, 1. Dezember 2009 21:03 by Peter Bucher

# this oder kein this

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Roden? Ja, Bucher! angekündigt,

Dienstag, 16. Februar 2010 21:30 by Peter Bucher

# Felder vs Eigenschaften

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Roden? Ja, Bucher! angekündigt,

Sonntag, 14. März 2010 16:53 by Peter Bucher

# Abstraktion

Am 13. Oktober 2008 haben Golo Roden und ich unter dem Titel Noch Fragen, Roden? Ja, Bucher! angekündigt,

Freitag, 9. April 2010 13:22 by Peter Bucher
Anonyme Kommentare sind nicht zugelassen