In Software vorhandenes Wissen sichern! Extraktion von Fachwissen aus Programmen Motivation In vielen Unternehmen – vor allem im verfahrenstechnischen oder Engineering Bereich – manifestiert sich kritisches Know-How nicht nur in den Köpfen einzelner Personen, sondern steckt in wesentlichen Teilen auch in für Prozesse und Verfahren ge nutzten Softwaresystemen. Je nach Fachgebiet manifestiert sich dieses Wissen als Menge von Berechnungen, Zustandsdiagramme oder Entscheidungstabellen. Dieses Wissen hat in der Regel langlebigen Charakter und wird in den Unternehmen über Jahre, wenn nicht Jahrzehnte, laufend weiter entwickelt, an geänderte Rahmenbedingungen angepasst und überdauert somit den Lebenszyklus eines typischen Softwareprodukts oder der hinter dieser Software stehenden Technologie. Die laufende Wartung, sowie ein gegebenenfalls erforderliches Reengineering solcher Programme ist dann oft mit wesentlichen Schwierigkeiten verbunden. Typischerweise kämpfen Reengineering-Projekte mit fehlender oder mangelhafter Dokumentation und Nachvollziehbarkeit der zugrundeliegenden Verfahren und Prozesse. Ve rstärkt werden diese Probleme durch die Tatsache, dass oftmals die menschl ichen KnowHow Träger im Unternehmen nicht mehr verfügbar sind und eine Nachvollziehba rkeit aus dieser Quelle ebenfalls nicht mehr möglich ist . In diesen Fällen bilden die Quelltexte dieser Programme die einzige Grundlage für eine mögliche Wiede rherstellung des unternehmenskritischen Wissens. Ziele und Durchführung Ziel ist die möglichst automatisierte Extraktion oder auch Regenerierung von Fachwissen aus vorhandenem Quellcode und darauf aufbauend die Erzeugung neuer, nutzbringender Artefakte. Diese können von Dokumentation bis hin zu (neuem) Programmcode reichen. Dabei geht es nicht nur um die bloße statische Analyse und die Auflösung von Abhängigkeiten. Es werden vielmehr die tatsächlichen Berechnungen aus den Quelltexten extr ahiert. Zusätzlich können z.B. durch symbolische Ausführung Korrektheitsprüfungen durchgeführt werden (z.B. zur Ermittlung des Verlaufs physikalischer Einheiten in einer Berechnung). Die Erzeugung neuer Artefakte läuft im Idealfall vollautomatisch ab. Zu- sätzlich wird versucht, Inkonsistenzen und Lücken im vorliegenden Know-How zu erkennen oder aber auch abgebildete Prozesse und Verfahren zu optimieren. Leistungsangebot Als Leistungen können wir in diesem Zusammenhang anbieten: Problemanalyse und Anforderungserhebung. Abschätzung der Realisierbarkeit einer Lösung für Ihr konkretes Problem. Falls erfo rderlich, wird dies durch experimentelles Prototyping unterstütz t. Abschätzung des Aufwands unter Berücksichtigung der bereits am SCCH vorhandenen Methoden. Implementierung einer für Ihr Problem maßgeschneiderten Lösung: Beispielsweise automatisierte Analyse Ihrer Codebasis, ggf. unter Adaptierung eines geeigneten Parsers, Implementierung erforderlicher und/oder Adaptierung bestehender Analysemethoden, Generierung der gewünschten Zielartefakte. Nutzen Der wesentliche Nutzen liegt in der Sicherstellung des in Software abgebildeten Wissens, das in der Regel einen unternehmenskritischen Aktivposten darstellt. Dieses kann in für Menschen lesbare Dokumentation und maschinell weiter verarbeitbare Spezifikationen abgebildet werden. Durch die automatisierte Generierung kann eine signifikante Zeit- und Kostenersparnis erzielt werden. Das in expliziter Form vorliegende Wissen ermöglicht das umfassende Verständnis der Software und erleichtert somit deren Wartbarkeit. Soll die vorhandene Software neu gestaltet werden (z.B. Migration auf eine neue Technologie), ergeben sich weitere Vorteile: Rationalisierung: Die Analyse hilft Altlasten zu identifizieren und zu beseitigen. Bei einer manuellen Migration werden häufig Vereinfachungen, die sich aus Möglichkeiten der neuen Zieltechnologie ergeben können, nicht genutzt. Die Codeanalyse kann helfen dieses Rationierungspotential zu heben . Optimierung: Wird der Code verstanden, lassen sich Optimierungen fachlicher Natur leichter entdecken. Zeit- und Kostenersparnis beim Reengineering: Die automatische Generierung von Code für das Zielsystem kann den Zeitaufwand für ein Reengineering wesentlich ve rringern und damit die damit verbundenen Kosten senken. Ansprechpartner Mag. Bernhard Dorninger Project Development Models, Architectures and Tools [email protected] www.scch.at Software Competence Center Hagenberg GmbH T: +43 7236 3343 891 Softwarepark 21, 4232 Hagenberg F: +43 7236 3342 888 Referenzprojekte Die Art der Fragestellungen und Motive hinter einem Analyse - und Re-Engineering Projekt können mannigfaltiger Natur sein (siehe Referenzprojekte). Im Wesentlichen geht es dabei aber immer um die Wartung oder Neugestaltung des fachlichen Aspekts der b etrachteten Software, das Reengineering der eigentlichen Softwarearchitektur spielt im betrachteten Kontext meist keine oder nur eine untergeordnete Rolle. Siemens Transformers Weiz Ein wesentliches, unternehmenskritisches Asset von STW ist eine umfangreiche Cod ebasis für das Electrical Engineering, die mit Programmiersprachen wie C++ und Fortran erstellt wurde. Hier handelt es sich nicht nur um über die Jahre entstandene n Code, vielmehr wird fachlicher Code auch gänzlich neu geschrieben. Mit Hilfe statischer und symbolischer Analysen wird die Erstellung der fachlichen Dokumentation weitestgehend automatisiert. So wird die Synchronisation zwischen Programmcode und fachlich er Dokumentation und damit deren Konsistenz sichergestellt. Dabei kann die gesamte Programmdokumentation automatisch generiert werden, wobei bis zu 70% der Dokumente ohne zusätzliche Änderungen im Code erzeugt werden können. Die restlichen Teile können durch Ergänzungen im Programmcode abgedeckt werden. voestalpine AG Das klassische Problem mit über die Jahre gewachsenem Programmcode ist der Gegenstand eines Projekts mit der voestalpine AG im Bereich der Stahlerzeugung. Für die E rstellung von Statistiken und Berichten wird eine hohe Anzahl von PL/SQL Skripte verwendet. Die Herausforderung manifestiert sich primär in der Tatsache, dass diese Skripte über die Jahre bereits mehrmals an eine veränderte IT -Infrastruktur angepasst werden mussten. Beim Wechsel der Datenbanksysteme wurden die Skripte teils automatisch migriert, mittlerweile ist dadurch nicht mehr 100%ig feststellbar aus welchen Datenque llen die Ergebnisse stammen und auf welchen Grundlagen sie berechnet wurden. Die Komplexität der Gesamtheit der PL/SQL Skripte und ihrer Abhängigkeiten, sowie die nicht mehr aktuelle Dokumentation verhindern die durchgängige Nachvollziehbarkeit der Berechnungen. Somit ist auch eine Wartung der Software kaum mehr möglich. Mit Hilfe verschiedener Analysemethoden auf Basis des PL/SQL Quellcode werden die Abhängigkeiten aufgelöst und die Zusammenhänge vereinfacht und dokumentiert. ENGEL Maschinen Austria Ein weiteres Projekt beschäftigt sich mit der Migration von Benutzerschnittstellen. E NGEL migriert eine Software zur Maschinenvisualisierung auf eine neue Plattform. Die Analyse hat zum Ziel, die Struktur der grafischen Elemente der Benutzerschnittstelle, sowie deren Varianten herauszufiltern und in einer abstrahierten Form bereitzustellen. Dieses Modell kann in weiterer Folge zur Generierung von Benutzerschnittstellen für neue Technologien im Bereich Visualisierung genutzt werden.