Entwicklungsarbeit

Wer OMA für eine betagte Verwandte und SMIL für eine Gemütsäußerung hält und außerdem in der IT arbeitet, sollte sich dringend ein gutes Glossar zulegen, das gängige und exotische Akronyme erklärt.

vorlesen Druckansicht
Lesezeit: 6 Min.
Von
  • Kai König

Mit „ARD, ZDF, C&A - BRD, DDR und USA ...“ beginnt der Text des Liedes MFG der Fantastischen Vier über Abkürzungen und Akronyme. Der Erfindung immer neuer Kürzel sind kaum Grenzen gesetzt und so bietet auch die IT-Welt eine Unmenge von Kurzbegriffen für ihre Vielfalt an Techniken.

Auf der Suche nach den Inhalten von Akronymen aus der Welt der Entwicklungsparadigmen und Programmiermetaphern, über die man stets und ständig stolpert, bietet es sich an, den Streifzug durchs Web mit einem Rückblick auf die Herkunft heutiger Programmiersprachen zu beginnen. Einen guten und ausführlichen Start bietet die „Geschichte der Programmiersprachen“ von Dr.-Ing. Horst Zuse. Ein Word-Dokument führt dort auf circa 70 Seiten durch die Thematik, geht auf Personen wie John Warner Backus, Noam Chomsky oder Niklaus Wirth ein und beschreibt, welchen Anteil diese an der Herausbildung der heute vielfach genutzten Programmierparadigmen und -sprachen hatten.

Empfehlenswert ist auch ein Poster des O’Reilly-Verlags, das die Entwicklung der heutigen Programmiersprachen grafisch veranschaulicht und als PDF-Version zur Verfügung steht. Für den Hausgebrauch fehlt nur noch der DIN-A1-Posterplotter.

Unabhängig von der Historie der Programmiersprachen und der Quelle, aus der man sich zu diesem Thema informieren möchte, kristallisieren sich regelmäßig verschiedene Ansätze und Paradigmen heraus, denen eine Programmiersprache zuzuordnen ist. Seit einigen Jahren in aller Munde und - nach persönlicher Meinung des Autors nicht immer korrekt - oft als der ultimative Heilsbringer des Software-Engineering propagiert, ist das objektorientierte Paradigma mit all seinen Facetten. Einen guten Überblick liefert eine Vorlesung aus dem Jahr 2000.

Damit ist die erste Gruppe der Akronyme erreicht. Mit dem Präfix OO sind generell viele Sub- und Nebentechniken der Objektorientierung versehen. So bezeichnet OOP die objektorientierte Programmierung oder Sprachen, die dem objektorientierten Paradigma folgen. Eine Übersicht gängiger OO-Sprachen ist schnell zur Hand. Die bekanntesten Vertreter sind Java, C++ und Smalltalk, wobei sich Letzteres trotz seines rein objektorientierten Konzepts kommerziell nicht durchsetzen konnte.

Neben OOP finden sich häufig die Akronyme OOA (objektorientierte Analyse) und OOD (objektorientiertes Design). Der gängigen Meinung folgend legt ein Team in der Analysephase fest, was ein objektorientiertes System tun soll, und in der Designphase, wie es das tun wird. Die OOA setzt sich demnach aus einer Analyse- und Modellierungsphase zusammen, soll softwareunabhängig sein und keine Optimierungen oder Annahmen auf die Zielsprache enthalten. Das objektorientierte Design löst genau diese Aufgaben und legt die Architektur des Softwaresystems fest, um die Rahmenbedingungen für die Umsetzung des Modells der OOA-Phase zu schaffen. Naturgemäß gibt es in manchen Fällen keine scharfe Trennlinie zwischen beiden Begriffen. Eine ausführliche Darstellung mit vielen Zitaten von Berühmtheiten der Objektorientierung findet man in der Object FAQ.

Als Standarddarstellung fĂĽr objektorientierte Modelle hat sich die Unifed Modeling Language (UML) etabliert, getragen inzwischen von der Object Management Group (OMG) und aktuell verfĂĽgbar in der Version 1.5. Teilspezifikationen zu UML 2.0 liegen bereits vor und sollten im Laufe des Jahres 2005 in der Freigabe der Version mĂĽnden.

Historisch gesehen hat sich die UML im Laufe der neunziger Jahre des letzten Jahrhunderts aus verschiedenen Techniken und Notationen der objektorientierten Analyse und des Designs entwickelt, sodass man heute die Notationen von Booch, Jacobson und Rumbaugh als ihre Vorläufer ansieht. Wer sich bislang noch gar nicht mit UML beschäftigt hat, findet bei der OMG eine hilfreiche und einfach zu lesende Einführung mit weiteren Verknüpfungen und bei der oose.de GmbH eine Übersicht über unterstützende Tools.

Weitläufig zur OO-Welt gehören auch die Begriffe AOP und MDA. Bei AOP handelt es sich um die aspektorientierte Programmierung, eine Anpassung und Erweiterung des objektorientierten Paradigmas um den Begriff des Aspekts, dessen Sinn und Zweck die Modellierung so genannter Crosscutting Concerns ist, bei denen es sich um Belange und Eigenschaften handelt, die ein gesamtes Softwaresystem durchziehen, die mit dessen Fachlichkeit aber wenig zu tun haben. Umfassende Informationen zu AOP präsentiert die AOSA (Aspect-Oriented Software Association), eine deutschsprachige Einführung liefert Software-Coach.de. Inzwischen unterstützen Tools für die Softwareentwicklung mit konkreten Sprachen die aspektorientierte Programmierung. Für Java bietet sich beispielsweise mit AspectJ eine Lösung für Eclipse an.

Bei der MDA (Model Driven Architecture) handelt es sich um einen Ansatz der OMG, die bestehende Lücke zwischen Modellierung und Programmierung zu schließen. Dazu führt die MDA verschiedene Konzepte wie das plattformunabhängige und das plattformspezifische Modell ein und stellt Spezifikationen zur bidirektionalen Überführung beider in (Teil-)Implementierungen bereit. Die MDA-FAQ der OMG bietet einen Einstieg und stellt inhaltliche Verbindungen zur OO-Welt und zur UML dar.

Nach diesem kurzen Rundumschlag noch ein Blick in die Welt außerhalb der Objektorientierung, wenn auch ohne Akronyme: Noch immer von Bedeutung sind die imperative und prozedurale Programmierung. Erstere fasst ein Programm als Folge von Anweisungen auf. In der Objektorientierung findet man sie heute in der Regel innerhalb einzelner Methoden. Die prozedurale Programmierung erweiterte die imperative um die Möglichkeit, zusammengehörigen und sich wiederholenden Code in einzelne Prozeduren auszulagern. Als typische imperative oder prozedurale Sprachen gelten Pascal und Basic.

Die funktionale Programmierung fasst ein Programm als Funktion auf, die basierend auf Eingabewerten eine definierte Wertemenge als Ausgabe liefert. Innerhalb der Funktion werden weitere Funktionen nach der gleichen Systematik gebildet und genutzt. Beispiele sind Lisp, ML (Meta-Language) oder Haskell.

Und zu guter Letzt noch für alle, die bis hier gelesen haben, weil sie auf die Auflösung der eingangs genannten Akronyme gehofft haben: Hinter OMA verbirgt sich die Object Management Architecture, und das ohne „e“ geschriebene Lächeln bezeichnet die Synchronized Multimedia Language. (ka)