111
Software Engineering Prof. Dr. Wolfgang Schramm SOFTWARE- ARCHITEKTUR & ENTWURF TEIL 2 4. Kapitel

SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

SoftwareEngineeringProf.Dr.WolfgangSchramm

SOFTWARE-ARCHITEKTUR&ENTWURF

TEIL2

4.Kapitel

Page 2: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

1

Inhalt

1. Einführung2. Begriffe3. Entwerfen4. Architektur5. Feinentwurf6. Entwurfsprinzipien7. Muster

Page 3: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

2

Das(De)sign bestimmtdasBewusstsein!

WiekommenwirzueinemgutenDesign?WoranerkenneicheingutesDesign?

www.swr3.de

Es gibt 4 sog. allgemeineDesignprinzipien (enabling techniques).

EigentlichgibtessovieleDesignprinzipien,wiesichLeutedarüber

Gedankengemachthaben.

Page 4: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

3

PrinzipiendesEntwurfs

o Principle :„abasic truth or general law ….that is used as abasis ofreasoning or aguide to action.“

o DiesePrinzipienwerdeninvielen,sog.gängigenAnsätzenals„grundlegend“bezeichnet.

Page 5: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

4

AllgemeineDesign-Prinzipien

o Abstraktiono Kapselungo Modularisierungà Kopplung,Kohäsiono Hierarchie

PHAME=Principles of Hierarchy,Abstraction,Modularizationand Encapsulation.

G.Booch

Page 6: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

5

Design-Prinzip:Abstraktion1/2

„…“Abziehen“oderHerauslösenvonTeilgehalten,Aspekten,MerkmalenauseinemkonkretemGanzen,inderAbsicht,dasGleichbleibende,WesentlicheverschiedenerGegenständezuerkennen“.(Quelle:MeyersLexikon)

Page 7: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

6

Design-Prinzip:Abstraktion2/2

VorgehenderAbstraktion:o VerallgemeinertdurchVernachlässigenvonunwesentlichen

Eigenschaften.o TrenneWesentlichesvomUnwesentlichen.

o InderKonzipierungwerdenhauptsächlichvierAbstraktionsartenverwendet:¤ Komposition¤ Benutzung¤ Generalisierung¤ Aspekte.

Waswesentlich/unwesentlichist,hängtvondenAnforderungenab

Page 8: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

7

Page 9: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

8

Page 10: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

9

Design-Prinzip:Abstraktion(Wieundwo)

o Abstraktion=VerstehendurchsystematischesVergröbern/Verfeinern=derProzess,Informationzuvergessen:¤ AbstraktiondurchParametrisierung,durchSpezifikation.¤ ProzeduraleAbstraktion,Datenabstraktion,Kontrollabstraktion.¤ GewinnungvonÜbersicht;WeglassungderDetails.¤ DieDarstellungeinesDetails;Weglassung/VergröberungdesRests¤ HerstellungeinessystematischenZusammenhangszwischen

ÜbersichtenundDetailsichten.

Page 11: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

10

Design-Prinzip:Abstraktion(Vor- undNachteile)

VorteilederAbstraktiono DurchWeglassenunwichtigerEigenschaftenkanndie

Systemkomplexitätreduziertwerden.o AbstraktionerreichtinderRegeleinegrößere

Allgemeingültigkeit.

NachteilederAbstraktiono EskönnenwichtigeDetailsvergessenwerden.o ModellbildungundModellverständnissetzten

Erfahrung/Übungvoraus.

Page 12: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

11

Übung

ErläuternSiedasPrinzipAbstraktion.BegründenSie,waseineguteAbstraktionausmacht,underklärenSiezweiBeispielefürAbstraktionen:EinBeispielausderSoftwareentwicklung(denkensiehierinsbesondereandieObjektorientierung)undeinsausdemAlltag.

Page 13: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

12

Design-Prinzip:Kapselung

o Kapselung,InformationHiding (nach[Par72])¤ VerbergenderDetailseinerKomponente.¤ UnzugänglichmachenderDetails.¤ KriteriumzurGliederungeinesGebildesinKomponenten,sodass

n jedeKomponenteeineLeistung(odereineGruppelogischengzusammenhängenderLeistungen)vollständigerbringt,

n außerhalbderKomponentenurbekanntist,wasdieKomponenteleistet,n nachaußenverborgenwird,wiesieihreLeistungenerbringt.n fundamentalesPrinzipzurBeherrschungkomplexerSysteme.n liefertguteModularisierungen.

Page 14: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

13

DesignPrinzip:Kapselung

Zugriff direkt auf die Daten

Gekapselte Daten

Page 15: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

15

Modularisierung&Kapselung 1/2

o WarumistModularisierungundKapselunggut?¤ DieVerwendungdesModulserfordertkeineKenntnisseüberseinen

innerenAufbau.¤ DieGefahrvonunbeabsichtigtenFehlmanipulationensinkt.¤ DatenstrukturenundZugriffsoperatorenliegenineinemModul.Dies

verbessertdieLokalitätdesProgramms:Siewerdenbesserverstanden,sindeinfacherzuüberblicken,....

¤ ÄnderungenimInnereneinesModuls,welcheseineSchnittstelleunverändertlassen,habenkeineRückwirkungenaufdasübrigeSystem.

¤ Zugriffekönnenüberwachtwerden,ohnedassmanintiefereAbstraktionsschichteneindringt

¤ DieKorrektheitdesModulsistohneKenntnisseinerEinbettunginsGesamtsystemnachprüfbar.

außen

innen

Page 16: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

16

Modularisierung&Kapselung2/2

o GibtesNachteilebeiModularisierungundKapselung?¤ AufrufvermittelnderOperationenkostetRechenzeit¤ ZugriffeerschwertbeinichtoptimalenSchnittstellen

n Maßnahmenn Refactoring (VerbessernderSchnittstellen)

Page 17: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

18

Design-Prinzip:Modularisierung

o Dekomposition undModularisierung¤ ZerlegeneinesgroßenSystemsinkleinere,

beherrschbareEinheiten.¤ VerteilenvonFunktionalitätaufKomponenten

(Module).

o Modul: benannte,klarabgegrenzteKomponenteeinesSystems.

BeiderModularisierungkommteswesentlichdaraufan,dassnichtirgendwiezerlegtwird,sondernso,dassdieModuleinsichgeschlosseneTeillösungenmitmöglichstwenigen,wohldefiniertenInteraktionenzuanderenModulenbilden.

o Vollständigkeit undPrimitivität¤ Komponentenenthaltenalles,waszueiner

Abstraktiongehört,abernichtmehr.

Page 18: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

19

PrinzipderModularisierung

o ModulinternstarkerZusammenhang.

o ModulexternschwacheKopplung.

o KommunikationnurüberSchnittstellen.

o Modulinternesvonaußennichtsichtbar.

Page 19: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

20

Design-Prinzip:Modularisierung

o WarumistModularisierunggut?

- Die Verwendung des Moduls erfordert keine Kenntnisse über seinen inneren Aufbau.

- Änderungen im Inneren eines Moduls, welche seine Schnittstelle unverändert lassen, haben keine Rückwirkungen auf das übrige System.

- Die Korrektheit des Moduls ist ohne Kenntnis seiner Einbettung ins Gesamtsystem nachprüfbar.

Page 20: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

21

Design-Prinzip:Kohäsion&Kopplung

