SlideShare a Scribd company logo
1 of 34
INCOMPLETEBYDESIGN
thoughts on agile architectures




agile portugal 2010      hugo.sereno.ferreira
Reality Check
Our field has been in crisis for more than 30 years:
  Most projects are beyond schedule and over budget.
  Requirements are hard to formalize...
  ... change faster than implementation.
  ... are outdated on day one.
Reality Check
Our field has been in crisis for more than 30 years:
    Most projects are beyond schedule and over budget.
    Requirements are hard to formalize...
    ... change faster than implementation.
    ... are outdated on day one.



“   We really don’t know what we need — an honest
    customer.
Our struggle... our job...
               Domain
    Reality




    Software
Soft. Eng. in the wild 101

        !"#"$$%#&'#()*'#$+#
         *,',-*./#-01#23#      >,44666#?*$=-=4)#"/5'#5'#8/-"#
           450,'#$+#.$1,6#    8,9:,#!"#$%#+$*@#=&"#8/-"#8,#
        7&"#8,9:,#;-0-<,1     *,-44)#&$!'(#8-'#;$*,#45%,#-#
            "$#=&541#"/5'     :544-<,#85"/#';-44#/$&','6#A-0#              7D3
          ')'",;#)$&9:,#        )$&#./-0<,#5"#50666#B#1-)'C
               -'%,16




                                                                hugo.sereno.ferreira 2007
Agile Manifesto

 Individuals and interactions over processes and tools,
 Working software over comprehensive documentation,
 Customer collaboration over contract negotiation,
 Responding to change over following a plan.
Agile Manifesto

 Individuals and interactions over processes and tools,
 Working software over comprehensive documentation,
 Customer collaboration over contract negotiation,
 Responding to change over following a plan.


      What about the Architecture and Design?
Agile Manifesto

 Individuals and interactions over processes and tools,
 Working software over comprehensive documentation,
 Customer collaboration over contract negotiation,
 Responding to change over following a plan.


    Isn’t change the real issue? Up to the point it’s
          inherent to some business domains?
... when change becomes a
       requirement ...
A simple system
                                                  Doctor
                                         Name
                                         Specialization                               Procedure
                                                          *                     Description
                                                                                Group: enum
                                                                                Cost
                                                                                Observations
                                                          *

         ‹‹enumeration››                          Patient
            Profession                   Name
                           Profession    Birthdate                                   Appointment
      Engineer
                           0..*          / Age                                  Date
      Architect
                                         Sex: enum                              Symptom
      ...
                                         Observations                           Observations
                                                                                / Total Cost




                                    Contact                        Insurance           Pathology
                              Description                     Number            Severity: enum
                              Observations                    Expiration Date   Observations




 1. How many “open generalizations” do you count?
A simple system
                                                 Doctor
                                        Name
                                        Specialization                               Procedure
                                                         *                     Description
                                                                               Group: enum
                                                                               Cost
                                                                               Observations
                                                         *

        ‹‹enumeration››                          Patient
           Profession                   Name
                          Profession    Birthdate                                   Appointment
     Engineer
                          0..*          / Age                                  Date
     Architect
                                        Sex: enum                              Symptom
     ...
                                        Observations                           Observations
                                                                               / Total Cost




                                   Contact                        Insurance           Pathology
                             Description                     Number            Severity: enum
                             Observations                    Expiration Date   Observations




 2. How many “open enumerations” do you count?
A simple system
                                                 Doctor
                                        Name
                                        Specialization                               Procedure
                                                         *                     Description
                                                                               Group: enum
                                                                               Cost
                                                                               Observations
                                                         *

        ‹‹enumeration››                          Patient
           Profession                   Name
                          Profession    Birthdate                                   Appointment
     Engineer
                          0..*          / Age                                  Date
     Architect
                                        Sex: enum                              Symptom
     ...
                                        Observations                           Observations
                                                                               / Total Cost




                                   Contact                        Insurance           Pathology
                             Description                     Number            Severity: enum
                             Observations                    Expiration Date   Observations




 3. How many “observations fields” do you count?
Is this the best we can do?
 Do we really need to ...
   ... specify every generalization?
   ... produce new code for each of them?
Is this the best we can do?
 Do we really need to ...
   ... specify every generalization?
   ... produce new code for each of them?
 How many of you have already realized that ...
   ... vital information will be dumped as text in observations?
   ... eventually, you’ll be parsing that unstructured text?
