Framework Architectures

Ähnliche Dokumente
Sicherheit komplexer Informationssysteme

Vorlesung Software Engineering I Wintersemester 2002/03 Universität Salzburg. O.Univ.-Prof. Dipl.-Ing. Dr.techn. Wolfgang Pree

OOAD Richtlinien & Tips

Theorie zu Übung 8 Implementierung in Java

Objekt-Komposition versus Vererbung: Decorator-Design-Pattern

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Java Einführung Abstrakte Klassen und Interfaces

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Softwareschnittstellen

Kommunikation. Björn und Georg

Einführung in ActionScript

7. Komponenten Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Mobile und Verteilte Datenbanken

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

1. Übung zu "Numerik partieller Differentialgleichungen"

Software-Architektur Design Patterns

Open Source. Legal Dos, Don ts and Maybes. openlaws Open Source Workshop 26 June 2015, Federal Chancellery Vienna

Der Design-Workflow im Software-Entwicklungs-Prozess

Objektorientierte und Funktionale Programmierung SS 2014

Testen von grafischen Benutzeroberflächen

Konstruktion anpassbarer Software

Session 1: Classes and Applets

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Programmentwicklung ohne BlueJ

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

Factory Method (Virtual Constructor)

Handbuch für die Erweiterbarkeit

Version 2.0. Copyright 2013 DataCore Software Corp. All Rights Reserved.

Release Notes SAPERION Version 7.1 SP 5

Themen. Web Service - Clients. Kommunikation zw. Web Services

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Benutzer- und Referenzhandbuch

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Ermittlung und Berechnung von Schadendreiecken mit HANA Live und R-Integration

Remotely Anywhere Verwendung von Zertifikaten Schritt für Schritt Anleitung zur Implementation von Zertifikaten in Remotely Anywhere

OO Softwareentwicklung

Dipl.-Inform. Harald Zinnen Senior Solution Specialist Datacenter Microsoft Deutschland GmbH

Javakurs für Anfänger

Java Einführung Klassendefinitionen

Prinzipien Objektorientierter Programmierung

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul

Moderne Web- Anwendungen mit

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Software-Entwurfsmuster

RAP vs. GWT vs. GAE/J + jquery. Web Technologien im Verlgeich

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

Javakurs 2013 Objektorientierung

Java für Computerlinguisten

Kapitel 6. Vererbung

A study on computer-aided design of PIN-diode phase modulators at microwave frequencies

Password Management. Password Management Guide MF-POS 8

Kapitel 6. Vererbung

The app the crashes, before the breakpoint is reached: Code to the event:

Wie ich lernte die API zu lieben. 19. März sic[!]sec GmbH Industriestraße Gröbenzell

Exercise (Part XI) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

Application Frameworks

Dynamische Plug-ins mit Eclipse 3. Martin Lippert Tammo Freese

Volker Max Meyer Selected works. Image: Design Report Cover Authors: Jonas Loh, Christian Lange, Astrid Höffling and Volker Max Meyer

Kapitel 6. Vererbung

Silvan Geser Solution Specialist Unified Communications Microsoft Schweiz GmbH

Vererbung & Schnittstellen in C#

Up and Down - Projekt mit dem AT90USB162

CORBA. Eine kurze Einführung. Common Object Request Broker Architecture. Ying Lu

Typumwandlungen bei Referenztypen

Gebundene Typparameter

Workshop Java Webentwicklung Tapestry. Ulrich Stärk

Java-Schulung Grundlagen

Für jede Unternehmensgröße das Passende: Virtual Desktop Infrastructure mit Remote Desktop Services und Desktop as a Service

Addieren und Subtrahieren mit Mikrocontroller Atmega AT90162USB

Hofwisenstrasse 48, Rümlang. Copyright 2011 Helvetica Property Investors AG Zurich, a Swiss Corporation , Page 1

Galileo Desktop Benutzerhandbuch Version 1.02

Refactoring von Legacy Systemen. Jochen Winzen andrena objects ag

H Mcast Future Internet made in Hamburg?

GATE General Architecture for Text Engineering. Alexander Hein & Erik Dießler (VL Text Analytics )

1. Motivation 2. Begriffsklärung 3. Komponententests 4. Integrationstests 5. Integrationsstrategien 6. Zusammenfassung

Remote Method Invocation

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

XML Template Transfer Transfer project templates easily between systems

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Klassenbeziehungen & Vererbung

Release Notes SAPERION Version 7.1 SP 4

Valion Consulting AG Implementing Better Solutions Monbijoustrasse 20 CH-3011 Bern +41 (0)