o Kohäsion (cohesion)¤ EinMaßfürdieStärkedesinnerenZusammenhangs(innerhalb)der

Komponente.¤ JehöherdieKohäsion,destobesserdieModularisierung.

n schlecht:zufällig,zeitlichn gut:funktional,objektbezogenn esgibtverschiedeneKohäsionsstufen(s.[SMC74],[PJ88])

o Kopplung(coupling)¤ EinMaßfürdenZusammenhangzwischenzweiKomponenten.¤ JegeringerdiewechselseitigeKopplungzwischendenKomponenten,

destobesserdieModularisierung.n schlecht:Inhaltskopplung,globaleKopplungn akzeptabel:Datenbereichskopplungn gut:Datenkopplung

Keine Design-Prinzipien,sondern Maß für die Güte der Modularisierung

Page 21: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

22

Metriken:Kohäsion&Kopplung

o CBO(Coupling Between Object Classes)¤ EineKlasseistmiteineranderenKlassegekoppelt,wennsiederen

Methodenund/oderAttributebenutztoderdirektvonihrerbt.CBOgibtdieAnzahlderaneineKlassegekoppeltenKlassenan.

o LCOM(Lackof Cohesion inMethods)¤ AnzahlderPaarevonMethodenderKlasseohnegemeinsame

Instanzvariablen minusAnzahlderPaarevonMethodendieserKlassemitgemeinsamenInstanzvariablen.

Page 22: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

23

MetrikfürKohäsion

class X {

int A, B, C, D, E, F;

void f(){ … uses A, B, C … }

void g(){ … uses D, E … }

void h(){ … uses E, F … }

}

Aa B C

A

A B C

D E F

f()

g() h()

LCOM: Lack of Cohesion in Methods

LCOM = 2 -1 = 1

Page 23: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

24

Übung

1. BestimmteVariablensindzugänglich– globaloderdurchexplizitenEx- undImport.2. AufalleDatenkannzugegriffen.3. EsbestehtkeineBeziehungzwischendenModulen,derZugriffistsyntaktischunmöglich.4. DieMethodenverschiedenerModulesindnurdurchParameterundFunktionen

gekoppelt.

Die folgenden Aussagen beschreiben Programmeigenschaften mit unterschiedlichen Kopplungsstärken. Sortieren sie die Aussagen von „starke Kopplung“ nach „geringe Kopplung“.

Page 24: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

26

StufenderKoppelung

Stufe Zwischen Methoden/Modulen Erreichbar für

Einbruch Der Code kann verändert werden. Einbrecher

Volle Öffnung Auf alle Daten kann zugegriffen. Methoden

Selektive Öffnung Bestimmte Variablen sind zugänglich –global oder durch expliziten Ex- und Import

Module, Methoden

Methodenkopplung Die Methoden verschiedener Module sind nur durch Parameter oder Funktionen gekoppelt.

Module (Methoden)

Funktionskopplung Die Methoden verschiedener Module sind nur durch Werteparameter und Funktionsresultate gekoppelt.

Module (Methoden)

Keine Kopplung Es besteht keine Beziehung zwischen den Modulen, der Zugriff ist syntaktisch unmöglich.

Module

Page 25: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

27

StufenderKohäsion

Stufe Innerhalb einer Methode / eines Moduls Erreichbar für

Keine Zusammenarbeit Zufällige Zusammenstellung. Module

Ähnlichkeit Die Teile dienen einem ähnlichen Zweck. Module

Zeitliche Nähe Die Teile werden zur selben Zeit ausgeführt.

Module, Methoden

Gemeinsame Daten Die Teile sind durch gemeinsame Daten verbunden, auf welche sie nicht exklusiven Zugriff haben.

Module, Methoden

Hersteller/Verbraucher Der eine Teil erzeugt, was der andere verwendet.

Module, Methoden

Einziges Datum (Kapselung)

Die Teile realisieren alle Operationen, die auf eine gekapselte Datenstruktur möglich sind.

Module, Methoden

Einzige Operation Operationen, die nicht mehr zerlegbar sind.

Methoden

Page 26: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

28

Hierarchie

o ...durchschrittweiseVerfeinerung(à TopDown).¤ AussagekräftigeKlassifikation(bzgl.desVerhaltensà ).¤ SinnvolleGeneralisierung(gemeinsameEigenschaftenherausziehen,

Code-Redundanzvermeiden,à DRY).¤ SicherstellenderErsetzbarkeit(à Liskov‘sches Substitutionsprinzip).¤ VermeidenredundanterPfade(beiderVererbungshierarchie)à

Verständlichkeit.¤ GarantiederrichtigenReihenfolge(dasseinSubtypvomObertyp

abhängigist,istintuitivzuverstehen,derumgekehrtFallnicht).

Vorlesung Software Engineering

Page 27: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

29

PrinzipiendesobjektorientiertenEntwurfs

o Single-Responsibility-Prinzip(SRP)o Open-Closed-Prinzip(OCP)o Liskovsches Substitutionsprinzip(LSP)o Interface-Segregation-Prinzip(ISP)o Dependency-Inversion-Prinzip(DIP)

SOLID-Prinzipien

Und noch weitere Prinzipien

(teilweise schon in den genannten

enthalten)

Page 28: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

30

Diskussion

¨ WiefindensiefolgendenEntwurf?

Page 29: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

31

Diskussion

Besser: mehrere Verantwortlichkeiten aufspüren

Page 30: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

32

SingleResponsibility PrinzipundDon‘t RepeatYourself

1. SingleResponsibility Principle (SRP)¤ JedesObjekthateineeinzelneVerantwortung¤ TesteinerKlassebzgl.SRP

n Der/Die/Das «Klasse»«Methode»selbern DasAutostartetselbern DasAutowechseltReifenselber

2. Don‘t RepeatYourself (DRY)¤ EsgibtkeinendoppeltenCode¤ TesteinerKlassebzgl.DRYà offensichtlich

üû

SRPverletzt?à Klassenspalten/zusammenfügenDRYverletzt?à Codeauslagern(Klasse,Methode)

Page 31: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

33

Offen-geschlossen-Prinzip1/3

o Geschlossen:(à besservollständig)¤ DieSchnittstelleeinesModulsdecktalleAnforderungendesClient-

Moduleab¤ SiekannvondenClientsohneAnpassungverwendetwerden.¤ Sieiststabil.

o Offen:(à bessererweiterbar)¤ EinModullässtsichohneÄnderungderClient-Moduleerweitern

o UmEntwürfenachdemoffen-geschlossen-Prinzipzuerstellen,müssendierichtigenAbstraktionengefundenunddieveränderbarenunderweiterbarenAspekteimplizitmodelliertwerden.

Page 32: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

35

Offen-geschlossen-Prinzip2/3

B

A

DC

AA

E F

AwirderweitertdurchSubklasseAAAbleibtstabilfürB,C,DAAliefertE,FzusätzlicheFunktionalität

Page 33: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

36

Design-Prinzip:Offen-geschlossen-Prinzip3/3

Beispiel Klassen sollten für Erweiterungen offen und für Veränderungen geschlossen sein

«abstract» Spielervariable1 : String...

schieben(stein, ziel) : void...

niemand soll etwas ändern!

...KI

variable1 : String...

schieben(stein, ziel) : void...

Menschvariable1 : String...

schieben(stein, ziel) : void...wird überschrieben durch

Page 34: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

38

