SOFTWARETECHNIK
Kapitel 5 – Wiederverwendung
Vorlesung im Wintersemester 2012/13
FG System- und Software-Engineering
Prof. Dr.-Ing. Armin Zimmermann
Inhalt
Einführung
Entwurfsmuster
Klassenbibliotheken
Frameworks
Komponenten
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 2
Einführung
Warum Wiederverwendung?
Geringerer Aufwand
Das Rad nicht noch einmal neu erfinden
Verwenden üblicher, aus Erfahrung gewachsener
Strukturen
.. und warum nicht?
Aufwand für Anpassung kann hoch sein!
Einarbeiten in teilweise komplexe Schnittstellen
Abhängigkeit von externen Komponenten,
Zwang zu späterer Portierung
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 3
Einführung
Beispiele für Wiederverwendung
Architekturmuster
Entwurfsmuster (Patterns)
Modellebene
Frameworks
Komponenten
Klassenbibliotheken
Module
Codeebene
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 4
Inhalt
Einführung
Entwurfsmuster
Klassenbibliotheken
Frameworks
Komponenten
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 5
Entwurfsmuster
Was ist ein Entwurfsmuster ?
Eine schematische Lösung für
eine Klasse verwandter Probleme
Höhere Ebene: Architekturmuster
Feinentwurf:
Entwurfsmuster (design pattern)
Beschreibung von interagierenden Objekten und Klassen,
die ein grundsätzliches Entwurfsproblem in einem
bestimmten Kontext lösen
[GoF: Gamma, Helm, Johnson, Vlissides, “Design Patterns
– Elements of Reusable Object-Oriented Software” 1994]
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 6
Entwurfsmuster
Analogie außerhalb der Informatik
Each pattern
.. describes a problem which occurs over and over again
in our environment, and then
.. describes the core of the solution to that problem,
in such a way that you can use this solution a million
times over,
.. without ever doing it the same way twice.
(Alexander, Ishikawa, Silverstein et al: “A Pattern
Language: Towns/Buildings/Construction” 1977)
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 7
Entwurfsmuster
Wie helfen Muster im Entwurf?
Identifizieren von Klassen
(Anwendungs- und Lösungsdomäne)
Regeln sind abstrakt oder an realen Objekten orientiert
Muster: Arten von Rollen bzw. Lösungshinweise
für typische Strukturierungsaufgaben
Änderbarkeit und Lesbarkeit des Entwurfs verbessern
Arten von Entwurfsmustern
Erzeugungsmuster
Strukturmuster
Verhaltensmuster
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 8
Entwurfsmuster
Übersicht
Quelle: Polze
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 9
Entwurfsmuster
Beschreibung von Entwurfsmustern
Name
Problem
Lösung
Motivation, Anwendungsbereich, Bedingungen
Struktur (Klassendiagramm)
Bestandteile (meist Klassen-, Assoziations- und
Operationsnamen)
Rollennamen: Platzhalter für Bestandteile der Anwendung
feste Bestandteile der Implementierung
Objektinteraktion (Abläufe, evtl. Sequenzdiagramm)
Diskussion
Vor- und Nachteile, Abhängigkeiten, Einschränkungen
Bekannte Verwendung, Spezialfälle
Nach Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 10
Entwurfsmuster
Erzeugungsmuster
Factory Method, Fabrikmethode
Abstract Factory, Abstrakte Fabrik
Trennung von Erzeugung und Repräsentation komplexer
Objekte, für Erzeugung unterschiedlicher Repräsentationen
Prototype, Prototyp
Schnittstelle zur Erzeugung von Familien verwandter Objekte
Builder, Erbauer
Implementierungsvarianten;
Erzeugung von Objekten wird an Unterklassen delegiert
Objekterzeugung durch Vorlage und Kopie
Singleton
Sicherstellung, dass nur ein Objekt einer Klasse erzeugt wird,
die einen globalen Zugriff bietet
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 11
Entwurfsmuster
Beispiel Erzeugungsmuster: Fabrik
Varianten von Objekten sollen erzeugt werden, ohne dass
sich der Auslöser um die Entscheidung kümmern muss
Erzeugen von Objekten, deren genauer Typ (Klasse)
zur Laufzeit (datenabhängig) entschieden wird
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 12
Entwurfsmuster
Beispiel für Fabrikmuster
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 13
Entwurfsmuster
Strukturmuster I
Adapter
Bridge, Brücke
Abstraktion von Implementierung entkoppeln, um beide
unabhängig ändern zu können
Decorator, Dekorierer
Anpassung der (inkompatiblen) Schnittstelle einer Klasse
oder eines Objekts an eine erwartete Schnittstelle
Objekt dynamisch um Zuständigkeiten erweitern
(Alternative zur Bildung von Unterklassen)
Facade, Fassade
Einheitliche Schnittstelle zu einer Schnittstellenmenge,
vereinfacht Zugriff
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 14
Entwurfsmuster
Strukturmuster II
Flyweight, Fliegengewicht
Composite, Verbund, Kompositum
Gemeinsame Nutzung kleiner Objekte zur effizienten
Verwendung großer Mengen davon (Speicheraufwand)
Zusammenfügen verschiedener Objekte zur Repräsentation
von Teil-Ganzes-Beziehungen; Objekte und Kompositionen
können einheitlich behandelt werden
Proxy, Stellvertreter
Kontrollierter Zugriff auf Objekt durch vorgeschaltetes
Stellvertreterobjekt
Gründe: Schutz, entfernter Zugriff (remote proxy),
smart pointer, Erzeugung on demand
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 15
Entwurfsmuster
Beispiel Strukturmuster: Adapter
Alternativer Name: Wrapper
Problem: Anpassung der Schnittstelle eines vorgegebenen
Objekts (adaptee) an eine Schnittstelle (target)
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 16
Entwurfsmuster
Adapter
Beispielproblem
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 17
Entwurfsmuster
Adapter
Beteiligte Rollen des Musters für das Beispielproblem
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 18
Entwurfsmuster
Adapter
Lösung des Beispielproblems
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 19
Entwurfsmuster
Adapter
Beispielhafte Notation in UML
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 20
Entwurfsmuster
Verhaltensmuster I
Command, Befehl
Observer, Beobachter
1-zu-n-Beziehung zwischen Objekten, so dass die Änderung
des zentralen Objekts zu einer Benachrichtigung und
Aktualisierung der n (abhängigen) Zustände führt
Visitor, Besucher
Befehl / Operation als Objekt kapseln (Parameterübergabe,
Operations-Warteschlangen, logging, Rückgängig machen)
Beschreibung und Kapselung einer zu definierenden
Operation, die auf einer Objektmenge ausgeführt wird
Interpreter
Repräsentation der Grammatik einer Sprache sowie
Interpreter zur Analyse von Sätzen der Sprache
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 21
Entwurfsmuster
Verhaltensmuster II
Iterator
Memento
Internen Zustand eines Objekts erfassen und speichern,
um Objektzustand wiederherstellen zu können
Template Method, Schablonenmethode
Sequentieller Zugriff auf die Elemente einer Sammlung
ohne Kenntnis der Implementierung der Sammlung
Beschreibung des Skeletts eines Algorithmus mit Delegation
der Einzelschritte an Unterklassen; Teilschritte können von
Unterklassen geändert werden
Strategy, Strategie
Ermöglicht Austausch verschiedener Implementierungen einer
Aufgabe ohne Beeinflussung der sie benutzenden Objekte
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 22
Entwurfsmuster
Verhaltensmuster III
Mediator, Vermittler
State, Zustand
Objekt, das das Zusammenspiel einer lose gekoppelten
Objektmenge in sich kapselt. Vermeidet direkten Bezug der
Objekte untereinander und ermöglicht unabhängige
Änderung des Zusammenspiels
Ermöglicht Objekt, sein Verhalten abhängig von seinem
inneren Zustand zu ändern, als ob es die Klasse wechselt
Chain of Responsibility, Zuständigkeitskette
Vermeidet direkte Kopplung von Auslöser und Empfänger
einer Anfrage bzw. Operation. Mehrere Objekte werden
nacheinander benachrichtigt, bis die Anfrage erledigt ist
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 23
Entwurfsmuster
Beispiel Verhaltensmuster: Iterator
Problem:
Häufiges Durchlaufen von Sammlungen von Objekten
zur Anwendung einer Operation (Zählen, Ändern, ..)
Sammlung intern implementiert z.B. als Liste, Menge,
hash table oder Baum
Durchlaufen: unabhängig von interner Repräsentation!
Mehrere Durchläufe (Sichten) gleichzeitig möglich?
Lösung: Interface oder Abstrakte Klasse für
Zugriffsschnittstelle
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 24
Entwurfsmuster
Beispiel Verhaltensmuster: Iterator
Prinzip des Musters
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 25
Entwurfsmuster
Anwendung Iterator
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 26
Entwurfsmuster
class DirectoryIterator implements Iterator
{ private Object[] collection;
private int current;
public DirectoryIterator(Object[] init)
{
collection = init; current = 0;
}
public boolean hasNext()
{
return current < collection.length;
}
public Object next()
{
return collection[current++];
}
}
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 27
Entwurfsmuster
Object[] myDirectory = new Object[]
{ new File(..),
new File(..),
.. };
DirectoryIterator iterator =
new DirectoryIterator(myDirectory);
while(iterator.hasNext())
{
System.out.println(iterator.next());
}
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 28
Entwurfsmuster
Auswahl von Entwurfsmustern
Überlege, wie Entwurfsprobleme durch Muster
gelöst werden
Beachten der Problembeschreibung der Muster
Untersuche Zusammenspiel der Muster
Finde ähnliche Strukturen
Finde passende Objekte
Lege Granularität (Abstraktionsgrad) fest
Spezifiziere Schnittstellen der Objekte
Jeweils für Mustertypen (Erzeugung, Struktur, Verhalten)
Überlege, welche Gründe zu Entwurfsänderungen
führen können
Welche Teile des Entwurfs sollten daher variabel sein?
Welche Aspekte sollten getrennt werden?
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 29
Entwurfsmuster
Anwendung von Entwurfsmustern
Untersuche Anwendbarkeit und Konsequenzen
Analysiere Struktur, Teilnehmer und Kollaborationen
Wähle aus dem Anwendungskontext Namen für
Teilnehmer
Spezifiziere die teilnehmenden Klassen
Deklariere Schnittstellen, Vererbung und Variablen
Identifiziere existierende Entwurfsklassen, die durch das
Muster beeinflusst werden
Wähle anwendungsspezifische Namen für Operationen
Implementiere Operationen entsprechend den
Verantwortlichkeiten und Kollaborationen des Musters
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 30
Entwurfsmuster
Beziehungen zwischen Mustern
Quelle: Polze
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 31
Inhalt
Einführung
Entwurfsmuster
Klassenbibliotheken
Frameworks
Komponenten
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 32
Klassenbibliotheken
Wiederverwendung von Code –
Voraussetzungen
Klar definierte Schnittstelle
Dokumentation
Pflege und Wartung der verwendeten Software
Softwareentwurf für Wiederverwendung
Einfachster Fall, alte Idee im Entwurf: Modul
Ein Modul ist ein Teil eines Softwaresystems,
das bestimmte Dienste bereitstellt,
aber kein eigenständiges System ist.
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 33
Klassenbibliotheken
Klassenbibliotheken
Zusammenfassung von Modulen, Klassen, etc.
Mit einem bestimmten (abstrakten) Zweck
Abstrakte Datenverwaltung, Templates
Grundlegende System-Aufgaben
Untere Kapselungs-Schicht des Laufzeitsystems
oder der Programmierumgebung
Numerische Routinen, Simulation, …
Wird in Anwendung eingebunden (importiert), API
Objekte instanziieren oder Klassen ableiten
Meist passiv: Kontrollfluss wird von Anwendung gesteuert
Beispiele
stdclib, MFC, GNU scientific library, Java 3D
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 34
Klassenbibliotheken
Beispiel: Boost
Boost provides free peer-reviewed portable C++ source
libraries that may become part of future standard C++
Available for Unix, Linux, Windows, …
Math, Containers, File system, additional types, IPC, MPI,
smart pointers, Regex, Statecharts, …
www.boost.org
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 35
Klassenbibliotheken
include <boost/numeric/conversion/cast.hpp>
using boost::numeric_cast;
using boost::numeric::positive_overflow;
…
try
{
int i=42;
short s = numeric_cast<short>(i);
}
catch(negative_overflow& e) {
std::cout << e.what();
}
catch(positive_overflow& e) {
std::cout << e.what();
}
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 36
Inhalt
Einführung
Entwurfsmuster
Klassenbibliotheken
Frameworks
Komponenten
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 37
Frameworks
Was ist ein Framework?
A framework is a set of prefabricated software building
blocks that programmers can use, extend, or customize
for specific computing solutions [Taligent]
Ein framework (Rahmenwerk, Anwendungsgerüst) ist eine
Menge von zusammengehörigen Klassen, die einen
abstrakten Entwurf für eine Problemfamilie darstellen
[nach Pomberger/Blaschek]
Ziele
Wiederverwendung von Code, Architektur,
Entwurfsprinzipien und Verhaltensschema
Ähnliche Benutzungsschnittstelle
SSE Zimmermann
Softwaretechnik
Nach Rumpe
Wiederverwendung – 38
Frameworks
Klassifikation I
Anwendungs-Framework (application framework)
Bereichsspezifisches Framework (domain framework)
Gibt Systemarchitektur für typische Anwendungsstruktur vor
GUI-Framework: Motif, Qt, Swing, …
Expertenwissen für Anwendungsbereich
für typische Anwendungen u.a. in den Bereichen
Luftfahrt, Produktion, Finanzwesen, Automotive, …
Beispiel: AUTOSAR
Infrastrukturgerüst (support framework)
Gerätetreiber, Anpassung an Hardware
Middleware: DCOM, Java RMI, CORBA, WebSphere, …
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 39
Frameworks
Klassifikation II
Offene Programmgerüste
Erweiterbarkeit durch Vererbung und dynamische Bindung
Funktionen konkretisieren durch Ableitung von Basisklassen
des Programmgerüsts und Überschreiben vordefinierter
Methoden
Geschlossene Programmgerüste
Erweiterbarkeit durch Definition von Schnittstellen für
Module, die für eine konkrete Anwendung in das Gerüst
eingesetzt werden können
Wiederverwendung durch Komponenten, die sich an
Schnittstellen halten; Aufruf über Delegation
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 40
Frameworks
Vergleich Klassenbibliothek / Framework
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 41
Frameworks
Beispiel GUI-Framework: Java Swing
Plattformunabhängige Grafikbibliothek
look-and-feel anpassbar mit Skins
UIManager.setLookAndFeel(
new MetalLookAndFeel());
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 42
Frameworks
import java.awt.event.*; import javax.swing.*;
class MyFrame extends JFrame {
public MyFrame() {
setTitle("My Closeable Frame");
setSize(300,200); setLocation(10,200);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e)
{ System.exit(0); } } );
}
Public static void main(String[] args) {
JFrame f = new MyFrame();
f.show();
}
}
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 43
Frameworks
Einordnung in Softwarearchitektur
Beispielhafte Schichtenstruktur
GUI-Framework
Anwendungslogik
Datenhaltung
Klassenbibliothek
AbstraktionsSchicht
Laufzeitsystem
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 44
Frameworks
Vorteile
Weitergabe von Expertenwissen
Durchdachtes Design: langfristige Aufwandsersparnis
Wartungsaufwand reduziert, systematische Tests möglich
Prinzipiell sehr hohe Produktivität möglich
Erleichtert Integration und Konsistenz verwandter
Anforderungen
Nachteile
Erstellung und Einarbeitung aufwändig
Zusätzlicher Dokumentations- und Wartungsaufwand
Fehlersuche erschwert durch Overhead des Frameworks
Kombination verschiedener Frameworks sehr schwierig
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 45
Inhalt
Einführung
Entwurfsmuster
Klassenbibliotheken
Frameworks
Komponenten
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 46
Komponenten
Bausteinorientierte Programmierung
(component-ware)
Softwareentwicklung: Konstruktion aus vorgegebenen
Bausteinen (siehe Kapitel Entwurf und Architektur!)
Entsprechung für Wiederverwendung:
Generische Bausteine (components)
Anpassbar, zusammensetzbar
Werkzeuggestützte bzw. grafische
Kompositionsmechanismen
Beispiele: Java Beans, Enterprise Java Beans (EJBs),
Microsoft COM+
Komponenten-Entwicklung oft auch projektspezifisch
nach: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 47
Komponenten
Definition Komponente
A component is an independently deliverable unit of
software that encapsulates its design and implementation
and offers interfaces to the out-side, by which it may be
composed with other components to form a larger whole.
[Nierstrasz]
A software component is a unit of composition with
contractually specified interfaces and explicit context
dependencies only. A software component can be
deployed independently and is subject to composition by
third parties. [Szyperski]
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 48
Komponenten
Warum Komponenten?
Monolithische, proprietäre Software führt zunehmend zu
Problemen
Zunehmend verteilte Anwendungen mit offener Struktur
und Internet-Anbindung
Zusammensetzen der Funktionalität aus standardisierten
Elementen, die über offene Schnittstellen kommunizieren
Komponenten sollen Flexibilität bei sich ändernden
Anforderungen erhöhen
Weg aus der „Software-Krise“?
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 49
Komponenten
Eigenschaften
Müssen von ihrer Umgebung und anderen Komponenten
unabhängig und getrennt sein
Kontextabhängigkeiten: benötigte Komponenten-Infrastruktur
und Systemressourcen
Kapseln ihre angebotenen Funktionen
Werden immer als ganze Einheit eingesetzt;
alle Bestandteile sind enthalten (Archiv-Datei)
Sind nicht von Kopien ihrer selbst unterscheidbar
Klare Spezifikation der Schnittstelle nötig; explizit
definierte Interaktionen mit Komponenten und Umgebung
Komposition durch Dritte: Endbenutzer,
Komponenten-Hersteller und Komponenten-Integrator;
meist nur kompilierter Code verfügbar
nach: Polze, Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 50
Komponenten
JavaBeans
Komponentenmodell von Java
Definition: Eine Bean (Bohne) ist eine Sammlung von
Java-Klassen und anderen Ressourcen, bei der die
Klassen bestimmten Konventionen genügen
Beans exportieren
Eigenschaften (properties): Bestandteile des lokalen
Zustands, auf die über get- und set-Methoden zugegriffen
werden kann
Ereignisse (events): Ereignisklassen und "EventListener"Klassen entsprechend dem Ereignismodell von Java/AWT
Methoden (methods): öffentlich bekannte Methoden des
Objekts
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 51
Komponenten
JavaBeans
Wann ist eine Java-Klasse eine JavaBean?
Nicht durch Schnittstellen-Implementierung!
Durch Einhaltung bestimmter Namens-Konventionen
Konventionen für Eigenschaften (Properties)
public setPropertyName (PropertyType p);
public PropertyType getPropertyName();
Persistenz: Zustand muss serialisierbar sein
für eine Abspeicherung auf Speichermedium
Implementiert java.io.Serializable oder java.io.Externalizable
Wiederherstellung über Deserialisierung
Austausch von Beans über Systemgrenzen hinweg möglich
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 52
Komponenten
public class SimpleBean
extends Canvas implements Serializable
{
private Color color = Color.green;
public Color getColor(){
return color; }
public void setColor(Color newColor){
color = newColor; repaint(); }
public void paint(Graphics g) {
g.setColor(color);
g.fillRect(20, 5, 20, 30); }
public SimpleBean(){
setSize(60,40); setBackground(Color.red);}
}
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 53
Komponenten
Komposition von Komponenten
Grafische Werkzeuge zum Zusammenstellen
„plumbing instead of programming“
Interaktion durch Verbindung von Ereigniserzeugung und
-verarbeitung (event source, register event listeners)
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 55
Komponenten
Kompositionsprobleme
Widerspruch zum Ansatz: Verschiedene inkompatible
Technologien für Komponenten existieren
OMG’s CORBA, Microsoft’s COM+, Sun’s JavaBeans (EJB).
Interoperabilität: Problem mit unterschiedlichen
Umgebungen und Plattformen
Spezielle Integrations-Werkzeuge, z.B.
COM and CORBA Interworking Spec (OMG)
Kontextabhängigkeiten
Im Gegensatz zu angebotenen Schnittstellen sind die
benötigten Komponenten oft unklar
Nichtfunktionale Abhängigkeiten werden nicht betrachtet
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 56
Komponenten
Komponenten für
Client/Server-Architekturen
Wichtige Aspekte
Transaktionen
Sicherheit
Ressourcenverwaltung
Persistenz
Komponentenkonzept für Server-Komponenten
meist unsichtbare Komponenten
standardisierte Realisierung der wichtigen Eigenschaften für
Client/Server-Anwendungen
Realisierung: Enterprise Java Beans (EJBs) innerhalb eines
Java Enterprise Edition Servers
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 57
Komponenten
Architektur von Enterprise JavaBeans
Quelle: Rumpe
SSE Zimmermann
Softwaretechnik
Wiederverwendung – 58
Komponenten
Arten von Enterprise JavaBeans
Entity Bean
Repräsentiert persistente Information aus einer Datenbank
Typischerweise mit mehreren Transaktionen assoziiert
Mehrbenutzerzugriff möglich
Session Bean
EJB-Instanz, die mit einem einzelnen Client assoziiert ist
Typischerweise nicht persistent
Beispiele:
Benutzersitzung innerhalb einer Webseite, Buchungsvorgang
Stateful / Stateless Session Bean
Dialogzustände innerhalb der Session oder nicht
SSE Zimmermann
Softwaretechnik
Quelle: Rumpe
Wiederverwendung – 60