Enterprise-Softwarearchitektur und Domain Driven Design (DDD)



Ähnliche Dokumente
Die S.O.L.I.D-Prinzipien für C# Entwickler Thomas Claudius

SOLID für.net und JavaScript

ENTWURFSPRINZIPIEN DIE SOLID-PRINZIPIEN NACH ROBERT C. MARTIN 1 / 21. Markus Just Wissenschaftliche Vertiefung

CONTINUOUS LEARNING. Agile Anforderungsanalyse mit Impact Mapping

CI mit Forms im Weblogic Umfeld: CI mit Forms geht das

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

Thomas Schissler MVP Visual Studio ALM, artiso AG

Cloud Architektur Workshop

Interpretation des agilen Manifest

Lead Architects Forum Architekten im Dialog zu ILOG BRMS Moderation: Lars Klein, S&D

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Comparing Software Factories and Software Product Lines

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

ZuuL - Entwicklung eines Adventures

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

Microservices. Domain Driven Design. Michael Plöd -

Von Windows-Forms zu WPF mit Expression Blend? Thomas Müller conplement AG Nürnberg

Automatisiertes UI Testing. Mark Allibone, , #2

June Automic Hadoop Agent. Data Automation - Hadoop Integration

REQUIREMENTS ENGINEERING KONSTRUKTIVE QS REQUIREMENTS ENGINEERING 1

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Agile Softwareentwicklung

SERVICE SUCHE ZUR UNTERSTÜTZUNG

Die Oracle BI Trilogie von Trivadis

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Buchvorstellung Domain-Driven Design

Fragen Arthur Zaczek. Apr 2015

SOLID Verstehen und Anwenden

Design mit CASE-Tools

BIF/SWE - Übungsbeispiel

Die Macht, die uns umgibt. Design Prinzipien. Schneller und besser Software entwickeln Jörg Bächtiger

REST-Services mit Dropwizard ruck-zuck erstellt, dokumentiert und getestet

Formwerk AG. Die Sicherstellung konsistenter Nutzungserlebnisse über den gesamten SW-Produktlebenszyklus durch Human Centered Design.

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am

Control Templates. Thomas Claudius Huber

UX Erlebnisse am Frontend

Was ist Software-Architektur?

BPM im Kontext von Unternehmensarchitekturen. Konstantin Gress

Warum sich das Management nicht für agile Softwareentwicklung interessieren sollte - aber für Agilität

Mobile Apps: Von der Entwicklung bis zum Test mit HP Software

Requirements Engineering für IT Systeme

XING und LinkedIn-Integration in das erecruiter-bewerberportal

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

TOGAF The Open Group Architecture Framework

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Refactoring relationaler Datenbank. Shaoke Wu

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

LOAD TESTING 95% BRAUCHEN ES, 5 % MACHEN ES: LOAD TESTING MIT VS LEICHTGEMACHT NICO ORSCHEL MVP VS ALM, CONSULTANT

MetaNavigation der effizienteste Weg maximalen Mehrwert aus BI Metadaten zu ziehen

Titel BOAKdurch Klicken hinzufügen

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

Erfolgreiche Realisierung von grossen Softwareprojekten

Con.ECT IT-Service & Business Service Management SAM-Outsourcing: Lizenzmanagement als externer Service

DevOps bei den ID Build-Automatisierung statt Silo-Betrieb

ITIL und Entwicklungsmodelle: Die zwei Kulturen

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Behandlungsunterstützung mittels App. Lars Erdmann, Partner, Q_PERIOR AG SAP Mobile Forum, 17. April 2013

SOMA Reverse Engineering

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

3.4 Unified Process Ivar Jacobson, Grady Booch, James Rumbaugh: The Unified Software Development Process.

Continuous Database Integration mit Flyway

Look Inside: desite. modellorientiertes Arbeiten im Bauwesen. B.I.M.

Auswahl alter Klausuraufgaben aus einer ähnlichen Vorlesung Maßgeblich für die Prüfung sind die Vorlesungsinhalte!

Design for Testability in der Praxis David Völkel, codecentric AG

Inhalt. Fragestellungen. ...we make the invisible visible... Analysen und deren Anwendung Erfahrungen