Inwiefern wirdhierdasOCPverletzt?

public void draw(Form form) {

if (form.type == CIRCLE) {drawCircle(form);

}else if (form.type == SQUARE) {drawSquare(form);

}}

Falls draw ein Dreieck zeichnen soll, muss draw erweitert werden.

Page 35: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

40

WiefindensiediesenEntwurf?

Spielbrettbreite : inthöhe : intfelder : Feld [*][*]

addStein (x, y)removeStein (x, y)

3DSpielbretttiefe : int3dFelder : Feld [*][*][*]

addStein (x, y, z)removeStein (x, y, z)

Page 36: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

41

Problem!

Diese Methoden arbeiten mit (x, y, z) Koordinaten,

Diese Methoden haben im 3-D Kontext keine Bedeutung,

Spielbrettbreite : inthöhe : intfelder : Feld [*][*]

addStein (x, y)removeStein (x, y)

3DSpielbretttiefe : int3dFelder : Feld [*][*][*]

addStein (x, y, z)removeStein (x, y, z)

Page 37: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

42

Liskov‘sches Substitutionsprinzip1/2

o Eigenschaften, die anhand der Spezifikation des vermeintlichenTyps eines Objektes bewiesen werden können, sollten auch danngelten, wenn das Objekt einem Untertyp dieses Typs angehört: Seiq(x) eine beweisbare Eigenschaft von Objekten x des Typs T. Dannsoll q(y) für Objekte y des Typs S wahr sein, wobei S ein Untertypvon T ist. Damit ist garantiert, dass Operationen, die auf ein Objektdes Typs T vom Typ S anwendet werden, auch korrekt ausgeführtwerden. In einigen den heute übliche Programmiersprachen, diePolymorphie unterstützen, kann dieses Prinzip durch Vererbungvon mehr als einem Objekt auf ein anderes, verletzt werden. Dannließe sich nicht stets bedenkenlos ein Objekt vom Typ T durch einObjekt vom Typ S ersetzen.

vereinfacht:o Bei Vererbung: Subklassen müssen ihre Basisklassen ersetzen

können – ohne dass die Basisklassen davon wissen müssen.

[LW93]

Page 38: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

43

Liskov‘sches Substitutionsprinzip2/2

o Washierbenötigtwird,istetwaswiediefolgendeErsetzungseigenschaft[6]:WennesfürjedesObjekto1vomTypSeinObjekto2vomTypTgibt,sodassfüralleProgramme,dieaufTermenderArtTbasieren,sichdasVerhaltenvonPnichtändert,wenno2durcho1ersetztwird,dannistSeinSubtypvonT.

o EineMethodesolltenichtsoüberschriebenwerden,dasssicheinObjekteinerabgeleitetenKlasseüberraschendandersverhält,alsmanesaufgrundderDefinitionderBasisklasseerwartenwürde.

o M.a.W:¤ Methoden,dieinabgeleitetenKlassenneudefiniertwerden,müssenalle

Integritätsbedingungen(d.h.dieSpezifikation)derBasisklassebeachten.¤ EineUnterklassedarfErweiterungenenthalten,nichtabergrundlegende

Änderungen.ÜbersetzungvonW.Kowarschick

Page 39: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

44

Interface-Segregation-Prinzip

o „Clientssolltennichtdazugezwungenwerden,vonInterfacesabzuhängen,diesienichtverwenden.“

o ZugroßeInterfaceswerdenaufgeteilt.o DieAufteilungsollgemäßderAnforderungenderClientsan

dieInterfacesgemachtwerden¤ DieneuenInterfacespassengenauaufdieAnforderungender

einzelnenClientspassen.¤ DieClientsmüssenalsonurmitInterfacesagieren,diedas,undnur

daskönnen,wasdieClientsbenötigen.

o Softwarewirdinentkoppelteundsomitleichterrefaktorisierbare Klassenaufgeteiltà zukünftigefachlicheodertechnischeAnforderungenandieSoftwareerfordernnurgeringeÄnderungen.

Page 40: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

45

Dependency-Inversion-Prinzip(DIP)

o ReduktionderKopplungvonModulen.o AbhängigkeitensollenimmervonkonkreterenModulen

niedrigerEbenenzuabstraktenModulenhöhererEbenengerichtetsein.

o AbhängigkeitsbeziehungenverlaufenimmerineineRichtung:vondenkonkretenzudenabstraktenModulen,d.h.vondenabgeleitetenKlassenzudenBasisklassen.

o ReduzierungderAbhängigkeitenzwischendenModulen,VermeidungzyklischerAbhängigkeiten.

Page 41: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

46

UndnochPrinzipien...

o TrennungvonSchnittstelleundImplementierung:DesignbyContract.

o Separationof Concerns:fachlichenundtechnischenCodesowiefachlicheBelangeinderDomänetrennen.

o Composition over Inheritance:wichtigeralsAufmerksamkeitaufVererbung.

o DRYstattDIP:Code-WiederverwendungvielgrundlegenderalsUmkehrvonAbhängigkeiten.

o KISSundYAGNIaufallenEbenenundinallenPhasen¤ KeepIt Simple,Stupid(KISS)undYou Ain't Gonna NeedIt (YAGNI)

teilweise in Konkurrenz zu den

anderen genannten

Page 42: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

47

Design-Prinzip:TrennungvonSchnittstelleundImplementierung

o TrennenvonSchnittstelle(interface)undImplementierung¤ KomponentendurchihreSchnittstellenspezifizieren.¤ Schnittstelle=BeschreibungdesLeistungsangebotseiner

Komponente.¤ Beschreibungmöglichstrealisierungsneutral.¤ LeistungsbeschreibunginderRegeldurchOperationenund

Datentypen.¤ Typische(realisierungsneutrale)Beschreibungsmittel:

n Voraussetzungen(Vorbedingungen,preconditions),n Ergebniszusicherungen(Nachbedingungen,postconditions,assertions),n Invarianten(invariants),n Verpflichtungen(obligations).

¤ BedingungenundZusicherungenbildenzusammeneinenVertragzwischenModulalsLeistungserbringerundKlientalsLeistungsverwender. Design by Contract

Page 43: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

48

GeheimnisprinzipimSoftwareentwurf

o Komponente– Modulo Leistung– FunktionalitätdesModulso WAS– Modulschnittstelleo WIE– EntwurfsentscheidungenundderenRealisierungo ViertypischeArtenvonEntwurfsentscheidungenbei

Software:¤ WieeineFunktionrealisiertist.¤ WieeinObjektausdemAnwendungsbereichrepräsentiert/realisiert

ist.¤ WieeineDatenstrukturaufgebautist/bearbeitetwerdenkann.¤ WieLeistungenDritterrealisiertsind.

Page 44: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

49

TrennungvonZuständigkeiten– separations ofconcern

o KomponenteistnurfüreinenganzbestimmtenAufgabenbereichzuständig.

o Komponenten,diegleichzeitigfürmehrereAufgabenzuständigsind,sindoftunnötigkomplex.

è Separationof concerns:ProzesseinProgramminverschiedeneFeatures,diesichinihrerFunktionalitätsowenigwiemöglichüberschneiden,aufzuteilen.

o Zuständigkeiten(concerns)werdenoftsynonymzuFeaturesoderVerhaltenverwendet.

o Kriterien,umZuständigkeitenzutrennen:unterschiedlich.EineZuständigkeit(concern)kannjederAusschnittineinemProgrammsein.

