Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

DDD Foundation: Improving legacy

478 Aufrufe

Veröffentlicht am

Today programmers do not develop applications from scratch, but they spend their time fixing, extending, modifying and enhancing existing applications. These old systems are often a large tangled mess, where changes become harder and harder. DDD can help us to improve this situation and to meltdown the big ball of mud.

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

DDD Foundation: Improving legacy

  1. 1. WPS - Workplace Solutions GmbH //// Hans-Henny-Jahnn-Weg 29 //// 22085 HAMBURG Improving Legacy with DDD Dr. Carola Lilienthal, cl@wps.de, @cairolali www.wps.de
  2. 2. 463 tangled classes belonging to 10 different components
  3. 3. 06.02.2019 //// Seite 7WPS - Workplace Solutions GmbH ▪Use design patterns ▪Do test driven development ▪Write modular classes with one single responsibility ▪Aim for high cohesion and low coupling MOB ARCHITECTING WITH THE TEAM Structure101 SotoArc Lattix
  4. 4. 06.02.2019 //// Seite 8WPS - Workplace Solutions GmbH TECHNICAL ARCHITECTURE User Interface Domain Application Technicallayering
  5. 5. 06.02.2019 //// Seite 9WPS - Workplace Solutions GmbH NO! DOMAIN-DRIVEN ARCHITECTURE Domain Module B Domain Module A Loose coupling = as little coupling as possible! Technicallayering Domain Module C User Interface User InterfaceUser Interface Domain Application Domain Application Domain Application
  6. 6. 06.02.2019 //// Seite 10WPS - Workplace Solutions GmbH EACH BOUNDED CONTEXT HAS ITS OWN MODEL ▪ Each team can work freely on their own domain model ▪ Know the limits ▪ Stay inside the borders
  7. 7. 06.02.2019 //// Seite 11WPS - Workplace Solutions GmbH DOMAIN MODEL IN LEGACY CODE ▪ Large domain classes (entities/aggregates) ▪ Unmanageable complexity ▪ Several models mixed and squeezed together ▪ Strong dependencies between teams Foto: CMS Higgs-even/Wikipedia/CC-BY-SA-3.0
  8. 8. 06.02.2019 //// Seite 14WPS - Workplace Solutions GmbH HOW DO I CUT MY LEGACY TO FIT THE DOMAIN? ▪ By departments in the organization or groups of domain experts ▪ According to differences in the use/definition of key concepts in the domain ▪ According to boundaries in the business process described by the domain experts ▪ Information runs in one direction ▪ Processes are executed in different rhythms ▪ Processes are triggered by different triggers
  9. 9. 06.02.2019 //// Seite 15WPS - Workplace Solutions GmbH TICKET AGENT MOVIEGOER WEEKLY SCHEDULE << in Arbeit >> REQUESTED NUMBER OF SEATS AUDITORIUM PLAN LIST OF AUDITORIUM PLANS SOLD SEATS TICKETS FILM SHOW FOUND SEATS AUDITORIUM PLAN WEEKLY SCHEDULE << finalized >> FILM DISTRIBUTOR CINEMA MANAGER AD AGENCY ADVERTISMENT BOOKING PLAN PLAN FOR FILM SHOWS COUNTRYWIDE NUMBER OF VISITORS AVAILABILITY OF FILMS 1 6 2 10 5 3 8 4 7 9 11 12 13 14 AUDITORIUM PLAN 15 STARTS WORKING ON CHECKS THE NEGOTIATES WITH FINALIZES THE AND CREATES FOR THE UPCOMMING WEEK MONEY TICKETS TICKETS ASKS FOR FOR A OPENS A CLOSES THE FROM THE OFFERS TO GIVES TO SEARCHES ON THE ON THE MARKS PRINTS GIVES THE TO THE
  10. 10. 06.02.2019 //// Seite 16WPS - Workplace Solutions GmbH TICKET AGENT MOVIEGOER WEEKLY SCHEDULE << in Arbeit >> REQUESTED NUMBER OF SEATS AUDITORIUM PLAN LIST OF AUDITORIUM PLANS SOLD SEATS TICKETS FILM SHOW FOUND SEATS AUDITORIUM PLAN WEEKLY SCHEDULE << finalized >> FILM DISTRIBUTOR CINEMA MANAGER AD AGENCY ADVERTISMENT BOOKING PLAN PLAN FOR FILM SHOWS COUNTRYWIDE NUMBER OF VISITORS AVAILABILITY OF FILMS 1 6 2 10 5 3 8 4 7 9 11 12 13 14 AUDITORIUM PLAN 15 STARTS WORKING ON CHECKS THE NEGOTIATES WITH FINALIZES THE AND CREATES FOR THE UPCOMMING WEEK MONEY TICKETS TICKETS ASKS FOR FOR A OPENS A CLOSES THE FROM THE OFFERS TO GIVES TO SEARCHES ON THE ON THE MARKS PRINTS GIVES THE TO THE Trigger Trigger
  11. 11. 06.02.2019 //// Seite 17WPS - Workplace Solutions GmbH TICKET AGENT MOVIEGOER WEEKLY SCHEDULE << in Arbeit >> REQUESTED NUMBER OF SEATS AUDITORIUM PLAN LIST OF AUDITORIUM PLANS SOLD SEATS TICKETS FILM SHOW FOUND SEATS AUDITORIUM PLAN WEEKLY SCHEDULE << finalized >> FILM DISTRIBUTOR CINEMA MANAGER AD AGENCY ADVERTISMENT BOOKING PLAN PLAN FOR FILM SHOWS COUNTRYWIDE NUMBER OF VISITORS AVAILABILITY OF FILMS 1 6 2 10 5 3 8 4 7 9 11 12 13 14 AUDITORIUM PLAN 15 STARTS WORKING ON CHECKS THE NEGOTIATES WITH FINALIZES THE AND CREATES FOR THE UPCOMMING WEEK MONEY TICKETS TICKETS ASKS FOR FOR A OPENS A CLOSES THE FROM THE OFFERS TO GIVES TO SEARCHES ON THE ON THE MARKS PRINTS GIVES THE TO THE Trigger Triggeronce a week
  12. 12. 06.02.2019 //// Seite 18WPS - Workplace Solutions GmbH TICKET AGENT MOVIEGOER WEEKLY SCHEDULE << in Arbeit >> REQUESTED NUMBER OF SEATS AUDITORIUM PLAN LIST OF AUDITORIUM PLANS SOLD SEATS TICKETS FILM SHOW FOUND SEATS AUDITORIUM PLAN WEEKLY SCHEDULE << finalized >> FILM DISTRIBUTOR CINEMA MANAGER AD AGENCY ADVERTISMENT BOOKING PLAN PLAN FOR FILM SHOWS COUNTRYWIDE NUMBER OF VISITORS AVAILABILITY OF FILMS 1 6 2 10 5 3 8 4 7 9 11 12 13 14 AUDITORIUM PLAN 15 STARTS WORKING ON CHECKS THE NEGOTIATES WITH FINALIZES THE AND CREATES FOR THE UPCOMMING WEEK MONEY TICKETS TICKETS ASKS FOR FOR A OPENS A CLOSES THE FROM THE OFFERS TO GIVES TO SEARCHES ON THE ON THE MARKS PRINTS GIVES THE TO THE Trigger Triggeronce a week each time a customer asks for a ticket
  13. 13. 06.02.2019 //// Seite 19WPS - Workplace Solutions GmbH TICKET AGENT MOVIEGOER WEEKLY SCHEDULE << in Arbeit >> REQUESTED NUMBER OF SEATS AUDITORIUM PLAN LIST OF AUDITORIUM PLANS SOLD SEATS TICKETS FILM SHOW FOUND SEATS AUDITORIUM PLAN WEEKLY SCHEDULE << finalized >> FILM DISTRIBUTOR CINEMA MANAGER AD AGENCY ADVERTISMENT BOOKING PLAN PLAN FOR FILM SHOWS COUNTRYWIDE NUMBER OF VISITORS AVAILABILITY OF FILMS 1 6 2 10 5 3 8 4 7 9 11 12 13 14 AUDITORIUM PLAN 15 STARTS WORKING ON CHECKS THE NEGOTIATES WITH FINALIZES THE AND CREATES FOR THE UPCOMMING WEEK MONEY TICKETS TICKETS ASKS FOR FOR A OPENS A CLOSES THE FROM THE OFFERS TO GIVES TO SEARCHES ON THE ON THE MARKS PRINTS GIVES THE TO THE Trigger Triggeronce a week each time a customer asks for a ticket Cinema management Ticket sales
  14. 14. 06.02.2019 //// Seite 20WPS - Workplace Solutions GmbH TICKET AGENT MOVIEGOER WEEKLY SCHEDULE << in Arbeit >> REQUESTED NUMBER OF SEATS AUDITORIUM PLAN LIST OF AUDITORIUM PLANS SOLD SEATS TICKETS FILM SHOW FOUND SEATS AUDITORIUM PLAN WEEKLY SCHEDULE << finalized >> FILM DISTRIBUTOR CINEMA MANAGER AD AGENCY ADVERTISMENT BOOKING PLAN PLAN FOR FILM SHOWS COUNTRYWIDE NUMBER OF VISITORS AVAILABILITY OF FILMS 1 6 2 10 5 3 8 4 7 9 11 12 13 14 AUDITORIUM PLAN 15 STARTS WORKING ON CHECKS THE NEGOTIATES WITH FINALIZES THE AND CREATES FOR THE UPCOMMING WEEK MONEY TICKETS TICKETS ASKS FOR FOR A OPENS A CLOSES THE FROM THE OFFERS TO GIVES TO SEARCHES ON THE ON THE MARKS PRINTS GIVES THE TO THE Trigger Triggeronce a week each time a customer asks for a ticket Cinema management Ticket sales information flow
  15. 15. 06.02.2019 //// Seite 21WPS - Workplace Solutions GmbH TICKET AGENT MOVIEGOER WEEKLY SCHEDULE << in Arbeit >> REQUESTED NUMBER OF SEATS AUDITORIUM PLAN LIST OF AUDITORIUM PLANS SOLD SEATS TICKETS FILM SHOW FOUND SEATS AUDITORIUM PLAN WEEKLY SCHEDULE << finalized >> FILM DISTRIBUTOR CINEMA MANAGER AD AGENCY ADVERTISMENT BOOKING PLAN PLAN FOR FILM SHOWS COUNTRYWIDE NUMBER OF VISITORS AVAILABILITY OF FILMS 1 6 2 10 5 3 8 4 7 9 11 12 13 14 AUDITORIUM PLAN 15 STARTS WORKING ON CHECKS THE NEGOTIATES WITH FINALIZES THE AND CREATES FOR THE UPCOMMING WEEK MONEY TICKETS TICKETS ASKS FOR FOR A OPENS A CLOSES THE FROM THE OFFERS TO GIVES TO SEARCHES ON THE ON THE MARKS PRINTS GIVES THE TO THE Trigger Triggeronce a week each time a customer asks for a ticket Cinema management Ticket sales information flow WEEKLY SCHEDULE << printed >>
  16. 16. 06.02.2019 //// Seite 22WPS - Workplace Solutions GmbH MODULARIZATION BY DOMAIN: HOW DO WE PROCEED? Refactorings Analyze + Discussion Define measures ArchitectureRekonstruction Source- Code Domain Modules Bounded Contexts Alternatives • Prioritization of measures • Planning into the development cycle Violations • Identified with the domain experts • Discuss ubiquitous language + processes • Find bounded contexts (first ideas)
  17. 17. 06.02.2019 //// Seite 23WPS - Workplace Solutions GmbH APPLYING BUILDING BLOCKS TO LEGACY CODE User Interface Domain Application Layeringbypatterns Bounded Context Repository Factory Model View ValueObject Service Entity/ Aggregate Controller
  18. 18. 463 tangled classes belonging to 10 different components
  19. 19. 06.02.2019 //// Seite 25WPS - Workplace Solutions GmbH entities valueObjects
  20. 20. 06.02.2019 //// Seite 26WPS - Workplace Solutions GmbH entities valueObjects
  21. 21. 06.02.2019 //// Seite 27WPS - Workplace Solutions GmbH184 tangled classes left
  22. 22. 06.02.2019 //// Seite 28WPS - Workplace Solutions GmbH MODULARITY MATURITY INDEX (MMI) 612.869 LOC 14.756.435 LOC 252.062 LOC 804.093 LOC 543.388 LOC 1.035.668 LOC 486.358 LOC 175.258 LOC 42.311 LOC 193.383 LOC 643.466 LOC 245.754 LOC 2.890.204 LOC 141.696 LOC 512.086 LOC 9.988.363 LOC 200.591 LOC 922.949 LOC 22.658 LOC 663.862 LOC 3.270.188 LOC 1.521.357 LOC 0 2 4 6 8 10
  23. 23. 06.02.2019 //// Seite 30WPS - Workplace Solutions GmbH @cairolali cl@wps.de www.llsa.de English version in preparation THANX!

×