SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Entwurfsmuster in ABAP
Entwurfsmuster in ABAP
Webinar, 31.5.2019, 10:00 Uhr
Entwurfsmuster in ABAPDomi
Domi Bigl
Senior Consultant at Cadaxo
eMail: dominik.bigl@cadaxo.com
Twitter: @DomiBiglSAP
Beratungsschwerpunkte
• Konzeption & Management von Entwicklungsprojekten
• Qualitymanagement & Performanceoptimierung
• ABAP Units
• SAP Fiori, SAP UI5
Entwurfsmuster in ABAPFöß
Johann Fößleitner
Senior Consultant at Cadaxo
eMail: johann.foessleitner@cadaxo.com
Twitter: @foessleitnerj
Beratungsschwerpunkte
• Konzeption & Management von Entwicklungsprojekten
• Qualitymanagement & Performanceoptimierung
• Clean Code
• S/4HANA Custom Development
Entwurfsmuster in ABAPAgenda
 Webinare – Rückblick / Ausblick
◦ #ABAPsNotDead, Clean ABAP
 Kopplung & Kohäsion & ein paar Clean Code Principles
 Einführung Entwurfsmuster
 Entwurfsmuster Kategorien
 Elemente von Entwurfsmustern
 Beispiele
 Fazit / Empfehlung
Entwurfsmuster in ABAP
 Rückblick / Ausblick
◦ Jänner 2016 erstes ABAP Webinar
◦ Im Schnitt ca. 30 angemeldete User
 Spitzenwert 50
◦ Bisher 12 Webinare (674 Slides) mit Focus ABAP
 ADT, Clean Code, SAP BOPF, CDS Views,
ABAP Units, Modern ABAP
◦ Ausblick – wir bleiben am ABAP Ball
 ABAP RESTful Programming Model,
S/4Extensions, ABAP Units, ABAP Daemons, …
Webinare Rückblick / Ausblick
Entwurfsmuster in ABAP#ABAPsNotDead
https://shop.spreadshirt.de/se38
Entwurfsmuster in ABAPClean ABAP
https://blogs.sap.com/2019/05/03/clean-abap
Clean ABAP Cheat Sheet Clean ABAP The Golden Rules
Entwurfsmuster in ABAP
Bevor wir mit den Mustern loslegen …
Entwurfsmuster in ABAPNie mehr Spaghetti Code
Entwurfsmuster in ABAP
 Kopplung & Kohäsion
◦ Ziel einer guten Softwarearchitektur
 Lose Kopplung zwischen den Komponenten
 Starke Bindung (Kohäsion) innerhalb der Komponenten
◦ Die einzelnen Komponenten sind auf eine Aufgabe fokussiert
Clean Code - Kopplung & Kohäsion
Entwurfsmuster in ABAP
Clean Code Prinzipien
Separation of Concerns (SoC)
Single Responsibility Principle (SPR)
Open Close Principle (OCP)
Entwurfsmuster in ABAP
 Separation of Concerns (SoC)
◦ Eine Codeeinheit sollte immer eine klare Aufgabe habe
◦ Mehrere „Belange“ sollten nicht in einer Einheit
zusammengefasst sein
 Belange: Tracing, Logging, Caching, Transaction, …
Clean Code - SoC
Entwurfsmuster in ABAP
 Single Responsibility Principle (SRP)
◦ Eine Komponente sollte nur eine Verantwortlichkeit haben, sie
sollte sich nur um eine Sache kümmern
◦ Dadurch entstehen kleiner Klassen, Methoden
◦ Robert C. Martin: „A class should have one responsibility, one
reason to change“
Clean Code - SRP
Entwurfsmuster in ABAP
 Open Close Principle (OCP)
◦ Ein Softwaremodul soll offen für Erweiterungen, jedoch
geschlossen für Modifikationen sein
Clean Code - OCP
Entwurfsmuster in ABAPClean Code & Clean Coder
ISBN 978-3-8266-9695-4ISBN 978-3-8266-5548-7
https://twitter.com/unclebobmartin
Entwurfsmuster in ABAP
Einführung Entwurfsmuster
Entwurfsmuster in ABAP
 Wie alles anfing
◦ Christopher Alexander hat 1977 eine erste Sammlung von
Entwurfsmustern zusammengestellt
◦ Kent Beck & Ward Cunningham griffen 1987 die Ideen von
Alexander auf und entwarfen neue Entwurfsmuster
◦ Der Schweizer Erich Gamma verfasste 1987 seine Dissertation zum
diesem Thema
◦ Auf einer Konferenz1 1991 hat Erich Gamma einen ersten Katalog
von Entwurfsmuster vorgestellt
Geschichte der Entwurfsmuster
https://twitter.com/WardCunningham
https://twitter.com/KentBeck
https://twitter.com/ErichGamma
1) OOPSLA, seit 2010 heißt die Konferenz SPLASH
Entwurfsmuster in ABAP
 Gang of Four, GoF
◦ 1994 von Erich Gamma, Richard Helm, Ralph
Johnson, John Vlissides
◦ Best Practice of Design Patterns
 Beschreibung der 23 Pattern
GoF
https://twitter.com/ErichGamma
https://twitter.com/Grady_Booch
Entwurfsmuster in ABAP
 Was sind Entwurfsmuster