o OOEntwurf:ZusammenfassungvonDatenunddenOperationenaufdiesenDatenzueinerKlasse.

Page 45: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

50

WashatSRPmitKohäsionzutun?

o WenndieSoftwareeinenhohenKohäsionsgradbesitzt,wurdedasSRP(SingleResponsibility Principle)befolgt!

50

Page 46: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

SoftwareEngineeringProf.Dr.WolfgangSchramm

SOFTWARE- ARCHITEKTUR&ENTWURFTEIL2

4.Kapitel

Page 47: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

52

Übersicht

1. EinführungindasSoftwareEngineering

2. Softwareprozesse3. Anforderungsanalyseund-

Spezifikation4. Softwareentwurf5. Programmierung6. Software-Qualitätssicherungund-

Prüfung7. Konfigurationsverwaltung8. Software-Wartung

Page 48: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

53

Inhalt

1. Einführung2. Begriffe3. Entwerfen4. Architektur5. Feinentwurf6. Entwurfsprinzipien7. Muster

Page 49: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

54

Wiederverwendnung

o IndenmeistentechnischenDisziplinen:àEntwurfsprozessbasiertaufderWiederverwendungbestehender

Systeme.

o BasisderWiederverwendung:Komponenten,diebereitsinanderenSystemenausprobiertundgetestetwurden.

o DieKomponentensindvonunterschiedlicherGranularität.

o Softwareentwicklung:erstseitca.10JahrenÜbergangvonderEntwicklungvonOriginalsoftwarezuEntwicklungmitsystematischerWiederverwendung.

Page 50: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

55

WiederverwendungvonSoftware- Einheiten

o Anwendungssysteme¤ IntegrationinandereSystemeohneVeränderung.¤ KonfigurationderAnwendungfürverschiedeneKunden.¤ EntwicklungvonAnwendungsfamilienmitgemeinsamerArchitektur.

o Komponenten(Subsysteme– einzelneObjekte)¤ IsolationgleicherAufgabenineinemSubsystemundEinsatzdiesesSubsystemsin

verschiedenenAnwendungssystemen.

o Objekte/Funktionen¤ EinzelneKlassenoderFunktionenwerdeninFormvon(Standard-)Bibliothekenzur

Verfügunggestellt.¤ EinfacheVerwendung,indemsiemitanderemAnwendungscodeverknüpftwerden.

o Konzepte¤ WiederzuverwendendeEinheitistabstrakteralseineKomponente.¤ EinheitkannfürverschiedeneSituationenkonfiguriertundangepasstwerden.

[Som06]

Page 51: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

56

WiederverwendungvonSoftware- Vorteile

Höhere Zuverlässigkeit

Wiederverwendbare Komponenten, die in der Praxis getestet wurden, sollten zuverlässiger sein, denn Fehler im Entwurf und in der Implementierung sind bereits aufgespürt und beseitigt worden.

Geringeres Risiko

Die Kosten für bestehende Software sind bekannt, während die Kosten für die Entwicklung stets geschätzt werden müssen. Dies verringert Unsicherheiten bei der Projektkostenschätzung, besonders dann, wenn große Softwarekomponenten wiederverwendet werden.

Effektiver Einsatz von Spezialisten

Anwendungsspezialisten können wiederverwendbare Komponenten ent-werfen, die ihr Wissen enthalten, statt ständig die gleiche Arbeit zu verrichten.

Übereinstim-mung mit Standards

Einige Standardlösungen (z.B. Bedienoberflächen) können als Menge von wieder verwendbaren Standardkomponenten implementiert werden. Bei einer Standard-Bedienoberfläche weisen alle Anwendungen dasselbe Menüformat auf. Die Benutzer machen bei der Verwendung standardisierter Bedienoberflächen weniger Fehler, da sie mit ihr vertraut sind. Das verbessert die Zuverlässigkeit der Software.

Kürzere Entwicklungs-zeit

Die frühest mögliche Markteinführung eines Systems ist oft wichtiger als die Gesamtkosten der Entwicklung oder die Effizienz des Systems. Wieder-verwendung kann sowohl die Entwicklungszeit als auch die Validierungsphase verkürzen. [Som06]

Page 52: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

57

WiederverwendungvonSoftware-Schwierigkeiten

HöhereWartungs-kosten

Wenn der Quellecode eines wiederverwendeten Subsystems nicht verfügbar ist, werden die die wiederverwendeten Elemente in zunehmenden Maße inkompatibel mit Systemänderungen.

Mangel an Unter-stützung durch Werkzeuge

SE-Werkzeugsammlungen unterstützen die Wiederverwendung meist nicht. Der den Werkzeugen zugrunde liegende Prozess unterstützt Wiederverwendung nur unzureichend.

„Nicht-hier-erfunden“-Syndrom

Viele Softwareentwickler schreiben Software lieber entweder neu oder schreiben bestehende Komponenten um. Das Erstellen neuer Software hat einen höheren Stellenwert. Man vertraut nicht selbst erstellter Software nicht.

Aufbau und Wartung einer Komponenten-bibliothek

Aktuelle Techniken zur Klassifizierung, Katalogisierung und Abrufen von Software sind unausgereift.

Auffinden, Ver-stehen und An-passen wieder-verwendbarer Komponenten

Passende Komponenten müssen in einer Bibliothek gefunden, verstanden und angepasst werden. Das Suchen passender Komponenten muss von den Softwareentwicklern verinnerlicht und in den Softwareprozess aufgenommen werden.

[Som06]

Page 53: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

58

WiederverwendungvonSoftware- Schlüsselfaktoren

o Entwicklungszeitplan¤ WenndieSoftwareschnellentwickeltwerdenmussà Einsatzfertiger(Sub-)Systeme.Anpassungan

dieAnforderungenmussnichtperfektsein.

o VoraussichtlicheLebensdauerderSoftware¤ SystememitlangerLebensdauerà Hauptaugenmerk=Wartung.LangfristigmussdasSystemimmer

wiederanneueAnforderungenangepasstwerdenà ZugriffaufQuellcodeistwahrscheinlich.DieVerwendungvonKomponentenexternerHerstelleristriskant.

o FähigkeitendesEntwicklungsteams¤ WiederverwendungstechnologiensindkomplexundverlangeneinenhohenAufwandbissie

eingesetztundverstandenwerden.

o BedeutungderSoftware¤ MussdieSoftwarezertifiziertwerden(evtl.mitZuverlässigkeitstest),dannmussmanZugriffaufden

Quellcodehaben.

o Anwendungsdomäne¤ InvielenProblembereichen(Bsp.Fabrikautomation)gibteseineReihegenerischerProdukte,diean

denkonkretenEinsatzbereichangepasstwerdenkönnen.

o Basissoftware¤ MancheKomponentenmodellesindausschließlichfürbestimmteBasissoftware-Plattformen

geeignet.SiesindimmernurimKontextdieserBasissoftwareeinsetzbar. [Som06]

Page 54: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

59

WiederverwendungvonSoftware–Ansätze1/2

Entwurfsmuster Allgemeine, anwendungsübergreifende Abstraktionen werden als Entwurfsmuster dargestellt und zeigen abstrakte und konkrete Objekte und Interaktionen.

Komponenten-basierte Entwick-lung

Systeme werden durch die Zusammenstellung von Komponenten (Mengen von Objekten) entwickelt, die den Standards des Komponentenmodells entsprechen.