Regionaltreffen Rhein-Main: 25 Jahre DOAG

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

zum IT- und Business Service Management

Der Begriff Cloud. Eine Spurensuche. Patric Hafner geops

SMART Newsletter Education Solutions April 2015

Consultant & Geschäftsführer, enpit consulting OHG ugb@enpit.de

Nico Orschel AIT GmbH & Co KG Marc Müller 4tecture GmbH. 95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht

Werkzeugunterstützte Betrachtungen von Software-Qualität und -Architekturen

! "# $% &'!( $ ) *(+,(,-

MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!

Configuration management

Wir erledigen alles sofort. Warum Qualität, Risikomanagement, Gebrauchstauglichkeit und Dokumentation nach jeder Iteration fertig sind.

Alexander Delater, Barbara Paech RUPRECHT-KARLS-UNIVERSITÄT HEIDELBERG

ENTWICKLUNG VON MARKETINGZIELEN UND DIE AUSGESTALTUNG EFFEKTIVER MARKETINGINSTRUMENTE IM TOURISMUSMARKETING. Bad Schmiedeberg 20.

Vgl. Kapitel 5 aus Systematisches Requirements Engineering, Christoph Ebert

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

Summer Workshop Mehr Innovationskraft mit Change Management

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Business-Analyse Probleme lösen, Chancen nutzen

Inhalt. 3.1 Der inkrementelle Entwurf im Überblick Flache Aufwandskurve Qualitätskriterien für den inkrementellen Entwurf...

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Taking RM Agile. Erfahrungen aus dem Übergang von traditioneller Entwicklung zu Scrum

Integration mit Service Repositories zur SOA Governance

Toolgestützte Prozessdokumentation. Prozessorientiertes E-Government, Joel Meir,

Was ist LDAP. Aufbau einer LDAP-Injection. Sicherheitsmaßnahmen. Agenda. LDAP-Injection. ITSB2006 WS 09/10 Netzwerkkonfiguration und Security

IT-Beratung: Vom Geschäftsprozess zur IT-Lösung

Beratung Messbar / Transparent / Reproduzierbar

Robert Hartmann Public v1.0 (Feb 2015) Architektur & Agilität - Praxisbericht

Cross-Platform Mobile Development mit Xamarin Mark

SAP NetWeaver Gateway. 2013

Lokale Installation von DotNetNuke 4 ohne IIS

Konzept zur Push Notification/GCM für das LP System (vormals BDS System)

Informationswirtschaft II Rational Unified Process (RUP)

Transkript:

Enterprise-Softwarearchitektur und Domain Driven Design (DDD) Manuel Meyer, Senior Consultant Trivadis AG BASEL BERN BRUGG LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN 1

Über mich Senior Consultant/Trainer bei Trivadis AG.NET C#, WPF, Microsoft Azure.NET Performance Management & Troubleshooting 2

Motivation 3

AGENDA 1. Einleitung 2. S.O.L.I.D Prinzipien 3. Domain-Driven Design 4. Von Data-Driven zu Domain-Driven in.net 5. Zusammenfassung 4

Einleitung 5

Was ist Softwarearchitektur? Software architecture is the high level structure of a software system, the discipline of creating such a high level structure, and the documentation of this structure. -wikipedia 6

7

Was ist Softwaredesign? Software design is the process of implementing software solutions to one or more set of problems. -wikipedia 8

9

Was ist Softwaredesign? Industrial design is the use of both applied art and applied science to improve the aesthetics, design, ergonomics, functionality, and usability of a product. -wikipedia 10

Probleme in der Softwareentwicklung (Auszug) unwartbare Anwendungen Spaghetti Code Knowhow Abfluss keine Tests fehlende Erweiterbarkeit. Probleme im Betrieb Altlasten 11

Probleme in der Softwareentwicklung Kosten & Legacy 12

13

Probleme in der Softwareentwicklung Legacy 14

15

16

Probleme in der Softwareentwicklung legacy code is simply code without tests -Michael Feathers 17

18

19

Wie können Architektur & Design helfen? Reduktion der Legacy Ermöglichen der NICHT-FUNKTIONALEN Anforderungen: Extensibility Maintainability Reusability Testability... -> Unterstützung durch korrekten OOP Einsatz (S.O.L.I.D) -> Unterstützung durch Domain Driven Design (DDD oder DDDD). 20