ROOT Tutorial für D. Liko

Group and Session Management for Collaborative Applications

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

1 Polymorphie (Vielgestaltigkeit)

Alltagsnotizen eines Softwareentwicklers

+++ Bitte nutzen Sie die integrierte Audio-Funktion von WebEx (Menü Audio -> Integrated Voice Conference -> Start auswählen), um uns zu hören!!!.

SINT Rest App Documentation

Markus BöhmB Account Technology Architect Microsoft Schweiz GmbH

Transkript:

Framework Architectures O.Univ.-Prof. Dipl.-Ing. Dr.techn. Wolfgang Pree Copyright Wolfgang Pree, All Rights Reserved Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, or to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.

Inhalt OO Framework Architectures Metainformationen als Basis für die dynamische Konfiguration von Softwaresystemen 2

Frameworks (= Product Lines = Platforms = Generic Software) 3

Frameworks allgemein Beispiele für Nicht-Software -Frameworks: Küchenmaschine: durch Einstecken einer Komponente wird das vorhandene Halbfertigfabrikat zum fertigen Mixer oder Fleischwolf neue Automodelle gleichen meist im Kern (Chassis, Getriebe, Motorpalette) den Vorgängermodellen 4

Konfiguration durch Einstecken von SW-Komponenten Payment EMoney vor der Adaptierung nach der Adaptierung 5

Frameworks Definition & Dynamische Sicht Framework:= a piece of software that is extensible through the callback style of programming OO Frameworks: Komponenten + Interaktion + Hot Spots (=Platzhalter; meist abstrakte Klassen oder Schnittstellen) 6

Black-Box versus White-Box Framework-Komponenten Black-Box: Wiederverwendung ohne jegliche Anpassung: Plug & Work White-Box: Anpassung durch Unterklassenbildung erforderlich Je reifer ein Framework ist, umso mehr Black-Box- Komponenten sind enthalten. 7

Abstrakte Klassen und Schnittstellen Abstrakte Klassen standardisieren die Schnittstelle (den Stecker ) für Unterklassen. Aufgrund der dynamischen Bindung können andere Systemteile/Komponenten nur aufgrund des Protokolls (= angebotene Methoden) von abstrakten Klassen bereits implementiert werden. Somit können Halbfertigfabrikate (=Frameworks) softwaretechnisch elegant entwickelt werden. Anlaoges gilt für Schnittstellen (Interfaces). 8

Polymorphismus Sogenannte Objekttypen sind poly (= viel) morph (= Gestalt). Anschaulich ist das mit Steckerkompatibilität vergleichbar: Objekte, die zu diesem Stecker kompatibel sind Stecker -Standard 9

Dynamische Bindung Dynamische Bindung heißt, daß es vom eingesteckten Objekt abhängt, welche Methode tatsächlich ausgeführt wird. Das gelbe Objekt implementiert m1() zb anders als das rote Objekt: m1() m1() m1() call m1 10

Frameworks Statische Sicht............... Framework- Klassen Schnittstellen/ abstrakte Klassen (hier mit jeweils einer abstrakten Methode) A Promotion... Payment A1 FreqShopping Framework- Adaption EMoney CreditCard 11

Konfiguration durch Einstecken von SW-Komponenten Payment EMoney vor der Adaptierung nach der Adaptierung 12

weiteres Beispiel: Hotelreservierung 13

Swing-Framework? Wie bilden die beiden abstrakten Klassen Component Container in Swing ein Framework? Class Component display component in the UI handle events Container (each component is part of a container) Responsibilities Collaborations Container manage any number of components arrange the layout of the components handle container events (resize, close, etc.) Component 14

Legokasten/WB-/BB-Framework Programmieraufwand (Consumer) Flexibilität Lego- Library White-Box- Framework Black-Box- Framework Einfachheit der Wiederverwendung Entwicklungsaufwand (Producer) (Darstellung adaptiert aus dem Tutorial von Erich Gamma, OOP 96) 15

OO: Cluster-Modell (Bertrand Meyer) Cluster 1 Generalization Test Analysis (Re)Design Implementation Cluster 2 Cluster N Analysis Generalization (Re)Design Test Implementation Generalization Test Analysis (Re)Design Implementation zb Design und Implementierung können sich in verschiedenen Clustern überlappen 16

erweitertes Cluster-Modell (B. Meyer) bei Framework-Entwicklung Definition eines spez. Objektmodells Domänenexperte, SW-Engineer CRC Karten spezifisches Objektmodell (also noch kein Framework) Aufsplittung in Cluster Identifikation von Variationspunkten Domänenexperte, SW-Engineer Variationspunkt-Karten Framework (Re)Design Software Engineer Framework-Adaption SW-Engineer, Domänenexperte Framework- Design Patterns N Var.- Punkte OK? 17 J

