SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Kürzlich hochgeladen

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
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...Drew Madelung
 

Kürzlich hochgeladen (20)

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
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...
 

Empfohlen

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.pdfmarketingartwork
 
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 2024Neil Kimberley
 
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)contently
 
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 2024Albert Qian
 
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 InsightsKurio // The Social Media Age(ncy)
 
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 2024Search Engine Journal
 
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 summarySpeakerHub
 
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 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 Tessa Mero
 
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 IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
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 managementMindGenius
 
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...RachelPearson36
 
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...Applitools
 
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 WorkGetSmarter
 

Empfohlen (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.

Hinweis der Redaktion