Is this the best we can do?
 Do we really need to ...
   ... specify every generalization?
   ... produce new code for each of them?
 How many of you have already realized that ...
   ... vital information will be dumped as text in observations?
   ... eventually, you’ll be parsing that unstructured text?
 Why can’t the end-user simply extend basic functionality?
 Will the product ever be finished?
“   What’s the problem? We just sell more horses! —
    an horse breeder before the invention of the car.
Business   vs   Engineering
Business          vs    Engineering

Are our software artifacts so good that all we
 need to address is the way we build them?
eXtreme Programming
          Short iterations, continuous
          integration, pair-programming,
          test-driven development...




          We’re ready to embrace change
          through our processes. But how
          do we embrace change through
          our designs?
Soft. Eng. in the wild 102




                         xkcd 2008
What does agile
software look
     like?
“   Law of Unavoidable Variance. If you think
    something is not going to change, it will.
“   Law of Unavoidable Variance. If you think
    something is not going to change, it will.



“   In nature, it’s not the strongest nor the
    most intelligent who survives. It’s the
    most adaptable to change. Charles
    Darwin.
Incomplete by Design

“   Traditional approaches to design extols the virtues of
    completeness. However, in environments
    characterized by continual change, an approach to
    design in which incompleteness is harnessed,
    suggests a change in the meaning of the word
    design itself — from one that separates the process
    from its outcome, to one that considers design as
    both the medium and outcome of action.
Introspect! Abstract! Adapt!

“   An abstraction is the process or result of
    generalization: we reduce, or hide, the detailed
    content of a concept, only retaining the relevant
    information for a particular purpose.



“   Metadata is just saying that if something is going to
    vary in a predictable way, store the description of the
    variation (somewhere) so that it is easy to change. In
    other words, if something is going to change a lot,
    make it easy to change. Ralph Johnson.
Using Type-Object Pattern
       Surgery: Procedure     ‹‹is-instance-of››           Procedure            Procedure Type
    Name = "Surgery"                                Name: string            Description
                                                                            Group: enum
                                                                            Cost
                                                                            Observations



                                                             Doctor
                                                                                 Appointment
      Architect: Profession                                        *        Date
    Name = "Architect"                                                      Symptom
                                                                            Observations
   ‹‹is-instance-of››                                              *        / Total Cost
                                                             Patient
              Profession                            Name
                               0..*                 Birthdate
    Name                                            / Age
                                                    Sex: enum
                                                    Observations




         Fever: Pathology                                   Pathology           Pathology Type
                               ‹‹is-instance-of››                       *
                                                                            Severity: enum
    Name = "Fever"                                  Name: string
                                                                            Observations
But...
Which is simpler?
         Doctor                             Surgery: Procedure     ‹‹is-instance-of››           Procedure              Procedure Type
Name                                     Name = "Surgery"                                Name: string              Description
Specialization                                                                                                     Group: enum
                           Procedure                                                                               Cost
                 *   Description                                                                                   Observations
                     Group: enum
                     Cost
                     Observations
                                                                                                  Doctor
                 *                                                                                                      Appointment
                                           Architect: Profession                                        *          Date
         Patient
                                         Name = "Architect"                                                        Symptom
Name                      Appointment                                                                              Observations
Birthdate                                                                                               *          / Total Cost
                     Date               ‹‹is-instance-of››
/ Age
Sex: enum            Symptom                                                                      Patient
Observations         Observations                                                        Name
                     / Total Cost
                                                   Profession       0..*                 Birthdate
                                         Name                                            / Age
                                                                                         Sex: enum
                                                                                         Observations
        0..*                Pathology
       Profession    Severity: enum
                     Observations
Engineer                                                                                                               Pathology Type
                                              Fever: Pathology      ‹‹is-instance-of››           Pathology     *
Architect                                                                                                          Severity: enum
...                                      Name = "Fever"                                  Name: string
                                                                                                                   Observations




                      exhibit A                                                                                       exhibit B
                     domain model                                                                            implementation model
Accidental Complexity

“   Accidental complexity is that which arises in
    programs, or during their development process,
    which is non-essential to the problem to be solved.




“   While essential complexity is inherent and
    unavoidable, accidental complexity is caused by the
    chosen approach to solve the problem. In this case,
    we kept repeating the same pattern.