Anwendungsrahmen Zusammenstellungen von abstrakten und konkreten Klassen, die angepasst und erweitert werden können, um Anwendungssysteme aufzubauen.

Wrapper um Legacy-Systeme

Kapselung von Legacy-Systemen, indem ein Satz von Schnittstellen definiert wird. Der Zugriff auf diese Systeme erfolgt ausschließlich über diese Schnittstellen.

Dienstorientierte Systeme

Systeme werden durch die Verknüpfung mit gemeinsam genutzten Diensten entwickelt, die von externen Anbietern bereitgestellt sein können.

Produktlinien Ein Anwendungstyp wird mit Hilfe einer gemeinsamen Architektur verallgemeinert, so dass er an verschiedene Kunden angepasst werden kann.

[Som06]

Page 55: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

60

WiederverwendungvonSoftware–Ansätze2/2

COTS-Integration Systeme werden durch die Integration bestehender Anwendungs-systeme entwickelt.

Konfigurierbare vertikale Anwendungen

Ein generisches System wird so entworfen, dass es an die Bedürfnisse eines Kunden angepasst werden kann.

Programm-bibliotheken

Klassen- und Funktionsbibliotheken, die allgemein verwendete Abstraktionen implementieren, stehen für die Wiederverwendung zur Verfügung.

Programm-generatoren

Ein Generatorsystem erzeugt aus einer geeigneten Wissensreprä-sentation des Anwendungsbereichs Systeme bzw. Systemfragmente

Aspektorientierte Software-entwicklung

Gemeinsam genutzte Komponenten werden bei der Kompilierung des Programms an verschiedene Stellen eingewoben.

[Som06]

Page 56: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

61

Muster/Pattern

o MusterbeiGebäudeentwürfenvonC.Alexander[Ale77].

o ArchitektureinesRahmenwerksfürEditoren(ET++)vonErichGamma[Gam92].

o EsgibtauchEntwurfsmuster-KatalogeandererAutorenundMusterausanderenGebieten(nichtnurEntwurf).

o ErmöglichenWiederverwendungaufEntwurfsebene.

Page 57: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

62

Muster/Pattern

o Problembeschreibung+KernderProblemlösung.

o KeinegenaueSpezifikation.o DieLösungkanninverschiedenen

Umgebungenwiederverwendetwerden.

o GenerischeLösungfüreinhäufigauftretendesEntwurfsproblem.

Page 58: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

63

Entwurfsmuster- DefinitionnachE.Gamma

Design patterns are descriptions of communicating objects and classes thatare customized to solve a general design problem in a particular context. Adesign pattern names, abstracts, and identifies the key aspects of a commondesign structure that make it useful for creating a reusable object-orienteddesign. [GHJV95]

Vereinfacht:Ein Entwurfsmuster beschreibt das Schema einer Lösung für ein bestimmtes,in verschiedenen konkreten Zusammenhängen wiederkehrendesEntwurfsproblem.

Page 59: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

64

Muster- Bewertung

o EröffnendieMöglichkeit,dieErfahrungandererzunutzenunderprobteLösungeneinzusetzen.

o UnterstützendieUmsetzungnicht-funktionalerAnforderungen(z.B.Änderbarkeit,Wiederverwendbarkeit).

o SchaffeneinVokabular(Idioms)fürdenEntwurfà erleichternDokumentationvonArchitekturen.

o KapselnWissenüberguteEntwurfspraktiken.

Page 60: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

65

Muster- Bewertung

SindkeinAllheilmittel.Sindzwareinfachzuverstehen,aber

manbrauchtvielErfahrung,umdieEntwurfsmustersinnvolleinzusetzen.

Page 61: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

66

Entwurfsmuster– AmBeispiel

Aufgabenstellung:o EntwicklungeinerinternetbasiertenWetterstation.o Basis:WetterDaten-Objekt– zeichnetdieaktuellen

Wetterbedingungen(Temperatur,LuftfeuchtigkeitundLuftdruck)auf.

o ErsteProgrammversion:3Anzeigeelemente– aktuelleWetterbedingungen+Wetterstatistiken+einfacheWettervorhersage.

o Die3AnzeigeelementesolleninEchtzeitaktualisiertwerden,wenndasWetterDaten-ObjektdieneuestenMesswerteerhält.

o DieWetterstationsollerweiterbarsein.EssolleineAPIveröffentlichtwerden,damitandereEntwicklerihreeigenenWetteranzeigenschreibenundproblemloseinstöpselnkönnen.

o EsexistiertschoneinProgrammfürdieWetterstation.

Page 62: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

67

Entwurfsmuster– Beispiel:Aufgabenstellung2/2

Sensor für Luftfeuchtigkeit

Wetter-station

Aktuelle Wetter-bedingungen:

Temp: 17°Feucht: 45%Druck: 975

Sensor für Luftdruck

Sensor für Temperatur

ruft Daten ab

zeigt an

Wetter-Daten-Objekt

zu implementierenexistent

weitereAnzeigen

Page 63: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

68

Entwurfsmuster– Beispiel:VorhandenerCode

public class WetterDaten {float getTemparatur () { . . . }float getLuftfeuchtigkeit () { . . . }float getLuftdruck () { . . . }

void messwerteGeändert () {/** Diese Methode wird aufgerufen, wenn die Wetter-* Messungen aktualisiert wurden.**/// Hier den Code einfügen

}

}

Aufgabe: messwerteGeändert ist so zu implementieren, dass die drei Anzeigen für die aktuellen Bedingungen, die Wetterstatistiken und die Vorhersage aktualisiert werden.

Page 64: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

69

Entwurfsmuster– Beispiel:AnalysedesvorhandenenCodes

o Die Klasse WetterDaten hat Getter-Methoden für drei Messwerte (Temperatur,Luftfeuchtigkeit, Luftdruck).

o Die Methode messwerteGeändert () wird jedes Mal aufgerufen, wenn neueWetterdaten verfügbar sind.

o Es müssen drei Anzeigeelemente implementiert werden, die Wetterdatenverwenden: eine Anzeige „Aktuelle Bedingungen“ eine Anzeige „Statistiken“ undeine Anzeige „Vorhersage“. Diese Anzeigen müssen aktualisiert werden, sobaldsich WetterDaten neue Messwerte hat.

o Das System muss, durch andere Entwickler erweiterbar sein. Es sollen weitereAnzeigeelemente entwickelt werden und der Benutzer soll Anzeigeelementehinzufügen und entfernen können. Zur Zeit kennen wir nur die drei genanntenAnzeigetypen.

Page 65: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

70

Entwurfsmuster– Beispiel:DerersteEntwurf

public class WetterDaten {

// Deklaration der Instanzenvariablen

void messwerteGeändert () {

float temp = getTemparatur ();

float feuchtigkeit = getLuftfeuchtigkeit ();

float druck = getLuftdruck ();

aktuelleBedinungsAnzeige.aktualisieren(temp, feuchtigkeit, druck);

aktuelleStatistikAnzeige.aktualisieren(temp, feuchtigkeit, druck);

aktuelleVorhersageAnzeige.aktualisieren(temp, feuchtigkeit, druck);

}

}

Was fällt bei dieser Lösung auf?

Page 66: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

71

Entwurfsmuster– Beispiel:KritikamerstenEntwurf

o 3xwirdaktualisierenaufgerufen.o Dieaktualisieren-Schnittstelleder3Anzeigeelementeist