S.O.L.I.D Principles 21

SOLID Principles SRP: Single Responsibility Principle OCP: Open Closed Principle LSP: Liskov Substitution Principle ISP: Interface Segregation Principle DIP: Dependency Inversion Principle 22

SOLID Principles Robert C. Martin (a.k.a. Uncle Bob) Software Consultant Writer Principles of OOD Agile Software Development: Principles, Patterns and Practices Clean Code First Chairman of the Agile Alliance Michael Feathers 23

SOLID Principles: SRP SRP: Single Responsibility Principle There should never be more than one reason for a class to change 24

SOLID Principles: SRP SRP: Single Responsibility Principle Verantwortlichkeit = Axis of change Gilt für alle Objekte: Assemblies, Klassen, Methoden. 25

SOLID Principles: SRP Beispiel 1: Rectangle 26

SOLID Principles: SRP Beispiel 1: Rectangle 27

SOLID Principles: SRP Beispiel 2 Customer Persistierung: 28

SOLID Principles OCP: Open/Closed Principle Software entities (classes, modules, functions, etc.), should be open for extension, but closed for modification Bertrand Meyer, 1988 29

SOLID Principles OCP: Open/Closed Principle Open for Extension = Das Objekt kann um neue Anforderungen erweitert werden Closed for Modification = Bestehender Code wird nicht verändert -> Änderungen werden durch hinzufügen von neuem Code, NICHT durch Änderung von altem Code gemacht. -> Der Schlüssel liegt in der Abstraktion. 30

SOLID Principles OCP OCP: Open/Closed Principle 31

SOLID Principles OCP OCP: Open/Closed Principle 32

SOLID Principles: LSP LSP: Liskov Substitution Principle Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program Barbara Liskov, MIT 1987 33

SOLID Principles: LSP LSP: Liskov Substitution Principle Eigentlich eine Erweiterung von OCP Wir müssen sicherstellen, dass abgeleitete Klassen das Verhalten der Basisklasse (inklusive möglicher ANNAHMEN!) NICHT verändern. 34

SOLID Principles: LSP 35

SOLID Principles: LSP LSP: Liskov Substitution Principle Unsere Ableitung war syntaktisch ok, hat aber zu einem semantischen Fehler geführt. Der Fehler kam erst beim Testing raus Wir haben die IS-A Beziehung missbraucht Mit Breite und Höhe hatten wir einen Hinweis Wir müssen sicherstellen, dass abgeleitete Klassen das Verhalten der Basisklasse (inklusive möglicher ANNAHMEN!) NICHT verändern. 36

SOLID Principles: ISP ISP: Interface Segregation Principle Clients should not be forced to depend upon interfaces that they do not use Robert C. Martin, Xerox 37

SOLID Principles: ISP ISP: Interface Segregation Principle Interface Pollution (Clients müssen Interfaces implementieren, welche sie nicht brauchen.) Keine fat Interfaces Viele kleine Interfaces Grosse Interfaces = mehr Abhängigkeiten. 38

SOLID Principles: ISP Beispiel 1: Xerox 39

SOLID Principles: ISP Beispiel 2: ASP.NET MembershipProvider 40

SOLID Principles DIP: Dependency Inversion Principle A. High-level modules should not depend on low-level modules. Both should depend on abstractions. B. Abstractions should not depend on details. Details should depend on abstractions. Robert C. Martin 41

SOLID Principles: DIP PolicyLayer UtilityLayer ColorConsole Writer 42

SOLID Principles: DIP PolicyLayer Mechanism Layer UtilityLayer 43

S.O.L.I.D Bad Smells If-Statement, welches Typen unterscheidet -> OCP Interface-Methoden, welche in vielen Fällen nicht implementiert werden müssen -> ISP Modelierung von IS-A Beziehungen, welche nicht ganz passen -> LSP Interface Pollution -> ISP FAT Interfaces -> ISP Methodennamen wie: UpdateAndSaveCustomer(), VerifyAndSaveData() -> SRP Klassennamen wie CustomerManager -> SRP. 44

