Aspektorientierte Programmierung. Modellierung und Programmierung 2



Ähnliche Dokumente
Aspektorientierte Programmierung (aspect-oriented programming, AOP)

VBA-Programmierung: Zusammenfassung

Robot Karol für Delphi

Algorithmen und Programmieren II Einführung in Python

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Funktionale GUI-Programmierung in Haskell mit Grapefruit

Java Kurs für Anfänger Einheit 5 Methoden

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

3. Stored Procedures und PL/SQL

Grundlagen von Python

Die Post hat eine Umfrage gemacht

Es gibt zwei Wege die elektronischen Daten aus Navision zu exportieren.

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Vorkurs C++ Programmierung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Regelungs- und Systemtechnik 1. Kapitel 1: Einführung

The B Method. B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode

Einführung in PHP. (mit Aufgaben)

Algorithmen mit Python

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Use Cases. Die Sicht des Nutzers. Fortgeschrittenenpraktikum SS 2004

teamsync Kurzanleitung

Grundbegriffe der Informatik

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Einführung in die Programmierung

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung bis

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Was ist Logische Programmierung?

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Prozedurale Datenbank- Anwendungsprogrammierung

Von Turbo Pascal zu Object Pascal

Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung

BIA-Wissensreihe Teil 4. Mind Mapping Methode. Bildungsakademie Sigmaringen

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Whitepaper. Produkt: combit Relationship Manager / address manager. Dateiabgleich im Netzwerk über Offlinedateien

Objektorientierte Programmierung OOP

Alignment-Verfahren zum Vergleich biologischer Sequenzen

Mathematik. UND/ODER Verknüpfung. Ungleichungen. Betrag. Intervall. Umgebung

Bilderzeugung Pixel. Daniela Glatz Jasmin Rießle. Sommersemester 2012

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Tipps und Tricks zu Netop Vision und Vision Pro

Use Cases. Use Cases

Office Box BB

SolarWinds Engineer s Toolset

QTrade GmbH Landshuter Allee München Seite 1

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Übungsklausur vom 7. Dez. 2007

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Techniken der Projektentwicklungen

Dokumentation für das Spiel Pong

affilinet_ Flash-Spezifikationen

1 Mathematische Grundlagen

Ablaufbeschreibung Einrichtung EBICS in ProfiCash

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

IMS - Learning Design

Petri-Netze / Eine Einführung (Teil 2)

Leere Zeilen aus Excel-Dateien entfernen

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Softwaretechnik (Allgemeine Informatik) Überblick

Kapitel MK:IV. IV. Modellieren mit Constraints

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Software Survivability

Hinweis, sofern Sie Probleme beim Download der Excel-Dateien für das LIOS-Makro haben:

Gezielt über Folien hinweg springen

Sowohl die Malstreifen als auch die Neperschen Streifen können auch in anderen Stellenwertsystemen verwendet werden.

Requirements Engineering I

Rapide An Event-Based Architecture Definition Language

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012

Beispiel vor dem Beweis:

RT Request Tracker. Benutzerhandbuch V2.0. Inhalte

Administrator Handbuch

Software-Lizenzierung und Aktivierung: Verteilen von Software mit Apple Remote Desktop

VB.net Programmierung und Beispielprogramm für GSV

Sortierte Folgen 250

Text-Zahlen-Formatieren

Mit einem Mausklick sind s aus ACT! heraus in Outlook geschrieben, die dann wiederum auf Wunsch in ACT! dokumentiert werden.

Individuelle Formulare

peer-to-peer Dateisystem Synchronisation

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Inhalt. 1 Installation und Konfiguration des Citrix Receivers

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

LISP. Eine Einführung

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

BPM im Kontext von Unternehmensarchitekturen. Konstantin Gress

Drupal Kurzanleitung. Wie ändere ich den Inhalt meiner Seite?

Updatehinweise für die Version forma 5.5.5

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

