Definition „Software Stability“ Was ist Software-Stabilität?
Bei Systemen wie auch bei Software ist die Stabilität ein eindeutiges Qualitätsmerkmal. Mit erhöhter Stabilität ist Software auch unter höherer Last lauffähig und es kommt seltener zu Abstürzen.

Als eines der Qualitätsmerkmale von Software ist die Stabilität eine messbare Metrik, die gemeinsam mit Konformität, Analysierbarkeit, Testbarkeit und Modifizierbarkeit einen Unterteil der Softwarenorm ISO/IEC 9126 ausmacht. Dabei gilt die Stabilität als ein Teil der Wartbarkeit einer Software.
Abseits von (natürlich unverbindlichen) Modellen zur Evaluierung von Softwarequalität ist die Stabilität vor allem eine nutzerzentrierte Metrik. Durch hohe Stabilität (geringe Performance-Schwankungen unter Last, kein abnormales Verhalten, keine Abstürze) können User Software wie vorgesehen nutzen und müssen auch bei Änderungen im Code nicht fürchten, dass sie mit einer instabilen Version arbeiten müssen.
Dafür sind nicht nur ausführliche Tests notwendig, sondern auch Updates und Verbesserungen, um Lauffähigkeit mit neuen Funktionen und in neuen Umgebungen zu gewährleisten.
Stable Releases – die Doppeldeutigkeit der Stabilität
Im englischen ist der Begriff „stable software“ gleich doppelt konnotiert. Zum einen sprechen wir hier von einer stabilen Version, also einer Softwareversion, bei der keine Änderungen mehr durchgeführt werden (kleinere Fixes und Updates ausgenommen). Um für diese stabile Software neue Funktionalität zu erwerben, müssen Anwenderinnen und Anwender auf eine neuere Version upgraden.
Solche stabilen Softwareversionen sind vor allem für Software relevant, die mit einem hohen Maß an Plug-Ins und vernetzter Software operiert und durch ein größeres Update die Funktionalität aller operierenden Add-Ons gefährden könnte. Letztlich ist es auch der Präferenz der User überlassen, ob diese lieber eine stabile, aber womöglich stagnierende, Software benutzen möchten, oder aber die neuesten Features (und auch Bugs) in neueren Beta-Releases verwenden wollen.
Die andere Bedeutung des Begriffes „stable software“, die stärker im Zusammenhang mit Stabilität für Software steht, ist die der stabil laufenden Softwareversion. Die Rede ist hierbei von einer verlässlich funktionierenden Software ohne Abstürze oder größere Bugs - am stärksten ausgeprägt sind Sprünge hin zur stabilen Version oftmals auf dem Weg hin zur ersten stabilen Beta. In vielen Entwicklungszyklen ist es aber auch erst die Release-Version, die tatsächlich stabil ist.
Vor allem in Beta- und Funktionalitätstest bezeichnen User eine Software gerne als stabil. Um dies noch einmal zu verdeutlichen: Stabil funktionierende Software kann stabiler laufen als eine Vorgängerversion, während eine stabile Softwareversion einen absoluten Status beschreibt.
Wie wird Stabilität messbar getestet?
Als Teil von Performance Tests werden während der Entwicklung einer Software auch Stability Tests durchgeführt. Diese Stability Tests sollen sicherstellen, dass die Software sich unter Belastung nicht verlangsamt, es zu keinen kompletten Ausfällen oder zu "abnormalem" Verhalten kommt.
In der Quality Assurance kommen für diese Art Test meist große Mengen virtueller User zum Einsatz, die ein System unter hohe Auslastung stellen und Abweichungen zum Normalbetrieb messen. Stabilitätstests gehören zu den regelmäßig durchzuführenden Tests, um Bugs auszumerzen, die Stabilität neuer Versionen zu überprüfen und die Veränderungen von Funktionen im Betrieb zu überwachen.
Solche Stabilitätstests sind nicht nur für elaborierte Software und Serverfarmen von Bedeutung, sondern müssen auch bei kleinen Apps oder Smartphones zum Einsatz kommen. So wird beispielsweise geprüft, ob das Smartphone bei nahezu voller Speicherauslastung noch ähnlich schnell arbeitet wie bei leerem Massenspeicher.
Webseiten müssen beispielsweise prüfen, ob Formulare noch genau so effizient bearbeitet werden können, wenn mehrere hundert Anfragen eintreffen oder Buttons mehrere hundert Male geklickt werden. Oft ist diese Form der gewonnenen Stabilität auch ein Schutz gegenüber Bot-Attacken.
Vergleich von „Stability“ und „Reliability“
Stabilität gewährleistet die Performance eines Systems unter (nahe) maximaler Auslastung, die Effizienz des Systems und eine Laufzeit ohne auftretende Memory Leaks außerhalb der Entwicklungsumgebung.
Zu trennen ist der Begriff Stability dabei von der Reliability, auch wenn wir hier von ähnlichen Begriffen sprechen: Stabilität ist ein Faktor der größer gefassten Verlässlichkeit. Die Reliability (Verlässlichkeit) testet Belastungen, Failover Tests (das Auslagern auf einen anderen Server bei Serverausfall), Recovery Tests (das Erholen des Systems nach einem Fehler) und schließlich auch die gesamte Stabilität.
Selbst bei fehlerhafter Stabilität kann durch eine komplimentierende Verlässlichkeit dennoch eine fehlerfreie Handhabung garantiert werden. Stürzt eine App beispielsweise ab, ist sie weniger stabil. Können User*innen ihre Tätigkeit jedoch durch einen nahtlosen Neustart ohne Datenverlust wieder aufnehmen, so ist dennoch die Verlässlichkeit gewährleistet.
Ein gutes Beispiel hierfür ist das gesamte Internet in unseren Surfgewohnheiten. Verbindungen reißen ständig ab, Links führen auf tote Seiten oder einzelne Browsertabs reagieren nicht mehr - die Verlässlichkeit insgesamt ist hiervon jedoch nur marginal betroffen.
Stabilität und Komplexität vereinen
Dieser Kette folgend ist Stabilität ein wichtiger Faktor, da sie für Benutzerinnen und Benutzer maßgeblichen Anteil an der Usability und subjektiv bewerteten Qualität einer Software/eines Systems hat – allerdings darf Stability nicht für sich stehend betrachtet werden.
Mit zunehmender Komplexität ist es nicht ungewöhnlich, dass die Stabilität sinkt. Simplere Programme lassen weniger Raum für Fehler und sind leichter zu modifizieren, ohne dass unvorhersehbare Probleme auftreten.
Stability Tests sind schließlich auch ein Kosten- und Zeitfaktor, gleichwohl mangelnde Stabilität für User und vor allem Software im Unternehmenskontext ebenfalls teuer und langwierig werden kann.
(ID:47539474)