S.O.L.I.D Resources SOLID Wikipedia http://en.wikipedia.org/wiki/solid_(object-oriented_design) Hanselminutes Podcast 145: SOLID Principles with Uncle Bob http://www.hanselman.com/blog/hanselminutespodcast145solidprinciples WithUncleBobRobertCMartin.aspx Pablos Solid Ebook http://lostechies.com/wp-content/uploads/2011/03/pablos_solid_ebook.pdf Objectmentor.com (Uncle Bob) http://www.objectmentor.com/resources/articles/srp.pdf http://www.objectmentor.com/resources/articles/ocp.pdf http://www.objectmentor.com/resources/articles/lsp.pdf http://www.objectmentor.com/resources/articles/isp.pdf http://www.objectmentor.com/resources/articles/dip.pdf 45

Domain Driven Design 46

Domain Driven Design 2003: Domain-Driven Design by Eric Evans Tackling Complexity in the Heart of Software 47

Was ist Domain Driven Design? a collection of principles and patterns that help developers craft elegant object system. Ein philosophischer Ansatz, wie Problemdomänen in Software implementiert werden sollten DDD is just OO software done right. 48

Domain Driven Design Der Hauptfokus liegt auf der Domäne und deren Logik Komplexität wird durch ein Model sichtbar gemacht Domain Experts und Entwickler verfeinern das Model iterativ Aus dem Model entsteht der Code. 49

Der Klassische Ansatz & XAML ASP.NET WebAPI ORM 50

Domain Driven Design Ubiquitous Language Model 51

Domain Driven Design Make implicit concepts explicit» Supple Design Persistence Ignorance. DDD Konzepte Ubiquitous Language Knowledge-Rich Model 52

Domain Driven Design Aggregates Entities Value Objects Mit DDD Building Blocks und Techniken wird das Model zu Code Strategies Modules. Repositories Ubiquitous Language 53

Domain Driven Design Bounded Context Das Model und die UL entwickeln sich weiter Context Map Distillation Ubiquitous Language 54

Ubiquitous Language Vereinbarte Sprache zwischen Domain Experts und Technik Wird im Lauf des Projekts iterativ optimiert und erweitert Was im Model benannt wird fliesst in die UL ein. Ubiquitous Language 55

PI: Persistence Ignorance Es gibt keine Datenbank! Der Fokus liegt auf der Domäne Entkopplung von Applikation und Infrastruktur. 56

DDD Building Blocks 57

DDD Building Blocks 58

Layered Architecture gemäss Eric Evans Wir isolieren den Domain Layer Der Fokus liegt auf dem Domain Layer Bei der Entwicklung und Diskussion des Models blenden wir die anderen Layers aus. 59

DDD Building Blocks 60

DDD Building Blocks 61

Entities Entities stellen Business Objekte dar Entities haben eine Identität und einen Life Cycle Entities enthalten die Business Logik Entities sind Knowledge-Rich. 62

Value Objects Kleine Datenpakete Keine Identität Müssen nicht unterscheidbar sein Vereinfachen das Model / entfernen Komplexität Sind Immutable 63

DDD Building Blocks 64

DDD Building Blocks 65

Aggregates Fachlich sinnvolle Konstrukte aus Entitäten und Value Objects Haben immer 1 Root Entity Ausserhalb des Aggregates kann nur die Root Entity referenziert werden Die Root Entity ist verantwortlich für die Konsistenz des Aggregates. 66

DDD Building Blocks 67

DDD Building Blocks 68

Factories Erstellen Entities/Aggregates Benützen FACTORY Patterns Kapseln die Logik, welche zum erstellen komplexer Objekte nötig ist. 69

Repositories Kapseln die Persistierung von Entities/Aggregates 70

DDD Building Blocks 71

DDD Building Blocks 72

Services Kapseln Logik, welche nicht bestimmten Entities zugewiesen werden kann. Stateless by Design Domain vs. Application vs. Infrastructure Services. 73

DDD Konzepte Making implicit Concepts explicit Supple Design Intention-Revealing Interfaces Side Effect Free Functions Assertions (pre-, postconditions, invariants) Bounded Context / Context Map & Continuous Integration Distillation Generic SubDomains Domain Vision Statement. 74

