Überraschungen mit Fortschrittsmeldern


Thomas Wölfer
Thomas Wölfer

11. Februar 2006


Weil ich gerade über den Code für den Fortschrittsmelder im Faltwerksprogramm nachdenke ist mir eine alte Geschichte eingefallen.

Fortschrittsmelder für komplexe Operationen gehören zu den Dingen, die eher schwierig zu entwickeln sind. Besonders gemein wird es, wenn man zu Beginn der Operation gar nicht weiss, wie lange die einzelnen Schritte dauern - oder wie viele Schritte man eigentlich benötigt. Bei der Bemessung ist es häufig so, das genau das eintritt: Die Bemessung ist iterativ und hat ein Abbruchkriterium, es ist aber erst am Ende der Bemessung klar, wie viele Iterationen man benötigt. Das macht Fortschrittsmelder notorisch unzuverlässig...

Das war aber eigentlich nicht die Geschichte. Das hier ist sie:

Im Vorgängerprogramm von unserem Plattenprogramm Xpla gab es auch einen Fortschrittsmelder, und zwar ebenfalls bei der Bemessung. Der Grund dafür war der, das die Arbeitsschritte die durchgeführt werden müssen, bis die Bemessung durchgeführt werden kann, ziemlich aufwendig sind. Das Programm erzeugt beispielsweise erstmal automatisch das FEM-Netz, berechnet dann die Schnittgrößen und kann erst anschliessend die Bemessung durchführen. Je nachdem, wie groß das System ist, bzw. wie viele FEM-Elemente und Lastfälle man hat, kann das schon relativ lange dauern. Also: Fortschrittsmelder eingebaut.

Das stellte sich ein paar Monate als ein schwerer Fehler raus: Irgendwann musste ich, aus Gründen die ich vergessen habe, den Fortschrittsmelder auskommentieren. Vermutlich musste irgendwas im UI gestestet werden bei dem der störte. Verblüffenderweise stellte sich dabei heraus: Ohne Fortschrittsmelder war das Programm so schnell, das es gar keinen Fortschrittsmelder benötigte. :-)

Das lag natürlich daran, das der nicht besonders geschickt implementiert worden war - mea culpa.

Heute gibts natürlich immer noch einen Fortschrittsmelder, weil es einfach System gibt die so gross sind, das das schlicht und ergreifend notwendig ist. Dabei handelt es sich aber um eine "verbesserte" Version, die die tatsächliche Arbeit nicht deratig verzögert wie das Original.