Tipps und Tricks zu Netop Vision und Vision Pro

Transkript:

Modellierung und Programmierung 2

Überblick Literatur: G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J.-M. Loingtier, J. Irwin: Aspect-Oriented Programming. In: Proceedings of the European Conference on Object-oriented Programming, Springer, 2007 Generalized Procedures AOP Definition Beispiele Umsetzung AOP mit Python

Generalized Procedures Rückblick Modellierung und Programmierung Modellierung Ziel: Entwurf eines Programmes zur Lösung einer Aufgabe concern: Anliegen bzw. Einheit des Programms (units) Zerlegung der Problems in concerns Programm entsteht durch Zusammensetzen der Units (Komposition) Programmierung Ziel: Umsetzung und Komposition der Units

Generalized Procedures Rückblick Modellierung und Programmierung Modellierung... Programmierung Ziel: Umsetzung und Komposition der Units Paradigmen: imperativ prozedural / modular objektorientiert funktional

Generalized Procedures Rückblick Modellierung und Programmierung Modellierung... Programmierung Ziel: Umsetzung und Komposition der Units Paradigmen: imperativ prozedural / modular objektorientiert funktional Gemeinsamkeit: Systemeinheiten sind Prozeduren Komposition erfolgt durch Prozeduraufruf Implementierung als Generalized Procedures (GP)

Generalized Procedures Rückblick Modellierung und Programmierung Modellierung Ziel: Entwurf eines Programmes zur Lösung einer Aufgabe concern: Anliegen bzw. Einheit des Programms (units) Zerlegung der Problems in concerns Programm entsteht durch Zusammensetzen der Units (Komposition) Programmierung Ziel: Umsetzung und Komposition der Units Implementierung als Generalized Procedures (GP)

Generalized Procedures Rückblick Modellierung und Programmierung Modellierung Ziel: Entwurf eines Programmes zur Lösung einer Aufgabe concern: Anliegen bzw. Einheit des Programms Zerlegung der Problems in funktionale Einheiten = functional decomposition Programm entsteht durch Komposition der Units Programmierung Ziel: Umsetzung und Komposition der Units Implementierung der funktionalen Einheiten als Generalized Procedures (GP)

Generalized Procedures cross-cutting concerns und entanglement Modellierung concern: Anliegen bzw. Einheit des Programms Zerlegung der Problems in funktionale Einheiten Manche Anliegen betreffen alle funktionalen Einheiten Bsp.: Logging Bei Funktionseintritt soll Funktionsname und Parameterliste in eine Datei geschrieben werden Bei Funktionsaustritt soll Rückgabewert in eine Datei geschrieben werden Logging-Bausteine tauchen überall auf: printf( Start of function %s, with params %s, name, params ); cross-cutting concerns

Generalized Procedures cross-cutting concerns und entanglement cross-cutting concern : Eigenschaft, die mehrere funktionale Einheiten betrifft Probleme: Ursache: Scattering: Implementierung über das ganze System verteilt Entanglement: Implementierung ist mit anderen Einheiten des Systems verwoben mehrere Kompositionsebenen Verschiedene concerns werden auf verschiedene Weise zusammengesetzt, müssen aber koordiniert werden

Generalized Procedures cross-cutting concerns und entanglement Ursache: mehrere Kompositionsebenen Verschiedene concerns werden auf verschiedene Weise zusammengesetzt, müssen aber koordiniert werden Beispiel Logging: Ebene 1: Funktionen des Programms (defun getbestfive (input) (returnfirstfive (sort input))) Ebene 2: Ablauf eines Funktionsaufrufs (progn (log 'start name params) (call name params) (log 'end name))

