Softwarequalität: Was ist das eigentlich?

11. Oktober 2013 · Kategorien: Internet, Offtopic, Webentwicklung

Softwarequalität

Dieser Artikel soll versuchen, die Frage zu beantworten, was Softwarequalität eigentlich ist.

Das Ziel eines jeden Programmierers sollte sein, qualitativ hochwertigen Code zu schreiben. Aber wann kann man sagen, dass eine Applikation qualitativ hochwertig ist? Softwarequalität lässt sich ja nicht direkt messen.

Was aber messbar ist, ist Aufwand. Umso geringer der Aufwand verbunden mit einer Applikation ist, desto qualitativ hochwertiger ist sie.
Selbstverständlich darf man aber den Aufwand grundverschiedener Softwaresysteme nicht direkt vergleichen und dadurch Rückschlüsse auf die Softwarequalität ziehen: So ist beispielsweise eine Online-Shopsoftware von Natur aus technisch aufwändiger als ein einfaches Gästebuch.

Um die Softwarequalität zu erhöhen, muss der Aufwand also minimiert werden. Man sollte dabei stets im Hinterkopf behalten, dass ein gegenwärtig höhere Aufwand den zukünftigen Aufwand positiv beeinflussen kann. Soll heißen, achtet man heute darauf, qualitativ zu programmieren, ist der Aufwand in Zukunft geringer.

Die Frage lautet nun: was kann ich tun, um Aufwand zu verringern?

Sauberer, verständlicher Code

Es ist wichtig, sich von Beginn an auf einheitliche Coding-Guidelines zu verständigen. Dazu zählen Sachen wie richtiges Einrücken, Positionen der geschweiften Klammern in if-Statements und Schleifen sowie die Nutzung von Tabulatoren und Leerzeichen.

Code sollte generell möglichst so geschrieben werden, dass ihn jeder versteht. Das Prinzip dazu nennt sich KISS:
Keep it simple and stupid.

Es ist empfehlenswert, lieber etwas mehr Code zu schreiben, wenn er dadurch verständlicher wird. Einige Programmierer neigen dazu, relativ einfach zu lösende Probleme auf ungewöhnliche “intelligente” Weise zu lösen. Davon sollte abgesehen werden.
Es hilft, zu versuchen, sich in andere Programmierer – die mit dem aktuellen Problem nicht oder nur wenig vertraut sind – hineinzuversetzen und danach seinen Code zu strukturieren.

Leider sind Probleme oftmals so komplex, dass auch die algorithmische Lösung zwingend komplex sein muss. Das KISS-Prinzip ist nicht anwendbar. In dem Fall sind Kommentare sehr hilfreich. Kommentare sollten nicht nur beschreiben was der Code macht, sondern auch warum er geschrieben wurde. Also, was die Absicht des Programmierers war, diesen Code zu schreiben.

Performanter Code

Software verfolgt immer das Ziel, ein gegebenes Problem zu lösen. Das Problem kann lauten, die ersten zehn Millionen Primzahlen auszurechnen oder eine möglichst große Anzahl Damenschuhe an Kunden zu verkaufen.
Da Zeit immer beschränkt ist, muss dieses Problem ausreichend schnell gelöst sein. Darum ist es wichtig, dass eine Applikation performant läuft.
Es gibt sehr viele Faktoren, die die Performance beeinflussen können. Wichtige Fragen hierzu sind:

Nutzt meine Applikation die passende Software?

Bei Verarbeitung vieler Daten ist ein Datenbanksystem wie MySQL einem einfachen Filestoring vorzuziehen.
Enhtält die Applikation eine Suchfunktion, die per Volltextsuche eine große Menge an Daten durchsuchen soll, kann eine Suchengine wie Apache Solr für eine gute Performance sorgen.

Sind meine Datenbankabfragen performant?

Datenbankabfragen wirken sich oft sehr stark auf die Performance aus und sind nicht selten Hauptverursacher für lange Ladezeiten. Es sollte darauf geachtet werden, dass möglichst wenige Datenbankabfragen durchgeführt werden und dass Indizes korrekt gesetzt sind.

Ist mein Cachesystem sinnvoll?

Caches können sich sehr positiv auf die Performance auswirken, da Abfragen nur einmal – gegebenfalls im Hintergrund – durchgeführt werden und die zurückgelieferten Daten dann für eine bestimmte Zeit zur Verfügung stehen.
Ein Key-Value-Store für PHP, den ich sehr empfehlen kann, ist Redis.

Sicherer Code

Natürlich muss eine Applikation auch sicher sein. Wird eine Sicherheitslücke ausgenutzt, kann das zu großen Problemen führen und daraus ein hoher technischer als auch wirtschaftlicher Aufwand resultieren.
Die Benutzung eines Frameworks ist dabei sehr hilfreich, da die Wahrscheinlichkeit für Sicherheitslücken geringer ist als bei eigenem Core-Code. Denn: Viele Augen sehen mehr als zwei.

Softwarequalität durch funktionierenden Code

Dieser Punkt scheint trivial, ist er aber nicht: Jedes Stück Code hat, sofern seine Richtigkeit nicht mathematisch bewiesen wurde, ein hohes Potenzial, fehlerhaft zu sein. Man kann mit ziemlicher Sicherheit sagen, dass jede größere Anwendung Fehler hat – auch wenn der oder die Programmierer noch so gut sind. Wichtig ist nur, dass diese Fehler die Funktionstüchtigkeit nicht beeinflussen.
Es ist immer ratsam, dass nicht nur diejenige Person die Funktionstüchtigkeit testet, die den Code geschrieben hat, sondern auch eine zweite. Es ist schwerer, seine eigenen Fehler zu sehen.
Ist der Code sauber und abstrakt programmiert, können regelmäßige automatische Tests – zum Beispiel mittels PHPUnit den Aufwand sehr erleichtern.

Gibt es noch etwas zu ergänzen? Was ist Deiner Ansicht nach Softwarequalität? Stimmst Du mit meinen Punkten überein? Wie stellst Du Softwarequalität sicher?
Ich freue mich über Kommentare!

Autor: | Kategorien: Internet, Offtopic, Webentwicklung

Keine Kommentare zu Softwarequalität: Was ist das eigentlich?

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *