Ist AOP reif für die Praxis? (AOP = Aspektorientierte Programmierung) aop. Juli agentes AG
|
|
- Judith Weber
- vor 6 Jahren
- Abrufe
Transkript
1 Ist AOP reif für die Praxis? (AOP = Aspektorientierte Programmierung) aop Juli 2006 Oliver.Boehm@agentes.de
2 agentes AG Wir über uns Aktiengesellschaft mit Sitz in Stuttgart Ausgründung aus FIDUCIA IT AG Gründung und Geschäftsaufnahme zum Vorstände: Olaf Ahl, Wolfgang Clauss Beteiligungen Pironet NDH AG, Köln agentes-management Niederlassungen in Stuttgart und Kassel 100 Mitarbeiter Beauftragt mit langjährigem Outsourcing- Auftrag für die Fiducia IT AG Entwicklungs- und Wartungsleistungen für 2 Bankverfahren für ca. 200 VR-Banken Projekte im Bankverfahren agree Kassel Stuttgart 2
3 Inhalt von Assember bis AspectJ Das Architektur-Dilemma Ein kleiner Ausflug mit AOP AOP in der Praxis Der Blick nach vorn Diskussion 3
4 von Assembler bis AspectJ U.S.Army Photo 4
5 Die Geschichte der Programmiersprachen Abstraktion 54: FORTRAN 60: COBOL 65: Simula 72: C 71: Smalltalk 86: C++ 95: Java AspectC++ AspectJ Assembler prozedurale Sprachen OOP AOP
6 Assembler / Maschinensprache SIE H,T AUS W,I,E ASS EM BLE R IS ES ABE R NET viele Dialekte schnell Prozessor-abhängig HW-abhängig nur von Spezialisten zu verstehen 6
7 prozedurale Sprachen Bsp: Backanleitung PASCAL COBOL C FORTRAN kuchen = backen(butter, mehl, zucker, eier,...) 7
8 OO-Sprachen Ruby Smalltalk SIMULA C++ Python Java Eiffel Kuchen kuchen = new Kuchen(butter, mehl, eier); kuchen.backe(); Zutaten Größe add backe 8
9 Aspektorientierte Sprachen = OOPS, um Aspekte angereichert, z.b.... Logging-Aspekt Security-Aspekt Transaktion-Aspekt AspectS AspectJ AspectC++ 9
10 Das Architektur- Dilemma 10
11 Ziel der SW-Entwicklung seit 30 Jahren Divide et impera Separations of Concern Concern = eigenes Interessengebiet, Konzept, Ding,... es gibt fachliche Concerns (Geschäftslogik) und nichtfachliche Concerns (Logging, Sicherheit,...) Jeder Concern soll in einem eigenen Modul, Klasse,... gekapselt werden 11
12 nichtfachliche Concerns fachliche Concerns Business-Logik 12 Persistenz Client-Server Logging Transaktionen Exception-Handling Fehlerbehandlung Performance Datenhaltung Lastverteilung GUI Sicherheit
13 Modularität XML-Parsing in org.apache.tomcat rot = relevanter Code-Bereich begrenzt auf 1 Modul 13
14 aber... Logging in org.apache.tomcat viele (Querschnitts-) Belange lassen sich nicht kapseln: Performance, Logging, Transaktionen... SW-Module müssen mehrere Anforderungen abdecken kaum Wiederverwendung niedrigere Produktivität neue Anforderungen haben Auswirkung auf Architektur Bsp.: Client-Server 14
15 Ein kleiner Ausflug mit AOP Freie Sicht auf die Business-Logik! 15
16 Beispiel: Bankkonto fachliche Concerns Einzahlung Auszahlung Überweisung Bonitätsprüfung... nichtfachliche Concerns Logging Performance Authorisierung Sicherheit... 16
17 Ein Fallbeispiel... public class Konto { private double kontostand = 0.0; public double abfragen() { return kontostand; public void einzahlen(double betrag) { kontostand = kontostand + betrag; public void abheben(double betrag) { kontostand = kontostand - betrag; Konto Kontostand abfragen einzahlen abheben ueberweisen public void ueberweisen(double betrag, Konto andereskonto) { this.abheben(betrag); andereskonto.einzahlen(betrag); 17
18 ...mit Logging public class Konto { private static Logger log = Logger.getLogger(Konto.class) private double kontostand = 0.0;... public void einzahlen(double betrag) { kontostand = kontostand + betrag; log.info("neuer Kontostand: " + kontostand); Achtung! Codeverschmutzung! public void abheben(double betrag) { kontostand = kontostand - betrag; log.info("neuer Kontostand: " + kontostand); neue Anforderung: alle Konto- Bewegungen müssen protokolliert werden!... 18
19 ...mit AspectJ public aspect LogAspect { private static Logger log = Logger.getLogger(LogAspect.class); after(double neu) : set(double Konto.kontostand) && args(neu) { log.info("neuer Kontostand: " + neu); Konto Kontostand abfragen einzahlen abheben ueberweisen Separation of Concerns LogAspect 19
20 Do you speak AspectJ? Joinpoint Eingriffspunkte im Programm, an denen Code erweitert oder modifiziert werden soll Pointcut eine Auswahl von Joinpoints Advice der Code für den Pointcut Introduction Erweiterung anderer Klassen, Interfaces, Aspekte um zusätzliche Funktionalität Aspect Konstrukt, in dem das obige abgelegt wird 20
21 Joinpoints können sein Aufrufen einer Methode Ausführen einer Methode Zugriff auf eine Variable Behandeln einer Exception Initialisierung einer Klasse Initialisierung eines Objekts Konto konto = new Konto(); konto.einzahlen(500.0); Benutzer 1: 1 konto Konto 2 (1) Konstruktor aufrufen (2) Objekt initialisieren (3) Methode aufrufen (4) Methode ausführen 3 2: einzahlen(500):void 4 21
22 Pointcuts pointcut P2() : set (double Konto.kontostand) pointcut P3() : call(* Konto.*(..)) && within(kontotest); P3 P2 P1 Menge aller Joinpoints 22
23 Advice Code, der eingewebt wird before() after() around() Ähnlichkeit mit Methoden after() : P3() { log.info("test: " + thisjoinpoint); TEST: call(void bank.konto.einzahlen(double)) TEST: call(double bank.konto.abfragen())... 23
24 Do you think in AOP? Logging Autorisierung Sicherheit Person Konto Persistenz SW-System Das System als Menge von Concerns 24
25 Der Webe-Vorgang (Weaving) Konto private double kontostand = 0.0; public void einzahlen(double betrag) { kontostand = kontostand + betrag; public void abheben(double betrag) { kontostand = kontostand - betrag; public void ueberweisen(double betrag, Konto andereskonto) { this.auszahlen(betrag); andereskonto.einzahlen(betrag); KontoAspect pointcut kontobewegung(double betrag): (call(public void bank.konto.einzahlen(double)) call(public void bank.konto.abheben(double))) && args(betrag); before(double betrag) : kontobewegung(betrag) { if (betrag < 0) { throw new IllegalArgumentException("negativer Betrag"); 25 Konto.class private double kontostand = 0.0; public void einzahlen(doube betrag) { if (betrag < 0) { throw new IllegalArgumentException("negativer Betrag"); kontostand = kontostand + betrag; public void abheben(double betrag) { if (betrag < 0) { throw new IllegalArgumentException("negativer Betrag"); kontostand = kontostand - betrag; public void ueberweisen(double betrag, Konto andereskonto) { this.auszahlen(betrag); andereskonto.einzahlen(betrag);
26 AOP in der Praxis 26
27 AspectJ-Projekte: jgebos 2000: Ablösung OS/2-Bankarbeitsplatz (C++) Multi-Tier-Architektur: Swing-Client / Application-Server / Backend (Mainframe) ab 2003: Beginn mit AspectJ 1.1 erweitertes Logging zur Fehlersuche Profiling-Aspekt zweigleisige Strategie: offizielle Version: pure Java Notfall-Version: Nachbrenner-Build der ausgelieferten Jar-Files Erfahrungen: IDE mit Schwächen (keine inkrementelle Compilierung, Debugger) mühsamer KnowHow-Aufbau: StackOverflowErrors are your best friend! Ant-Unterstützung hilfreich und ausreichend 27
28 AspectJ-Projekte: Media-Streamer in Java Auftrag 2004: Streamer für alle Arten von Daten Problemfall: JMF (Java Media Framework) Doku? veraltet, fehlerhaft Source = Doku (JMStudio + viele Beispiele) Zustands-/Event-getriebene Architekur Anwendung? funktionierte selten wie erwartet Vorgehen: Debugger? sinnlos, da eventbasierte Architetkur Netzwerkmonitor (tcdump, ethereal,...): mühsam Logging über Aspekte: äußerst hilfreich Erfahrungen: AspectJ ideal für Expeditionen in unbekanntes Gebiet keine Änderungen im Code-Dschungel nötig Änderungen im Gepäck (Aspect) nähere Infos: 28 You must work hard what the only that exist: JMF guide, sun code examples and jmf studio source code: After a lot of hours you will feel better! Antwort auf eine Anfrage im JMF-Forum bzgl. Dokumentation
29 AspectJ-Projekte: Blackbox ebanking-komponente J2EE Anwendung Schnittstellen zu anderen Systemen XML SOAP Basis-Funktionalität pure Java Webbrowser Zusatz-Funktionalität mit AspectJ Logging, Tracing Monitoring Test-Unterstützung HTTPS SOAP HTTPS Giropay / Händler 29 Blackbox XML HTTP Ebanking-Host Übersicht (vereinfacht)
30 Beispiel: Tracing jede Methode wird protokolliert Aufwand: ca. 2 Stunden ROI: Endlosschleife während Testbetrieb gefunden Kommunikationsprobleme konnten eingekreist werden 22:23:33,481 > blackbox.smoketest.testonlineebankinghost() 22:23:33,481 > blackbox.admin.configurator.getebankinghost() 22:23:33,481 < blackbox.admin.configurator.getebankinghost() = :23:33,484 > blackbox.net.networktester.isreachable( ) 22:23:33,484 > blackbox.net.networktester.isreachable( , 80) 22:23:33,486 > blackbox.admin.configurator.isdemomode() 22:23:33,486 > blackbox.admin.configurator.hasproperty(mode, demo) 22:23:33,487 < blackbox.admin.configurator.hasproperty(mode, demo) = false 22:23:33,487 < blackbox.admin.configurator.isdemomode() = false 22:23:36,499 < blackbox.net.networktester.isreachable( , 80) = false 22:23:36,500 < blackbox.net.networktester.isreachable( ) = false 22:23:36,500 <*blackbox.smoketest.testonlineebankinghost()... 30
31 Beispiel: Monitoring Webbrowser HTTPS SOAP HTTPS Giropay / Händler Blackbox ServletMonitor XML HTTP Übersicht (vereinfacht) CommunicationMonitor Antwort-Verhalten aufzeichenen Ebanking-Host blackbox.monitor Kommunikation mitschneiden 31
32 Beispiel: Testen Webbrowser HTTPS SOAP HTTPS Giropay / Händler Blackbox XML HTTP Übersicht (vereinfacht) CommunicationSimulator Ebanking-Host blackbox.monitor Kommunikation einspielen 32
33 Qualitätssicherung declare error / declare warning declare warning: call(public * java.sql.*(..)) "please use persistence framework..."; Exception Handling pointcut handleexception(throwable ex): handler(java.lang.throwable+) && args(ex); /** protokolliere alle abgefangen Exceptions */ before(throwable ex) : handleexception(ex) { System.err.println("*** " + ex); 33
34 Erfahrungen Logging ideal zum Einstieg bis zu 70% des Codes = Logging Qualität ist entscheidend für Fehlersuche höhere Qualtität durch eigene Fehler-/Warnungen Architektur-Überprüfungen Testen Mock-Ersatz bzw. Ergänzung Architekturen werden einfacher weniger Abstractionslayer mehr Business-Logik passt gut zu XP / Agile Methoden Konzentration auf eine Sache Randbedingungen können später noch berücksichtigt werden Fallstricke übertriebener Einsatz ist kontraproduktiv Refactoring wenig Unterstützung Rezept gegen das San Francisco -Syndrom 34
35 Der Blick nach vorn 35
36 AOP meets MDA noch keine graphische Notation für Aspekte techn. Aspekte für techn. Randbedingungen flexibler agiler Idee: Modell enthält nur Business- Logik, Rest wird generiert restliche Logik im Generator manifestiert Gefahr: Generator-Entwicklung, Abhängigkeit vom Generator Gefahr: Aspekte ufern aus 36
37 erwarteter Nutzen Modularität auch für übergreifende Dinge ( Concerns ) Java-Code konzentriert sich auf Business-Logik kürzerer Code einfachere Wartung und Weiterentwicklung erhöhte Wiederverwendbarkeit über Library-Aspekte Plug n' Play-Aspekte ( Patterns ) für verschiedene Anforderungen 37
38 Adaptionsaufwand Ungefähr so groß wie der Umstieg von Prozedural auf OOP Aber: er wird nicht kleiner er wird kommen warum nicht jetzt? können wir aus der Vergangenheit lernen? erste OO-Projekte waren oft Fehlschläge Lernkurve unterschätzt fehlende Begleitung von erfahrenen Experten überzogene Erwartungen erst folgende OO-Projekte waren erfolgreich klein mit unkritischem Projekt anfangen Erfahrungen sammeln Multiplikatoren ausbilden 38
39 Zusammenfassung setzt auf OO / Java auf AOP / AspectJ gewinnt an Bedeutung Entwicklung wird effektiver kleinere Programme möglich maßloser Einsatz kann Gegenteil bedeuten Fallstricke lauern Selbstdisziplin nötig Lernkurve vergleichbar mit C -> C++ 39
40 Bedeutung von Aspekten in 2-5 Jahren Java ohne AspectJ ist wie Linsen ohne Spätzle AspectJ Java 40
41 Links & Literatur Oliver Böhm Aspektorientierte Programmierung mit AspectJ 5 die Seite zum Buch AOP-Ecke Ramnivas Laddad AspectJ in Action Manning Publications Co., 2003, ISBN
42 Vielen Dank agentes AG Oliver Böhm Telefon 0711/ Telefax 0711/ Räpplenstaße Stuttgart 42
AOP 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
AOP by Examples A P. 3. August Folie 1. AOP by Examples. agentes GmbH
O A P 3. oliver.boehm@agentes.de Folie 1 Inhalt von Assember bis AspectJ Hello-World-Beispiel Begrifflichkeiten noch mehr Beispiele Was ist neu in AspectJ 1.6? Zusammenfassung Folie 2 von Assembler bis
SW-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)
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
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
Einfü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
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
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,
1 Einführung in Aspektorientierung
Teil I Einleitung 3 1 Einführung in Aspektorientierung Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (Martin Fowler in»refactoring«) Neue
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
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
Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire
Integration von Web Services in J EE Anwendungen mit XFire 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire univativ : = Umsetzung durch Studenten und Young Professionals.
SEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
AOSTA. 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
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
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
Erste Schritte in Java
Erste Schritte in Java In diesem Kapitel werden wir an einem kleinen Beispiel wichtige Grundbegriffe der objektorientierten Programmierung kennenlernen. Wir wollen ein Programm schreiben, das in der Lage
Rechnernetze Projekt SS 2015
30/03/15 Seite 1 Aspektorientierte Programmierung logische Aspekte (Concerns) im Programm separieren Crosscutting Concerns (Ziel: generische Funktionalitäten über mehrere Klassen hinweg zu verwenden -
Application Frameworks
Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung
Erste Schritte in Java
Erste Schritte in Java Im einführenden Kapitel haben wir die Grundbegriffe der imperativen Programmierung an einem Beispiel (Algorithmus von Euklid) kennengelernt. In diesem Kapitel sehen wir uns an einem
Anwendungsentwicklung mit Spring
Anwendungsentwicklung mit Spring Eberhard Wolff Managing Director Interface21 GmbH Interface21 - Spring from the Source Interface21 Produkte u.a. Spring Framework Spring from the Source Consulting, Training,
Aspektorientierte Middleware Florian Wagner
Anwendungen der Aspektorientierung (5) Übersicht Middleware? Middleware-Concerns Java 2 Enterprise Edition AO Implementierung AOP & JBoss 2 mid dle ware (mĭd'l-wâr') n. Software that serves as an intermediary
Application Performance Management. Auch eine Frage des Netzwerkes?
Application Performance Management Auch eine Frage des Netzwerkes? Agenda Architektur von Webanwendungen Lange Applikationsantwortzeiten Application Performance Management (APM) Netzwerkbasiertes APM Serverbasiertes
Einstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
Hauptseminar 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
Client-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
FWP Aktuelle Technologien zur Entwicklung verteilter Java- Anwendungen
FWP Aktuelle Technologien zur Entwicklung verteilter Java- Anwendungen Sommersemester 2013 Michael Theis, Lehrbeauftragter Java EE Spezifikation definiert ein Programmiermodell für Applikationen die Eigenschaften
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
Refactoring von Legacy Systemen. Jochen Winzen jochen.winzen@andrena.de andrena objects ag
Refactoring von Legacy Systemen Jochen Winzen jochen.winzen@andrena.de andrena objects ag Was ist ein Legacy System Ein Legacy System hat folgenden Eigenschaften: + Besitzt die geforderte Funktionalität
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
Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java
Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Präsentation zur Diplomarbeit von Übersicht Java 2 Enterprise Edition Java Servlets JavaServer Pages Enterprise JavaBeans Framework
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
9. Fehlerbehandlung Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik
9. Fehlerbehandlung Advanced Programming Techniques Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik:
Eine technische Plattform für Smart-Client-Systeme. Alexander Ziegler
Eine technische Plattform für Smart-Client-Systeme Alexander Ziegler Agenda Ausgangssituation Smart Client Ansatz Technische Kernthemen Erfahrungen 1 Agenda Ausgangssituation Smart Client Ansatz Erfahrungen
Komponentenorientierte Software-Entwicklung. Seite 1 / 42
Seite 1 / 42 Wiederholung Messaging Java Messaging Service (JMS) Pub/Sub P2P Messaging Middleware XMPP-Protokoll Java API for XML-Processing (JAXP) Java API for XML-Binding Webservices / SOA Simple Object
Service Virtualisierung
Service Virtualisierung So bekommen Sie Ihre Testumgebung in den Griff! Thomas Bucsics ANECON Software Design und Beratung G.m.b.H. Alser Str. 4/Hof 1 A-1090 Wien Tel.: +43 1 409 58 90 www.anecon.com office@anecon.com
Arrays Fortgeschrittene Verwendung
Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung
Entwicklung von Web-Anwendungen auf JAVA EE Basis
Entwicklung von Web-Anwendungen auf JAVA EE Basis Java Enterprise Edition - Überblick Prof. Dr. Bernhard Schiefer Inhalt der Veranstaltung Überblick Java EE JDBC, JPA, JNDI Servlets, Java Server Pages
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
Deploy Early oder die richtigen. Zutaten für Ihren Relaunch
Deploy Early oder die richtigen Zutaten für Ihren Relaunch Plug & Play Web Applikationen 2016 Paradigma #1 Nutze Vorfertigung! HTML/CSS-Frameworks Responsive Design Logo Button Action Screen Tablet Landscape
Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
Techniker Krankenkasse, Hamburg: 10 Jahre produktives Java Enterprise
Techniker Krankenkasse, Hamburg: 10 Jahre produktives Java Enterprise SEACON, 22./23.6.2009, Hamburg Ralf Degner, Techniker Krankenkasse Überblick Voraussetzungen, Ziele, Entscheidungen Logische Schichten
Wie ich lernte die API zu lieben. 19. März 2013. bernhard.groehling@sicsec.de 08142-4425 037 sic[!]sec GmbH Industriestraße 29-31 82194 Gröbenzell
Burp- Burp- Wie ich lernte die zu lieben 19. März 2013 bernhard.groehling@sicsec.de 08142-4425 037 sic[!]sec GmbH Industriestraße 29-31 82194 Gröbenzell Burp- Was erwartet uns? Das erwartet euch Theorie:
.NET-Networking 2 Windows Communication Foundation
.NET-Networking 2 Windows Communication Foundation Proseminar Objektorientiertes Programmieren mit.net und C# Fabian Raab Institut für Informatik Software & Systems Engineering Agenda Grundproblem Bestandteile
Zusammenfassung: Architekturprinzipien
Zusammenfassung: Architekturprinzipien Prinzip der losen Kopplung Prinzip der hohen Kohäsion Prinzip des Entwurfs für Veränderung Separation-of-Concerns-Prinzip Information-Hiding-Prinzip Abstraktionsprinzip
Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
Java 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?
Oliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring?
oliver@code-project.org 7. Februar 2006 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2
Kapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
Kapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
Business Objekte. Der Schlüssel für Applikationen mit Zukunft. 2001 TMN Systemberatung GmbH www.tmn-systemberatung.de. Folie 1
Business Objekte Der Schlüssel für Applikationen mit Zukunft 2001 TMN Systemberatung GmbH Folie 1 Agenda Kurze Vorstellung Die Theorie hinter Business Objekten Business Objekte (BOs) in der Praxis Anbindung
Kampf dem Fehlerteufel PMD, Findbugs und Checkstyle in großen Projekten
main {GRUPPE} Seite 1 Jürgen Nicolai Geschäftsführender Gesellschafter Liebknechtstrasse 33 70565 Stuttgart Tel : 07 11/7 81 19 90 Fax : 07 11/ 7 81 19 91 Mail : j.nicolai@main-gruppe.de Web: www.main-gruppe.de
5.5.8 Öffentliche und private Eigenschaften
5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung
Aspektorientierte Modellierung
Aspektorientierte Modellierung Softwaretechnik-Seminar 2002 Thema: Evolutionäre Software Referent: Alexander Winter Gliederung Einführung und Motivation Was ist Aspektorientierte Modellierung? Vorstellung
Kapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Arrays: Wiederholung Ein Array ist ein Tupel von Elementen gleichen
Wer bin ich. > Senior Consultant, Architekt und Trainer (MATHEMA Software GmbH) > 25+ Jahre Software > 12+ Jahre Java Enterprise > 7+ Jahre.
Copyright 2010, MATHEMA Software GmbH 1 Wer bin ich > Senior Consultant, Architekt und Trainer (MATHEMA Software GmbH) > 25+ Jahre Software > 12+ Jahre Java Enterprise > 7+ Jahre.Net > Schwerpunkte Software
Angewandte IT-Sicherheit
Angewandte IT-Sicherheit Johannes Stüttgen Lehrstuhl für praktische Informatik I 30.11.2010 Lehrstuhl für praktische Informatik I Angewandte IT-Sicherheit 1 / 28 Aufgabe 1 Betrachten sie folgendes Programm:
Das Beste aus zwei Welten
: Das Beste aus zwei Welten Das Beste aus zwei Welten Aufruf von R Funktionen mit PROC IML KSFE 2012 08.03.2012 ist IT Dienstleister für Business Intelligence und Datenanalyse gibt es seit über 20 Jahren
Aspektorientiertes Programmieren in Java
Vortrag im Rahmen der Vorlesung MSI an der Hochschule Mannheim 06.04.2006 Aspektorientiertes Programmieren in Java Vortragende: Anton Wagenblaß (anton.wagenblass@gmx.de ) Daniel Pech (daniel-p@gmx.de)
JAX-RS 2.0 REST mit Java EE 7
Enterprise Java, Web Services und XML JAX-RS 2.0 REST mit Java EE 7 Java User Group Darmstadt 13. Juni 2013 http://www.frotscher.com thilo@frotscher.com Vorstellung Freiberuflicher Softwarearchitekt und
JBoss Seam. Ein JEE 5 Webframework. Jörg Wüthrich Infopoint, 4. Februar 2009
JBoss Seam Ein JEE 5 Webframework Jörg Wüthrich Infopoint, 4. Februar 2009 Inhalt Einführung Warum Seam? Zentrale Konzepte Demo Validierung Abschliessende Gedanken 04.02.2009 Infopoint - JBoss Seam - Jörg
Ersetzbarkeit und Verhalten
Ersetzbarkeit und Verhalten U ist Untertyp von T, wenn eine Instanz von U überall verwendbar ist, wo eine Instanz von T erwartet wird Struktur der Typen für Ersetzbarkeit nicht ausreichend Beispiel: void
Wir bringen Ihre Notes/Domino Anwendungen sicher ins Web 19.11.2015, Bilster Berg Drive Resort Michael Steinhoff, agentbase AG. www.agentbase.
Wir bringen Ihre Notes/Domino Anwendungen sicher ins Web 19.11.2015, Bilster Berg Drive Resort Michael Steinhoff, agentbase AG www.agentbase.de 1 Agenda Grundlagen Modernisierung Möglichkeiten mit Domino
XE IDE Cloud Web. secure Data Agile. RAD Studio XE was gibt es Neues in Delphi? Daniel Magin Delphi Experts. Daniel Wolf Delphi-Praxis
RAD Studio XE was gibt es Neues in Delphi? Daniel Magin Delphi Experts Daniel Wolf Delphi-Praxis Matthias Eißing Embarcadero Germany GmbH XE IDE Cloud Web 1 secure Data Agile Agenda Neues in der IDE, RTL
Programmieren von Webinformationssystemen
Programmieren von Webinformationssystemen Wolfgang Gassler Databases and Information Systems (DBIS) Institute of Computer Science University of Innsbruck dbis-informatik.uibk.ac.at 1 HTML Hypertext Markup
JavaEE Grundlagen. Theis Michael - Senior Developer UniCredit Global Information Services S.C.p.A
JavaEE Grundlagen FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen Theis Michael - Senior Developer UniCredit Global Information Services S.C.p.A Sommersemester 2012 2 Die Java EE
Softwareentwicklung mit Enterprise JAVA Beans
Softwareentwicklung mit Enterprise JAVA Beans Java Enterprise Edition - Überblick Was ist J2EE Java EE? Zunächst mal: Eine Menge von Spezifikationen und Regeln. April 1997: SUN initiiert die Entwicklung
Next generation open source BPM JBoss jbpm 4. Java Forum Stuttgart 02.07.2009 bernd.ruecker@camunda.com
Next generation open source BPM JBoss jbpm 4 Java Forum Stuttgart 02.07.2009 bernd.ruecker@camunda.com Bernd Rücker / bernd.ruecker@camunda.com / 2 Guten Morgen Berater, Trainer, Coach Softwareentwickler
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1
Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen
WebObjects. Dirk Schober Senior Software Trainer AppleServices EMEA. Was ist eigentlich ein Application Server?
Objects Dirk Schober Senior Software Trainer leservices EMEA Fragen über Fragen Was ist eigentlich ein lication? Welche lication gibt es sonst noch? Was kostet sowas? Wer setzt denn eine solche Technologie
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
i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging
Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des
Fortgeschrittenes Programmieren mit Java. Test Driven Development
Fortgeschrittenes Programmieren mit Java Test Driven Development Test getriebene Programmierung Benedikt Boeck Hochschule für Angewandte Wissenschaften Hamburg 6. November 2009 B. Boeck (HAW Hamburg) Test
Web und Mobile Apps Programmieren mit Dart
Web und Mobile Apps Programmieren mit Dart Marco Jakob Workshop INFOS 2013 in Kiel 28.09.2013. ZIEL attraktiv aktuell Programmierunterricht wenig Hürden Inhalt Weshalb Web und Mobile im Unterricht? aktuelle
ConUti GmbH - Ihr starker Partner www.conuti.de eai@conuti.de l +49 151 40729392. ConUti Ihr starker Partner. B2B Schulungen
ConUti Ihr starker Partner B2B Schulungen C ConUti B2B / Java Schulungen Mit unseren Schulungen sicher im Umgang mit der B2B und Java Monitoring B2B- Einführungs- Schulung Admin B2B Administrator- Schulung
Cloud Computing. Betriebssicherheit von Cloud Umgebungen C O N N E C T I N G B U S I N E S S & T E C H N O L O G Y
Cloud Computing Betriebssicherheit von Cloud Umgebungen Urs Zumstein Leiter Performance Care Team Urs.Zumstein@DevoTeam.ch 079 639 42 58 Agenda Definition von Cloud Services Anforderungen an die Betriebssicherheit
Der SBB Online-Ticketshop Mit SOA zum Erfolg
Der SBB Online-Ticketshop Mit SOA zum Erfolg BAT 03 Stefan Meichtry, Stefan Becker Bern, den 17.03.2006 SBB Informatik 1 Das Ziel SBB Informatik 2 Agenda Problemraum Lösungsraum Analyse Wir sind hier Synthese
Einfach generieren. Susanne Klar, Michael Klar. Generative Programmierung verständlich und praxisnah ISBN Inhaltsverzeichnis
Einfach generieren Susanne Klar, Michael Klar Generative Programmierung verständlich und praxisnah ISBN 3-446-40448-1 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40448-1
Übung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
Software-Engineering und Optimierungsanwendungen in der Thermodynamik
Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung
Jörg Neumann Acando GmbH
Jörg Neumann Acando GmbH Jörg Neumann Principal Consultant bei der Acando GmbH MVP Windows Platform Development Beratung, Training, Coaching Buchautor, Speaker Mail: Joerg.Neumann@Acando.com Blog: www.headwriteline.blogspot.com
Enterprise Java Beans Einführung
Enterprise Java Beans Einführung Vorlesung 8 Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht EJBs im JEE Umfeld Verschiedene Typen von EJBs Von der Javaklasse
Ich liebe Java && Ich liebe C# Rolf Borst
Ich liebe Java && Ich liebe C# Rolf Borst Java oder C#? Einführung public class Einfuehrung { private int gesamtzahl = 0; /* Ermittelt die Anzahl der geraden und durch drei teilbaren Zahlen */ public String
Web Services Security
Web Services Security Dokumentation zu den Beispielen Vortrag vom 11.12.02 Svetoslav Draganov Einrichtung der Entwicklungsumgebung unter Windows NT/2000/XP 1. Herunterladen aller Packages - VeriSign Trust
Java Schulung. Objektorientierte Programmierung in Java. Prof. Dr. Nikolaus Wulff
Java Schulung Objektorientierte Programmierung in Java Prof. Dr. Nikolaus Wulff Was ist Java? Java ist eine einfache, objektorientierte, verteilte, interpretierte, robuste, sichere, architekturneutrale,
Web 2.0 Architekturen und Frameworks
Web 2.0 Architekturen und Frameworks codecentric GmbH Mirko Novakovic codecentric GmbH Quality Technische Qualitätssicherung in Software-Projekten mit Fokus auf Performance, Verfügbarkeit und Wartbarkeit
Web-Anwendungsentwicklung mit dem Delivery Server
Web-Anwendungsentwicklung mit dem Delivery Server Java-Framework auf Basis der Open API Bernfried Howe, Webertise Consulting GmbH WEBertise Consulting Dipl. Informatiker (Wirtschaftsinformatik) 2001-2010
Objektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
Gegenseitige Beeinflussungen von Testautomatisierung, Testmanagement und Entwicklung
Gegenseitige Beeinflussungen von Testautomatisierung, Testmanagement und Entwicklung Jan Düttmann Archimedon Software + Consulting GmbH & Co. KG Marienstraße 66 32427 Minden Stephan Kleuker Hochschule
Android Testautomatisierung mit dem Framework Robotium
Android Testautomatisierung mit dem Framework Robotium Daniel Knott XING AG @dnlkntt http://www.adventuresinqa.com Daniel Knott Manager Quality Assurance @dnlkntt daniel.knott@xing.com Daniel Knott hat
EJB3.0 Unit-Testing Reloaded
EJB3.0 Unit-Testing Reloaded Werner Eberling werner.eberling@mathema.de www.mathema.de Werner Eberling, MATHEMA Software GmbH - EJB3.0 - Unit-Testing Reloaded (G4 - Folie 1) Java Forum Stuttgart 2007 Automatisiertes
Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba
Spec# Einführung Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba Inhalt Einführung in C# Das Spec# System Die Konstrukte Vererben der Verträge System Architektur Einführung
MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!
MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?! Oliver Steinhauer Sascha Köhler.mobile PROFI Mobile Business Agenda MACHEN SIE IHRE ANWENDUNGEN MOBIL?! HERAUSFORDERUNG Prozesse und Anwendungen A B
Testen von Software. GUI-Testing: Jemmy & Marathon
Testen von Software GUI-Testing: Jemmy & Marathon Kurzüberblick Jemmy: Marathon: Ist eine Java-Bibliothek Zum Testen von Java-GUI- Applikationen Enthält Methoden, um Benutzereingaben bei Swing/AWT Komponenten
Realtime Anbindung an SAP ERP
Realtime Anbindung an SAP ERP 14.07.2014, 15:00 NovaTec Consulting GmbH Leinfelden-Echterdingen, München, Frankfurt am Main, Berlin, Jeddah / Saudi-Arabien Showcase - Push SAP Terminauftrag NovaTec 09.09.2015
Oliver Zeigermann, Stefan Toth embarc GmbH. Flux Facebooks Beitrag zur UI- Architektur der Zukunft
Oliver Zeigermann, Stefan Toth embarc GmbH Flux Facebooks Beitrag zur UI- Architektur der Zukunft UI-Architektur Warum? User Experience wird wichtiger Rich Client Optionen werden rar Es gibt mehrere Philosophien
Model-View-Controller
Software Design Pattern Model-View-Controller Michael Lühr Gliederung Einführung und Problemstellung Ansatz durch MVC Detaillierte Darstellung der Komponenten Model View Controller Vor- und Nachteile Zusammenfassung
Unit Tests und Fehlersuche
Unit Tests und Fehlersuche SE 1 - Softwareentwicklungspraktikum Test Deadline! Sinnvolle Tests kompilierbar im CVS d.h. Schnittstellen zu Strategiemethoden etc. schon erstellen Kommentieren! Besser ein