Einführung in die Aspektorientierte Programmierung Seminarbetreuung: PD Wolfram Amme Bearbeitung: Martin Boehmer.

Slides:



Advertisements
Ähnliche Präsentationen
Objektorientierung Auffassung der Software als eine Sammlung
Advertisements

Datenbanken Einführung.
Frame-Logik Eine Einführung Andreas Glausch.
Designing Software for Ease of Extension and Contraction
Technischer Systemüberblick
Kapitel 4 Datenstrukturen
Freie Universität Berlin Institut für Informatik
On a Buzzword: Hierachical Structure David Parnas.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Modularisierungstechniken
Grundlegende Analysen & Zwischendarstellungen
AspectJ – Eine Aspektorientierte Programmiersprache
1 WS 2012 Software-Engineering II Aspektorientierung.
Kombination von AOP und FOP Ein Vortrag für das Seminar erweiterte Programmiertechniken von Samuel Simeonov im Sommersemester 2007.
CPLD/FPGA-Programmierung mit E-blocks. Wozu die CPLD/FPGA-Programmierung untersuchen? Zusammenhang zur modernen Digitalen Elektronik Verschwinden der.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Seminar Softwareentwicklung Programmierstil Helmut Schmidauer
Überblick über die Datenbankproblematik
Interne Audits helfen statt meckern
Situation Endlich haben Sie es geschafft auf alle Daten zuzugreifen und können in Ruhe weiterarbeiten und die Kundenanrufe betreuen. Plötzlich schaltet.
Daten- und Ablaufmodellierung
Objektorientierung.
Internetbasierte Fragebogenuntersuchungen und Surveys Christine Surer
AOP Lösung für Querschnittsaufgaben. Was ist AOP ? AOP ist kein Ersatz für OOP AOP ergänzt OOP AOP beinhaltet die Behandlung von Querschnittsaufgaben.
- Gänseliesel Galerie - Alexander Franke & René Monecke für die.
Kapitel 6 PPS-Planungskonzept.
Universität Bonn, Seminar AOP mit AspectJ WS 2003, Sebastian Scheid AOP mit AspectJ.
Middleware in Java vieweg 2005 © Steffen Heinzl, Markus Mathes Kapitel 1: Architektur verteilter Systeme.
1 Aspekte und Modellierung Seminar “Component and Aspect Engineering“ WS2003/2004 Univ.-Prof. Dr. Armin B. Cremers Dr. Günter Kniesel Daniel Speicher Referentin:
1 © KICK OFF Management Consulting GmbH, 2008 – KICK OFF Management Consulting GmbH A-1120 Wien, Gaßmannstrasse 25 Tel.:
Distributed Database Systems Parallele Datenbanksysteme von Stefan Schneider.
Objektorientierte (OO) Programmierung
Objektorientierte Programmierung Was ist das eigentlich ?
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Protokollieren, überwachen und verfolgen Vortrag zum Seminar „Aspektorientierte Programmierung“ von Andre Kaplick - 6. Juni 2016.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
Theorie des erfinderischen Problemlösens. Über TRIZ Was ist TRIZ? TRIZ und die anderen – Was sind die Unterschiede? Wann verwende ich TRIZ? TRIZ – eine.
Seminar Softwareproduktlinien Domänenspezifische Sprachen Sascha Draffehn von.
Domänenmodellierung Georg Marth. Definition Domänenmodell ● Eine Zusammenfassung von Funktionen, Objekten, Daten und Relationen in einer Domäne. -Kang.
Softwarepraktikum LEDA/C++ Lehrstuhl fuer Datenstrukturen und effiziente Algorithmen Prof. Naeher Dozent: Daniel Scmitt.
Einführung in AspectJ ● Inhalt: 1)Überblick 2)Elemente des crosscuttings in AspectJ 3)„Hello World“ in AspectJ 4)Wie Aspekte in Java verwoben werden 5)Join.
Tobias Sammet 8DY1 Programmieren Tobias Sammet 8DY2 Programmierung ● = das Schreiben eines Computerprogramms ● Dient zur Lösung eines.
1 Das Dilemma des Architekten Ziel: ein gut designtes System, welches mit zukünftigen Anforderungen umgehen kann, ohne dass es zu Einschränkungen in der.
© Tenbusch Oberstufenzentrum Informations- und Medizintechnik Objektorientierte Programmierung mit Java.
Anforderungen an die neue Datenstruktur
Das Entwurfsmuster Model-View-Controller
Hier sehen Sie die Datei „6Wände_und_3Fenster“ in einem üblichen IFC Viewer. U.a. zu erkennen: Die markierte Wand wurde so definiert, dass sie der Gebäudehülle.
Objektorientierte Programmierung
Kapitel 7 PPS-Planungskonzept.
Wichtige CMS Begriffe.
Spezifikation und Extraktion von Semantischen Mustern in Deutschen Gesetzen auf Basis von Linguistischen Eigenschaften unter der Verwendung von Apache.
Lifecycle-Management von Websites
Andrea Gros Ellen Engel
Differenzierung.
Gewachsene Architektur Das kann nicht funktionieren!
Power BI Für Ihr Unternehmen.
Der Schillerplatz um Schlicht, unverbaut, keine Autos
OO-Programmierung & Vererbung
Einführung in die Programmierung
Mögliche Stoffverteilung im Grundkurs
Objects first mit BlueJ und Greenfoot
9. Vererbung und Polymorphie
Implementieren von Klassen
3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen
Der Einsatz des Linksolvers in der ThULB – verbesserter Service
Modularisierung
Objektorientierte Programmierung
Objektorientierte Programmierung
Einsatzmöglichkeiten von web 2
 Präsentation transkript:

