Successfully reported this slideshow.
Your SlideShare is downloading. ×

The art of Software Design

Ad

THE ART OF (SOFTWARE) DESIGN
Jérémie GRODZISKI - Thomas PIERRAIN
DDD Meetup - February 2017

Ad

HAS 'AGILE' KILLED
DESIGN IN SOFTWARE?

Ad

PROBABLY BUT…

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Upcoming SlideShare
CQRS without event sourcing
CQRS without event sourcing
Loading in …3
×

Check these out next

1 of 87 Ad
1 of 87 Ad

The art of Software Design

Download to read offline


Software Design ... a nice expression, uh? But what does it mean to "design a software"? What are the prerequisites? What are the pitfalls to avoid? As Software Designers we would like to highlight on what makes us build simple, useful and above all effective software. And of course, we will talk about Domain-Driven Design in that journey ;-)

Talk made at http://domain-driven-design.eu/the-art-of-design/


Software Design ... a nice expression, uh? But what does it mean to "design a software"? What are the prerequisites? What are the pitfalls to avoid? As Software Designers we would like to highlight on what makes us build simple, useful and above all effective software. And of course, we will talk about Domain-Driven Design in that journey ;-)

Talk made at http://domain-driven-design.eu/the-art-of-design/

Advertisement
Advertisement

More Related Content

Advertisement

