• Keine Ergebnisse gefunden

Prof. Dr. rer. nat. habil. Uwe Aßmann

N/A
N/A
Protected

Academic year: 2021

Aktie "Prof. Dr. rer. nat. habil. Uwe Aßmann"

Copied!
5
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Softwaretechnologie, © Prof. Uwe Aßmann

Technische Universität Dresden, Fakultät Informatik 1

43 Verfeinerung von Lebenszyklen - Geschichtete Interpretierer

(Automaten)

Prof. Dr. rer. nat. habil. Uwe Aßmann

Institut für Software- und Multimediatechnik Lehrstuhl Softwaretechnologie

Fakultät für Informatik TU Dresden Version 10-0.3, 27.06.11

1) Interpretierer 2) Schichtung

Prof. U. Aßmann, Softwaretechnologie 2

Obligatorische Literatur

Objektorientierter Entwurf

(Object-Oriented Design, OOD)

1.

Einführung in die objektorientierte Softwarearchitektur

1. Modularität und Geheimnisprinzip

2. Entwurfsmuster für Modularität

3. BCD-Architekturstil (3-tier architectures)

2.

Verfeinerung des Entwurfsmodells zum Implementierungsmodell (Anreicherung von Klassendiagrammen)

1. Verfeinerung von Operationen 2. Verfeinerung von Assoziationen 3. Verfeinerung von Vererbung 3. Verfeinerung von Lebenszyklen

1. Verfeinerung von verschiedenen Steuerungsmaschinen 2. Querschneidende Verfeinerung mit Chicken Fattening 4.

Objektorientierte Rahmenwerke (frameworks)

5.

Softwarearchitektur mit dem Quasar-Architekturstil

Punktweise vs querschneidende Verfeinerung

Punktweise Verfeinerung:

Verfeinerung von Lebenszyklen, d.h. Objekten, Operationen und Attributen

Arbeit jeweils an einem Punkt der Spezifikation

Querschneidende Verfeinerung:

Arbeit an mehreren Punkten der Spezifikation

Kapselung des Querschnittsverhaltens in einer Kollaboration (Konnektor)

(2)

Softwaretechnologie, © Prof. Uwe Aßmann

Technische Universität Dresden, Fakultät Informatik 5

43.1 Geschichtete Lebenszyklen

(Steuerungsmaschinen, Abstrakte Maschinen, Layered Abstract Machines, Layered Interpreters)

Prof. U. Aßmann, Softwaretechnologie 6

Geschichtete Lebenszyklen

Der Architekturstil Geschichtete Lebenszyklen (geschichtete Steuerungsmaschinen, abstrakte Maschinen, Layered Abstract Machines) benutzt punktweise Verfeinerung, um höher liegende abstrakte Maschinen mit ausdrucksstarken Kommandosprachen in niederer liegende abstrakte Maschinen abzubilden

Geschichtet

Dominant bei interaktiven Anwendungen

Büroautomation (office systems)

Editoren

Formular-basierte Anwendungen, auch Web

Auch für batch-Systeme (ohne Interaktion)

Auftragsbearbeitung (Order processing)

Transaktionsverarbeitung (OLTP, online transaction processing)

Prof. U. Aßmann, Softwaretechnologie 7

Layered Abstract Machines (Layered Interpreters)

Eine abstrakte maschine

(Interpreter, abstract machine, interpreter) besteht aus

Einer Menge von Operationen und gekapselten Daten

Wird realisiert auf einer niederer liegenden abstrakten Maschine (verborgen)

Wenn die abstrakte Maschine mit einem Automat als

Lebenszyklus versehen wird, sprechen wir von einer Steuerungsmaschine (siehe zuvor)

Siehe Entwurfsmuster Command and Interpreter (Gamma-Buch”)

Processor

<<interpreter>>

open() <<command>>

read() <<command>>

write() <<command>>

close() <<command>>

Prof. U. Aßmann, Softwaretechnologie 8

Layered Abstract Machines (Layered Interpreters, Layered Automata)

Die USES-Relation zwischen abstrakten Maschinen muss

zyklenfrei sein

HigherProcessor

<<interpreter>>

open() <<command>>

read() <<command>>

write() <<command>>

close() <<command>>

