Referenzen Software-Portierungen/-Migrationen

SEW-Eurodrive GmbH & Co. KG (SEW)


SEW-EURODRIVE, das ist Bewegung, Tradition, Innovation, Qualität und Service - seit nunmehr 75 Jahren. Die Antriebssysteme von SEW-Eurodrive bewegen unzählige Förderbänder, Getränkeabfüllanlagen, Dächer von Sportstadien, Kieswerke, Montagelinien, Prozesse in der chemischen Industrie, Ihr Gepäck in Flughäfen und auch Sie selbst auf Rolltreppen. Ca. 500 Forscher und Entwickler arbeiten daran, die Zukunft der Antriebsautomatisierung zu erfinden und dabei noch ein bisschen besser zu machen. Mit weltweit über 12.000 Mitarbeitern hat sich SEW-EURODRIVE in seiner Geschichte zu einem der Marktführer in der Branche der Antriebsautomatisierung mit einem Umsatz von rund 1.8 Mrd. entwickelt. Je nach Anforderung oder Branche bietet SEW-EURODRIVE individuelle Lösungen aus dem umfassenden Baukasten mit Getriebemotoren und Frequenzumrichtern, Servo-Antriebssystemen, Dezentralen Antriebssystemen und Industriegetrieben.


Anfang der 90er Jahre wurde die Firma Siemens beauftragt, für das Servicezentrum und das Logistikzentrum im Fertigungswerk Graben-Neudorf in unmittelbarer Nähe zur Hauptverwaltung in Bruchsal neue Logistik-Anwendungen zu entwickeln. Als Basis für die Entwicklung wurde von SEW seinerzeiten die HP9000-Platform von Hewlett-Packard mit dem Unix-Derivat HP-UX ausgewählt, da Hewlett-Packard zu dieser Zeit Marktführer in diesem Segment war, die HP9000-Serverfamilie als sehr leistungsfähig und skalierbar galt und sowohl Hardware als auch Betriebssystem sehr robust und zuverlässig waren. Die Anwendungen wurden in der Programmiersprache C entwickelt und als Datenbanksystem wurde Oracle verwendet.

Im Rahmen einer strategische Entscheidung von SEW sollen alle Unix-basierenden Systeme im Konzern nach und nach durch Linux-Systeme ersetzt werden. Die Gründe für diese Entscheidung sind naheliegend: die bisher im Einsatz befindlichen HP9000-Server sind am Ende ihres Lebenszyklus und Hardware auf Intel-Basis und mit Linux-Betriebssystem ist wesentlich kostengünstiger (Anschaffung, Leistung/$, Wartung, Betrieb). Server-Systeme in dieser Hardware-/Betriebssystem-Kombination sind inzwischen so ausgereift, dass damit ein reibungsloser IT-Betrieb gewährleistet werden kann und auch geschäftskritische Anwendungen darauf eingesetzt werden können - Linux hat Einzug in die Business-IT genommen. So wurde von SEW für das Jahr 2008 die Portierung der Logistik-Anwendungen im Fertigungswerk Graben-Neudorf auf Linux geplant und und auch schon ein Termin für den Produktiveinsatz der portierten Anwendungen definiert.

Als Basis wurde nun die Linux-Distribution von RedHat gewählt, als C-Compiler sollte der standarmäßig mit Linux ausgelieferte gcc (C-Compiler der Gnu Compiler Collection) verwendet werden. Oracle Datenbank- und Maskensystem kamen in der Version 10.1 zum Einsatz.

Bei den ersten von SEW selbst durchgeführten Tests wurde festgestellt, dass der eigentliche Portierungsvorgang zwar relativ einfach durchzuführen ist, allerdings die Lauffähigkeit der portierten Programme auf dem Linux-System aufgrund vieler Programmabbrüche nicht gegeben war. Speziell bei der Übergabe von falschen bzw. nicht gesetzten Parametern in Funktionen terminierten die Programme mit den "segmentation violation" (SIGSEGV) bzw. "bus error" (SIGBUS) Signals. OrgaBIT, als Spezialist für Anwendungs-Migrationen bekannt, wurde daraufhin beauftragt zu untersuchen, warum genau die Programme terminierten und eine einfache Lösung zu implementieren, sodass die Gründe für die Programmabbrüche beseitigt bzw. umgangen werden konnten. Außerdem sollte noch das auf HP-UX genutzte Briefkasten-System (Schreiben von Meldungen in die Oracle-Datenbank) auf Linux implementiert werden.

Die ersten Untersuchungen ergaben folgende hauptsächlichen Gründe für die Terminierung der portierten Programme - die von OrgaBIT implementierte Lösung ist aus der rechten Spalte ersichtlich:

Problem OrgaBIT-Lösung
1. Übergabe von falschen (falscher Typ), unvollständigen (zu wenig) oder nicht gesetzten (NULL-Pointer) Parametern in die häufig verwendete Trace-Funktion. Diese Funktion schreibt Programm-Trace-Meldungen in entsprechende Trace-Files. Der Inhalt der Meldungen wird über einen Format-String und eine variable Anzahl von Parametern an die betreffende Funktion übergeben. Nutzung einer entsprechenden Compiler-Option des gcc C-Compilers, um die fehlerhaften Stellen durch eine Funktionsprototypen-Deklaration während der Übersetzung herauszufiltern:

int trace (const arg1, char *arg2, ... ) __attribute__ ((format (printf, 2,3)));
2. Übergabe von Strukturen in Funktionen "per Value" anstatt "per Reference", Übergabe von nicht Typ-konformen Parametern in Funktionen. Automatische Generierung von Funktionsprototypen-Deklarationen (Mitteilung an den Compiler, welche Funktion mit welchen Parametern und Datentypen aufgerufen werden muss) für alle Anwendungs-Funktionen und Zusteuerung dieser als Header-Files für den Übersetzungsvorgang. So gibt der Compiler für nicht Typ-konforme Übergabeparameter entsprechende Fehlermeldungen aus.
3. Übergabe von NULL-Pointern in die mem*() und str*() libc-Funktionen. Implementierung einer fehlertoleranten Zwischenschicht für die betroffenen Funktionen und automatische Ersetzung der Funktionsaufrufe im Anwendungs-Sourcecode während des Übersetzungsvorganges.
4. Wert-Zuweisungen von Strukturen mit nicht korrekten Struktur-Pointern (NULL bzw. geschützte Adressen). Hier war es nicht möglich eine automatische Lösung zu implementieren - die entsprechenden Stellen mussten händisch abgeändert werden.

Aufgrund der Tatsache, dass diese Fehler unter HP-UX nie aufgefallen waren und auch nicht zu Programmabbrüchen führten ist ersichtlich, dass der HP-UX C-Compiler und die HP-UX libc-Bibliothek mit dieser Art von Fehlern wesentlich kulanter umgehen und diese auch teilweise automatisch korrigieren.

Insgesamt waren die erwähnten notwendigen Maßnahmen, die Erstellung von entsprechenden Analyse-, Konvertierungs- und Generierungsscripts und die anschließend notwendigen Änderungen am Anwendungs-Sourcecode mit einem Aufwand von ca. 6 Wochen verbunden, nach ca. 4 Wochen intensiven Tests konnten die auf Linux portierten Anwendungen erfolgreich in den Produktivbetrieb übernommen werden.

© 2008 OrgaBIT - Organisation · Beratung · IT - Last Revised: 08.09.2008