Einfacher und schneller Datenaustausch

Der Einsatz von Multicore-Technologie oder die Migration dorthin birgt eine Reihe von Fragen und Herausforderungen für die Entwickler. Grundsätzlich bringt es noch keinen Vorteil, eine Anwendung, die für sequentielle Ausführung implementiert worden ist, in einer Multicore-Umgebung laufen zu lassen. Erst wenn man beim Design der Applikation die Möglichkeiten der parallelen Ausführung in mehreren „Ausführungspfaden“ berücksichtigt, wird man in einer Multicore-Umgebung bessere Ergebnisse erzielen als in einem herkömmlichen System. Interessanterweise ist gerade der objektorientierte Entwicklungsansatz, welcher vielfach in der modernen Softwarepraxis angewendet wird, vom Konzept her bereits nebenläufig also parallel angelegt.

Objektorientierter Ansatz

Die vollständige Abstraktion des objektorientierten Ansatzes spiegelt sich in der standardisierten Modellierungssprache Unified Modeling Language (UML) wider. Sie ermöglicht es, in jeder Phase der Softwareentwicklung das zu realisierende Softwaresystem über verschiedene Diagrammformen grafisch zu beschreiben. Bemerkenswert dabei ist, dass viele UML Diagrammtypen von Haus aus Nebenläufigkeiten und Parallelitäten unterstützen und eine entsprechende Syntax zur Verfügung stellen. Die UML ist inzwischen weltweit akzeptierten und wird in der Entwicklung von Software und Systemen vielfach eingesetzt. Man sollte also meinen, dass Softwareapplikationen, die mit Hilfe der UML entworfen wurden, ein gewisses Maß an Parallelität unterstützen und somit prädestiniert sind für die echte parallele Verarbeitung in einer Multicore-Umgebung. Das ist allerdings nicht der Fall. Oftmals gibt es eine Diskrepanz wischen dem eigentlichen objektorientierten Entwurf des Systems und seiner Umsetzung, was einen nicht unerheblichen Programmieraufwand für den Programmierer bedeutet. Dieser zusätzliche Aufwand, aber auch die Natur der textuellen Programmiersprachen, verleiten Programmierer dazu, ursprünglich objektorientierte Systementwürfe letztendlich sequentiell umzusetzen. Die Intention des Entwurfes und die tatsächliche Implementierung laufen auseinander.

Moderne UML-Werkzeuge

Hier sind Entwickler im Vorteil, die moderne UML-Werkzeuge einsetzen, die aus den grafischen UML-Modellen Code generieren und die Kommunikationsmechanismen frei Haus und transparent implementieren. IBM Rational Rhapsody gehört zu dieser Kategorie von Tools. Ein Service Layer, der auf dem Betriebsystem aufsetzt, stellt die oben genannten Mechanismen zur Verfügung. Der Entwickler kann sich damit auf den eigentlichen Entwurf, das Verhalten der Objekte und die Kommunikation zwischen den Objekten konzentrieren. Routinearbeiten und Implementierung der Basisdienste werden vom Tool übernommen. Zur Besonderheit gehört, dass das Laufzeitverhalten der Applikation grafisch auf UML Ebene nachverfolgt und gesteuert werden kann. Hierbei handelt es sich nicht etwa um eine Simulation, sondern um den tatsächlichen, sozusagen auf UML Ebene visualisierten Code der Applikation. Das besondere: Dieses „grafische Debuggen“ der Applikation ist auch auf einer Target Plattform möglich. Verhalten der Zustandsautomaten, Aktivitätendiagramme, Objektinteraktion anhand von Sequenzdiagrammen, Lebenszyklus der Objekte, Variablenbelegung, all diese Aspekte sind in Rhapsody einsehbar während die Applikation ausgeführt wird. Das Systemverhalten kann auf der grafischen Modellebene validiert werden und im Weiteren auch getestet werden.