◦ Wiederkehrende Probleme immer auf die gleiche Art lösen
◦ Lösungsbeschreibung des Problems = Muster
◦ Lösung ist möglichst flexibel und wiederverwendbar
◦ Es wird auf Expertenwissen zurückgegriffen, das Rad soll nicht
neu erfunden werden
Was sind Entwurfsmuster
Entwurfsmuster in ABAP
 Eigenschaften von Entwurfsmustern
◦ Entwurfsmuster sind sprachunabhängig
◦ Entwurfsmuster verfolgen einen objektorientierten Designansatz
Eigenschaften von Entwurfsmustern
Entwurfsmuster in ABAP
 Was sind Entwurfsmuster nicht
◦ Algorithmen
◦ Frameworks
◦ Wunderwaffen
Was sind Entwurfsmuster nicht
Entwurfsmuster in ABAP
 Was sind eigentlich Antimuster
◦ Lösungsansätze die ungünstig oder schädlich sind
◦ In der Regel entstehen Antimuster durch mangelhafte Erfahrung
oder fehlender Qualifikation
 Aufgeblähte Software
 Gottklassen
 Gasfabrik (unnötige Komplexität)
 Magic Numbers
 …
Antimuster
Entwurfsmuster in ABAP
 Warum Entwurfsmuster?
◦ Code Qualität und Code Struktur wird verbessert
◦ Flexibilität bei Neuanforderungen
◦ Vermeiden die Neuerfindung des Rades
◦ Zeitersparnis bei der Entwicklung
◦ Bessere Wartbarkeit
◦ Kommunikation im Team wird erleichtert
Warum Entwurfsmuster
Entwurfsmuster in ABAP
 Nachteile von Entwurfsmustern
◦ Entwurfsmuster sind keine Wunderwaffe, kein Garant für gutes
Design
◦ Höherer Entwicklungsaufwand möglich
 Mangelndes Know-how
◦ Testen wird komplizierter
Nachteile von Entwurfsmustern
Entwurfsmuster in ABAP
Kategorien
Entwurfsmuster in ABAPEntwurfsmuster Kategorien
Strukturmuster
Verhaltensmuster
Erzeugungsmuster
Entwurfsmuster in ABAP
Elemente eines Entwurfsmusters
Entwurfsmuster in ABAP
 Elemente eines Entwurfsmusters
