Zombieapps

 Zombieapps

We, programmers, are responsible for the architecture of the software we build. But, usually, we let others decide how we structure our systems.

Our applications solve a problem following the rules of a domain. Our
main task is building a software model of that domain. That model is the core, the soul of our system, and we usually sell it to the highest bidder.

In this talk I'll talk about domain models. We will discuss the the part they should play in our application and how its presence benefits the practices that, we, XP practitioners, love.

This talk is in Spanish and was given during XPDay 2013 in Madrid.

607891bd2cfbfa3a75ada8e110992d47?s=128

Javier Acero

April 23, 2013
Tweet

Transcript

  1. ZOMBIEAPPS Javier Acero jacegu jacegu javieracero.com

  2. None
  3. 1 2 3 BUSINESS LOGIC DATA SOURCES PRESENTATION

  4. 1 2 3 Busine Logic

  5. Business Logic is a non-technical term generally used to describe

    the functional algorithms that handle information exchange between a database and a user interface. - Wikipedia
  6. Business Logic is a non-technical term generally used to describe

    the functional algorithms that handle information exchange between a database and a user interface. - Wikipedia oh boy...
  7. - Martin Fowler, Patterns of Enterprise Application Architecture Business Logic

    is the work the application needs to do for the domain it’s working with.
  8. CALCULATIONS VALIDATIONS CALLS TO EXTERNAL SYSTEMS + + = BUSINESS

    LOGIC
  9. SCRIPT TRANSACTION

  10. TRANSACTIONS busine logic a

  11. PROCEDURES modeled a def newPurchase() DB.insert(); commit(); end

  12. simple easy to understand works great with simple datasources makes

    transaction boundaries visible 00 { ADVANTAGES
  13. 00 {duplicated code procedural code duplicated code procedural code duplicated

    code procedural code duplicated code procedural code ADVANTAGES DIS
  14. duplicated code get wo e a the a lication gro

    time
  15. MODULE TABLE

  16. OPERATIONS busine logic a TABLE ROWS on

  17. OBJECTS modeled a class Product { def purchase(); recordSets(); RECORD

    SETS & class RecordSet {
  18. avoids duplication better than a transaction script 00 { ADVANTAGES

    helps overcoming the relational - oo mismatch
  19. 00 { ADVANTAGES DIS modeling limited by and tied to

    the data model mechanisms basic to OOP like polymorphism are not available
  20. MODEL DOMAIN

  21. OBJECT busine logic a BEHAVIOUR

  22. OBJECT GRAPHS modeled a Product Price Stock ProductService ProductRepository

  23. - Martin Fowler, Patterns of Enterprise Application Architecture The Object

    Oriented way of implementing business logic.
  24. ADVANTAGES - Martin Fowler, Patterns of Enterprise Application Architecture The

    Object Oriented way of implementing business logic.
  25. 00 {the hardest to comprehend data sources get more complex

    overhead for simple business logic ADVANTAGES DIS
  26. effort to enhance complexity of the business logic domain model

    table module transaction script
  27. effort to enhance complexity of the business logic domain model

    table module transaction script 7.42
  28. Programming What about... eXtreme

  29. OOP SOLID DESIGN PATTERNS REFACTORING

  30. UBIQUITOUS LANGUAGE

  31. .........F...... ................ .....TESTING..... ......F......... ....**...F..F...

  32. ANEMIC antipa ern DOMAIN MODEL

  33. antipa ern DOMAIN MODEL DRIVEN TABLE

  34. None
  35. antipa ern DOMAIN MODEL CONNECTED

  36. None
  37. DOMAIN MODEL BUILD Ho t ... A RICH

  38. BBBBRRRRR RAAAAIIILS

  39. Thank You

  40. QUESTIONS?

  41. The icons and images used in this presentation were found

    using Google and belong to their respective authors. The Database Slide was taken from @unclebob’s talk at Ruby Midwest 2011 Credit
  42. Here is where I found them: Credit Spaghetti: http://goo.gl/KrGiL Zombie

    1: http://goo.gl/mHiYe Zombie 2: http://goo.gl/hk8i0 Zombie Apocalypse: http://goo.gl/7IIK6 Tool: http://goo.gl/75Svb