Domain models should become
first-class artifacts of our systems.
Adaptive Object-Model
If...
   ...we use a sufficient expressive model for the system’s
   components that ought to be frequently changed.
   ...and, we ensure no outside dependencies (no code
   generation, no glue code, etc.)
Then...
   ...design becomes the outcome of action.
   ...we are able to enpower end-users to adapt!
Model-Driven Manifesto

“   We prefer to validate software-under-construction over
    validating software requirements.



“   We work with domain-specific assets.



“   We strive to automate software construction from domain
    models.



“   We support the emergence of supply chains for software
    development, which implies domain-specific specialization
    and enables mass customization.
Is this the silver bullet?
Development is expensive. Higher startup costs.
It can be hard to understand and maintain. Several levels of
abstraction.
It requires skilled developers. If programming is not your
passion, this is out of your league.
It requires domain experts.
Questions?
hugo.sereno@fe.up.pt

More Related Content

Recently uploaded

Recently uploaded (20)

"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 

Featured

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Featured (20)

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 

Incomplete by Design — Thoughts on Agile Architectures

  • 1. INCOMPLETEBYDESIGN thoughts on agile architectures agile portugal 2010 hugo.sereno.ferreira
  • 2. Reality Check Our field has been in crisis for more than 30 years: Most projects are beyond schedule and over budget. Requirements are hard to formalize... ... change faster than implementation. ... are outdated on day one.
  • 3. Reality Check Our field has been in crisis for more than 30 years: Most projects are beyond schedule and over budget. Requirements are hard to formalize... ... change faster than implementation. ... are outdated on day one. “ We really don’t know what we need — an honest customer.
  • 4. Our struggle... our job... Domain Reality Software
  • 5. Soft. Eng. in the wild 101 !"#"$$%#&'#()*'#$+# *,',-*./#-01#23# >,44666#?*$=-=4)#"/5'#5'#8/-"# 450,'#$+#.$1,6# 8,9:,#!"#$%#+$*@#=&"#8/-"#8,# 7&"#8,9:,#;-0-<,1 *,-44)#&$!'(#8-'#;$*,#45%,#-# "$#=&541#"/5' :544-<,#85"/#';-44#/$&','6#A-0# 7D3 ')'",;#)$&9:,# )$&#./-0<,#5"#50666#B#1-)'C -'%,16 hugo.sereno.ferreira 2007
  • 6. Agile Manifesto Individuals and interactions over processes and tools, Working software over comprehensive documentation, Customer collaboration over contract negotiation, Responding to change over following a plan.
  • 7. Agile Manifesto Individuals and interactions over processes and tools, Working software over comprehensive documentation, Customer collaboration over contract negotiation, Responding to change over following a plan. What about the Architecture and Design?
  • 8. Agile Manifesto Individuals and interactions over processes and tools, Working software over comprehensive documentation, Customer collaboration over contract negotiation, Responding to change over following a plan. Isn’t change the real issue? Up to the point it’s inherent to some business domains?
  • 9. ... when change becomes a requirement ...
  • 10. A simple system Doctor Name Specialization Procedure * Description Group: enum Cost Observations * ‹‹enumeration›› Patient Profession Name Profession Birthdate Appointment Engineer 0..* / Age Date Architect Sex: enum Symptom ... Observations Observations / Total Cost Contact Insurance Pathology Description Number Severity: enum Observations Expiration Date Observations 1. How many “open generalizations” do you count?
  • 11. A simple system Doctor Name Specialization Procedure * Description Group: enum Cost Observations * ‹‹enumeration›› Patient Profession Name Profession Birthdate Appointment Engineer 0..* / Age Date Architect Sex: enum Symptom ... Observations Observations / Total Cost Contact Insurance Pathology Description Number Severity: enum Observations Expiration Date Observations 2. How many “open enumerations” do you count?
  • 12. A simple system Doctor Name Specialization Procedure * Description Group: enum Cost Observations * ‹‹enumeration›› Patient Profession Name Profession Birthdate Appointment Engineer 0..* / Age Date Architect Sex: enum Symptom ... Observations Observations / Total Cost Contact Insurance Pathology Description Number Severity: enum Observations Expiration Date Observations 3. How many “observations fields” do you count?
  • 13. Is this the best we can do? Do we really need to ... ... specify every generalization? ... produce new code for each of them?
  • 14. Is this the best we can do? Do we really need to ... ... specify every generalization? ... produce new code for each of them? How many of you have already realized that ... ... vital information will be dumped as text in observations? ... eventually, you’ll be parsing that unstructured text?
  • 15. Is this the best we can do? Do we really need to ... ... specify every generalization? ... produce new code for each of them? How many of you have already realized that ... ... vital information will be dumped as text in observations? ... eventually, you’ll be parsing that unstructured text? Why can’t the end-user simply extend basic functionality? Will the product ever be finished?
  • 16. What’s the problem? We just sell more horses! — an horse breeder before the invention of the car.
  • 17. Business vs Engineering
  • 18. Business vs Engineering Are our software artifacts so good that all we need to address is the way we build them?
  • 19. eXtreme Programming Short iterations, continuous integration, pair-programming, test-driven development... We’re ready to embrace change through our processes. But how do we embrace change through our designs?
  • 20. Soft. Eng. in the wild 102 xkcd 2008
  • 22. Law of Unavoidable Variance. If you think something is not going to change, it will.
  • 23. Law of Unavoidable Variance. If you think something is not going to change, it will. “ In nature, it’s not the strongest nor the most intelligent who survives. It’s the most adaptable to change. Charles Darwin.
  • 24. Incomplete by Design “ Traditional approaches to design extols the virtues of completeness. However, in environments characterized by continual change, an approach to design in which incompleteness is harnessed, suggests a change in the meaning of the word design itself — from one that separates the process from its outcome, to one that considers design as both the medium and outcome of action.
  • 25. Introspect! Abstract! Adapt! “ An abstraction is the process or result of generalization: we reduce, or hide, the detailed content of a concept, only retaining the relevant information for a particular purpose. “ Metadata is just saying that if something is going to vary in a predictable way, store the description of the variation (somewhere) so that it is easy to change. In other words, if something is going to change a lot, make it easy to change. Ralph Johnson.
  • 26. Using Type-Object Pattern Surgery: Procedure ‹‹is-instance-of›› Procedure Procedure Type Name = "Surgery" Name: string Description Group: enum Cost Observations Doctor Appointment Architect: Profession * Date Name = "Architect" Symptom Observations ‹‹is-instance-of›› * / Total Cost Patient Profession Name 0..* Birthdate Name / Age Sex: enum Observations Fever: Pathology Pathology Pathology Type ‹‹is-instance-of›› * Severity: enum Name = "Fever" Name: string Observations
  • 28. Which is simpler? Doctor Surgery: Procedure ‹‹is-instance-of›› Procedure Procedure Type Name Name = "Surgery" Name: string Description Specialization Group: enum Procedure Cost * Description Observations Group: enum Cost Observations Doctor * Appointment Architect: Profession * Date Patient Name = "Architect" Symptom Name Appointment Observations Birthdate * / Total Cost Date ‹‹is-instance-of›› / Age Sex: enum Symptom Patient Observations Observations Name / Total Cost Profession 0..* Birthdate Name / Age Sex: enum Observations 0..* Pathology Profession Severity: enum Observations Engineer Pathology Type Fever: Pathology ‹‹is-instance-of›› Pathology * Architect Severity: enum ... Name = "Fever" Name: string Observations exhibit A exhibit B domain model implementation model
  • 29. Accidental Complexity “ Accidental complexity is that which arises in programs, or during their development process, which is non-essential to the problem to be solved. “ While essential complexity is inherent and unavoidable, accidental complexity is caused by the chosen approach to solve the problem. In this case, we kept repeating the same pattern.
  • 30. Domain models should become first-class artifacts of our systems.
  • 31. Adaptive Object-Model If... ...we use a sufficient expressive model for the system’s components that ought to be frequently changed. ...and, we ensure no outside dependencies (no code generation, no glue code, etc.) Then... ...design becomes the outcome of action. ...we are able to enpower end-users to adapt!
  • 32. Model-Driven Manifesto “ We prefer to validate software-under-construction over validating software requirements. “ We work with domain-specific assets. “ We strive to automate software construction from domain models. “ We support the emergence of supply chains for software development, which implies domain-specific specialization and enables mass customization.
  • 33. Is this the silver bullet? Development is expensive. Higher startup costs. It can be hard to understand and maintain. Several levels of abstraction. It requires skilled developers. If programming is not your passion, this is out of your league. It requires domain experts.

Editor's Notes