identisch.o EswirdaufeinekonkreteImplementierungprogrammiertà

sollenAnzeigeelementehinzugefügtodergelöschtwerden,mussdasProgrammgeändertwerden,indemeinAufrufderaktualisieren-MethodedesneuenAnzeigeelementsaufgerufenwird.

Page 67: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

73

Entwurfsmuster– Beispiel:Observer- Muster

+registriereBeobachter()+entferneBeobachter()+benachrichtigeBeobachter()

Subjekt

+aktualisieren()

Beobachter-hatBeobachter

1

-beobachtet

*

Das Observer-Muster definiert eine Eins-zu-viele-Abhängigkeit zwischen Objekten in der Art, dass alle abhängigen Objekte benachrichtigt werden müssen, wenn sich der Zustand des einen Objekts ändert.

Weiterhin ungelöst: Das Subjekt muss alle möglichen konkreten Beobachter kennen, um sie benachrichtigen zu können.

C

D

Page 68: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

74

Entwurfsmuster– Beispiel:Observer- Muster- verbessert

+registriereBeobachter()+entferneBeobachter()+benachrichtigeBeobachter()

KonkretesSubjekt

+aktualisieren()

KonkreterBeobachter

+registriereBeobachter()+entferneBeobachter()+benachrichtigeBeobachter()

«Schnittstelle»Subjekt

+aktualisieren()

«Schnittstelle»Beobachter

-hatBeobachter

1

-beobachtet

*

Page 69: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

75

Entwurfsmuster– Beispiel:Observer- Muster

o DasSubjektweißübereinenBeobachter,nureineSache:dassereinebestimmteSchnittstelleimplementiert.

o WirmüssendasSubjektnieändern,wennwirneueBeobachterhinzufügen.o SubjektundBeobachterkönnenunabhängigvoneinanderwiederverwendetwerden.o ÄnderungenamkonkretenSubjektoderamkonkretenBeobachterhabenkeinen

Einflussaufdenjeweilsanderen.

Lose Kopplung à minimiert die Abhängigkeiten zwischen Objekten.

Page 70: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

76

Übung

¨ ÜbertragenSiedieIdeedesObserver-PatternaufdieWetterstation–¤ WerspieltwelcheRolle?¤ WermusswelchesInterface

implementieren–WiesiehtdieImplementierung.aus?

¤ WernutztwelchesInterface?

76

Page 71: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

77

Entwurfsmuster– Beispiel

o DieWetterstationerhältneueWerte,dasWetterDaten-ObjektbieteteinenDienstan:esbeliefertdieAnzeigeelementemitdenneuenDaten.

o DasWetterDaten-Objektmusswissen,anwenesdieaktualisiertenDatenschickenmuss.

o DazumussdasWetterDaten-ObjektdieAbnehmerseinerDatenselbstverwalten.

o DieAbnehmerderDaten(=Anzeigeelemente)könnendieWetterDaten-DienstebeimWetterDaten-Objektabonnierenundauchwiederabbestellen.

o DazumussdasdasWetterDaten-ObjektentsprechendeMethodenbereitstellen.

Page 72: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

78

Entwurfsmuster– Beispiel:Observer- MusterfürWetterDaten

+registriereBeobachter()+entferneBeobachter()+benachrichtigeBeobachter()+getTemperartur()+getLuftfeuchtigkeit()+getLuftdruck()+messwerteGeändert()

WetterDaten

+anzeigen()+aktualisieren()+anzeigen()

AktuelleBedingungen

+registriereBeobachter()+entferneBeobachter()+benachrichtigeBeobachter()

«Schnittstelle»Subjekt

+aktualisieren()

«Schnittstelle»Beobachter

-hatBeobachter

1

-beobachtet

*

+aktualisieren()+anzeigen()

StatistikAnzeige

+anzeigen()

«Schnittstelle»AnzeigeElement

+aktualisieren()+anzeigen()

VorhersageAnzeige

+aktualisieren()+anzeigen()

DrittanbieterAnzeige

Page 73: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

80

Observer-Pattern:AktionenbeiÄnderungenamobserviertenObjekt

Page 74: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

81

Entwurfsmuster– Beispiel:Observer- Interfaces

interface Subject {

public void registriereBeobachter (Beobachter b);

public void entferneBeobachter (Beobachter b);

public void benachrichtigeBeobachter ();

}

interface Beobachter {

public void aktualisieren (float temp, floatfeuchtigkeit, float druck);

}

interface AnzeigeElement {

public void anzeigen();

}

Page 75: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

82

Entwurfsmuster– Beispiel:Observer- Subject1/2

class WetterDaten implements Subject {

private ArrayList beobachter;private float temp;private float feuchtigkeit;private float druck;

public WetterDaten () {beobachter = new ArrayList();

}

public void registriereBeobachter (Beobachter b) {beobachter.add(b);

}

public void entferneBeobachter (Beobachter b){int i = beobachter.indexOf(b);if (i >= 0) beobachter.remove(i);

}

Page 76: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

83

Entwurfsmuster– Beispiel:Observer- Subject2/2

public void benachrichtigeBeobachter (){for (int i = 0; i < beobachter.size(); i++) {

Beobachter b = (Beobachter) beobachter.get(i);b.aktualisieren(temp, feuchtigkeit, druck);

}}

public void messwerteGeändert () {benachrichtigeBeobachter();

}

public void setMesswerte (float temp, float feuchtigkeit, float druck) {

this.temp = temp;this.feuchtigkeit = feuchtigkeit;this.druck = druck;messwerteGeändert();

}

}

Page 77: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

84

Entwurfsmuster– Beispiel:Observer- Beobachter

class BedienungsAnzeige implements Beobachter, AnzeigeElement {

private float temp;private float feuchtigkeit;private Subject wetterDaten;

public BedienungsAnzeige (Subject wetterDaten) {this.wetterDaten = wetterDaten;wetterDaten.registriereBeobachter(this); // bei Subject registrieren

}

public void aktualisieren (float temp, float feuchtigkeit, float druck) {this.temp = temp;this.feuchtigkeit = feuchtigkeit;anzeigen();

}

public void anzeigen () {System.out.println("Aktuelle Wetterbedingungen: " + temp + "Grad C°, " +

feuchtigkeit + " % Luftfeuchtigkeit");}

}

Wozu wird eine Referenz auf das

Subjekt gespeichert?

Page 78: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

85

Observer-PatterninJava

o JavaseingebautesObserver-Muster¤ InterfaceObserver unddieabstrakteKlasseObservable imPackage

java.utiln java.util.Observer undjava.util.Observable

WarumeinmalInterface,einmalabstrakteKlasse?

¤ InSwingundJavaBeansn Listener-Methoden(à KlasseJButton):dortgibtesadd/removeListener-Methoden

Page 79: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

86

BekanntvonSwing:Observer-Pattern(auch:Publish/Subscribe,Listener-Patterngenannt)

Observable,Publisher,---,Subjekt

Observer,Subscriber,Listener,Beobachter

*

Page 80: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

87

VerallgemeinerteFormdesObserver-Patterns:ObserverbeimObservableeintragen

Page 81: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

88

VerallgemeinerteFormdesObserver-Patterns:eingetrageneObserverbenachrichtigen

Page 82: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

90

Übung

¨ BeschreibenSiefürjedesderfolgendenEntwurfsprinzipien,wiedasObserver-MusterdasPrinzipumsetzt.1. AspekteeinerAnwendung,die

sichändernkönnensolltenvondenendiekonstantsind,getrenntsein.

2. MannsollteaufdieSchnittstelle,nichtaufdieImplementierungprogrammieren.

3. KompositionistderVererbungvorzuziehen.

90

Page 83: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

91

Lösung

1. DerZustanddesObjektesvariiert,sowiedieAnzahlunddieTypenderBeobachter.MitdemPatternkönnendieObjektevariiertwerden,dievomZustanddesObjektesabhängigsind,ohnedasSubjektverändernzumüssen.

2. SubjektundBeobachternutzenbeideInterfaces.DasSubjekthältObjektevor,diedasInterfaceObserverimplementieren,währenddieBeobachtersichregistrierenundvomSubjektInterfacebenachrichtigtwerden.

3. DurchKompositionwirdeinebeliebigeAnzahlvonBeobachternmitihrenSubjektenverbunden.DieseBeziehungenwerdennichtdurchVererbungshierarchieimplementiert,sondernzurLaufzeitdurchKomposition.

91

Page 84: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

92

WichtigeEntwurfsmuster

o Einzelstück (Singleton): von einer Klasse darf nur genau ein Objekt erzeugtwerden, das global verfügbar sein muss.

o Memento: Der Zustand eines Objekts muss so archiviert werden, dass dasObjekt wieder in diesen Zustand zurückversetzt werden kann. Das Prinzipder Kapselung darf dabei nicht verletzt werden.

o Adapter: Eine Klasse soll verwendet werden, obwohl ihre Methoden-Signaturen nicht passen und auch nicht verändert werden können.

o Fassade (Facade): Ein Komponente soll nicht den gesamten, sondern nureinen eingeschränkten Funktionsumfang anderer Komponenten kennen.

o Beobachter (Observer): Mehrere Objekte müssen ihren Zustand anpassen,wenn sich ein bestimmtes Objekt ändert.

o Fabrikmethode (Factory Method): In einer Anwendung müssen Objekteerzeugt werden, deren Klassen zum Zeitpunkt der Entwicklung nochunbekannt sind.

Verwalten von

Objekten

Anbindung vorhandener

Klassen

Entkopplung von

Komponenten

Trennung unterschiedl-

icher und gemeinsamer

Merkmale

Page 85: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

93

Entwurfsmuster– 4wesentlicheElemente

Name Liefert eine bedeutungsvolle Bezeichnung für das Muster.

Beschreibung des Problembereichs

Erläutert, wann das Muster angewendet werden soll.

Lösungs-beschreibung

Beschreibt Teile der Entwurfslösung, ihre Beziehungen und Verantwortlichkeiten. Das ist keine konkrete Entwurfsbeschreibung, sondern eine Schablone für eine Entwurfslösung.

Aussage zu den Konsequenzen

Aussagen zu den Ergebnissen und Kompromissen der Musteranwendung. Entwickler können entscheiden, ob ein Muster in einer bestimmten Situation effektiv angewendet werden kann.

Page 86: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

94

Entwurfsmuster-Katalog1/2

Vorlesung Software Engineering

¨ Erzeugungsmuster¤ AbstractFactory¤ Builder¤ FactoryMethod¤ Prototype¤ Singleton

¨ Strukturmuster¤ Adapter¤ Bridge¤ Decorator (Wrapper)¤ Facade¤ Flyweight¤ Composite¤ Proxy

Page 87: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

95

Entwurfsmuster-Katalog2/2

Vorlesung Software Engineering

Vorlesung Software Engineering

¨ Verhaltensmuster¤ Command¤ Observer¤ Visitor¤ Interpreter¤ Iterator¤ Memento¤ TemplateMethod¤ Strategy¤ Mediator¤ State¤ ChainofResponsibility

Page 88: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

96

Strategy Pattern

Quelle: http://www.oodesign.com/strategy-pattern.html

Roboter soll verschiedene Verhalten haben können Verhalten wird in Interface

gekapselt

Verschiedene Verhalten in versch. Klassen implementiert

Bei der Erzeugung des „Robot“ wird Verhalten z.B. mit „setStrategy“

festgelegt

Page 89: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

97

Strategy Pattern:TestenmitMockObjects

Dan Pilone, Russ Miles:Head First Software Development, 2008

@Testpublic void testSimple () {//create processorOrderProcessor op = new Orderprocessor ();op.setDBAccessor(new TestDBAccessor())

Page 90: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

98

Literatur

98

Page 91: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

99

Inhalt

1. Einführung2. Begriffe3. Entwerfen4. Architektur5. Feinentwurf6. Entwurfsprinzipien7. Muster(Architekturmuster)

Page 92: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

100

Architektur

…istdiegrundlegendeOrganisationeinesSystems,dargestelltdurchdiedessenKomponenten,derenBeziehungenzueinanderundzurUmgebung.

Page 93: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

101

Architekturmuster

o Architektur-MustersindDesign-MusteraufeinemhöherenLevelderAbstraktion.¤ SielegeneineMengevordefinierterSubsystemefest.¤ IhreVerantwortung.¤ SowieRegelnundRichtlinienfürdieOrganisation/Beziehungzwischen

denSubsystemen.

o DieWahleinesArchitekturmustersisteinezentraleEntwurfsentscheidung.

o DieEignungeinesArchitekturmustershängtvonderErfüllungseinerspeziellenRandbedingungenundVoraussetzungenab.

o EsgibteinenengenZusammenhangzwischenArchitekturmusternundNichtfunktionalenAnforderungen.

Page 94: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

102

Architekturmuster

o Unterscheidungin¤ Verteilungsmuster¤ Strukturierungsmuster¤ MusteradaptierbarerSysteme

o MusterderSoftware-Schichten.¤ Subsystemewerdeni.d.R.inaufeinanderaufbauendenSchichten

angeordnet.¤ TypischeArchitekturenfürAnwendungssysteme:

2-Schicht– 4-Schicht-Architekturen.o MusterderPipe-Filter:Datenwerdenaufeinemvirtuellen

Fließbandverarbeitet.o Model-View-Controller-Architekturmuster:saubereTrennungvon

InteraktionundFunktion.o Plug-in-Architekturmuster:einKern(Host,Wirt)kanndurchsog.

Plug-insandafürvorgesehenenStellenumneueFunktionenerweitertwerden.DerHostdefiniertspezielleSchnittstellen,diesog.Erweiterungspunkte.

Page 95: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

103

Zwei-Schichten-Architektur(2-tier)

• Typisch für einfache Informationssysteme.

<<layer>>

Anwendungsschicht

<<layer>>

Datenhaltungsschicht

Page 96: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

104

Drei-Schichten-Architektur(3-tier)

• Aufteilung der Anwendungsschicht in Benutzungsoberfläche und Anwendungsdomäne.

<<layer>>

Dialogschicht

<<layer>>

Fachkonzeptschicht

<<layer>>

Datenhaltungsschicht

Page 97: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

105

Vier-Schichten-Architektur(4-tier)

• Einführung einer Schicht von vorgefertigten Komponenten, etwa zur Verteilung von Datenobjekten (z.B. CORBA)

<<layer>>

Dialogschicht

<<layer>>

Fachkonzeptschicht

<<layer>>

Datenhaltungsschicht

<<layer>>

Systemsoftwareschicht

Page 98: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

106

Verteilung

• Lokales System (auch Stand-Alone-System): System, das auf einemeinzelnen Rechner ausgeführt wird.

• Verteiltes System: Teile des Systems werden auf verschiedenen Rechnernausgeführt, die miteinander über ein Rechnernetz kommunizieren.

• Client-Server-Architektur: zentrale Dienste (z.B. Datenhaltung) werden aufeinem Rechner (Server) ausgeführt; diese zentralen Dienste werden vonAnwendungsprogrammen, die auf Klienten ausgeführt werden, genutzt.

• Master/Slave-Architektur: eine Anwendung (Master) übt die Kontrolle überandere Anwendungen (Slaves) aus.

• Peer-to-Peer-Architektur: alle Anwendungen besitzen ähnlicheKompetenzen. Jede Anwendung bietet Dienste an und nutzt Dienste andererPeers.

Page 99: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

107

Model-View-Controller-Architekturmuster

o Benutzer¤ ÜberdieViewistderBenutzermitdemSystemverbunden.

o Model (Modell/Verarbeitung)¤ FachlicheFunktionalitätderAnwendung(Geschäftslogik).¤ KapseltdieDatenderAnwendung.¤ UnabhängigvonViewundController.¤ ZugriffaufdieDatennurüberZugriffsoperationen.

o View (Präsentation/Ausgabe)¤ DarstellungderDatenausdemModellfürdenBenutzerundEntgegennahmevon

Benutzerinteraktion.¤ FürdieDateneinerAnwendung(Model)kannesmehrereDarstellungengeben.¤ ÄnderungderDatenimModelà Viewwirdbenachrichtigtundaktualisiertihre

Darstellung.o Controller(Steuerung/Eingabe)

¤ JederViewisteinControllerzugeordnet.¤ EmpfängtdieEingabendesBenutzers(überdieView)undreagiertdarauf,

→ indemdieDarstellunggeändertwird(à View).→ indemdiegewünschteFunktionderAnwendungaufgerufenwird(àModel).

Page 100: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

108

MVC– ZusammenwirkenderKomponenten

Controller View

Model

Veränderung der Visualisierung

Aufruf von Anwendungsfunktionen

Zugriff auf darstellende Daten

Information über Änderung

Page 101: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

109

MVC– keineindeutigesMuster

o MVCistinverschiedenenProgrammiersprachenunterschiedlichrealisiert.

o Deshalb:keinegenaueDefinitionüberdiePositionierungderGeschäftslogikà entwederimControlleroderimModel(abhängigvomjeweiligenMVC-Framework).

o WodieValidierungderBenutzereingabenstattfindet,istnichtdefiniert.¤ EinfacheFormatvalidierungenà View.¤ Validierungen,welchestärkerdieGeschäftslogikberücksichtigenmüssen

àModeloderController.o FormatierungderRohdaten/Internationalisierungistnicht

definiert,wodieseerfolgen.¤ Entwicklungseffizienzà imModelzuintegrieren(mankannsichbeim

ViewaufdieErstellungvonWidgets oderTemplatesbeschränken).¤ DadurchVerlagerungderAspektederDarstellungindasModelà

WiderspruchzurGrundidee.¤ AlsVariante:eigenständigeFunktionsbereiche,diemandannweder

Model,ViewoderControllerzurechnenmuss.

Page 102: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

110

Modell-View-Controller

Page 103: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

111

Model-View-Controller:Beispiel1/3

Page 104: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

112

Model-View-Controller:Beispiel2/3

Bei jedem Modell können sich mehrere Beobachter (= Sichtenund Kontrollen) registrieren

Bei jeder Änderung des Modell-Zustands werden dieregistrierten Beobachter benachrichtigt; sie bringen sich dannauf den neuesten Stand.

Page 105: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

113

Model-View-Controller:Beispiel2/3

Controller: verarbeitet Eingaben und ruftpassende Dienste der zugeordneten Sicht oder des Modells auf.

Model: Kernfunktionalität liefern und registrierte Komponenten bei Datenänderungbenachrichtigen

Page 106: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

114

MVC-Architekturmuster

o Vorteile¤ MehrereView-Controller-PaarefürdasselbeModell.¤ Sichtensindsynchron.¤ AnsteckbareSichtenundKontrollen.¤ Change-Update-Mechanismusbewirkt,dassdasModelinallenViews

immeraktuelldargestelltwird.

o Nachteile¤ ErhöhteKomplexität.¤ StarkeKopplungzwischenModellundSicht.¤ StarkeKopplungzwischenModellundKontrollen(kannmitCommand-

Musterumgangenwerden).

o Beispiele:GUI-Bibliotheken,Smalltalk,MicrosoftFoundationClasses,Web-Architektur

Page 107: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

115

DasPlug-In-Architekturmuster1/2

o BenutzerkönnenanspeziellenPunkteneinvorhandenesSystemerweitern,ohneeszumodifizieren.

o Anwendung=Kern(Host-System)+erweiterndeFunktionen(Plug-Ins).o DerHostdefiniertdiesog.Erweiterungspunkte,aufwelcheeinPlug-InBezug

nehmenkann.

Plug-In

Schn

ittst

elle

A

Plug-In Plug-InSc

hnitt

stel

le B

Schn

ittst

elle

E

Schn

ittst

elle

F

Schn

ittst

elle

C

Schn

ittst

elle

D

Ker

n (H

ost)

Page 108: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

116

DasPlug-In-Architekturmuster2/2

o Plug-InwirdimKontextdesHost-Systemsausgeführtè¤ IstgemäßdenvorgegebenentechnischenKonventionendesHosts

realisiert.¤ Codemussentsprechendabgelegtsein.¤ DasPlug-InmussbeimHostregistriertsein.¤ BeimStartdesHostswerdenalleregistriertenPlug-Insidentifiziertund

ggf.sofortodernachBedarfgeladen.¤ Plug-Inskönnenkaskadiertwerden,d.h.einPlug-Inkann

entsprechendeErweiterungspunktedefinierenunddamitselbstHostfürweiterePlug-Inssein.

Page 109: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

117

Diskussion

¨ DieArchitekturhateinengroßenEinflussaufdienichtfunktionalenAnforderungenderSoftware.VersuchensiedieSchichten-ArchitekturenimBezugaufdieAnforderungenanPerformanzbzw.Sicherheitzubeurteilen.

117

Page 110: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

118

ArchitekturundNFRs

o DieSystemarchitekturhateinenstarkenEinflussaufNichtfunktionaleAnforderungen.

o EinigeBeispiele:¤ Performanz:ArchitekturmitvielenkleinenKomponentenundeiner

hohenKommunikationzwischendieseKomponentensindschlechteralsSysteme,indenenaufwendigeOperationenlokalineinergrößerenKomponentenzusammengefasstwerden.

¤ Verfügbarkeit:RedundanteKomponentenerlaubeneseinzelneKomponentenauszutauschen,ohnedasgesamteSystemzustoppen.

¤ Security:EineSchichtenarchitekturerlaubteskritischeObjekteinderinnersten(ammeistengeschützten)Schichtanzuordnen.

118

Page 111: SOFTWARE- 4. Kapitel ARCHITEKTUR & ENTWURF TEIL 2services.informatik.hs-mannheim.de/~schramm/see/... · SOLID-Prinzipien Und noch weitere Prinzipien ... ¤ Die Clients müssen also

133

NochFragen?