Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Klaus D. Günther GMD - Institut für Sichere Telekooperation 1.

Ähnliche Präsentationen


Präsentation zum Thema: "Klaus D. Günther GMD - Institut für Sichere Telekooperation 1."—  Präsentation transkript:

1 Klaus D. Günther GMD - Institut für Sichere Telekooperation http://www.sit.fraunhofer.de/Lava 1

2 Ausgangslage Die Nachfrage nach neuer Software wächst beständig. Existierende Software veraltet immer schneller und muss dann an neue Anforderungen angepasst werden. Greencard und Verstärkung der Informatiker-Ausbildung reichen nicht, um den wachsenden Software-Engpass erfolgreich zu beheben. Das Programmieren selbst muss entscheidend vereinfacht und beschleunigt werden. 2 Klaus D. Günther, GMD-SIT

3 3 Rapid Application Development mit Fertig-Bauteilen Wir können uns auf die Dauer nicht mit den gegenwärtig populären Programmiersprachen, wie C++, Java, VisualBasic, oder C# zufriedengeben. Wir brauchen neue RAD-Sprachen und RAD-Programmier- umgebungen, die das Programmieren wesentlich vereinfachen und beschleunigen, weniger fehleranfällig machen, Programme in übersichtlicher Weise aus kleinen, für sich verstehbaren Funktionen, aus anpassbaren Klassen und Entwurfsmustern und aus gebrauchsfertigen Software- Komponenten zusammmensetzen.

4 4 Klaus D. Günther, GMD-SIT Syntaktische Fertigbauteile in Lava Verfeinerbare Skelette ausführbarer Anweisungen und Ausdrücke (Metaprogrammierung). Verschachtelte Deklarationen in auf- und zuklappbarer Baumdarstellung, ein Popup-Formular pro Deklaration. Top-Deklarationen oben/außen, Hilfsdeklarationen unten/innen. Drag-and-Drop, Cut/Copy/Paste werden nicht mehr auf Text, sondern auf sinnvolle strukturelle Einheiten angewandt.

5 5 Klaus D. Günther, GMD-SIT Konsequenzen der syntaktischen Fertigbauweise Der Lava-Programmierer wird von dem fehlerträchtigen Kampf mit der komplexen Syntax rein textueller Programmiersprachen befreit. Texteditoren werden vollständig durch Struktureditoren abgelöst. Lego-artige Komposition und Restrukturierung von Programmen auf Struktur- statt auf Textebene. Lava ist eine kompakte Sprache, die auf einem Minimum orthogonaler Konzepte basiert und dadurch leicht zu lernen ist.

6 6 Klaus D. Günther, GMD-SIT Anpassbare Fertigbauteile auf Klassen-Ebene Klare Aufteilung von Klassen nach dem Black-Box-Prinzip in ein öffentliches Interface und eine private Implementation: Ein großer Vorteil von Modula2 und Ada wird so für die objektorientierte Programmierung wiedergewonnen. Mehrfachvererbung für Interfaces erlaubt Zerlegung komplexer Anwendungen in kleine Funktionsgruppen, die (anders als in Java) getrennt implementiert werden können. Spezialisierung abgeleiteter Klassen durch Überschreiben von Funktionen, Member-Variablen und Typ-Parametern (s.u.) wird durch speziellen Override-View leicht gemacht.

7 7 Klaus D. Günther, GMD-SIT Anpassbare Fertigbauteile auf Pattern-Ebene Klassen und Packages können Typ-Parameter haben: Virtual Types (VTs). Ableitungs- und (Mehrfach-)Vererbungsbegriff auch für solche parametrisierten Packages. Diese sind bestens geeignet, wiederverwendbare, spezialisierbare Design Patterns als Familien aufeinander bezugnehmender Klassen darzustellen.

