Fehlertoleranz durch aspektorientierte Programmierung
|
|
|
- Artur Kirchner
- vor 8 Jahren
- Abrufe
Transkript
1 Fehlertoleranz durch aspektorientierte Programmierung Max Günther Technische Universität Dortmund 5. März / 34
2 Motivation Fehlertoleranz ist wichtig aber mühselig in Software einzubauen Abhilfe durch aspektorientierte Programmierung (AOP) Code Magie? Fehlertoleranz Binärcode 2 / 34
3 Inhalt 1 Motivation 2 Aspektorientierte Programmierung 3 OSGi 4 Fehlertoleranz in OSGi 5 Fehlertoleranz in Programmen 6 Fazit 3 / 34
4 Was ist aspektorientierte Programmierung? public void foo () { logging (" beginne foo ");... logging (" foo erfolgreich "); } public void bar () { logging (" beginne foo ");... logging (" foo erfolgreich "); } redundanter Code ist schlecht insbesondere bei querschneidenen Belangen aspektorientierte Programmierung querschneidene Belange werden separat implementiert anschließend werden sie in den Code eingewoben 4 / 34
5 AspectJ AspectJ ist Aspektorientierung für Java man definiert Pointcuts und Advices an diesen wird der spezielle Aspektcode ausgeführt der spezielle Aspektcode wird von einem Aspektweber in den Code eingewoben 5 / 34
6 AspectJ - Beispiel public aspect AspectJExample { pointcut logging () : execution ( int MyClass. check *(..)) execution ( String MyClass. check *(..)); } void before () : execution ( logging ()) && this ( foo ) { System. out. println (" Vor dem Aufruf von " + foo. tostring ()); } 6 / 34
7 Was ist OSGi? eine Plattform zum dynamischen Laden von Softwarekomponenten geschrieben in Java State of the Art (in Java) bekannte Implementierungen: Equinox (Eclipse), Apache Felix und Knopflerfish 1 1 Quellen Bilder: / 34
8 Softwarekomponenten teilen Software in kleine Teile können weitgehend unabhängig voneinander entwickelt werden bieten Services an verwenden Services können dyamisch zur Laufzeit des Programmes geladen werden und installiert, gestarted, gestoppt, deinstalliert 8 / 34
9 Probleme mit Fehlern in OSGi defekte Softwarekomponenten gefährden die Stabilität der OSGi Plattform Probleme durch übermäßigen CPU Verbrauch übermäßigen Speicherverbrauch (ungültige Referenzen) native Treiber native Bibliotheken 9 / 34
10 Fehlertoleranz in OSGi durch aspektorientierte Programmierung hier Paper Applying Dependability Aspects on Top of Aspectized Software Layers [2] Sandboxes werden verwendet um nicht vertrauenswürdige Komponenten zu isolieren Sandboxes werden durch AOP in verschiedene OSGi Implementierungen eingewoben dadurch weniger Coderedundanz sowie Wiederverwendbarkeit über mehrere Implementierungen nicht vertrauenswürdig vertrauenswürdig OSGI OSGI + 10 / 34
11 Darstellung der Layer durch AOP verschiedene Layer von OSGi sind in der API verstreut diese Layer sind also querschneidend Layer können als Aspekte definiert werden! Ausschnitt für den LifeCycle Aspekt[2]: public aspect LifeCycle { pointcut install (): execution ( Bundle BundleContext +. installbundle ( String,..)); pointcut stop (): execution ( void Bundle +. stop (..)); } pointcut deactivate (): call ( void BundleActivator +. stop ( BundleContext )); 11 / 34
12 Dependability interessant sind die Abhängigkeiten zwischen den Layern und den Komponenten hier entsteht die Anfälligkeit für Fehler vier Aspekte: Isolierung von Komponenten (Component Isolation Aspekt) Isolierung von Services (Service Isolation Aspekt) Überwachung von Services (Stale Service Monitoring Aspekt) Verwaltung (Autonomer Management Aspekt) 12 / 34
13 Component Isolation Aspekt Unterscheidung von vertrauenswürdigen und nicht vertrauenswürdigen Komponenten (durch eine Policy Datei) zwei Platformen: eine für vertrauenswürdige, eine für nicht vertrauenswürdige Komponenten beide Platformen kommunizieren über Inter Process Communication (IPC) die Komponenten Isolation schneidet sich durch die Life Cycle Transitionen und ServiceRegistry OSGI IPC OSGI + 13 / 34
14 Component Isolation Aspekt: kleines Problem einige Funktionen rufen andere Funktionen auf an beiden Funktionen wird der gleiche Code eingewoben sollte aber nur einmal eingewoben werden Lösung: cflowbelow Konstrukt (Ausschnitt[2]) public aspect ComponentIsolation { void around ( Bundle b): LifeCycle. start () &&! cflowbelow ( LifeCycle. start ()) && this (b) { if (! PlatformProxy. issandbox () && PolicyChecker. checkisolation ( b)) { PlatformProxy. start ( b. getbundleid ()); } else { proceed (); } } } 14 / 34
15 Service Isolation Aspekt Services werden innerhalb der gleichen Applikation isoliert Isolation durch Sandboxes nicht möglich stattdessen Kommunikation über Proxies Proxies: trennen Konsumenten von Anbietern (und umgekehrt) überwachen, ob nicht verwendete Referenzen entstehen (Stale References) wird eine Methode auf einem nicht (mehr) registierten Service aufgerufen Exception 15 / 34
16 Stale Service Monitoring Aspekt verwendet einen Service Coroner (Gerichtsmediziner) dieser nutzt weak references werden vom Garbage Collector nicht mitgezählt ein Objekt das nur von weak references referenziert wird, gilt als tot kann also vom Garbage Collector aus dem Speicher gelöscht werden A weak reference B A weak reference B kann aufgesammelt werden B C normale Referenz B kann nicht aufgesammelt werden 16 / 34
17 Autonomer Management Aspekt bisher: Überwachung und Isolation Autonomer Management Aspekt ergreift Maßnahmen: Analyse der Überwachungsdaten Neustarten von abgestürzten Komponenten oder der Sandbox erkannt werden[2]: übermäßge CPU Nutzung Stale Services übermäßige Speichernutzung übermäßige Thread Instanzierung übermäßiges Aufrufen von Services Aufbewahrung von Stale Services 17 / 34
18 Fehlertoleranz in Programmen durch aspektorientierte Programmierung bisher: Lösung für spezifische Plattform nun: Fehlertoleranz für allgemeinere Programme 18 / 34
19 Fault injection-based assessment of aspect-oriented implementation of fault tolerance [1] Ruben Alexanderson und Johan Karlsson haben solche Methoden getestet zwei Applikationen Fibonacci Reihe brake-by-wire Sprachen (bzw. Compiler): AspectC++ Ext (Zugriff auf globale Variablen kann gewoben werden) AspectC++ Opt optimierte Variante von AspectC++ Ext außerdem Vergleich zwischen optimiert und nicht optimiert 19 / 34
20 Double Signature Control Flow Checking (DS-CFC) Überwachung des Kontrollfluss durch Funktionskennzeichnungen Funktionen müssen die Reihenfolge beachten: Aufruf Betreten der Funktion möglichweise Aufruf von anderen Funktionen Verlassen der Funktion Rückkehr in den Kontext dazu wird ein Stack (Stapel) verwendet 20 / 34
21 Triple Time Redundant Execution mit Forward Recovery (TTR-FR) dreifache Ausführung anschließende Abstimmung über das Ergebnis gewonnenes Ergebnis wird verwendet 21 / 34
22 Testapplikationen Fibonacci Applikation berechnet Fibonacci Reihe sehr klein Fehler pflanzen sich nach spätestens zwei Iterationen fort brake-by-wire Applikation von Volvo entwickelt größer (445 Programmzeilen) näher an der Echten Welt ausgeführt auf einem MPC565 Mikrocontroller Tests mit AspectC++ Ext (mit -finline) AspectC++ Opt reine C Implementierung jeweils mit den GCC Optimierungsstufen -O0 und -O3 22 / 34
23 Fehler Modell und Injektion nur Injektion von einfachen Bitfehlern keine Injektion in das PC Register Fehlerklassen: No Effect (NE) Corrected SW (CSW) Detected SW (DSW) Detected HW (DHW) Timeout (TO) Value Failure (VF) Abdeckung X = #X N Abdeckung Gesamt = 1 #V F N 23 / 34
24 Resultat ohne Software Schutz Abdeckung NE DHW TO Gesamt Keine (geringe) Optimierungen Fibonacci 11, 7% 60, 4% 1, 4% 73, 5% Brake-by-wire 33, 3% 46, 4% 0, 4% 80, 01% Hohe Optimierung Fibonacci 3, 4% 36, 4% 0, 1% 39, 7% Brake-by-wire 36, 4% 43, 3% 0, 0% 79, 8% kleiner Anteil an NE Fehlern bei Fibonacci Effekt wird durch Optimierungen verstärkt 24 / 34
25 Resultat mit DS-CFC Schutz Abdeckung NE DSW DHW TO Gesamt Fibonacci C 13, 0% 33, 0% 48, 5% 0, 8% 95, 3% AspectC++ Ext 13, 0% 27, 9% 49, 2% 0, 8% 90, 9% AspectC++ Opt 10, 8% 35, 9% 47, 4% 0, 7% 94, 8% Brake-by-wire C 24, 7% 17, 0% 46, 8% 0, 4% 88, 9% AspectC++ Ext 26, 1% 20, 7% 44, 5% 0, 2% 91, 5% AspectC++ Opt 26, 4% 22, 2% 41, 1% 0, 5% 90, 2% Verbesserung - 17% bis 36% hohe Gesamtabdeckung 25 / 34
26 Resultat mit TTR-FR Schutz Abdeckung NE CSW DSW DHW TO Gesamt Fibonacci C 12, 3% 33, 4% 0, 5% 49, 0% 1, 3% 96, 4% AspectC++ Ext 15, 8% 27, 2% 0, 2% 55, 0% 0, 3% 98, 5% AspectC++ Opt 13, 6% 32, 6% 0, 4% 50, 3% 1, 0% 97, 8% Brake-by-wire C 34, 5% 15, 2% 0, 9% 45, 6% 0, 2% 96, 4% AspectC++ Ext 26, 3% 12, 0% 0, 8% 56, 3% 0, 1% 95, 5% AspectC++ Opt 33, 2% 17, 1% 0, 5% 45, 3% 0, 3% 96, 5% nöch höhrere Gesamtabdeckung CSW + DSW entspricht der DSW von DS-CFC 26 / 34
27 Overhead TTR-FR mit wenigen Optimierungen (in %) 1,000 1, code data trace C AspectC++ Ext AspectC++ Opt 27 / 34
28 Overhead TTR-FR mit hohen Optimierung (in %) code data trace C AspectC++ Ext AspectC++ Opt 28 / 34
29 Overhead DS-CFC mit wenigen Optimierungen (in %) code data trace C AspectC++ Ext AspectC++ Opt 29 / 34
30 Overhead DS-CFC mit hoher Optimierung (in %) code data trace C AspectC++ Ext AspectC++ Opt 30 / 34
31 Fazit AOP verringert den Aufwand für den Programmierer AOP führt neue Modularität in Programmcode ein insbesondere vorteilhaft für objektorientiere Architekturen die Schichten verwenden lesbarer, flexibler und portablerer Code Overhead bei Ausführung, Codegröße und Datengröße Overhead ist akzeptabel wenn Optimierungen verwendet werden 31 / 34
32 Quellen I Ruben Alexandersson, Johan Karlsson, Fault injection-based assessment of aspect-oriented implementation of fault tolerance. Dependable Systems and Networks (DSN), , IEEE Computer Society Washington, DC, USA, Kiev Gama, Didier Donsez, Applying dependability aspects on top of aspectized software layers. Proceedings of the tenth international conference on Aspect-oriented software development (AOSD), , ACM, the OSGi Alliance, The OSGi Architecture. Oliver Böhm, Aspektorientierte Programmierung mit AspectJ 5. dpunkt.verlag, 2005.
33 Quellen II the AspectJ Team, The AspectJ(tm) 5 Development Kit Developer s Notebook.
34 Vielen Dank für Ihre Aufmerksamkeit
Die OSGi Service Plattform
Die OSGi Service Plattform Seminarvortrag Bernhard Cleven Gliederung 1 Einleitung 2 Das Framework 3 Bundles 4 Services 5 Beispiel 6 Fazit Seite 1/ 17 Einleitung Warum OSGi? Durch Modularisierung flexible
Spring Dynamic Modules for OSGi Service Platforms
Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick
Smartphone Entwicklung mit Android und Java
Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de [email protected] Was ist Android Offene Plattform für mobile Geräte Software Kompletter
Spring Dynamic Modules for OSGi Service Platforms
Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick
Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007
Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit
OSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder
Michael Greifeneder OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder von Peter Kriens W-JAX Keynote 2007 und Neil Bartletts Getting Started with OSGi
Einführung in AOP. Rico Schiekel - 012816 [email protected]. Agenda. Kernproblem der Objekt Orientierung
Einführung in AOP Informatikseminar Rico Schiekel - 012816 [email protected] Fachhochschule Ravensburg Weingarten Hochschule für Technik und Sozialwesen Einführung in AOP Agenda Kernproblem der Objekt Orientierung
Aspektorientierte Programmierung (aspect-oriented programming, AOP)
Aspektorientierte Programmierung (aspect-oriented programming, AOP) Abstract Die aspektorientierte Programmierung ist ein neues Programmierparadigma, das die Probleme und Nachteile, die aus der prozeduralen
Dynamische Plug-ins mit Eclipse 3. Martin Lippert ([email protected], www.it-agile.de) Tammo Freese ([email protected])
Dynamische Plug-ins mit Eclipse 3 Martin Lippert ([email protected], www.it-agile.de) Tammo Freese ([email protected]) Überblick Die Ausgangslage Dynamische Plug-ins Warum? Eclipse 3 Die OSGi-basierte
Redundanz und Replikation
Redundanz und Replikation Fehlertoleranz auf Systemebene Kurt Kanzenbach Friedrich Alexander Universität Erlangen-Nürnberg 25. November 2014 1 / 29 Redundanz und Replikation Replikation Replikation: Koordinierter
Anwendung der Aspektorientierung : Security
Seminar AOSD Anwendung der Aspektorientierung : Security Miao Tang Betreuer: Dipl.-Inform. Dirk Wischermann 1. Motivation Anwendung der AO: Security 2 Sicherheitsprobleme beim Design und bei der Programmierung
Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern [email protected]
Eclipse Runtime (OSGi) als Plattform eines Swing Rich Client Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern [email protected] Zu meiner Person
Das Interceptor Muster
Das Interceptor Muster Implementierung des Interceptor Musters basierend auf OSGi and Friends Benjamin Friedrich Hochschule für Technik und Wirtschaft des Saarlandes Praktische Informatik - Entwurfsmuster
White Paper. Embedded Treiberframework. Einführung
Embedded Treiberframework Einführung White Paper Dieses White Paper beschreibt die Architektur einer Laufzeitumgebung für Gerätetreiber im embedded Umfeld. Dieses Treiberframework ist dabei auf jede embedded
Software ubiquitärer Systeme
Software ubiquitärer Systeme Übung 3: Aspekte in Betriebssystemen und AspectC++-Tutorial Michael Engel und Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund
Gerd Wütherich Nils Hartmann. OSGi Service Platform by example
Gerd Wütherich Nils Hartmann OSGi Service Platform by example Die OSGi Service Platform Das Buch» Detaillierte Einführung in OSGi-Technologie» April 2008, dpunkt.verlag» ISBN 978-3-89864-457-0» Website:
Repetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
Gerd Wütherich Martin Lippert. OSGi Service Platform by example
Gerd Wütherich Martin Lippert OSGi Service Platform by example Die OSGi Service Platform Das Buch» Detaillierte Einführung in OSGi-Technologie» April 2008, dpunkt.verlag» ISBN 978-3-89864-457-0» Website:
Advanced Software Engineering WS0910 Kapitel4. Dr. Dominik Haneberg
Advanced Software Engineering WS0910 Kapitel4 Dr. Dominik Haneberg ASPEKT-ORIENTIERTE ENTWICKLUNG 08.02.2010 Advanced Software Engineering 2 Einführung Aspektorientierte Programmierung (AOP) ist ein Programmierparadigma,
OSGi: Technologiebewertung für den Einsatz in der Automatisierung
OSGi: Technologiebewertung für den Einsatz in der Automatisierung Henrik Eichenhardt Hauptseminar Systemorientierte Informatik "Fabrik- und 1 Gliederung 1. Einleitung 2. OSGi 3. OSGi im Detail 4. OSGi
Aspekt Orientierte Programmierung
Kapitel 13 Aspekt Orientierte Programmierung 13.1 Aspekte in Apache Wir betrachten den Quellcode des Apache-Servers: Der Code zum XML-Parsen steckt in einer eigenen Klasse (rot) Quelle: aspectj.org 0 ausgearbeitet
Speicher und Adressraum
Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode
6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
Theorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
Application Frameworks
Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung
AuD-Tafelübung T-B5b
6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit
Testen mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
Hauptseminar AOSD. Aspektorientierte Programmierung am Beispiel AspectJ
Hauptseminar AOSD Aspektorientierte Programmierung am Beispiel Seite 1 Aspektorientierte Programmierung Umfeld - eine Definition Elemente in Introduction Pointcut Join Point Advice Aspect Errors and Warnings
Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team
Modulare Anwendungen und die Lookup API Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team Die Notwendigkeit modularer Anwendungen Die Notwendigkeit modularer
Vorkurs Informatik WiSe 15/16
Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
Java für C++ Programmierer
Java für C++ Programmierer Alexander Bernauer [email protected] Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?
Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
Grundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
Software Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
Einstieg in die Informatik mit Java
1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:
J a v a S e r v l e t s
J a v a S e r v l e t s Eine Einführung (C) J.M.Joller 1 Inhalt Mitgelieferte Bibliothekselemente Überblick Funktionsweise und Architektur Interaktion Resümee (C) J.M.Joller 2 Überblick Was sind Servlets?
OpenCL Implementierung von OpenCV Funktionen
Multi-Core Architectures and Programming OpenCL Implementierung von OpenCV Funktionen [email protected] Hardware/Software Co-Design August 18, 2011 1 Table of content 1 OpenCL
Programmierung von Smart Cards mit Hilfe von Java
Java Card 2.1.2 Programmierung von Smart Cards mit Hilfe von Java Übersicht 1. Einführung Smart Cards 2. Java Card Spezifikationen 3. Java Card Development Kit 4. Java Card in der Praxis und Fazit 1. Einführung
Kapitel 4: Klassen und Unterklassen
Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind
Kosten der Abschirmung von Code und Daten
Kosten der Abschirmung von Code und Daten Alexander Züpke, Kai Beckmann, Andreas Zoor, Reinhold Kröger [email protected] Motivation Internet der Dinge STM32F4 Mikrocontroller 2 Motivation Internet
Middleware - Übung. Framework. Security Layer & Module Layer
OSGi Überblick Middleware - Übung Tobias Distler, Michael Gernoth, Rüdiger Kapitza Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de
Einführung in die Aspect Orientierte Programmierung (AOP) Arno Schmidmeier, AspectSoft JUGS Zürich, Januar 2003
Einführung in die Aspect Orientierte Programmierung (AOP) Arno Schmidmeier, AspectSoft JUGS Zürich, Januar 2003 Inhalt AOP Einführung Meine Erfahrungen Fragen und Antworten AOP Einführung Arno Schmidmeier
Einstieg in die Informatik mit Java
1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition
Überschreiben von Methoden
Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra
Komponentenbasierte Softwareentwicklung
Seminar WS04 Komponentenbasierte Softwareentwicklung Karl Pauls Software-Komponente A software component is a unit of composition with contractually specified interfaces and explicit context dependencies
Thema: Aspekt-orientierte Entwicklung: Einführung
Thema: Aspekt-orientierte Entwicklung: Einführung Student: Doris Tchouaffé Studiengang: Master Technische Informatik Matrikelnummer: 11021433 Betreuer: Prof. Dr. Hans W. Nissen Abgabedatum: 08.05.2008
3. Klassen Statische Komponenten einer Klasse. Klassenvariablen
Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.
Grundlagen der Fehlerbehandlung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 06: Ausnahme- und Fehlerbehandlung in Java.
Universität Osnabrück 1 Grundlagen der Fehlerbehandlung 3 - Objektorientierte Programmierung in Java Vorlesung 06: Ausnahme- und Fehlerbehandlung in Java SS 2006 Prof. Dr. F.M. Thiesing, FH Osnabrück Wenn
1.4. Funktionen. Objektorientierte Programmierung mit C++
mehrfache Deklarationen sind erlaubt für jede Funktion muss es (GENAU) eine Definition geben, ansonsten linker error [the one definition rule ODR] Deklarationen in *.h - Files, Definitionen in *.cpp -
C# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
Integrated Modular Avionics & ARINC 653
Integrated Modular Avionics & ARINC 653 Martin Wißmiller Gliederung IMA - Traditioneller Ansatz - IMA-Ansatz - IMA-Generationen ARINC653 - Speicherpartitionierung - Zeitpartitionierung - Kommunikation
Einstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
Trace- und Zeit-Zusicherungen beim Programmieren mit Vertrag
Trace- und Zeit-Zusicherungen beim Programmieren mit Vertrag Mark Brörkens Universität Oldenburg, Fachbereich Informatik Email: [email protected] Einleitung Programmieren mit Vertrag
Enterprise JavaBeans Überblick
Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5. Java Persistence: Entity Manager 6.
Programmierkurs. Manfred Jackel
Java für Anfänger Teil 7: Methoden Programmierkurs 06.-10.10.2008 Manfred Jackel 1 Methoden In der imperativen Programmierung sind Funktionen ein wichtiges Mittel zur Modularisierung. [Oft benötigter]
Effiziente Java Programmierung
Effiziente Java Programmierung Seminar Implementierung moderner virtueller Maschinen am Beispiel von Java SS 2009 von Reinhard Klaus Losse 20. Mai 2009 Gliederung Definition Effizienz Werkzeuge zum Messen
Einführung in Google Web Toolkit
Einführung in Google Web Toolkit Lars Pfannenschmidt Tobias Ullrich Software Freedom Day 2009 Lars Pfannenschmidt, Tobias Ullrich () Einführung in Google Web Toolkit Software Freedom Day 2009 1 / 24 Aus
SEMINARVORTRAG ANDROID ENTWICKLUNG ETIENNE KÖRNER EMBEDDED SYSTEMS SS2013 - HSRM
SEMINARVORTRAG ANDROID ENTWICKLUNG ETIENNE KÖRNER EMBEDDED SYSTEMS SS2013 - HSRM ÜBERSICHT Android Android Dalvik Virtuelle Maschine Android und Desktop Applikationen Android Entwicklung Tools R Activity
Java Virtual Machine (JVM) Bytecode
Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,
OSGi: Anwendungsszenarien, Auswahlkriterien und Ausblick
OSGi: Anwendungsszenarien, Auswahlkriterien und Ausblick Thementag OSGi 03.11.2009 Autor: Christoph Schmidt-Casdorff Agenda Wo wird OSGi derzeit eingesetzt? Grundsätzliche Anwendungsszenarien OSGi Status
Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo
Webentwicklung mit Vaadin 7 Theoretische und praktische Einführung in Vaadin 7 Christian Dresen, Michael Gerdes, Sergej Schumilo Agenda Allgemeines Architektur Client-Side Server-Side Vaadin UI Components
DevOps. Alexander Pacnik, Head of DevOps Engineering
DevOps Alexander Pacnik, Head of DevOps Engineering 29.09.2016 Einführung... Produktfokussierung die Entstehungsgeschichte der Veränderung Umsatz / Features Innovative Phase (technisch orientiert) Deliver
LabVIEW Real Time Hands on
LabVIEW Real Time Hands on Dipl. Ing. Sebastian F. Kleinau Dipl. Ing. (FH) Marian Olef Applications Engineering National Instruments Deutschland GmbH Plattform für das grafische Systemdesign Desktop Real-Time
Konzepte von Betriebssystem-Komponenten. Programmstart & dynamische Bibliotheken SS 05. Wladislaw Eckhardt.
Proseminar KVBK Programmstart dynamische Bibliotheken Konzepte von Betriebssystem-Komponenten Programmstart & dynamische Bibliotheken SS 05 Wladislaw Eckhardt [email protected] 1 1 Einleitung 1.1 Problematik
2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)
Musterlösung Übung 2 Aufgabe 1: Große Zahlen Das Ergebnis ist nicht immer richtig. Die Maschine erzeugt bei Zahlen, die zu groß sind um sie darstellen zu können einen Über- bzw. einen Unterlauf. Beispiele
Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
Application Note. Anbindung von Kunden-Software an SpiderControl Web Visualisierung
2015-02-25 1 of 6 Application Note Anbindung von Kunden-Software an SpiderControl Web Visualisierung Version ApplicationNote_AnbindungFremdsoftware /Version Seite 1 / 6 Version Datum Kommentar Autor 0.1
Universität Hamburg. Seminar: Effiziente Programmierung in C. Referenzzählung. Autoren: Kevin Köster. Betreuer: Michael Kuhn
Universität Hamburg Seminar: Effiziente Programmierung in C Referenzzählung Autoren: Kevin Köster Betreuer: Michael Kuhn 31. März 2013 Inhaltsverzeichnis 1 Einleitung 3 1.1 Das Problem.................................
Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung
Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung Seite 1 Allgemeines Dozent Dr. Th. Letschert Lernziel Einführung in die Software-Entwicklung und Programmierung Kenntnisse einer
Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software
Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL3 Folie 1 Grundlagen Software steuert Computersysteme
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
Tag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!
AOP im Einsatz mit OSGi und RCP. Martin Lippert, Peter Friese und Heiko Seeberger
AOP im Einsatz mit OSGi und RCP Martin Lippert, Peter Friese und Heiko Seeberger Agenda Einführung Aspect-Weaving im Überblick Aspect-Weaving für OSGi: Equinox Aspects Anwendungsfall: Security für Eclipse-RCP
Vorlesung Rechnerarchitektur. Einführung
Vorlesung Rechnerarchitektur Einführung Themen der Vorlesung Die Vorlesung entwickelt an Hand von zwei Beispielen wichtige Prinzipien der Prozessorarchitektur und der Speicherarchitektur: MU0 Arm Speicher
1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
Compute Unified Device Architecture CUDA
Compute Unified Device Architecture 06. Februar 2012 1 / 13 Gliederung 2 / 13 : Compute Unified Device Architecture entwickelt von Nvidia Corporation spezifiziert Software- und Hardwareeigenschaften Ziel:
Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal
Implementierung der Jikes Research Virtual Machine
Fakultät Informatik Institut für technische Informatik, Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Implementierung der Jikes Research Virtual Machine Hauptseminar Technische Informatik
Einführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
Continuous Everything
Continuous Everything Development, Integration, Deployment, DevOps Peter Hormanns cusy GmbH, Berlin Vortrag OpenRheinRuhr 5./6. November 2016 de.slideshare.net/cusyio/continuous-everything Kapitel you
2008 Jiri Spale, Programmierung in eingebetteten Systemen 1
2008 Jiri Spale, Programmierung in eingebetteten Systemen 1 NetX - Einführung 2008 Jiri Spale, Programmierung in eingebetteten Systemen 2 NetX is... a highly integrated network controller with a new system
Aspekt-orientierte Programmierung
Aspekt-orientierte Programmierung Andreas Zeller Lehrstuhl für Softwaretechnik Universität des Saarlandes, Saarbrücken 2006-01-09 Separation der Interessen Die Separation der Interessen (separation of