Einführung in die Aspektorientierte Programmierung Seminarbetreuung: PD Wolfram Amme Bearbeitung: Martin Boehmer

0. Inhalt Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 2 1.Grundlagen 2.Probleme bei konventioneller Programmierung 3.Lösung der Probleme mittels AOP 4.Bedeutung der AOP

Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 3 1. Grundlagen

Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 4  Alle Programmierparadigmen haben das Ziel, die Programmierung (u.a.) durch Abstraktion zu erleichtern  Der Maschinencode bleibt davon weitgehend unberührt Evolution der Programmiermethodik Definition: abstrahieren  Das Allgemeine im Einzelnen erkennen und von ihm abheben; verallgemeinern

1. Grundlagen Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 5  Assembler-Sprachen abstrahieren Maschinencode zu Befehlen  Prozedurelle Programmierung (PP) abstrahiert zusammenhängende Befehle in Methoden  Objektorientierte Programmierung (OOP) abstrahiert zusammengehörige Methoden und Datenstrukturen zu Objekten  Aspektorientierte Programmierung (AOP) abstrahiert spezielle Programmanforderungen Evolution der Programmiermethodik

1. Grundlagen Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 6  Programmanforderungen sind Anliegen (concerns), die durch den Software-Entwickler im Programm implementiert werden sollen.  Die Gesamtheit der umgesetzten Anliegen bildet das Software-System.  Man unterscheidet: Was sind Programmanforderungen  core concerns (core-level-concerns)  crosscutting concerns (system-level-concerns)

1. Grundlagen Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 7  sind funktionale (Kern-)Anforderungen, die das System erfüllen muss.  sind i.A. gut in einzelne Funktionen kapselbar (Grundgedanke der PP) und in Klassen zu Modularisieren (Grundgedanke der OOP). Core-Level-Concerns Beispiel: Kernfunktionalität eines ZIP-Programms ist i.e.S. die Komprimierung und Dekomprimierung der Daten und i.w.S. die Möglichkeit, diese Funktionalität auch nutzen zu können

1. Grundlagen Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 8  sind Anforderungen, die Systemweit an unterschiedlichsten Stellen implementiert werden müssen und dadurch nicht einfach zu kapseln sind.  heißen auch crosscutting concerns, weil sie durch die logischen Schichten des Systems „schneiden“. System-Level-Concerns Beispiel: Es soll ein LOG-File erstellt werden, dass das Betreten und verlassen einer jeden Prozedur verzeichnet. Am Anfang und Ende jeder Methode muss der dazu benötigte Code angefügt werden.

1. Grundlagen Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 9  AOP ist ein Programmierparadigma  AOP ergänzt andere Programmierparadigmen (z.B. OOP), ersetzt sie jedoch nicht  AOP managet crosscutting concerns Was ist AOP ?

Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: Probleme bei konventioneller Programmierung

2. Probleme bei konventioneller Progr. Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 11  Code tangling („verwobener Code“) tritt immer dann auf, wenn in einem Modul mehrere Anliegen simultan implementiert werden. 1. Generelle Probleme der Nicht-Modularisierung a) code tangling *[J. S. 16]

2. Probleme bei konventioneller Progr. Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: Generelle Probleme der Nicht-Modularisierung a) code tangling Nachteile:  Schlechte Lesbarkeit/Übersichtlichkeit  Fehlende Unabhängigkeit Änderungen am Code sind aufwendiger! Code kaum wiederverwertbar!

2. Probleme bei konventioneller Progr. Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 13  Code scattering („verstreuter Code“) tritt immer dann auf, wenn ein Anliegen (crosscutting concern) über mehrere Module implementiert wird.  Code scattering wird in zwei Kategorien unterteilt: 1. Generelle Probleme der Nicht-Modularisierung a) code scattering  duplicated code blocks  complementary code blocks

2. Probleme bei konventioneller Progr. Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: Generelle Probleme der Nicht-Modularisierung a) code scattering  duplicated code blocks  Durch die zerstreute Implementierung muss ein möglicherweise fast identischer Code in jeden einzelnen Modul umgesetzt werden. *[J. S. 17] Nachteile:  Unnötiger Impl.-Aufwand  Änderungen in jedem Modul einzeln notwendig

