Stellen Sie sich einmal vor, Sie möchten eine Ihrer selbst entwickelten Anwendungen auf deren Qualität hin überprüfen. Um eine möglichst zuverlässige Aussage über die Effizienz, Stabilität und Sicherheit der Applikation zu bekommen, setzen Sie beispielsweise ein Analysetool wie CAST AIP (Application Intelligence Platform) ein. Doch woher nehmen Sie die Gewissheit, dass das Analysewerkzeug auch auf die richtigen Methoden und Standards setzt, mit denen die Zuverlässigkeit einer Software sichergestellt werden kann?
Genau für diesen Zweck gibt es umfassende Regelwerke, auf denen Analysetools wie die CAST AIP basieren. So werden für die Beurteilung einer Anwendung bis zu 1.200 Bewertungskriterien herangezogen, die die Software anhand bestimmter Qualitätsindikatoren bemisst und bewertet. Hierbei werden vor allem Kriterien überprüft wie Leistungseffizienz, Zuverlässigkeit, Sicherheit, Administration und Anpassungsfähigkeit .
Leistungseffizienz: Besonders der Quellcode und die Eigenschaften der zugehörigen Software-Architektur stellen die Leistungseffizienz einer Anwendung sicher. Die Effizienz einer Applikation spielt vor allem in Hochleistungsumgebungen eine große Rolle, da es hier auf schnelle Transaktionen ankommt und ein möglichst verlustfreies Ausführen des Quellcodes im Vordergrund steht. Damit gibt die Analyse dieses Kriteriums Aufschluss darüber, wie sich fehlerhafter Code negativ auf die Unternehmensziele einer Firma auswirken kann. So spielt die Leistungseffizienz beispielsweise bei kundenorientierten Applikationen wie einem Onlineshop eine große Rolle.
Zuverlässigkeit: Elastizität und Stabilität sagen etwas über die Zuverlässigkeit einer Software-Anwendung aus. Denn nichts ist gravierender und schwerwiegender als mögliche Programmausfälle oder -abbrüche, mit denen Anwender konfrontiert werden. So wird anhand bekannter ISO-Kennzahlen eine Anwendung unter anderem daran bemessen, wie viele Mängel sich aufgrund von Programmierfehlern nachträglich eingeschlichen haben, was die Anwendung insgesamt instabiler macht. Daher werden in diesem Fall Kriterien wie Softwarecrashes, Softwareausfälle und Softwarefehler betrachtet, die einen direkten Einfluss auf Anwender haben.
Sicherheit: Die schlechte Programmierung und eine unzureichende Anwendung der zugrunde liegenden Software-Architektur sind maßgeblich für mögliche Sicherheitsverletzungen verantwortlich. Das Ergebnis der Software-Analyse dieses Kriteriums stellt eine Risikoabschätzung dar, mit welchem Aufwand sich unternehmenskritische Software-Schwachstellen identifizieren und beheben lassen.
Transferierbarkeit: Software lässt sich vor allem dann mit einem angemessenen Aufwand kontinuierlich verbessern, wenn sich der zugehörige Quellcode möglichst gut verwalten lässt. Damit lässt sich der Aufwand recht gut einschätzen, der notwendig ist, um die betreffenden Stellen im Quellcode zu identifizieren und zu eliminieren. Das sorgt gleichzeitig für einen geringen Unabhängigkeitsgrad von einzelnen Software-Entwicklern, die an der Programmierung der Anwendung beteiligt waren.
Änderbarkeit: Wie viel Aufwand ist nötig, um den Quellcode einer Anwendung gemäß der erforderlichen oder gewünschten Anforderungen seitens der Anwender/Kunden anzupassen? Anhand des Kriteriums „Anpassungsfähigkeit“ wird genau diese Frage beantwortet.
Organisationen wie CISQ und ISO geben die Qualitätstandards vor
Doch auf welchen Qualitätskriterien beruhen die genannten Analysemethoden, die von Vereinigungen und Organisationen wie dem Software Engineering Institute (SEI), der International Standards Organizations (ISO), dem Consortium for IT Software Quality (CISQ) und IEEE (International Electrical und Electronics Engineers) entwickelt und verabschiedet wurden und werden?
Nun, um diese Frage zu beantworten, reicht ein Besuch der CISQ-Webseite, auf der unter anderem all die 86 Software-Schwachstellen aufgeführt werden, anhand derer die Leistung, Zuverlässigkeit, Sicherheit, Leistungseffizienz und Administration einer Software bewertet werden können. Dazu gehören ganz triviale Fehler wie Buffer Overflow genauso wie die Umwandlung in einen kompatiblen Datentyp. Schön an dieser Liste sind die zahlreichen Lösungsvorschläge, die für jede einzelne Software-Schwachstelle angeboten werden.
Automatisierte Function Point-Methode zur quantitativen Beurteilung von Sourcecode
Neben den qualitativen Softwarekriterien, die sich mithilfe der CISQ-Standards überprüfen lassen, kommt auch der quantitativen Bewertung einer Anwendung eine immer größere Rolle zu. So ließen sich bis Mitte 2000 keine automatisierten Aussagen über den Umfang eines Sourcecodes treffen. Diesen Misstand behob die im Jahr 2014 verabschiedete Spezifikation „Automated Function Points“, die ein gemeinsames Projekt der Object Management Group (OMG) und CISQ darstellt. Hierbei werden anhand der ISO-Norm 20926 zahlreiche Regeln zurate gezogen.
So stehen zur quantitativen Bewertung einer Anwendung insgesamt fünf Elementarprozesse zur Verfügung, die einzeln bewertet werden. Das sind laut Spezifikation IFPUG-CPM 4.3.1 Eingaben (External Input, EI), Ausgaben (External Output, EO), Abfragen (External Inquiry, EQ), interne Datenbestände (Internal Logical File, ILF) und Referenzdaten (External Interface File, EIF).
Disclaimer: Dieser Blogbeitrag ist im Auftrag der Firma CAST entstanden, die mir bei der Ausgestaltung und Formulierung nahezu freie Hand lässt.