Post on 06-Apr-2016
Case Tools Unterstützung für Design Pattern
von Vladislav Krasnyanskiy
Übersicht
• Einleitung• Design Pattern • Programmiersprachen für Design Pattern• Automatische Codegenerierung für Design
Pattern• Fujaba
Einleitung
Verbesserung der Softwarequalität durch:
• Entwicklungsmodelle (Wasserfallmodell)
• Design Pattern
Wasserfallmodell
Anforderungsanalyse/Validation
Entwurf/Validation/Verifikation
Implementierung/Verifikation
Test undIntegration
InstallationWartung
Pflichtenheft
Systemarchitektur
Programme Beweise
Testpläne
Testergebnisse
technische Handbücher
Benutzerhandbuch
Design Patternhistorischer Überblick
• 1977 Christopher Alexander • 1987 W. Cunningham, K. Beck
“Constracting Abstractions for Object-Oriented Applications”
• 1994 E. Gamma, R. Helm, R. Johnson and J. Vlissides, “Design Pattern: Elements of Reusable Object-Oriented Sofware”
Purpose
Creational Structural Behavioral
Scope
Class Factory Method Adapter InterpreterTemplate Method
Object Abstract FactoryBuilderPrototypeSingleton
AdapterBridgeCompositeDecoratorFacadeProxy
Chain of ResponsibilityCommandIteratorMediatorMementoFlyweight ObserverStateStrategyVisitor
Design Pattern nach Gamma
Design Pattern
• Was ist das ?
• Aufbau
• Entwicklung
Aufbau eines Design PatternsBestandteil Beschreibung
Name Ein eindeutiger NameIntent Was macht das Pattern ? Wozu ist es da ?
Motivation Erläuterung der DesignideeApplicability typische Anwendungssituationen
Structure UML-TeildiagrammParticipants Kurzbeschreibung der beteiligten Bausteine
Collaborations Kurzbeschreibung der dynamischen AbläufeConsequences Diskussion von Vor- und Nachteilen
Implementation Diskussion der Implementierung(svarianten)Sample Code Implementierungs- und AnwendungsbeispielKnown Uses bekannten Verwendungen
Related Patterns Querverweise zu anderen Pattern
Entwicklung eines Design Patterns
1. Reflektion des Problems2. Welche Struktur ist die Richtige ?3. Motivation mit konkretem Beispiel 4. Was unterscheidet das neue Pattern von anderen
und wie ergänzt es sich ?5. Publikation des Patterns6. Verbesserungen7. Sammeln und Einbauen von Kommentaren
Design Pattern im Quellcode
• Syntaktische Variationen • Variationen in der Implementierung • Delokalisierung • Nicht verwertbare Bauteile • Variation in der Organisation der
Komponenten • Redundanz
Programmiersprachen für Design Pattern
• textorientierte Programming Language for Design Patterns
(PaL)• visuelle Visual Language for Design Pattern
(DPML )
Beispiel für PaL 1(Abstract Factory)
GUIFactory
make
GUIFactory+createScrollBar():ScrollBar+createMenu():Menu+createButton():Button
MetalFactory SpaceFactory
+createScrollBar():MetalScrollBar+createMenu():MetalMenu+createButton():MetalButton
+createScrollBar():SpaceScrollBar+createMenu():SpaceMenu+createButton():SpaceButton
structure GUIFactory class SpaceFactory inherit GUIFactory
creation make creation make
class GUIFactory feature createScrollBar() is …
creation make feature createMenu() is …
feature createScrollBar() is … feature createButton() is …
feature createMenu() is … end
feature createButton() is … end
end
class MetalFactory inherit
GUIFactory
creation make
feature createScrollBar() is…
feature createMenu() is …
feature createButton() is
end
Beispiel für PaL 2(Abstract Factory)
ScrollBar
make
ScrollBar
SpaceScrollBarMetalSrollBar
structure ScrollBar
creation make
class ScrollBar
creation make
...
end
class Metal ScrollBar inherit ScrollBar
creation make
...
end
class Space ScrollBar inherit ScrollBar
creation make
…
end
end
Beispiel für PaL 3(Abstract Factory)
Menu
make
Menu
MetalMenu SpaceMenu
structure Menu
creation make
class Menu
creation make
...
end
class MetalMenu inherit Menu
creation make
...
end
class SpaceMenu inherit Menu
creation make
…
end
end
Beispiel für PaL 4(Abstract Factory)
Button
make
Button
SpaceButtonMetalButton
structure Button
creation make
class Button
creation make
...
end
class MetalButton inherit Button
creation make
...
end
class SpaceButton inherit Button
creation make
…
end
end
Beispiel für DPML 1 (Abstract Factory)
AbsractFactory
createOps
concreteCreateOps
concreteFactories
concreteProductsProducts
Declared_In Implements
Realises Defined_In
Return Type Creates
Implements
Beispiel für DPML 2 (Abstract Factory)
AbsractFactory
GUIFactory
CreateOpsCreateMenu
createScrollBarcreateButton
ConcreteCreateOps6 bound elements
ConcreteFactoriesMetallFactorySpaceFactory
ConcreteProducts6 bound elements Products
MenuScrollBarButton
Declared_In Implements
Realises Defined_In
Return Type
Creates
Implements
PaL vs DPMLUnterschiede
PaL DPMLIntegration in Eiffel in UMLBeziehungen keine Bedingungen, BeziehungenKombination von Pattern visuell und textuell visuellRepräsentation von Pattern konkrete abstrakt und konkret
PaL vs DPMLGemeinsamkeiten
• benutzen Design Pattern zum Modellieren.
• haben Patterninstanzeierung
• haben visuelle Elemente
• unterstützen Vererbung
Automatische Codegenerierung für Design Pattern 1
Entwicklerziele1. schnelle Modifikation von Komponenten2. hohe Flexibilität3 einfache Spezifikation
Benutzerziele 1. das Tool soll als Entwicklerhilfe dienen 2. integrierte Design Pattern Eigenschaften3. Benutzerrückkopplung
Automatische Codegenerierung für Design Pattern 2
Architektur
• Presenter implementiert Benutzeroberfläche (Browser)
• Code Generator implementiert die Pattern
• Mapper spezifiziert wie der Presenter und der Code Generator miteinander kooperieren
Fujaba
• Java-Codegenerierung aus UML -Diagrammen
• Generierung der Designdiagrammen aus bestehendem Java-Quellcode
• Forward-(4 Pattern) und Reengineering (7 Pattern)