AOP Definition Eine Eigenschaft des Systems ist eine Komponente, wenn sie sauber in eine GP gekapselt werden kann sauber = an einer Stelle implementiert, leicht verfügbar und kombinierbar functional units ein Aspekt, wenn sie nicht sauber gekapselt werden kann cross-cutting concerns betrifft oft Eigenschaften, die sich auf Effizienz oder Semantik des ganzen Programms auswirken GP erlaubt Abgrenzung der Komponenten voneinander Ziel AOP: Mechanismus zum Abgrenzung von Komponenten und Aspekten untereinander

AOP Beispiele Standard-Beispiele: Logging, Caching, Zugriffsrechte, Authentifizierung Anwendung Sprache Komponenten Aspekte Digitale Bibliothek Objektorientiert Bücher, Sammlungen, Drucker Netzwerktraffic minimieren Synchronisation über mehrere Rechner Fehlerbehandlung Matrix-Rechnung Prozedural Lineare Algebra-Operati onen Matrix-Repräsentation Numerische Fehler Bildverarbeitung funktional Bildfilter Statische Speicherverwaltung Laufzeiteffizienz Zwischenergebnisse wiederverwenden

AOP Beispiel Texterkennung Basisfilter: Invertierung (defun not (a) (let ((result (new-image))) (loop for i from 1 to width do (loop for j from 1 to height do (set-pixel result i j (not (get-pixel a i j))))))) and, or, down, up Zusammengesetzte Filter: (defun remove (a b) (and a (not b))) (defun top-edge (a) (remove a (down a))) (defun bottom-edge (a) (remove a (up a))) (defun horizontal-edge (a) (or (top-edge a) (bottom-edge a))) Problem: elegant, aber ineffizient (Laufzeit und Speicher)

AOP Beispiel Texterkennung Filter (Komponenten) als Makro und High-Level formuliert: (define-filter 'or (a b) (pixelwise (a b) (aa bb) (or aa bb))) Laufzeiteffizienz (Aspekt) durch Filtervereinigungsregeln umgesetzt: (cond ((and (eq (loop-shape node) pointwise) (eq (loop-shape input) pointwise)) (fuse loop input pointwise :inputs (splice ) :loop-vars (splice ) :body (subst )))) Legt fest, wann zwei Loops vereinigt werden und wie das geschieht. Zusammensetzung durch Aspekt Weaver Erstellt Datenflussgraph aus Filterdefinitionen Formt Graph mit Regeln des Aspektprogramms um

Umsetzung AOP Zwei Sprachen: join points : Schnittmenge zwischen Komponenten und Aspekten Komponentensprache: Definition und Komposition von Komponenten Aspektsprache: Definition und Komposition der Aspekte Aspect-Weaver: führt Ko-Komposition von Aspekten und Komponenten durch Join-point-Repräsentation aus dem Komponentenprogramm Ausführung des Aspektprogramms Code-Generation

AOP mit Python Python ist funktionale Sprache Python behandelt Funktionen wie Werte Python ist dynamische Sprache jedes Objekt kann zur Laufzeit durch etwas anders ersetzt werden Python erlaubt reflection Jeder Scope ist in einer Map gespeichert und kann durchsucht werden

AOP mit Python wir bauen higher-order functions Beispiel Logging: def Logging(f): def loggedfunc(*args, **kwargs): # log start of function result = f(*args, **kwargs) # log result return result return loggedfunc Anwendung: def MyFunc(): MyFunc = Logging(MyFunc) Shorter: Use decorators @Logging def MyFunc(): Löst entanglement

AOP mit Python Lösung von Scattering: Funktion, die Namespaces durchsucht und Decorator auf jede passende Funktion anwendet Problem: unlesbarer Code Further reading: http://www.slideshare.net/meij200/aop-in-python-api-de sign-12937607 https://wiki.python.org/moin/pythondecoratorlibrary#m emoize http://dietbuddha.blogspot.de/2012/11/python-class-dec orator-logging.html

AOP mit Python Anwendung: def MyFunc(): MyFunc = Logging(MyFunc) Shorter: Use decorators @Logging def MyFunc(): löst entanglement