LowerProcessor

<<interpreter>>

start() <<command>>

get() <<command>>

put() <<command>>

stop() <<command>>

realization

(3)

Prof. U. Aßmann, Softwaretechnologie 9

Realisierung von Interpretern mit Steuerungsmaschinen

Verhalten von Interpretern kann durch Steuerungsmaschinen beschrieben werden können

Interpreter (Steuerungs- maschinen) auf oberen Schichten können Interpreter auf unteren Schichten steuern

Tür

abgesperrt verriegeln/

amp.rotesLichtAn() entriegeln/

amp.grünesLichtAn() geschlossen

entry/stop()

schließen/

amp.gelbesLichtAn() tm.start() öffnen()/

tm.start() öffnen(),

verriegeln(), entriegeln()/

-

öffnen, schließen, verriegeln/

- entriegeln(),

schließen()/

amp.beep()

offen entry/stop()

TürAmpel

öffnen() schließen() verriegeln() entriegeln()

rotesLichtAn() grünesLichtAn() gelbesLichtAn() beep()

rotesLichtAn() /....

grünesLichtAn()/

...

gelbesLichtAn()/

...

beep()

<<Steuerungsmaschine>>

<<Steuerungsmaschine>>

TürMotor start() stop()

running stop()/... stopped

start()/...

<<Steuerungsmaschine>>

Schichtgrenze

Prof. U. Aßmann, Softwaretechnologie 10

Realisierung von Interpretern durch Steuerungsmaschinen

Gelingt es, die Anwendung durch Schichten von Steuerungsmaschinen zu

beschreiben, liegt ein sehr stark strukturierte Variante von Geschichteten Abstrakten Maschinen vor: Geschichtete Steuerungsmaschinen (layered behavioral machines)

Diese können durchaus als Fassadenklassen von Paketen dienen, die das ganze Paket steuern

P1

<<private>>

I1.1

<<private>>

F1 I1.2

P2

<<private>>

I2.1 <<private>>

I2.2

F2 <<private>>

I2.3

P3

<<private>>

I3.1 <<private>>

I3.2

F3 <<private>>

I3.3

Geschichtete Steuerungsmaschinen (Layered Abstract Machines)

Abstrakte Maschine als Lebenszyklus von

Implementierungsobjekten in einer Programmiersprache Abstrakte Maschine als Lebenszyklus

eines technischen Entwurfsobjektes niederer Abstraktion

Abstrakte Maschine als Lebenszyklus eines technischen Entwurfsobjektes

Abstrakte Maschine als Lebenszyklus eines Analyseobjektes

USES Relation Anwendungs-

orientiert

Maschinen- orientiert

Verfeinerung mit geschichteten Steuerungsmaschinen (top-down)

Abstrakte Maschine als Lebenszyklus von

Implementierungsobjekten in einer Programmiersprache Abstrakte Maschine als Lebenszyklus

eines technischen Entwurfsobjektes niederer Abstraktion

Abstrakte Maschine als Lebenszyklus eines technischen Entwurfsobjektes

Abstrakte Maschine als Lebenszyklus eines Analyseobjektes

USES Relation Anwendungs-

orientiert

Maschinen- orientiert

(4)

Prof. U. Aßmann, Softwaretechnologie 13

3 Arten von Lebenszyklen:

Tools, Materialien, Automaten

Werkzeuge (tools)

Aktiv

Vom Benutzer oder von Automaten aus angesteuerbar

Materialien (materials)

Passiv; nur über ein Tool benutzbar

In die Datenbank (E- und D- Schicht)

Gehorchen der CRUD-Schnittstelle (create, read, update, delete)

Automat (Interpretierer, automaton, workflow,

interpreter)

Arbeitsfluss; Programmsteuerung

Steuert Werkzeuge an, die auf Materialien arbeiten

Gleiche Schnittstelle wie tool

Tool

<<tool>>

start() work_1() ..

work_n() step() stop()

Material

<<material>>

<<uses>>

create() read() update() ( write() ) delete() open() close()

Automat

<<automaton>>

start() run() step() stop()

<<uses>>

Softwaretechnologie, © Prof. Uwe Aßmann

Technische Universität Dresden, Fakultät Informatik 14