DDD Konzepte Making Implicit Concepts Explicit * Die Capacity darf nicht überschritten werden! * Ubiquitous Language 75

DDD Konzepte Bounded Context/Context Map/Continuous Integration Definition des Kontexts, in welchem ein Model gültig ist. Grenzen: Teams, Teile der Applikation, Code, Infrastruktur Definition der Beziehungen zwischen Models Die Context Map zeigt das Big Picture Continuous Integration stellt sicher, dass die verschiedenen BCs zueinander passen 76

DDD Konzepte Bounded Context/Context Map/Continuous Integration 77

DDD Konzepte Context Map 78

DDD Konzepte: Distillation Wie gewinnt man die Essenz? Generische vs. Essentielle Konzepte Generic SubDomains Dokumentation Domain Vision Statement (1p) Highlighted Core (3-7p). 79

4 DDD Best Practices von Eric Evans 1. Stay Hands-On: Modelers need to code! 2. Focus on concrete scenarios 3. Do NOT apply DDD to everything. Draw a context map! 4. Experiment a lot and make lots of mistakes. 80

DDD Anti-Patterns Anemic Domain Model Smart UI Ein Model, in welchem die Entitäten nur Daten transportieren Data Driven Design (Bottom-Up). 81

Von Data-Driven zu Domain-Driven in.net 82

DDD in.net N-Layered Domain-Oriented Architecture Guide with.net 4.0 Cesar de la Torre, Architect Advisor, Microsoft Applying Domain Driven Design and Patterns Jimmy Nilsson.NET Domain-Driven Design with C#: Problem Design Solution Tim McCarthy 83

N-Layered DDD Architecture Eric Evans 84 C. De la Torre

N-Layered DDD Architecture C. De la Torre 85

N-Layered DDD Architecture Layering 86

N-Layered DDD: Technology Map MS Technology Guide for Business Applications (http://www.microsoft.com/net/nettechnologyguidance) 87

Exemplarisches Vorgehen (gemäss Tim McCarthy) 1. Das Domain Model designen 2. Die Aggregates bestimmen 3. Die Aggregate Boundaries bestimmen 4. Die Repositories designen 5. Tests dazu schreiben 6. Die Repositories implementieren. 88

Exemplarisches Vorgehen (gemäss Tim McCarthy) 1. Das Domain Model designen 89

Exemplarisches Vorgehen (gemäss Tim McCarthy) 2. Die Aggregates bestimmen 90

Exemplarisches Vorgehen (gemäss Tim McCarthy) 3. Die Aggregate Boundaries bestimmen 91

Exemplarisches Vorgehen (gemäss Tim McCarthy) 4. Die Repositories designen 92

Exemplarisches Vorgehen (gemäss Tim McCarthy) 4. Die Repositories designen 93

Exemplarisches Vorgehen (gemäss Tim McCarthy) 5. Tests dazu schreiben 94

DDD Praxis Tipps Beim designen von Entitäten den Datenzugriff ausblenden, später ein Tool wie z.b. EF Code First benützen für den Datenzugriff. Entities: Property Setter privat markieren, Datenmodifikation über Methoden kontrollieren. Instanzierung in Factories auslagern Parameterlosen Konstruktor verstecken Nicht essentielle Aufgaben über Bounded Context auslagern und z.b. mit simplem CRUD oder gar OTS lösen. Simple Domänenobjekte identifizieren und mit Value Objekts abbilden Beziehungen identifizieren und vereinfachen. 95

Zusammenfassung 96

Zusammenfassung Kosten & Legacy 97

SOLID Principles SRP: Single Responsibility Principle OCP: Open Closed Principle LSP: Liskov Substitution Principle ISP: Interface Segregation Principle DIP: Dependency Inversion Principle 98

Domain Driven Design Make implicit concepts explicit» Supple Design Persistence Ignorance. DDD Konzepte Ubiquitous Language Knowledge-Rich Model 99

DDD Building Blocks 100

N-Layered DDD Architecture Eric Evans 101 C. De la Torre

Exemplarisches Vorgehen (gemäss Tim McCarthy) 102

Zusammenfassung 103

Vielen Dank! Manuel Meyer Senior Consultant Trivadis AG manuel.meyer@trivadis.com BASEL BERN BRUGG LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN