softwaretechnologie für fortgeschrittene teil thaller stunde iv: software engineering i köln 24....
TRANSCRIPT
![Page 1: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/1.jpg)
Softwaretechnologie für FortgeschritteneTeil Thaller
Stunde IV: Software Engineering I
Köln 24. Januar 2013
![Page 2: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/2.jpg)
Systemdesign / Systemplanung
(1) Entsteht Software, entstehen Informationssysteme als Ergebnis eines künstlerischen Prozesses?
(2) Oder sind sie planbar?
01:55 2
![Page 3: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/3.jpg)
Ein ernstes Problem …
Erfolg von IT Projekten laut Umfragen:
• 45,2 % aller Softwareprojekte erfolgreich.• 19,4 % Zeit- und Kostenüberschreitungen.• 35,4 % Fehlschläge.
01:55 3
![Page 4: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/4.jpg)
Ein ernstes Problem …
In Abhängigkeit von der Teamgröße.Erfolgreiche Projekte bei einer Teamgröße von:
• Bis 4 Personen 60 %• 4 – 8 Personen 38 %• 8 – 20 Personen 32 %• Mehr als 20 Personen 18 %01:55 4
![Page 5: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/5.jpg)
Ein ernstes Problem …
01:55 5
![Page 6: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/6.jpg)
Design Patterns
(1) Eine „Kunstlehre“, die auf der Objektorientierung aufsetzt ...
(2) … so verbreitet, dass ich mir erlaubt habe, zwei sehr geringfügig modifizierte Vorlesungsfolien auswärtiger Kollegen zu benutzen.
01:55 6
![Page 8: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/8.jpg)
Background
Gamma, Helm, Johnson, and Vlissides (the “Gang of Four”) – Design Patterns, Elements of Reusable Object-Oriented SoftwareThis book solidified thinking about patterns and became the seminal Design Patterns textSoftware design patterns are based (somewhat) on work by the architect Christopher Alexander
01:55 8
![Page 9: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/9.jpg)
Purpose
A design pattern captures design expertise –patterns are not created from thin air, but abstracted from existing design examplesUsing design patterns is reuse of design expertiseStudying design patterns is a way of studying how the “experts” do designDesign patterns provide a vocabulary for talking about design
01:55 9
![Page 10: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/10.jpg)
Why design patterns in SA?
If you’re a software engineer, you should know about them anywayThere are many architectural patterns published, and the GoF Design Patterns is a prerequisite to understanding these: Mowbray and Malveau – CORBA Design
Patterns Schmidt et al – Pattern-Oriented Software
Architecture
Design Patterns help you break out of first-generation OO thought patterns
01:55 10
![Page 11: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/11.jpg)
The seven layers of architecture*
Global architectureEnterprise architecture
System architecture
Application architecture
Macro-architecture
Micro-architecture
Objects
* Mowbray and Malveau
ORB
OO architecture
Frameworks
Subsystem
Design patterns
OO programming01:55 11
![Page 12: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/12.jpg)
How patterns arise
ProblemProblem
Context
SolutionSolution
Benefits
Related Patterns
Consequences
Forces
01:55 12
![Page 13: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/13.jpg)
Structure of a pattern
NameIntentMotivationApplicabilityStructureConsequencesImplementationKnown UsesRelated Patterns
01:55 13
![Page 14: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/14.jpg)
Key patterns
The following patterns are what I consider to be a good “basic” set of design patternsCompetence in recognizing and applying these patterns will improve your low-level design skills(The slides are necessarily brief and do not follow the structure just given above!)
01:55 14
![Page 15: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/15.jpg)
Composite
ComponentOperation()Add(Component)Remove(Component)
CompositeOperation()Add(Component)Remove(Component)
LeafOperation()
Client
children
0..*
For all c in children c.Operation();
Construct part-whole hierarchySimplify client interface to leaves/compositesEasier to add new kinds of components
01:55 15
![Page 16: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/16.jpg)
Composite (2)
Figurepaint()translate()getBounds()
CompositeFigurepaint()addFigure(Figure))removeFigure(Figure))
BasicFigurepaint()
Viewchildren
0..*
For all c in children c.paint();
Example: figures in a structured graphics toolkit
LabelFigurepaint()
0..*
Controller
parent
01:55 16
![Page 17: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/17.jpg)
FacadeProvide unified interface to interfaces within a subsystemShield clients from subsystem componentsPromote weak coupling between client and subsystem components
FacadeClient
01:55 17
![Page 18: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/18.jpg)
Façade (2)
Entity
CompositeEntityAtomicEntity
PortRelation
BufferedRelation
GraphSchematicEditor
Example: graph interface to a simulation engine
Actor
Director0..*
2
Token
01:55 18
![Page 19: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/19.jpg)
Strategy
StrategyOperation()
ConcreteStrategy2Operation()
Context
Make algorithms interchangeable---”changing the guts”Alternative to subclassingChoice of implementation at run-timeIncreases run-time complexity
ContextInterface()
ConcreteStrategy1Operation()
01:55 19
![Page 20: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/20.jpg)
Strategy (2)
ConnectorRouterShape recalculate(Pt, Pt)
ArcRouterShape recalculate(Pt, Pt)
Connectorroute()
StraightRouterShape recalculate(Pt, Pt)
ManhattanRouterShape recalculate(Pt, Pt)
shape=router.recalculate(start,end);redraw(shape);
Example: drawing different connector styles
01:55 20
![Page 21: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/21.jpg)
ObserverMany-to-one dependency between objectsUse when there are two or more views on the same “data”aka “Publish and subscribe” mechanismChoice of “push” or “pull” notification styles
Observerupdate()
Subjectattach(Observer)detach(Observer)notify()
ConcreteObserverupdate()
ConcreteSubjectgetState()
state=subject.getState();
forall o in observers o.update()
01:55 21
![Page 22: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/22.jpg)
Factory Method
CreatorProduct createProduct()
Product
Defer object instantiation to subclassesEliminates binding of application-specific subclassesConnects parallel class hierarchiesA related pattern is AbstractFactory
operation()
ConcreteCreatorProduct createProduct()
ConcreteProductoperation()
return new ConcreteProduct();01:55 22
![Page 23: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/23.jpg)
Factory Method (2)Example: creating manipulators on connectors
FigurecreateManipulator()
0..1Manipulator
attach(Figure)
ArcManipulatorattach(Figure)
BoundsManipulatorattach(Figure)
ConnectorcreateManipulator()
RectFigurecreateManipulator()
manip = new BoundsManipulator();
manip = new ArcManipulator();
Interactor
01:55 23
![Page 24: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/24.jpg)
Chain of Responsibility
HandlerhandleRequest()
ConcreteHandler2handleRequest()
ClientContextInterface()
ConcreteHandler1handleRequest()
Decouple sender of a request from receiverGive more than one object a chance to handleFlexibility in assigning responsibilityOften applied with Composite
successor
01:55 24
![Page 25: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/25.jpg)
Chain of Responsibility (2)
FigurehandleEvent(Event)
CompositeFigure
Interactorchildren
0..*
If interactor != null interactor.handle(event,this)else parent.handleEvent(event)
0..1
parent
Example: handling events in a graphical hierarchy
handle(Event,Figure)
0..*
01:55 25
![Page 26: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/26.jpg)
Patterns vs “Design”
Patterns are design But: patterns transcend the “identify
classes and associations” approach to design
Instead: learn to recognize patterns in the problem space and translate to the solution
Patterns can capture OO design principles within a specific domainPatterns provide structure to “design”
01:55 26
![Page 27: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/27.jpg)
Patterns vs Frameworks
Patterns are lower-level than frameworksFrameworks typically employ many patterns: Factory Strategy Composite Observer
Done well, patterns are the “plumbing” of a framework
01:55 27
![Page 28: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/28.jpg)
Patterns vs Architecture
Design Patterns (GoF) represent a lower level of system structure than “architecture” (cf: seven levels of A)Patterns can be applied to architecture:
Mowbray and Malveau Buschmann et al Schmidt et al
Architectural patterns tend to be focussed on middleware. They are good at capturing:
Concurrency Distribution Synchronization
01:55 28
![Page 29: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/29.jpg)
Online resources
Pattern FAQ http://g.oswego.edu/dl/pd-FAQ/pd-FAQ.html
Patterns home page http://hillside.net/patterns/
Beispiel einer (GUI) “Pattern Library”
http://www.welie.com/patterns/showPattern.php
01:55 29
![Page 30: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/30.jpg)
Concluding remarks
Design Patterns (GoF) provide a foundation for further understanding of: Object-Oriented design Software Architecture
Understanding patterns can take some time Re-reading them over time helps As does applying them in your own designs!
01:55 30
![Page 31: Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Software Engineering I Köln 24. Januar 2013](https://reader035.vdocuments.pub/reader035/viewer/2022070308/551bf55a5503469e4f8b4632/html5/thumbnails/31.jpg)
Herzlichen Dank!
01:55 31