43.2 Anwendung von geschichten abstrakten Maschinen

Prof. U. Aßmann, Softwaretechnologie 15

Der ganze Computer ist eine einzige geschichtete abstrakte Maschine

Specification language

High level programming language Intermediate language

Assembler

Machine code Kernel interface Microcode

Gates Physics

shell-Interpreter, VDM

Chip simulator

?

Prolog-Interpreter

JVM-Interpreter,

emacs Lisp Code, .NET-VM

Microcode interpreter OS

Befehle höherer Ebenen werden auf Befehle niederer Ebenen abgebildet

Domänenspezifische Sprache Mathlab, Simulink Kommandosprache in der GUI Apple Automator

Prof. U. Aßmann, Softwaretechnologie 16

Beispiel: Text-Programm

Operating System

Assembler Java

Wordprocessor Commands (textual, click-and-drop)

USES Relation

JVM

C

(5)

Prof. U. Aßmann, Softwaretechnologie 17

Strukturierung der Anwendungslogik in Schichten

Punktweise Verfeinerung der Anwendungslogik in Schichten

Data Repository Layer (database, memory) Middleware

Graphical user interface

Application logic (business logic) <<control>>

<<entity>>

Data access object (DAO) Abstract machine 2

Abstract machine 3 Abstract machine 1

Prof. U. Aßmann, Softwaretechnologie 18

Entwurf mit geschichteten Abstrakten Maschinen

Nutze BCED-Architekturstil

Identifiziere abstrakte Maschinen in der Control-Schicht

Ordne sie in Schichten an

Denke über ihr “Schichtengeheimnis” nach

Kapsele eine Schicht hinter eine Fassade (und in ein Paket)

Statte die Fassade mit einer Steuerungsmaschine aus

Vorteile:

Einfachheit

Hohe Kohäsion, niedrige Kopplung

Gute Austauschbarkeit

Gute Variierbarkeit

Gehe für die anderen Schichten ähnlich vor

Was wollen wir eigentlich variieren?

Produktlinien entstehen durch systematische Variation von Geheimnissen

Funktionale Eigenschaften (Funktionale Varianten in der Control)

Dynamische Kontexteigenschaften

Mailer Calendar Browser

Writer SlideEditor Wiki

MiddlewareVarianten (Entity level)

Plattformeigenschaften (Boundary, Database)

Benutzer (Level, Präferenzen) Netzwerkverbindung Sicherheitseigenschaften Chip, OS, GUI-Bibliothek Persistenz, Displaygerät Web/Rich/Smart Client Parallelität (Transaktionen) Verteilung

The End

Referenzen

ÄHNLICHE DOKUMENTE

Nach Verleihung der Franz-Kuhn- Medaille (1996) und der Ehrenmitglied- schaft der DGAI (2006) wurde Manfred Specker in diesem Jahr mit der Heinrich- Braun-Medaille die

Eine abstrakte Maschine ist eine idealisierte Hardware, für die sich einerseits. “leicht” Code erzeugen lässt, die sich andererseits aber auch “leicht” auf realer

In einem letrec-Ausdruck können wir bei der Definition der Werte bereits Variablen verwenden, die erst später angelegt werden. == ⇒ Vor der eigentlichen Definition werden

• Stattdessen werden während der Abbarbeitung der Eingabe genau die Mengen konstruiert, die für die Eingabe notwendig sind ..... was aber in der Praxis (so gut wie) nie

Eine abstrakte Maschine ist eine idealisierte Hardware, für die sich einerseits. “leicht” Code erzeugen lässt, die sich andererseits aber auch “leicht” auf realer

Eine abstrakte Maschine ist eine idealisierte Hardware, für die sich einerseits.. “leicht” Code erzeugen lässt, die sich andererseits aber auch “leicht” auf realer

Zu seinen wichtigsten Ämtern und zusätzlichen Aufgaben gehören die Mitgliedschaft im Herausgebergremium der IWP (Information – Wissenschaft und Praxis), damals noch „Nachrichten

Klaus Arnold, der ehemalige Direktor des Instituts für Medizini- sche Physik und Biophysik der Medi- zinischen Fakultät der Universität Leipzig im Alter von 69 Jahren.. In