Zur Qualitätssicherung bei der Baustatik


Thomas Wölfer
Thomas Wölfer

17. November 2008


Die Baustatik ist bereits ein sehr umfangreiches Programm: Zur Zeit handelt sich Dachberechnungen, Durchlaufträger nach diversen Normen und allgemeine Faltwerksberechnungen (inkl. Platten, Scheiben und Rahmensysteme, sowie daraus zusammengesetze Systeme und Systeme mit räumlichen Flächenelementen) nach diversen Normen ab. Dazu gehören unter anderen Berechnungen nach Theorie 2. Ordnung, Durchstanznachweise, Betonbemessungen, Stahl- und Holznachweise und vieles andere mehr. Der Umfang der möglichen Berechnungsergebnisse steigt dabei fast täglich, so kommen in Kürze Beispielsweise Anschlussnachweise im Holzbau dazu. Das hat natürlich zur Folge, das praktisch ohne Unterbrechung am Programm gearbeitet wird, was natürlich nicht ohne Änderungen möglich ist.

Diese Änderungen sind ein bisschen problematisch: Man möchte vermeiden, das eine Änderung am Programm oder das einführen einer neuen Funktion dazu führt, das bereits existierende Berechnungsmöglichkeiten plötzlich falsche Ergebnisse liefern (Ältere Kunden kennen solche Probleme aus den Programmen der "Xfemily", wo das nicht immer besonders gut geklappt hat.). Aufgrund des Umfangs der Baustatik ist sowas aber manuell nicht mehr machbar: Letztlich geht es um einige tausend unterschiedlicher Berechnungen für unterschiedliche Ergebnisse - niemand kann das noch von Hand überprüfen.

Deshalb haben wir in der Baustatik von Anfang an Testmechanismen vorgesehen und eingebaut; einer davon sind die (bei uns so genannten) "Testcases". Bei einem Testcase handelt es sich um die Berechnung eines "Baustatik" Dokumentes, die völlig automatisch durchgeführt wird. Alle Ergebnisse, die auf Basis des Dokumentes irgendwie ermittelbar sind, werden berechnet - und dann mit einer vorherigen, einmal als "richtig" festgestellten Berechnung verglichen. Dabei geht es pro Fall um Datenmengen die sehr klein sein können (ein paar Kilobyte), wenn es sich um einen "einfachen" Fall handelt, bis hin zu mehreren Megabyte an Berechnungsergebnissen in "aufwendigen" Fällen.

Von diesen Fällen haben wir zur Zeit einige hundert - und die werden täglich auf Basis der bei uns vorliegenden "aktuellen" Version (also der, die sich in dem Zustand befindet, die sich aus den Tätigkeiten unserer Entwickler ergibt) neu berechnet und verglichen. Dazu gibt es einen dedizierten Server, der tatsächlich für nichts anderes da ist: Wir untersuchen also die Richtigkeit der aktuellen Softwareversion tatsächlich jeden Tag auf Basis einiger hundert berechneter Bauteile. (Tendenz: Anzahl der berechneten Bauteile stark steigend.)

Dabei stellen wir nicht nur sicher, das die ermittelten Ergebnisse sich nicht verändern - sondern untersuchen auch gleich noch, wie sich das Programm unter "Last" verhält: Die Last ist dabei dramatisch viel höher, als alles, was bei einem Kunden je auftreten wird: Mehr als eine Handvoll Dokumenten wird bei einem Kunden innerhalb einer Sitzung kaum berechnet werden - wir berechnen wie gesagt einige hundert. Dabei wird auch der Speicherverbrauch protokolliert um sicherzustellen, das der angeforderte Speicher auch wieder freigegeben wird, so er nicht mehr benötigt wird. M.a.w: Es sollten keine "Speicherlecks" auftreten, auch wenn eine sehr große Zahl an Dokumenten durchgerechnet wird. Daraus resultiert eine Kurve wie die folgende: Jedes Pixel in X-Richtung steht dabei für einen Testcase, und die "rote" Kurve zeigt den Verlauf des Speicherbedarfs der Baustatik: Wie man sieht, sieht man nichts :-)