Fehlertoleranz durch aspektorientierte Programmierung
|
|
- Artur Kirchner
- vor 6 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
MehrSpring 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
MehrSmartphone Entwicklung mit Android und Java
Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de info@predic8.de Was ist Android Offene Plattform für mobile Geräte Software Kompletter
MehrSpring 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
MehrEclipse 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
MehrOSGi. 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
MehrEinführung in AOP. Rico Schiekel - 012816 rschiekel@web.de. Agenda. Kernproblem der Objekt Orientierung
Einführung in AOP Informatikseminar Rico Schiekel - 012816 rschiekel@web.de Fachhochschule Ravensburg Weingarten Hochschule für Technik und Sozialwesen Einführung in AOP Agenda Kernproblem der Objekt Orientierung
MehrAspektorientierte 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
MehrDynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org)
Dynamische Plug-ins mit Eclipse 3 Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Überblick Die Ausgangslage Dynamische Plug-ins Warum? Eclipse 3 Die OSGi-basierte
MehrRedundanz 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
MehrAOP Day 07. eine Veranstaltung der SIG AspectJ. organisiert vom AOP-Komitee. und der guten Fee. powered by. Oliver Böhm Darko Palic Ludger Solbach
AOP Day 07 eine Veranstaltung der SIG AspectJ organisiert vom AOP-Komitee Oliver Böhm Darko Palic Ludger Solbach und der guten Fee Bori Gerhardt powered by Historisches (1) Dez. 2005: AspectJ Winter Camp
MehrAnwendung 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
MehrAndreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern andreas.moesching@rtc.ch
Eclipse Runtime (OSGi) als Plattform eines Swing Rich Client Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern andreas.moesching@rtc.ch Zu meiner Person
MehrDas 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
MehrAgenda. Informatik I WS05/06 Folien von Tobias Dezulian
15.12.2005 Agenda Geltungsbereich (Scope) von Variablen Blöcke Der Call-Stack Einschub: Debugging unter Eclipse Der Heap Lebensdauer von Objekten Müllabfuhr: Garbage Collection Exceptions Geltungsbereich
MehrWhite 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
Mehr7 Assemblies. Anwendungen (.exe) bzw. Anwendungskomponenten (.dll) für.net Portable Execution (PE) Files
7 Assemblies 8 Virtual Execution System VES Anwendungen (.exe) bzw. Anwendungskomponenten (.dll) für.net Portable Execution (PE) Files Teil der CLR Class Loader Metadaten (Manifest) zur Selbstbeschreibung
MehrSoftware 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
MehrGerd 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:
MehrRepetitorium 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
MehrTU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.
TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik 2 für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)
MehrHauptseminar AOSD. Design-by-Contract
Hauptseminar AOSD Seite 1 Entstehung Was ist das? Java Annotations und AOP ConceptJ Zusammenfassung Seite 2 Entstehung Entwickelt von Bertrand Meyer Heute Prof. an der ETH Zürich Erstmals in Programmiersprache
MehrGerd 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:
MehrAdvanced 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,
MehrOSGi: 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
MehrAspekt 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
MehrSW-Archäologie mit AOP (Praxisbericht)
SW-Archäologie mit AOP (Praxisbericht) Ausgrabungen vergangener SW-Architekturen 9. Workshop SW-Reengineering Bad Honnef Mail 2007 Oliver.Boehm@agentes.de agentes AG 2006 Aktionäre Pironet NDH AG (Hauptaktionär)
MehrSpeicher und Adressraum
Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode
Mehr6 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
MehrTheorie 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
MehrApplication Frameworks
Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung
MehrInnere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.
Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste
MehrAuD-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
MehrTesten 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
MehrHauptseminar 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
MehrInnovative Architekturansätze
Innovative Architekturansätze Peter Sturm AG Systemsoftware Betriebssysteme im Umbruch Allgemeine Probleme Steigende Komplexität Mangelnde Zuverlässigkeit Neue Herausforderungen ManyCore- Architekturen
MehrModulare 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
MehrVorkurs 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
MehrAlgorithmen 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
MehrJava für C++ Programmierer
Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?
MehrJavakurs 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
MehrGrundlagen 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
MehrSoftware 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
MehrEinstieg 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:
MehrJ 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?
MehrLavA OS: Ein Betriebssystem für konfigurierbare MPSoCs
LavA OS: Ein Betriebssystem für konfigurierbare MPSoCs Diplomarbeit Abschlussvortrag Stephan Vogt stephan.vogt@cs.uni-dortmund.de 1 Inhalt Einleitung Wiederverwendung von BS Arbeiten an CiAO Kommunikation
MehrOpenCL Implementierung von OpenCV Funktionen
Multi-Core Architectures and Programming OpenCL Implementierung von OpenCV Funktionen julian.mueller@e-technik.stud.uni-erlangen.de Hardware/Software Co-Design August 18, 2011 1 Table of content 1 OpenCL
MehrProgrammierung 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
MehrKapitel 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
MehrSoftware Factories SS 2016. Prof. Dr. Dirk Müller. 9 Aspektorientierte Programmierung
Software Factories 9 Aspektorientierte Programmierung Prof. Dr. Dirk Müller Übersicht Motivation Scattering und Tangling Separation of Concerns Geschichte und Terminologie Fallstudie: Patientendatensystem
MehrKosten der Abschirmung von Code und Daten
Kosten der Abschirmung von Code und Daten Alexander Züpke, Kai Beckmann, Andreas Zoor, Reinhold Kröger vorname.nachname@hs-rm.de Motivation Internet der Dinge STM32F4 Mikrocontroller 2 Motivation Internet
MehrMiddleware - Ü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
MehrAOSTA. Aspects in Operating Systems: Tools and Applications
AOSTA Aspects in Operating Systems: Tools and Applications Michael Engel, Philipps-Universität Marburg AG Verteilte Systeme engel@informatik.uni-marburg.de Aspektorientierung in 5 Minuten ;-) Crosscutting
MehrEinfü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
MehrEinstieg 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
MehrÜ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
MehrKomponentenbasierte 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
MehrThema: 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
Mehr3. 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.
MehrGrundlagen 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
Mehr1.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 -
MehrC# 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
MehrIntegrated Modular Avionics & ARINC 653
Integrated Modular Avionics & ARINC 653 Martin Wißmiller Gliederung IMA - Traditioneller Ansatz - IMA-Ansatz - IMA-Generationen ARINC653 - Speicherpartitionierung - Zeitpartitionierung - Kommunikation
MehrEinstieg 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
MehrKapitel 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
MehrTrace- und Zeit-Zusicherungen beim Programmieren mit Vertrag
Trace- und Zeit-Zusicherungen beim Programmieren mit Vertrag Mark Brörkens Universität Oldenburg, Fachbereich Informatik Email: Mark.Broerkens@informatik.uni-oldenburg.de Einleitung Programmieren mit Vertrag
MehrEnterprise 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.
MehrProgrammierkurs. 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]
MehrEffiziente 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
MehrEinfü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
MehrSEMINARVORTRAG 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
MehrJava 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,
MehrOSGi: 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
MehrReflection. Arthur Zaczek. Nov 2014
Arthur Zaczek Nov 2014 1 Einleitung 1.1 Definition Reflection ist das Auslesen von Metainformationen über Klassen, deren Methoden & Eigenschaften zur Laufzeit. 1.2 Anwendungsfälle Analyse von Programmen
MehrWebentwicklung 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
MehrDevOps. 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
MehrLabVIEW 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
MehrKonzepte 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 Wladi23@gmx.net 1 1 Einleitung 1.1 Problematik
Mehr2. 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)
Mehr= 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
MehrSchwerpunkte. 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
MehrApplication 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
MehrUniversitä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.................................
MehrProgrammieren 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
MehrComputeranwendung 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
MehrProbeklausur: 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,
MehrTag 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!
MehrAOP 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
MehrVorlesung 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
Mehr1 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
MehrCompute 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:
MehrPolymorphie/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
MehrImplementierung 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
MehrEinfü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
MehrContinuous 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
Mehr2008 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
MehrWarum Programme Verträge schließen sollten
1 Warum Programme Verträge schließen sollten RALF HINZE Institut für Informatik, Lehrstuhl Softwaretechnik, Universität Freiburg Georges-Köhler-Allee, Gebäude 079, 79110 Freiburg i. Br. Email: ralf@informatik.uni-bonn.de
MehrProgrammierung für Mathematik HS12 Übung 3
Programmierung für Mathematik HS12 Übung 3 14. Oktober 2012 1 Aufgabe: Code verstehen 1.1 Ziele Präzedenz verstehen. If else kennen lernen. 1.2 Aufgabenstellung 1.2.1 Präzedenz Lesen Sie folgende Codeaussschnitte.
MehrAspekt-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
Mehr