In Teil 4 dieser Serie wurden bereits die Qualitätsmerkmale Funktionalität, Benutzbarkeit und Zuverlässigkeit beleuchtet. Hier werden die weiteren Qualitätsmerkmale Effizienz, Wartbarkeit und Portabilität beschrieben.
Diese Qualitätsmerkmale für Software müssen auch betrachtet werden und werden als nicht-funktionale Anforderungen auch getestet.
1. Effizienz
Ist das System fähig, ein spezifiziertes Leistungsniveau mit den eigensetzten Resourcen zu erreichen und kontinuierlich bereitzustellen. Wie ist das Verhältnis zwischen Leistung und eingesetzten Betriebsmittel? Verschwendet das System Resourcen aufgrund umständlicher Programmierung (schlanke und leistungsstarke Software ist wichtig).
a) Zeitverhalten
Wie ist die Antwort- und Verarbeitungszeit des Systems. Wie ist der Durchsatz bei der Funktionsausführung? Die Antwort- und Verarbeitungszeit ist gerade bei vernetzten System wichtig, da hier keine Flaschehälse entstehen dürfen.
b) Verbrauchsverhalten
Welche Betriebsmittel benötigt das System für die Ausführung der Funktionen (Rechenzeit, CPU-Leistung, Festplattenplatz, Festplattenzugriff, verwendeter Arbeitsspeicher). Durch den Einsatz von Cloud-Systemen kann die Rechenleistung gut skaliert und an die aktuellen Gegebenheiten angepasst werden.
c) Konformität der Effizienz
Fähigkeit des Systems Standards oder Konventionen bezogen auf die Effizienz einzuhalten.
2. Wartbarkeit
Der Bereich Wartbarkeit beschäftigt sich damit, wie änderungsfähig ein System ist, so dass es auf neue Gegebenheiten angepasst werden kann. Der Begriff Änderungen umfasst Korrekturen, Verbesserungen oder Anpassungen an Änderungen der Umgebung, der Anforderungen oder der funktionalen Spezifikationen.
a) Analysierbarkeit
Wie leicht kann ein Fehler oder Problem der Entdeckung diagnostiziert werden? Ein wichtiges Hilfsmittel dazu ist die Verwendung einer aussagekräftigen und verständlichen Kommentierung im Programmcode, durch die auch andere sachkundige Personen als der Entwickler in die Lage versetzt werden, das Programm schnell zu verstehen. Dies ist gerade bei echtbetriebskritischen Fehlern wichtig, da hier schnell ein entsprechender Hotfix erfolgen muss.
b) Änderbarkeit
Kann im System eine spezifizierte Änderung implementiert werden? Muss festgestellt werden, dass dies nicht möglich ist, muss eine kostspielige Neuentwicklung durchgeführt werden. Dies hängt z.B. von der verwendeten Programmiersprache und dem Programmierstil ab. Muss bei einer Änderung diese an mehreren Stellen im Programmcode ausgeführt werden, ist die Gefahr groß, dass eine Stelle vergessen wird und so durch diese Fehlerhandlung ein Bug entsteht. Abhilfe schafft da ein wartungsfreundliches Design. Weiterhin sollte ein System so aufgebaut sein, dass Daten (z.B. Stammdaten) selbstständig, d.h. ohne Programmieraufwand, durch entsprechendes Pflegepersonal aktuell gehalten werden können.
c) Stabilität
Wie hoch ist die Wahrscheinlichkeit, dass bei einer durchgeführten Änderung im System bei bestehenden Komponenten unerwartete Fehlerwirkungen (Seiteneffekte) auftreten.
d) Testbarkeit
Wie gut kann die Software nach einer Modifikation validiert werden? Wie hoch ist der Aufwand des Testens.
e) Konformität der Wartbarkeit
Fähigkeit des Softwareprodukts, Standards oder Konventionen bezogen auf die Wartbarkeit einzuhalten.
3. Portabilität
Wie leicht kann ein System von einer Umgebung auf eine andere übertragen werden. Umgebung kann organisatorische Umgebung, Hardware- oder Software-Umgebung sein. Beispielsweise arbeitet das System auch statt mit einem Oracle DBMS auch mit einer MySQL-Datenbank oder funktioniert die Software statt auf Microsoft Windows auch auf Linux.
a) Anpassbarkeit
Hierunter versteht man die Fähigkeit des Systems in verschiedenen spezifizierten Umgebungen zu laufen.
b) Installierbarkeit
Wie aufwändig ist es das System in einer anderen Umgebung zu installieren? Wird vielleicht nur ein anderes Installationspaket verwendet oder müssen in Konfigurationsdateien umfangreiche änderungen durchgeführt werden.
c) Koexistenz
Kann das System mit einem anderen System, das ähnliche Funktionen hat, in einer gemeinsamen Umgeubng laufen und sich die Resourcen teilen? Dies ist wichtig für Systeme die auf großen Servern betrieben werden sollen. Soll nun aus wirtschaftlichen Gründen eine Installation verschiedener Systeme auf einem Server stattfinden, so wäre es schlecht, wenn diese sich gegenseitig behindern oder gar nicht parallel laufen. Gerade für kleine Systeme spielt dies eine Rolle, da diese einen Server vielleicht gar nicht auslasten können.
d) Austauschbarkeit
Möglichkeit, diese Software anstelle einer spezifizierten anderen in der Umgebung jener Software zu verwenden, sowie der dafür notwendige Aufwand.
e) Konformität der Portabilität
Fähigkeit des Systems Standards oder Konventionen bzgl. der Portabilität einzuhalten.