Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

22
Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy

Transcript of Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

Page 1: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

Case Tools Unterstützung für Design Pattern

von Vladislav Krasnyanskiy

Page 2: 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

Page 3: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

Einleitung

Verbesserung der Softwarequalität durch:

• Entwicklungsmodelle (Wasserfallmodell)

• Design Pattern

Page 4: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

Wasserfallmodell

Anforderungsanalyse/Validation

Entwurf/Validation/Verifikation

Implementierung/Verifikation

Test undIntegration

InstallationWartung

Pflichtenheft

Systemarchitektur

Programme Beweise

Testpläne

Testergebnisse

technische Handbücher

Benutzerhandbuch

Page 5: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

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”

Page 6: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

  Purpose

Creational Structural Behavioral

Scope      

Class Factory Method Adapter InterpreterTemplate Method

Object Abstract FactoryBuilderPrototypeSingleton

AdapterBridgeCompositeDecoratorFacadeProxy

Chain of ResponsibilityCommandIteratorMediatorMementoFlyweight ObserverStateStrategyVisitor

Design Pattern nach Gamma

Page 7: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

Design Pattern

• Was ist das ?

• Aufbau

• Entwicklung

Page 8: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

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

Page 9: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

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

Page 10: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

Design Pattern im Quellcode

• Syntaktische Variationen • Variationen in der Implementierung • Delokalisierung • Nicht verwertbare Bauteile • Variation in der Organisation der

Komponenten • Redundanz

Page 11: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

Programmiersprachen für Design Pattern

• textorientierte Programming Language for Design Patterns

(PaL)• visuelle Visual Language for Design Pattern

(DPML )

Page 12: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

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

Page 13: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

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

Page 14: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

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

Page 15: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

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

Page 16: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

Beispiel für DPML 1 (Abstract Factory)

AbsractFactory

createOps

concreteCreateOps

concreteFactories

concreteProductsProducts

Declared_In Implements

Realises Defined_In

Return Type Creates

Implements

Page 17: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

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

Page 18: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

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

Page 19: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

PaL vs DPMLGemeinsamkeiten

• benutzen Design Pattern zum Modellieren.

• haben Patterninstanzeierung

• haben visuelle Elemente

• unterstützen Vererbung

Page 20: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

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

Page 21: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

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

Page 22: Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.

Fujaba

• Java-Codegenerierung aus UML -Diagrammen

• Generierung der Designdiagrammen aus bestehendem Java-Quellcode

• Forward-(4 Pattern) und Reengineering (7 Pattern)