8 8 Klaus D. Günther, GMD-SIT Fortsetzung Pattern-Ebene Override-View auch für Design Patterns. Type-Casts nach (abschreckendem!) C++ - und Java - Muster sind in Lava dank den Lava-VTs nicht mehr nötig. Lava unterstützt sogar virtuelle Basisklassen (VT als Basisklasse), wodurch besondere Abstraktionsmöglichkeiten eröffnet werden (etwa im Sinne des Decorator Pattern). Lava behält den klassischen Begriff von Typverträglichkeit als Normalfall bei, erlaubt aber auch, Variablen mit der schwächeren Subtyp-Verträglichkeit zu deklarieren.

9 9 Klaus D. Günther, GMD-SIT Fertigbauteile auf Komponenten-Ebene Der Lava-Komponentenbegriff orientiert sich am Microsoft Component Object Model (COM) (das CORBA Component Model (CCM) ist ähnlich): Sprachunabhängige, gebrauchsfertige Komponenten, in denen Komponentenobjekte mit weltweit eindeutiger ID (CLSID) kreiert werden können, die ihrerseits mehrere Interfaces mit weltweit eindeutiger Interface-ID (UUID) haben können, zwischen denen navigiert werden kann. Unterstützung enger Komponenten-Integration: Compound Documents, In-Place-Activation, Menu-Merging, Drag-and-Drop,...

10 10 Klaus D. Günther, GMD-SIT Fortsetzung Komponenten-Ebene Typsichere Lava-Spracheinbettung: Kreieren neuer Komponenten-Objekte mit dem normalen Lava-Objektkreations-Konstrukt new, Ankoppeln schon laufender Komponenten-Objekte mit dem Lava-attach-Konstrukt. Event Notification wahlweise durch serverbestimmte Callbacks (COM: Connection Points, CCM: Receptacles) oder durch Lava-Callbacks, die auch Client-Data unter- stützen und durch die Ausnutzung von Lava-VTs echt objektorientiert und typsicher sind.

11 11 Klaus D. Günther, GMD-SIT Lava in der objektorientierten Analyse Lava bietet sich auch schon für die objektorientierte Analyse an (wo man heutzutage oft UML-Use-Cases und UML-Klassendiagramme benutzt), da es das inkrementelle Vervollständigen von Klassen mit Attributen, Methoden, Methoden-Parametern und das Umordnen und Umbenennen von Deklarationen durch automatische Folge-Updates sehr leicht macht. Philosophie: Lava als durchgängige Primärsprache von der Analyse bis zu Implementation, automatisches Generieren sekundärer Diagrammdarstellungen bei Bedarf.

12 12 Klaus D. Günther, GMD-SIT Lava im objektorientierten Entwurf Für den objektorientierten Entwurf ist Lava durch die eingebaute Unterstützung von Design Patterns (mit parametrisierten Klassen und Packages, Ableitungs- und Vererbungsbegriff für Packages) in besonderer Weise geeignet. Darüberhinaus bietet sich an, die Schachtelung von Packages zu benutzen, um ganze Pattern Languages in Lava darzustellen.

13 13 Klaus D. Günther, GMD-SIT Übersicht: Automatismen in Lava Automatische Anpassung aller Referenzen nach Umbenennung/Umordnung von Deklarationen und nach Änderung von Formalparameter-Listen. Insbesondere automatische Konsistenz von Interface und Implementation, automatische Erzeugung eines Implementations-Skeletts für Funktionen/Konstruktoren. Automatischer Korrektheits-Check mit sofortigen Fehlermeldungen nach jedem (Struktur-)Edit-Schritt. Automatisierte Unterstützung von Overrides.

14 14 Klaus D. Günther, GMD-SIT Fortsetzung: Automatismen in Lava Automatisiertes Generieren von Combo-Boxen zur Auswahl erlaubter Referenzen. Automatische Erzeugung einer anpassbaren Default- Formulardarstellung zu einem Lava-Interface, dauerhafte Konsistenz von Interface und Formular. Automatisierte, transparente Daten-Persistenz. Automatische Erzeugung einer verlinkten HTML- Darstellung eines Lava-Programms.