The art of Software Design

  1. 1. THE ART OF (SOFTWARE) DESIGN Jérémie GRODZISKI - Thomas PIERRAIN DDD Meetup - February 2017
  2. 2. HAS 'AGILE' KILLED DESIGN IN SOFTWARE?
  3. 3. PROBABLY BUT…
  4. 4. ’AGILE' WANTED TO KILL BIG UPFRONT DESIGN ONLY
  5. 5. BIG UPFRONT DESIGN DESIGN ≠
  6. 6. LACK OF DESIGN EMERGENT DESIGN ≠
  7. 7. DON'T THROW THE BABY WITH THE BATHWATER DON’T THROW THE DESIGN « BABY » WITH…
  8. 8. WHAT IS DESIGN ?
  9. 9. DESIGN IS MAKING DECISIONS
  10. 10. MAKING DECISIONS TO BUILD SOMETHING
  11. 11. EVERYONE IS MAKING DECISIONS
  12. 12. EVERYONE IS MAKING DECISIONS… BUT WITH DIFFERENT IMPACTS
  13. 13. BUILDING SOMETHING OK, BUT WHY?
  14. 14. WHY? WHY? WHY? WHY? WHY? BUILDING SOMETHING OK, BUT WHY?
  15. 15. SOLUTION SPACE PROBLEM SPACE WHY WHAT
  16. 16. HOW SOLUTION SPACE
  17. 17. PROBLEM SPACE Problem Usages Languages Domain Requirements Constraints People
  18. 18. PROBLEM SPACE Problem Usages Languages Domain Requirements Constraints People DOMAIN 
 ( noun, do·main) Set of concepts That through usages Help to solve problems
  19. 19. PROBLEM SPACE Problem Usages Languages Domain Requirements Constraints People DOMAIN Solve Problems
  20. 20. SOLUTION SPACE Software Model Design Patterns Heuristics Feedback
  21. 21. Driven PROBLEM SPACE Problem Usages Languages Domain Requirements Constraints People SOLUTION SPACE Software Model Design Patterns Heuristics Feedback
  22. 22. PROBLEM SPACE Domain SOLUTION SPACE Design- Driven
  23. 23. HEURISTICS? practical method not guaranteed to be optimal or perfect, but sufficient for the immediate goals.
  24. 24. PATTERNS FAVORITES ALGORITHMS … FAVORITES SOLUTIONS FAVORITES APPROACHES OUR MENTAL MODELS
  25. 25. HOUSTON?
  26. 26. TRAPPED BY YOUR OWN HEURISTICS?
  27. 27. SYSTEMATIC LAYERS ORMFRAMEWORKS ANEMIC BEHAVIORS …IOC
  28. 28. FROM HEURISTICS TO SOLUTION-FIRST BIAS
  29. 29. MOST DEVELOPERS LIKES… SOLUTIONS
  30. 30. OUR USERS ARE TIRED OF C.R.U.D. APPLICATIONS
  31. 31. C.R.U.D. APPLICATIONS
  32. 32. THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  33. 33. Create THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  34. 34. Ctrl-C THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  35. 35. Update THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  36. 36. Ctrl-V THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  37. 37. Create THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  38. 38. Ctrl-V THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  39. 39. Update THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  40. 40. Ctrl-V THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  41. 41. … THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  42. 42. I’m doing all 
 the job 
 actually… THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  43. 43. THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  44. 44. Damn it! THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  45. 45. Damn I.T! THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  46. 46. WHY?!?
  47. 47. MANY REASONS BUT…
  48. 48. DATA MODELS INSTEAD OF DOMAIN MODELS
  49. 49. LAZINESS « Laziness is nothing more than the habit of resting before you get tired. » (Jules Renard)
  50. 50. A DDD ALTERNATIVE? THE APP REALLY HELPS WITH A SPECIFIC & CONSISTANT USER JOURNEY
  51. 51. OTHER BIASES?
  52. 52. BEWARE OF FADS micro-services, blockchains, …
  53. 53. THE ABSTRACTION- FIRST PITFALL
  54. 54. CONCRETE THINGS FIRST!
  55. 55. THE CV-DRIVEN DEVELOPMENT PANDEMIC
  56. 56. I.T. AS SEEN BY THE BUSINESS
  57. 57. WE MUST FOCUS MORE ON THE BUSINESS CONCERNS!
  58. 58. DESIGN IS CONSCIOUS CHOICES (Banksy)
  59. 59. ALWAYS CONNECT YOUR DECISIONS TO YOUR BUSINESS OBJECTIVES
  60. 60. DESIGN IS THE ART OF TRADE-OFF
  61. 61. design = f(requirements + constraints)trade-off
  62. 62. DESIGN SOFTWARE?
  63. 63. ALIGNMENT & EFFICIENCY solution space problem space
  64. 64. SOME CONSTRAINTS (the mythical man-month)
  65. 65. THERMODYNAMICS OF SOFTWARE
  66. 66. HEXAGONAL ARCHITECTURE DOMAIN CODE (domain first)
  67. 67. HEXAGONAL ARCHITECTURE DOMAIN CODE DO NOT MESS BUSINESS CODE INFRA CODE (infra later)
  68. 68. STANDARD SOFTWARE DESIGN (take all your favorite heuristics with you ;-(
  69. 69. CONSCIOUS (SOFTWARE) DESIGN (take only what you need for the usages/contraints)
  70. 70. CONSCIOUS (SOFTWARE) DESIGN USAGES FIRST - INFRA LATER HEXAGONAL ARCHITECTURE EXAMPLES & BEHAVIOURS (TESTS) DRIVEN EXPLICIT (AND BOUNDED) CONTEXTS
  71. 71. SOFTWARE DESIGN VS. REAL WORLD DESIGN?
  72. 72. DUPLICATION OF CODE AND DATA AT ALMOST NO COST
  73. 73. SCALING
  74. 74. EASY MODULARIZATION AND INTERFACING
  75. 75. BEWARE OF THE BUILDING METAPHOR
  76. 76. WRAP UP
  77. 77. MINDSET APPROACH
  78. 78. MINDSET APPROACH
  79. 79. ALWAYS MAKE CONSCIOUS DECISIONS { Value | Constraint } (Banksy)
  80. 80. FOSTER CONSCIOUS DESIGN!
  81. 81. STAY CONSCIOUS OF YOUR BIAS
  82. 82. MINDSET APPROACH
  83. 83. MINDSET APPROACH
  84. 84. USAGES FIRST …INFRA LATER
  85. 85. BE ADAPTABLE RATHER THAN PREDICTABLE
  86. 86. THANK YOU! JOIN US @DDDREBOOT

×