Dynamische Konfiguration von Frameworks White-Box :: Black-Box Plug&Work Meta-Information 18

Fallstudie Rounding Policy 19

Rounding Policy Kontext: Wir nehmen an, es sei eine Klasse CurrencyConverter mit folgenden Eigenschaften bereits implementiert: Der CurrencyConverter speichert intern eine Hauptwährung (zb US$) und eine Umrechnungstabelle: 1 US$= Valuten (sell): 0.87 Valuten (buy): 0.92 Devisen: 0.90 Devisen:0.91 Euro... Flexibilitätsanforderung: Die Art, wie gerundet wird, soll flexibel einstellbar sein (auf 1, 10, 100, etc.; nur aufrunden; bestimmte Grenzwerte, etc.). Man überlege sich zwei Entwürfe, wie diese Flexibilität erreicht werden kann. 20

Entwurf I (nur WB-Konfig.) CurrencyConverter convert(...) round(val: double): double MyCurrConv round(val: double): double } public class CurrencyConverter {... public void convert(...) { // template method double result, value;... switch (...) { case... :... result= round(value); break; case... :... result= round(value);... }... } public double round(double val) { // hook method... }... template hook 21

Entwurf II (BB&WB-Konfig.) CurrencyConverter convert(...) rpol RoundingPolicy round(val: double): double DefaultRPol RPol10 RPol100 round(val: double): double round(val: double): double round(val: double): double public void defineroundingpolicy (RoundingPolicy rp) { rpol= rp; } public void convert(...) { double result, value;... result= rpol.round(value);... } 22

Fachliche Klassen + GUI 23

Dynamische Erweiterung Wie kann auf Basis des Entwurfs II eine Erweiterung um neue RoundigPolicy-Klassen zur Laufzeit erfolgen? Überlegen Sie eine mögliche Benutzerschnittstelle und eine entsprechende Dynamic-Computing-Realisierung (siehe nachfolgender Abschnitt). 24

Metaklassen als Basis für Dynamic Computing 25

Einführung Metaklassen representieren Klassen in der aktuellen JVM sowie in.net. Mit Metaklassen kann man Typen und Elemente einer Klasse (Methoden,...) zur Laufzeit abfragen. Darüberhinaus kann man eine Klasse, deren Name als String vorliegt, instanzieren, eine Methode aufrufen und Arrays modifzieren (vergrößern, verkleinern). 26

Klassenobjekte (I) Jedes Objekt hat gleichsam ein Schattenobjekt, das eine Instanz der Klasse Class ist. Dieses Schattenobjekt kann Fragen über das eigentliche Objekt beantworten (zb welche Instanzvariablen es hat). Class anyobject 27

Klassenobjekte (II) Ein Klassenobjekt, also das Schattenobjekt, kann man auf verschiedene Art und Weise erhalten. (Nachfolgende Source-Code-Beispiele basieren auf java.reflect.*) Class c = mystery.getclass(); TextField t = new TextField(); Class c = t.getclass(); Class s = c.getsuperclass(); Class c = Class.forName(strg); 28

Metainformationen (I) Beispiel: Eine Klasse, deren Namen nicht von vorneherein bekannt ist, muß instanziert werden. nicht möglich: String clname= "A"; Object ana= new clname; 29

Metainformationen (II) Lösung mittels Klasse Class: String clname= "A"; Object ana; try { Class aclass= Class.forName(clName); ana= aclass.newinstance(); } catch (Exception e) { } System.err.print(e); 30

Wozu Dynamic Computing? Das Problem FatWare Zahlreiche Programme sind Repräsentanten von Fatware (Niklaus Wirth, ETH Zürich), zb bei Desktop-Programmen: Spreadsheets mit >> 1000 Funktionen Office-Applikationen belegen zig MBs auf einer Hard- Disk und sehr viel im RAM HW wird langsamer schneller als Software langsamer wird (M. Reiser, IBM Zürich) 31

Dynamic Computing stattdessen: Benutzer arbeitet mit Basisversionen von Software. zusätzlich benötigte Komponenten werden bei Bedarf ergänzt, indem sie nachgeladen und dynamisch eingesteckt werden Eine weitere Möglichkeit bieten Push-Technologien zum Broadcasting von Updates. Applikationen sind lokal bei den Clients gespeichert. Updates kommen von der Komponentensendestelle. 32