15 15 Klaus D. Günther, GMD-SIT Datenbanken und Transaktionen in Lava Eingebaute Query-Ausdrucksmittel (Quantoren foreach und exists, logische Konjunktionen, select-Ausdruck) machen embedded SQL überflüssig. Rein deklarative Ausdrucksmittel für Multi-Threading, Synchronisation und Transaktionen. Datenbanken werden wie persistente Komponenten- Objekte mit dem attach-Konstrukt an die Anwendung angekoppelt und wie transiente Lava-Objekte handhabbar gemacht.

16 16 Klaus D. Günther, GMD-SIT Experimentelle neue Lava-Features, die zu einem höheren Grad von strukturierter Programmierung führen sollen Single-Assignment: Nur eine Wertzuweisung an eine Variable in jedem Programmzweig. Als Konsequenz gibt es in Lava keine herkömmlichen sequentiellen Schleifen mehr. Stattdessen Quantoren und (vorzugsweise kleine) rekursive Funktionen. Vereinfachung des Datenflusses (von oben nach unten), ähnlich wie das GOTO-Verbot den Kontrollfluss übersichtlicher gemacht hat.

17 17 Klaus D. Günther, GMD-SIT Fortsetzung Experimentelle Lava-Features Zwei Objekt-Kategorien: Variable Zustands-Objekte (z.B. Bankkonto) und nach Fertigstellung versiegelte konstante Werte-Objekte (z.B. Überweisungsauftrag). Die unterschiedlichen Rollen von Objekten werden schon in ihrer Deklaration sichtbar gemacht. Die Methoden von Zustands-Objekten werden im typischen Fall unter Transaktions-Schutz ablaufen. Zugleich strengere Objekt-Initialisierungs-Disziplin: Alle nicht-optionalen Member-Variablen müssen explizit in einem Klassen-Initializer initialisiert werden.

18 18 Klaus D. Günther, GMD-SIT Fortsetzung Experimentelle Lava-Features Funktionen haben Input- und Output-Parameter. Einem Input-Parameter darf in der Funktion kein Wert zugewiesen werden, einem (nicht-optionalen) Output- Parameter muss in jedem Funktions-Zweig ein Wert zugewiesen werden. Eine nicht als constant deklarierte Funktion darf nicht mit einem versiegelten Werte-Objekt aufgerufen werden. Eine constant deklarierte Funktion darf keinem Member ihres self-Objekts einen neuen Wert zuweisen.

19 19 Klaus D. Günther, GMD-SIT Fortsetzung Experimentelle Lava-Features Member-Variablen von Lava-Klassen können constituents, acquaintances oder Rückwärts-Links darstellen. Dadurch werden sinnvolle eingebaute Kopier- und Vergleichsoperationen in Lava ermöglicht, bei denen constituents in die Kopier/Vergleichsoperation einbezogen werden, während acquaintances nur als Pointer kopiert/ verglichen werden. Die Lava-Speicherverwaltung basiert auf Referenz-Zählern und vermeidet dadurch die Garbage-Collection-Bursts von Java.

20 20 Klaus D. Günther, GMD-SIT Ausblick Da Lava-Programme direkt als AST (Abstract Syntax Tree) erzeugt, gespeichert und interpretiert werden, ist die Open-Source-Lava-Software besonders geeignet für Experimente mit Programm-Analyse und -Synthese, insbesondere Generative und Aspektorientierte Programmierung, Programmtransformations-Techniken, Restrukturierung/Refactoring von Programmen. Attraktive Spielwiese für alle an diesen Fragen Interessierten Forscher!

21 21 Klaus D. Günther, GMD-SIT Ausblick Insbesondere legt die Struktureditor-Technik es nahe, ein- und ausblendbaren bedingten Programmcode zu unterstützen für die Bildung von Programm-Varianten, Software-Familien, Produktlinien, (mit Steuerung durch externe Parameter) für das inkrementelle Hinzufügen von ausführbarem Code beim Override von Methoden.


Herunterladen ppt "Klaus D. Günther GMD - Institut für Sichere Telekooperation 1."

Ähnliche Präsentationen


Google-Anzeigen