Forschungsschwerpunkte der AG Softwaretechnik

Die Forschung in der AG Softwaretechnik zielt darauf ab, die Programmierung zu verbessern. Dazu gehören insbesondere die methodische Programmkonstruktion aus Bausteinen, das Design neuer Sprach- und Spezifikationskonzepte, die Entwicklung mächtiger Programmierwerkzeuge und eine Implementierungsunterstützung für die Werkzeugentwicklung. Im Einzelnen konzentrieren sich die Forschungsarbeiten zur Zeit auf folgende zum Teil eng verzahnte Schwerpunkte.

Objektorientierte und verteilte Programmierung

Um Programme bausteinartig zusammensetzen zu können, bedarf es eines tieferen Verständnisses der möglichen Beziehungen zwischen Programmmodulen. Beispiele für solche Beziehungen sind Vererbung zwischen Klassen in der objektorientierten Programmierung und die verschiedenen Implementierungsbeziehungen. Die verbesserten Modularisierungskonzepte werden sowohl die Programmiersprachen als auch die Programmiermethodik beeinflussen, insbesondere auch im Zusammenhang mit Problemen der verteilten Programmierung.

Schnittstellenspezifikation von Programmbausteinen

Programmierbausteine sollten ohne Kenntnis von Implementierungsdetails verwendet werden können. Dafür benötigt man eine präzise Beschreibung der Schnittstelleneigenschaften. In der Arbeitsgruppe werden zur Zeit Techniken entwickelt, die eine formale Spezifikation des funktionalen Verhaltens und weiterer Schnittstelleneigenschaften von Programmteilen in abstrakter Weise ermöglichen.

Programmverifikation

Neben den klassischen, meist syntaxorientierten Fähigkeiten sollen Programmierumgebungen in Zukunft auch Verifikationsunterstützung leisten. Dabei kann Verifikation sowohl dazu dienen, bestimmte Programmtests überflüssig zu machen, als auch für sicherheitskritische Software die vollständige Korrektheit eines Programms bzgl. seiner Spezifikation zu beweisen. In der Arbeitsgruppe wird derzeit an einer Verifikation für die Sprache Java gearbeitet.

Spezifikation von Programmiersprachen

Eine präzise Spezifikation von Programmiersprachen ist die Grundlage für jeden Umgang mit Programmen. Programme sind nur dann portabel, wenn die Sprache, in der sie geschrieben sind, sauber definiert ist. Übersetzer können nur korrekt sein bzgl. einer Sprachspezifikation. Programme lassen sich nur verifizieren, wenn sie eine präzise definierte Bedeutung haben. Darüber hinaus können Programmiersprachenspezifikationen für die automatische Generierung von Programmierwerkzeugen verwendet werden. Forschungsarbeiten in diesem Bereich konzentrieren sich darauf, unterschiedliche Sprachspezifikationstechniken, die für verschiedene Aufgabenbereiche entwickelt wurden, zu integrieren.

Werkzeuge zur Implementierung von Programmiersprachen

Übersetzer, Interpreter und Analysewerkzeuge für Programme sind in ihrer Implementierung stark abhängig von der Programmiersprache, die sie unterstützen. Generierungstechniken erlauben es, derartige Programmierwerkzeuge aus formalen Sprachbeschreibungen automatisch zu erzeugen. Dadurch lässt sich der Entwicklungsaufwand erheblich reduzieren. In der Arbeitsgruppe wird in diesem Bereich an dem selbstentwickelten Katja-System, Nachfolger des MAX Systems, gearbeitet, das klassische Attributierungstechniken und operationelle Spezifikationstechniken integriert.