◦ Muster Name und Klassifizierung
◦ Zweck
◦ Motivation
◦ Anwendbarkeit
◦ Konsequenzen
◦ …
Elemente eines Entwurfsmusters
Entwurfsmuster in ABAPDie 23 Muster der GoF
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
Erzeugungsmuster Strukturmuster Verhaltensmuster
Abstract Factory
Builder
Factory Method
Prototype
Singleton
Entwurfsmuster in ABAP
Beispiele
Singleton, Decorator, Template Method, Strategy
Entwurfsmuster in ABAPSingleton
Singleton Erzeugungsmuster
Zweck Sicherstellung der Existenz einer einzigen Klasseninstanz und Bereitstellung eines globalen Zugriffspunkts
für diese Instanz
Motivation Die Klasse ist selbst für die Verwaltung der einzigen Instanz zuständig. Es wird sichergestellt, dass keine
Erzeugung einer Instanz außerhalb der Klasse möglich ist.
Da sich nur die Klasse um die Erzeugung und Bereitstellung der Instanz kümmert, wird eine Null-Referenz
verhindert.
Theoretisch ist das verhalten auch über statische Attribute realisierbar. Singleton verhindert jedoch, dass
mehrere Objekte erzeugt werden.
Anwendbarkeit • Es soll nur eine einzige Instanz einer Klasse geben
• Die einzige Instanz soll per Unterklassenbildung erweiterbar sein
Konsequenzen • Kontrollierter Zugriff auf die einzige Instanz
• Singleton-Klasse kann durch Unterklassen erweitert und spezialisiert werden
• Variable Anzahl von Instanzen zu einem späteren Zeitpunkt bei Bedarf möglich
Entwurfsmuster in ABAPDecorator
Decorator (auch bekannt als Wrapper) Strukturmuster
Zweck Dekorierer bieten eine flexible Alternative zur Unterklassenbildung, um die Funktionalität einer Klasse zu
erweitern.
Motivation Mit dem Decorator Design Pattern können dynamisch Fähigkeiten zu einer Klasse hinzugefügt werden.
Dazu wird die Klasse (=Component), dessen Verhalten erweitert werden soll, mit anderen Klassen
(=Decorator) dekoriert.
Unterstützt die Umsetzung des Clean Code Prinzip „Open-Closed-Princible“: Offen für Erweiterungen aber
geschlossen für Änderungen!
Anwendbarkeit • Objekte sollen dynamisch und transparent mit neuer Funktionalität erweitert werden
• Funktionalität soll ergänzt werden, welche auch wieder einfach entfernt werden kann
Konsequenzen • Vermeidung funktionsüberladener Klassen in den oberen Hierarchieebenen
• Ein Decorator-Objekt ist nicht mit seiner Komponente identisch
• Viele kleine Objekte
Entwurfsmuster in ABAPTemplate Method
Template Method Verhaltensmuster
Zweck Definiert Teilschritte eines Algorithmus
Motivation Unterklassen können bestimmte Schritte des Algorithmus überschreiben ohne die Struktur des Templates
zu verändern.
Unterstützt die Umsetzung des Clean Code Prinzip „Open-Closed-Princible“ und sorgt für schlanken
Code.
Anwendbarkeit • Unveränderlichen Teile werden einmalig implementiert und es wird Unterklassen überlassen,
veränderliche Algorithmen zu implementieren
• Erweiterungen von Unterklassen soll reguliert werden
Konsequenzen • Template Methods stellen die Ablaufstruktur auf den Kopf: Basisklasse ruft Unterklassen auf – und nich
umgekehrt. (Hollywood-Prinzip „Don’t call us, we call you. “
Entwurfsmuster in ABAPStrategy
Strategy (auch bekannt als Policy) Verhaltensmuster
Zweck Definiert eine Familie von austauschbaren Algorithmen
Motivation Diese Muster ermöglicht es, den Algorithmus unabhängig vom Verwender zu variieren.
Folgende Fragestellungen helfen bei der Auswahl dieses Patterns:
• Unterscheiden sich verwandte Klassen nur in ihrem Verhalten?
• Werden unterschiedliche Varianten eines Algorithmus benötigt?
Anwendbarkeit • Viele miteinander in Zusammenhang stehende unterscheiden sich nur in ihrem Verhalten
• Verschiedene Variante eines Algorithmus sind erforderlich
Konsequenzen • Es entstehen Familien verwandter Algorithmen
• Strategy ist eine Alternative zum Erstellen von Unterklassen
• Es können verschiedene Implementierungen desselben Verhaltens existieren
Entwurfsmuster in ABAP
Empfehlung
Entwurfsmuster in ABAP
 Wie sollte man loslegen?
◦ Verschafft Euch einen Überblick über die Muster
◦ Beginnt erste Muster anzuwenden
 Singleton, Decorator, Strategy, …
◦ Erfasst und dokumentiert die verwendeten Muster
Wie sollte man loslegen?
Entwurfsmuster in ABAP
 SAPPress Bücher
◦ Entwurfsmuster in ABAP (2015)
 Nurgül Atilgan und Markus Straub
 ISBN 978-3-8362-3810-6
◦ Design Patterns in ABAP Objects (2017)
 Kerem Koseoglu
 ISBN 978-1-4932-1464-8
SAPPress Bücher zum Thema
Entwurfsmuster in ABAP
27. September 2019 10:00 – Thema: TBD
Nächstes Webinar
Entwurfsmuster in ABAPUnsere vergangenen Webinare
http://www.cadaxo.com/blog/
Entwurfsmuster in ABAPIf you want to stay in touch …
https://twitter.com/domibiglsap
https://www.linkedin.com/in/dominik-bigl-9b98b68b
https://www.xing.com/profile/dominik_bigl
dominik.bigl@cadaxo.com
See you again!
Thank you for participating!
https://twitter.com/foessleitnerj
https://www.linkedin.com/in/johann-fößleitner-a9851b2a
https://www.xing.com/profile/johann_foessleitner
johann.foessleitner@cadaxo.com

Weitere ähnliche Inhalte

Was ist angesagt?

Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS ViewsCadaxo GmbH
 
Webinar - Boost your ABAP
Webinar - Boost your ABAPWebinar - Boost your ABAP
Webinar - Boost your ABAPCadaxo GmbH
 
Webinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 ReleaseinformationenWebinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 ReleaseinformationenCadaxo GmbH
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP UnitsCadaxo GmbH
 
Clean code in ABAP
Clean code in ABAPClean code in ABAP
Clean code in ABAPCadaxo GmbH
 
Webinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige ÄnderungenWebinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige ÄnderungenCadaxo GmbH
 
Funktionstests in SAP
Funktionstests in SAPFunktionstests in SAP
Funktionstests in SAPCadaxo GmbH
 
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenWebinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenCadaxo GmbH
 
Inspiricon Webinar: Ihr Weg zu SAP BW/4HANA
Inspiricon Webinar: Ihr Weg zu SAP BW/4HANAInspiricon Webinar: Ihr Weg zu SAP BW/4HANA
Inspiricon Webinar: Ihr Weg zu SAP BW/4HANAInspiricon AG
 
Tune up your APEX
Tune up your APEXTune up your APEX
Tune up your APEXMT AG
 
Liquid - Templating on Rails
Liquid - Templating on RailsLiquid - Templating on Rails
Liquid - Templating on Railsgearwheeldotnet
 
Stabile und performante Anwendungen für SAP HANA entwickeln
Stabile und performante Anwendungen für SAP HANA entwickelnStabile und performante Anwendungen für SAP HANA entwickeln
Stabile und performante Anwendungen für SAP HANA entwickelnVirtual Forge
 
Cv wagener harald_20170830
Cv wagener harald_20170830Cv wagener harald_20170830
Cv wagener harald_20170830Harald Wagener
 
Implementierung von SAP SuccessFactors Lösungen
Implementierung von SAP SuccessFactors Lösungen Implementierung von SAP SuccessFactors Lösungen
Implementierung von SAP SuccessFactors Lösungen Michael Mueller
 
Packaged Applications in APEX 5.0
Packaged Applications in APEX 5.0Packaged Applications in APEX 5.0
Packaged Applications in APEX 5.0Niels de Bruijn
 
Reif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-ApplikationenReif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-Applikationenadesso AG
 
APEX für den Oracle DBA
APEX für den Oracle DBAAPEX für den Oracle DBA
APEX für den Oracle DBANiels de Bruijn
 

Was ist angesagt? (20)

Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS Views
 
Webinar - Boost your ABAP
Webinar - Boost your ABAPWebinar - Boost your ABAP
Webinar - Boost your ABAP
 
Webinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 ReleaseinformationenWebinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 Releaseinformationen
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP Units
 
Clean code in ABAP
Clean code in ABAPClean code in ABAP
Clean code in ABAP
 
Webinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige ÄnderungenWebinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige Änderungen
 
Funktionstests in SAP
Funktionstests in SAPFunktionstests in SAP
Funktionstests in SAP
 
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenWebinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
 
Inspiricon Webinar: Ihr Weg zu SAP BW/4HANA
Inspiricon Webinar: Ihr Weg zu SAP BW/4HANAInspiricon Webinar: Ihr Weg zu SAP BW/4HANA
Inspiricon Webinar: Ihr Weg zu SAP BW/4HANA
 
Tune up your APEX
Tune up your APEXTune up your APEX
Tune up your APEX
 
Liquid - Templating on Rails
Liquid - Templating on RailsLiquid - Templating on Rails
Liquid - Templating on Rails
 
Stabile und performante Anwendungen für SAP HANA entwickeln
Stabile und performante Anwendungen für SAP HANA entwickelnStabile und performante Anwendungen für SAP HANA entwickeln
Stabile und performante Anwendungen für SAP HANA entwickeln
 
Cv wagener harald_20170830
Cv wagener harald_20170830Cv wagener harald_20170830
Cv wagener harald_20170830
 
Implementierung von SAP SuccessFactors Lösungen
Implementierung von SAP SuccessFactors Lösungen Implementierung von SAP SuccessFactors Lösungen
Implementierung von SAP SuccessFactors Lösungen
 
SAP HANA Platform
SAP HANA Platform SAP HANA Platform
SAP HANA Platform
 
Packaged Applications in APEX 5.0
Packaged Applications in APEX 5.0Packaged Applications in APEX 5.0
Packaged Applications in APEX 5.0
 
Reif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-ApplikationenReif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-Applikationen
 
APEX 5.0, und sonst?
APEX 5.0, und sonst?APEX 5.0, und sonst?
APEX 5.0, und sonst?
 
APEX für den Oracle DBA
APEX für den Oracle DBAAPEX für den Oracle DBA
APEX für den Oracle DBA
 
ADF Software Factory
ADF Software FactoryADF Software Factory
ADF Software Factory
 

Ähnlich wie Webinar - Entwurfsmuster in ABAP

Vorgehensmodelle - Methoden der Wirtschaftsinformatik
Vorgehensmodelle - Methoden der WirtschaftsinformatikVorgehensmodelle - Methoden der Wirtschaftsinformatik
Vorgehensmodelle - Methoden der WirtschaftsinformatikClaus Brell
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Community ITmitte.de
 
Agil in der Normativen Welt
Agil in der Normativen WeltAgil in der Normativen Welt
Agil in der Normativen WeltThomas Arends
 
Design Pattern Libraries, Aufzucht und Pflege
Design Pattern Libraries, Aufzucht und PflegeDesign Pattern Libraries, Aufzucht und Pflege
Design Pattern Libraries, Aufzucht und PflegeWolf Brüning
 
Produktvarianten mit SysML/UML modellieren
Produktvarianten mit SysML/UML modellierenProduktvarianten mit SysML/UML modellieren
Produktvarianten mit SysML/UML modellierenoose
 
Agile Ways of Working @ Migros
Agile Ways of Working @ MigrosAgile Ways of Working @ Migros
Agile Ways of Working @ MigrosJoël Krapf
 
Beyond Agile - when Freedom grows to Quality and Speed
Beyond Agile - when Freedom grows to Quality and SpeedBeyond Agile - when Freedom grows to Quality and Speed
Beyond Agile - when Freedom grows to Quality and SpeedSebastian Bernt
 
Agile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördern
Agile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördernAgile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördern
Agile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördernSascha Böhr
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013superflomo
 
Agile Skalierung - Prinzipien statt Blueprints (Scrum-Club, ImmoScout)
Agile Skalierung - Prinzipien statt Blueprints (Scrum-Club, ImmoScout)Agile Skalierung - Prinzipien statt Blueprints (Scrum-Club, ImmoScout)
Agile Skalierung - Prinzipien statt Blueprints (Scrum-Club, ImmoScout)Stefan ROOCK
 
ASQF Dresden: Benötigen wir mit SCRUM noch einen Testmanager?
ASQF Dresden: Benötigen wir mit SCRUM noch einen Testmanager?ASQF Dresden: Benötigen wir mit SCRUM noch einen Testmanager?
ASQF Dresden: Benötigen wir mit SCRUM noch einen Testmanager?René Spengler
 
Pattern Libraries als Schnittstelle zwischen Design & Development
Pattern Libraries als Schnittstelle zwischen Design & DevelopmentPattern Libraries als Schnittstelle zwischen Design & Development
Pattern Libraries als Schnittstelle zwischen Design & DevelopmentMatthias Feit
 
Scrum als agiles Vorgehensmodell für Programmierer
Scrum als agiles Vorgehensmodell für ProgrammiererScrum als agiles Vorgehensmodell für Programmierer
Scrum als agiles Vorgehensmodell für ProgrammiererTobias Schlüter
 
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...QAware GmbH
 
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur UmsetzungPuppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur Umsetzunginovex GmbH
 

Ähnlich wie Webinar - Entwurfsmuster in ABAP (20)

Vorgehensmodelle - Methoden der Wirtschaftsinformatik
Vorgehensmodelle - Methoden der WirtschaftsinformatikVorgehensmodelle - Methoden der Wirtschaftsinformatik
Vorgehensmodelle - Methoden der Wirtschaftsinformatik
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
 
Agil in der Normativen Welt
Agil in der Normativen WeltAgil in der Normativen Welt
Agil in der Normativen Welt
 
Design Pattern Libraries, Aufzucht und Pflege
Design Pattern Libraries, Aufzucht und PflegeDesign Pattern Libraries, Aufzucht und Pflege
Design Pattern Libraries, Aufzucht und Pflege
 
PHP mit Paul Bocuse
PHP mit Paul BocusePHP mit Paul Bocuse
PHP mit Paul Bocuse
 
Produktvarianten mit SysML/UML modellieren
Produktvarianten mit SysML/UML modellierenProduktvarianten mit SysML/UML modellieren
Produktvarianten mit SysML/UML modellieren
 
Agile Ways of Working @ Migros
Agile Ways of Working @ MigrosAgile Ways of Working @ Migros
Agile Ways of Working @ Migros
 
Beyond Agile - when Freedom grows to Quality and Speed
Beyond Agile - when Freedom grows to Quality and SpeedBeyond Agile - when Freedom grows to Quality and Speed
Beyond Agile - when Freedom grows to Quality and Speed
 
Azure Technical Governance
Azure Technical GovernanceAzure Technical Governance
Azure Technical Governance
 
Agile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördern
Agile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördernAgile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördern
Agile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördern
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013
 
Agile Skalierung - Prinzipien statt Blueprints (Scrum-Club, ImmoScout)
Agile Skalierung - Prinzipien statt Blueprints (Scrum-Club, ImmoScout)Agile Skalierung - Prinzipien statt Blueprints (Scrum-Club, ImmoScout)
Agile Skalierung - Prinzipien statt Blueprints (Scrum-Club, ImmoScout)
 
Webinar - Agil? Na klar! Aber wie?
Webinar - Agil? Na klar! Aber wie?Webinar - Agil? Na klar! Aber wie?
Webinar - Agil? Na klar! Aber wie?
 
ASQF Dresden: Benötigen wir mit SCRUM noch einen Testmanager?
ASQF Dresden: Benötigen wir mit SCRUM noch einen Testmanager?ASQF Dresden: Benötigen wir mit SCRUM noch einen Testmanager?
ASQF Dresden: Benötigen wir mit SCRUM noch einen Testmanager?
 
Agiles Testen - Überblick
Agiles Testen - ÜberblickAgiles Testen - Überblick
Agiles Testen - Überblick
 
Pattern Libraries als Schnittstelle zwischen Design & Development
Pattern Libraries als Schnittstelle zwischen Design & DevelopmentPattern Libraries als Schnittstelle zwischen Design & Development
Pattern Libraries als Schnittstelle zwischen Design & Development
 
Scrum als agiles Vorgehensmodell für Programmierer
Scrum als agiles Vorgehensmodell für ProgrammiererScrum als agiles Vorgehensmodell für Programmierer
Scrum als agiles Vorgehensmodell für Programmierer
 
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
 
Agile Methoden in Projekten
Agile Methoden in ProjektenAgile Methoden in Projekten
Agile Methoden in Projekten
 
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur UmsetzungPuppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
 

Mehr von Cadaxo GmbH

ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - RefactoringABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - RefactoringCadaxo GmbH
 
SQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - OverviewSQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - OverviewCadaxo GmbH
 
SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0Cadaxo GmbH
 
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im DetailCadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im DetailCadaxo GmbH
 
Abap 7 02 new features - new string functions
Abap 7 02   new features - new string functionsAbap 7 02   new features - new string functions
Abap 7 02 new features - new string functionsCadaxo GmbH
 
Abap 7.02 new features - neue stringfunktionen
Abap 7.02   new features - neue stringfunktionenAbap 7.02   new features - neue stringfunktionen
Abap 7.02 new features - neue stringfunktionenCadaxo GmbH
 

Mehr von Cadaxo GmbH (6)

ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - RefactoringABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
 
SQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - OverviewSQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - Overview
 
SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0
 
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im DetailCadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
 
Abap 7 02 new features - new string functions
Abap 7 02   new features - new string functionsAbap 7 02   new features - new string functions
Abap 7 02 new features - new string functions
 
Abap 7.02 new features - neue stringfunktionen
Abap 7.02   new features - neue stringfunktionenAbap 7.02   new features - neue stringfunktionen
Abap 7.02 new features - neue stringfunktionen
 

Webinar - Entwurfsmuster in ABAP

  • 1. Entwurfsmuster in ABAP Entwurfsmuster in ABAP Webinar, 31.5.2019, 10:00 Uhr
  • 2. Entwurfsmuster in ABAPDomi Domi Bigl Senior Consultant at Cadaxo eMail: dominik.bigl@cadaxo.com Twitter: @DomiBiglSAP Beratungsschwerpunkte • Konzeption & Management von Entwicklungsprojekten • Qualitymanagement & Performanceoptimierung • ABAP Units • SAP Fiori, SAP UI5
  • 3. Entwurfsmuster in ABAPFöß Johann Fößleitner Senior Consultant at Cadaxo eMail: johann.foessleitner@cadaxo.com Twitter: @foessleitnerj Beratungsschwerpunkte • Konzeption & Management von Entwicklungsprojekten • Qualitymanagement & Performanceoptimierung • Clean Code • S/4HANA Custom Development
  • 4. Entwurfsmuster in ABAPAgenda  Webinare – Rückblick / Ausblick ◦ #ABAPsNotDead, Clean ABAP  Kopplung & Kohäsion & ein paar Clean Code Principles  Einführung Entwurfsmuster  Entwurfsmuster Kategorien  Elemente von Entwurfsmustern  Beispiele  Fazit / Empfehlung
  • 5. Entwurfsmuster in ABAP  Rückblick / Ausblick ◦ Jänner 2016 erstes ABAP Webinar ◦ Im Schnitt ca. 30 angemeldete User  Spitzenwert 50 ◦ Bisher 12 Webinare (674 Slides) mit Focus ABAP  ADT, Clean Code, SAP BOPF, CDS Views, ABAP Units, Modern ABAP ◦ Ausblick – wir bleiben am ABAP Ball  ABAP RESTful Programming Model, S/4Extensions, ABAP Units, ABAP Daemons, … Webinare Rückblick / Ausblick
  • 7. Entwurfsmuster in ABAPClean ABAP https://blogs.sap.com/2019/05/03/clean-abap Clean ABAP Cheat Sheet Clean ABAP The Golden Rules
  • 8. Entwurfsmuster in ABAP Bevor wir mit den Mustern loslegen …
  • 9. Entwurfsmuster in ABAPNie mehr Spaghetti Code
  • 10. Entwurfsmuster in ABAP  Kopplung & Kohäsion ◦ Ziel einer guten Softwarearchitektur  Lose Kopplung zwischen den Komponenten  Starke Bindung (Kohäsion) innerhalb der Komponenten ◦ Die einzelnen Komponenten sind auf eine Aufgabe fokussiert Clean Code - Kopplung & Kohäsion
  • 11. Entwurfsmuster in ABAP Clean Code Prinzipien Separation of Concerns (SoC) Single Responsibility Principle (SPR) Open Close Principle (OCP)
  • 12. Entwurfsmuster in ABAP  Separation of Concerns (SoC) ◦ Eine Codeeinheit sollte immer eine klare Aufgabe habe ◦ Mehrere „Belange“ sollten nicht in einer Einheit zusammengefasst sein  Belange: Tracing, Logging, Caching, Transaction, … Clean Code - SoC
  • 13. Entwurfsmuster in ABAP  Single Responsibility Principle (SRP) ◦ Eine Komponente sollte nur eine Verantwortlichkeit haben, sie sollte sich nur um eine Sache kümmern ◦ Dadurch entstehen kleiner Klassen, Methoden ◦ Robert C. Martin: „A class should have one responsibility, one reason to change“ Clean Code - SRP
  • 14. Entwurfsmuster in ABAP  Open Close Principle (OCP) ◦ Ein Softwaremodul soll offen für Erweiterungen, jedoch geschlossen für Modifikationen sein Clean Code - OCP
  • 15. Entwurfsmuster in ABAPClean Code & Clean Coder ISBN 978-3-8266-9695-4ISBN 978-3-8266-5548-7 https://twitter.com/unclebobmartin
  • 17. Entwurfsmuster in ABAP  Wie alles anfing ◦ Christopher Alexander hat 1977 eine erste Sammlung von Entwurfsmustern zusammengestellt ◦ Kent Beck & Ward Cunningham griffen 1987 die Ideen von Alexander auf und entwarfen neue Entwurfsmuster ◦ Der Schweizer Erich Gamma verfasste 1987 seine Dissertation zum diesem Thema ◦ Auf einer Konferenz1 1991 hat Erich Gamma einen ersten Katalog von Entwurfsmuster vorgestellt Geschichte der Entwurfsmuster https://twitter.com/WardCunningham https://twitter.com/KentBeck https://twitter.com/ErichGamma 1) OOPSLA, seit 2010 heißt die Konferenz SPLASH
  • 18. Entwurfsmuster in ABAP  Gang of Four, GoF ◦ 1994 von Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides ◦ Best Practice of Design Patterns  Beschreibung der 23 Pattern GoF https://twitter.com/ErichGamma https://twitter.com/Grady_Booch
  • 19. Entwurfsmuster in ABAP  Was sind Entwurfsmuster ◦ Wiederkehrende Probleme immer auf die gleiche Art lösen ◦ Lösungsbeschreibung des Problems = Muster ◦ Lösung ist möglichst flexibel und wiederverwendbar ◦ Es wird auf Expertenwissen zurückgegriffen, das Rad soll nicht neu erfunden werden Was sind Entwurfsmuster
  • 20. Entwurfsmuster in ABAP  Eigenschaften von Entwurfsmustern ◦ Entwurfsmuster sind sprachunabhängig ◦ Entwurfsmuster verfolgen einen objektorientierten Designansatz Eigenschaften von Entwurfsmustern
  • 21. Entwurfsmuster in ABAP  Was sind Entwurfsmuster nicht ◦ Algorithmen ◦ Frameworks ◦ Wunderwaffen Was sind Entwurfsmuster nicht
  • 22. Entwurfsmuster in ABAP  Was sind eigentlich Antimuster ◦ Lösungsansätze die ungünstig oder schädlich sind ◦ In der Regel entstehen Antimuster durch mangelhafte Erfahrung oder fehlender Qualifikation  Aufgeblähte Software  Gottklassen  Gasfabrik (unnötige Komplexität)  Magic Numbers  … Antimuster
  • 23. Entwurfsmuster in ABAP  Warum Entwurfsmuster? ◦ Code Qualität und Code Struktur wird verbessert ◦ Flexibilität bei Neuanforderungen ◦ Vermeiden die Neuerfindung des Rades ◦ Zeitersparnis bei der Entwicklung ◦ Bessere Wartbarkeit ◦ Kommunikation im Team wird erleichtert Warum Entwurfsmuster
  • 24. Entwurfsmuster in ABAP  Nachteile von Entwurfsmustern ◦ Entwurfsmuster sind keine Wunderwaffe, kein Garant für gutes Design ◦ Höherer Entwicklungsaufwand möglich  Mangelndes Know-how ◦ Testen wird komplizierter Nachteile von Entwurfsmustern
  • 26. Entwurfsmuster in ABAPEntwurfsmuster Kategorien Strukturmuster Verhaltensmuster Erzeugungsmuster
  • 27. Entwurfsmuster in ABAP Elemente eines Entwurfsmusters
  • 28. Entwurfsmuster in ABAP  Elemente eines Entwurfsmusters ◦ Muster Name und Klassifizierung ◦ Zweck ◦ Motivation ◦ Anwendbarkeit ◦ Konsequenzen ◦ … Elemente eines Entwurfsmusters
  • 29. Entwurfsmuster in ABAPDie 23 Muster der GoF Adapter Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor Erzeugungsmuster Strukturmuster Verhaltensmuster Abstract Factory Builder Factory Method Prototype Singleton
  • 30. Entwurfsmuster in ABAP Beispiele Singleton, Decorator, Template Method, Strategy
  • 31. Entwurfsmuster in ABAPSingleton Singleton Erzeugungsmuster Zweck Sicherstellung der Existenz einer einzigen Klasseninstanz und Bereitstellung eines globalen Zugriffspunkts für diese Instanz Motivation Die Klasse ist selbst für die Verwaltung der einzigen Instanz zuständig. Es wird sichergestellt, dass keine Erzeugung einer Instanz außerhalb der Klasse möglich ist. Da sich nur die Klasse um die Erzeugung und Bereitstellung der Instanz kümmert, wird eine Null-Referenz verhindert. Theoretisch ist das verhalten auch über statische Attribute realisierbar. Singleton verhindert jedoch, dass mehrere Objekte erzeugt werden. Anwendbarkeit • Es soll nur eine einzige Instanz einer Klasse geben • Die einzige Instanz soll per Unterklassenbildung erweiterbar sein Konsequenzen • Kontrollierter Zugriff auf die einzige Instanz • Singleton-Klasse kann durch Unterklassen erweitert und spezialisiert werden • Variable Anzahl von Instanzen zu einem späteren Zeitpunkt bei Bedarf möglich
  • 32. Entwurfsmuster in ABAPDecorator Decorator (auch bekannt als Wrapper) Strukturmuster Zweck Dekorierer bieten eine flexible Alternative zur Unterklassenbildung, um die Funktionalität einer Klasse zu erweitern. Motivation Mit dem Decorator Design Pattern können dynamisch Fähigkeiten zu einer Klasse hinzugefügt werden. Dazu wird die Klasse (=Component), dessen Verhalten erweitert werden soll, mit anderen Klassen (=Decorator) dekoriert. Unterstützt die Umsetzung des Clean Code Prinzip „Open-Closed-Princible“: Offen für Erweiterungen aber geschlossen für Änderungen! Anwendbarkeit • Objekte sollen dynamisch und transparent mit neuer Funktionalität erweitert werden • Funktionalität soll ergänzt werden, welche auch wieder einfach entfernt werden kann Konsequenzen • Vermeidung funktionsüberladener Klassen in den oberen Hierarchieebenen • Ein Decorator-Objekt ist nicht mit seiner Komponente identisch • Viele kleine Objekte
  • 33. Entwurfsmuster in ABAPTemplate Method Template Method Verhaltensmuster Zweck Definiert Teilschritte eines Algorithmus Motivation Unterklassen können bestimmte Schritte des Algorithmus überschreiben ohne die Struktur des Templates zu verändern. Unterstützt die Umsetzung des Clean Code Prinzip „Open-Closed-Princible“ und sorgt für schlanken Code. Anwendbarkeit • Unveränderlichen Teile werden einmalig implementiert und es wird Unterklassen überlassen, veränderliche Algorithmen zu implementieren • Erweiterungen von Unterklassen soll reguliert werden Konsequenzen • Template Methods stellen die Ablaufstruktur auf den Kopf: Basisklasse ruft Unterklassen auf – und nich umgekehrt. (Hollywood-Prinzip „Don’t call us, we call you. “
  • 34. Entwurfsmuster in ABAPStrategy Strategy (auch bekannt als Policy) Verhaltensmuster Zweck Definiert eine Familie von austauschbaren Algorithmen Motivation Diese Muster ermöglicht es, den Algorithmus unabhängig vom Verwender zu variieren. Folgende Fragestellungen helfen bei der Auswahl dieses Patterns: • Unterscheiden sich verwandte Klassen nur in ihrem Verhalten? • Werden unterschiedliche Varianten eines Algorithmus benötigt? Anwendbarkeit • Viele miteinander in Zusammenhang stehende unterscheiden sich nur in ihrem Verhalten • Verschiedene Variante eines Algorithmus sind erforderlich Konsequenzen • Es entstehen Familien verwandter Algorithmen • Strategy ist eine Alternative zum Erstellen von Unterklassen • Es können verschiedene Implementierungen desselben Verhaltens existieren
  • 36. Entwurfsmuster in ABAP  Wie sollte man loslegen? ◦ Verschafft Euch einen Überblick über die Muster ◦ Beginnt erste Muster anzuwenden  Singleton, Decorator, Strategy, … ◦ Erfasst und dokumentiert die verwendeten Muster Wie sollte man loslegen?
  • 37. Entwurfsmuster in ABAP  SAPPress Bücher ◦ Entwurfsmuster in ABAP (2015)  Nurgül Atilgan und Markus Straub  ISBN 978-3-8362-3810-6 ◦ Design Patterns in ABAP Objects (2017)  Kerem Koseoglu  ISBN 978-1-4932-1464-8 SAPPress Bücher zum Thema
  • 38. Entwurfsmuster in ABAP 27. September 2019 10:00 – Thema: TBD Nächstes Webinar
  • 39. Entwurfsmuster in ABAPUnsere vergangenen Webinare http://www.cadaxo.com/blog/
  • 40. Entwurfsmuster in ABAPIf you want to stay in touch … https://twitter.com/domibiglsap https://www.linkedin.com/in/dominik-bigl-9b98b68b https://www.xing.com/profile/dominik_bigl dominik.bigl@cadaxo.com See you again! Thank you for participating! https://twitter.com/foessleitnerj https://www.linkedin.com/in/johann-fößleitner-a9851b2a https://www.xing.com/profile/johann_foessleitner johann.foessleitner@cadaxo.com

Hinweis der Redaktion

  1. Erzeugungsmuster: Dient dazu, den Erzeugungsakt zu kapseln. Strukturmuster: Diese Gruppe von Mustern ermöglicht die einfache Anordnung von Klassen. Verhaltensmuster: Steuert das Verhalten einzelner Klassen und ermöglicht die Kommunikation zwischen Klassen
  2. Abstract Factory: Bereitrstellung einer Schnittstelle zum Erzeugen verwandter oder vonaneinder abh. Objektfamlien Adapter: Anpassung der Schnittstelle einer Klasse an ein anderes von den Clients erwartetes Interface Bridge: Entkopplung einer Abstraktion von ihrer Implementierung, so dass beide unabh. Voneinander variiert werden können Builder: Getrennte Handhabung von Erzeugungfs- und Darstellungsmechanismen komplexter Objekte Chain of Responsibility: Vermeidung der Kopplung eines Request-Auslösers mit seinem Empfänger, in dem mehr als ein Objekt ind ie Lage versetzt wird, den Request zu bearbeiten Command: Kapselung eines Requests als Objekt, um so die Parameterisierung von Clients mit verschiedenen Requests, Warteschlangen- oder Logging-Operationen und das Rückgängigmachen von Operationen zu ermöglichen Composite: Kompositionen von Objekten in Baumstrukturen zur Abbildung von Teil-Ganzes-Hierarchien Decorator: Dynamische Erweiterung der Funktionalität Facade: Bereitstellung einer einheitlichen Schjnittstelle zu einem Schnittstellensatz in einem Subsystem Factory Method: Definition einer Schznittstelle zur Objekterzeugung – wobei die Bestimmung der zu instanzierenden Klasse den Unterklasen überlassen bleibt Flyweight: Gemeinsame Nutzung feingranularer Objekte, ums sie auch in großer Anzahl effizien nutzen zu können Interpreter: Definition einer Repräsentation der Grammatik einer gegebenen Sprache sowie Bereitstellung eines Interpreters, der diese Grammatik nutzt Iterator: Bereitstellung eines sequenziellen Zugriffs auf die Elemente eines aggregierten Objekts, ohne dessen zugrunde liegende Struktur offen zu legen Mediator: Definition eines Objektes, das die Interaktionsweise eines Objektsatzes in sich kapselt. Memento: Erfassung und Externalisierugn des internen Zustands eines Objektes ohne dessen Kapselung zu beeinträchtigen. Observer: Definition einer 1 zu n Abh. Zwischen Objekten, damit im Fall einer Zustandsänmderung eines Objekts alle davon abhängigen Objekte benachrichtig und aktualisiert werden Prototype: Spezifikation der zu erzeugenden Objekttypen mittels einer prototypischen Instanz Proxy: Bereitstellung eines vorgelagerten Stellvertreterobjekts bzw. eines Platzhalters Singleton: Sicherstellung der Existenz von nur einer Instanz State: Anpassung der Verhaltesnweise eines Objekts im Fall einer internen Zustandsänderung Strategy: Definition einer Familile von einzelnen gekapselten austaschbaren Algorithmen Template Method: Definition einer Grundstruktur eines Algorithmus in einer Operation sowie Delegation einiger Ablaufschritte an Unterklassen Visitor: Darstellung einer auf die Elemente einer Objektstruktur anzuwendeen Operation