2. Probleme bei konventioneller Progr. Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: Generelle Probleme der Nicht-Modularisierung a) code scattering  complementary code blocks Nachteile:  Funktion nicht einsichtig  Änderungen gefährden bei Unkenntnis schnell die Funktionalität *[J. S. 18]  In unterschiedlichen Modulen implementierte Teile der Anforderung müssen zusammenarbeiten, um die Funktionalität zu gewährleisten.

2. Probleme bei konventioneller Progr. Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: Problem des abhängigen Codes  Die Unabhängigkeit von Modulen wird durch Crosscutting Concerns verhindert. *[J. S. 12] Nachteile:  Kein Modul ist unabh. vom Logging-Modul nutzbar Eingeschränkte Wiederverwertbarkeit

2. Probleme bei konventioneller Progr. Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 17  Betrachtet man n unabhängige Anforderungen, so kann man sie in einem n-Dimensionalen Koordinatensystem darstellen, wobei jede Anforderung eine Achse einnimmt.  Die Implementierung ist jedoch nur eindimensional möglich. 3. Ursache der Probleme Ein n-dim. Problem muss in einer eindim. Umgebung umgesetzt werden. *[J. S. 10]

Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: Lösung der Probleme mittels AOP

Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 19  Crosscutting Concerns werden statt in den Kern- Modulen in Aspekte implementiert Einführung von Aspekten Umsetzung: 1.Aspectual decomposition (Zerlegung der Anforderungen) 2.Concern implementation 3.Aspectual recomposition (Zusammenfügen der Anforderungen)

3. Lösung der Probleme mittels AOP Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 20  Zerlegen der Anforderungen  Identifikation der crosscutting concerns 1. Aspectual decomposition Die Zerlegung der Anforderungen ist vergleichbar der Zerlegung von Licht durch einen Prisma *[J. S. 9]

3. Lösung der Probleme mittels AOP Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: Concern implementation  Implementierung der Kernfunktionalität ohne AOP  Implementierung der Systemweiten Anforderungen mittels Aspekten In den Aspekt werden die sogenannten weaving rules geschrieben. Diese Regeln sagen dem System später, wie und wo der Aspekt einsetzt.

3. Lösung der Probleme mittels AOP Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: Concern implementation  In ein vorhandenes modularisiertes System soll ein Logger integriert werden  Die Kernfunktionalität wurde bereits in Modulen umgesetzt. Ebenfalls besteht bereits eine Klasse Logger. Beispiel: Wir benötigen folgende weaving rules:  Logge das Betreten einer Methode  Logge das Verlassen einer Methode

3. Lösung der Probleme mittels AOP Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: Concern implementation Beispiel: *[W] Advices

3. Lösung der Probleme mittels AOP Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: Concern implementation  Join Points sind implizit gegeben.  Der Pointcut spezifiziert die für den Aspekt relevanten Join Points  Die Advices sind implizit gegeben und spezifizieren, welcher Code wann innerhalb des Aspekts auszuführen ist. *[W]

3. Lösung der Probleme mittels AOP Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: Concern implementation  Der Aspekt greift extern auf die Module zu  Es ist auch möglich, die Module durch den Aspekt zu manipulieren. *[J. S. 13]

3. Lösung der Probleme mittels AOP Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: Aspectual recomposition  Der Aspect Weaver fügt die Core- und die Crosscutting-Module mit Hilfe der Weaving Rules wieder zusammen (weaving).  I.A. geschieht dies durch das kopieren des Quelltextes an die entsprechenden Join Points in den Modulen *[J. S. 25]

3. Lösung der Probleme mittels AOP Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 27 Analogie mit der Lichtbrechung an Prismen *[J. S. 22]

Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: Bedeutung der AOP

Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 29  Leichteres Design, Implementierung und Handhabung der System-Architektur  Kein Verzicht auf konventionelle Programmierparadigmen  Nachteile entstehen nur bei wirklicher Verwendung von Aspekten 1. Bedeutung für den Software-Entwickler  Bessere Lesbarkeit/Übersichtlichkeit  Änderungen einfacher  Erhöhte Sicherheit insbes. bei Änderungen  Erhöhte Wiederverwertbarkeit der Module

4. Bedeutung der AOP Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 30  Kürzere Produktentwicklungszeiten  Geringere Entwicklungskosten 2. Bedeutung für Unternehmen  Bei Konventioneller Programmierung müssen zukünftige Programmanforderungen bzw. Features bereits bei der Programmerstellung geplant werden.  Geringere Kosten bei Programmänderungen  Geringere Kosten bei der Implementierung neuer Features

Literaturverzeichnis Einführung in die Aspektorientierte Programmierung Martin BoehmerFolie: 31  *[W]  *[J.] „AspectJ in Action“, Ramnivas Laddad, S. 3-32