SlideShare a Scribd company logo
Adaptable Designs for
Agile Software Development
Hayim Makabee
http://EffectiveSoftwareDesign.com
My life in logos:
Education:
Experience:
Agile Software Development
 Iterative, Incremental
 Example: Scrum
Build-Measure-Learn
 Build-Measure-Learn feedback loop:
Building a Pyramid
Incrementally (Wrong)
Building a Pyramid
Incrementally (Right)
Minimum Viable Product
(MVP)
The MVP is the “version
of a new product which
allows a team to collect
the maximum amount of
validated learning about
customers with the least
effort.”
The MVP should have
the core features which
allow it to be deployed to
real customers to get
initial feedback, but not
more.
Building a MVP
Adaptability
 “A system that can cope readily with
a wide range of requirements, will,
all other things being equal, have an
advantage over one that cannot. Such
a system can allow unexpected
requirements to be met with little or
no reengineering, and allow its more
skilled customers to rapidly address
novel challenges.” - Brian Foote and
Joseph Yoder – “Big Ball of Mud”
New development mindset
 Instead of planning for software
development, plan for software
evolution.
Adaptable Design
 Adaptable Software Design: A generic
software design for a family of
systems which does not need to be
changed to accommodate new
requirements.
Manifesto for
Agile Software Development
Individuals and interactions over
processes and tools
Working software over
comprehensive documentation
Customer collaboration over
contract negotiation
Responding to change over
following a plan
Manifesto for
Adaptable Software
Development
Experimentation instead of
Specification
Evolution instead of Implementation
Adaptation instead of Modification
Extension instead of Growth
Experimentation instead of
Specification
 Traditional software development:
◦ Detailed specification of system
requirements, functional and non-
functional.
 Modern software development:
◦ Allows the discovery of requirements
through experimentation.
Evolution instead of
Implementation
 Traditional software development:
◦ Focuses on the prioritized implementation
of features according to specified
requirements.
 Modern software development:
◦ Allows the constant evolution of the
system’s functionality to meet the
dynamically varying customer needs.
Adaptation instead of
Modification
 Traditional software development:
◦ The code must be modified in order to
meet changing requirements.
 Modern software development:
◦ Allows the existing code base to be easily
adapted to satisfy any change in
requirements.
Extension instead of Growth
 Traditional software development:
◦ The system must grow in order to
accommodate additional requirements.
 Modern software development:
◦ Allows the easy extension of the system’s
functionality through modular features.
Architectural needs
 The Software Architecture must
support:
◦ Experimentation
◦ Evolution
◦ Adaptation
◦ Extension
 If the Software Architecture is not
adaptable, the Agile process will fail.
 Consequences: Increasing Technical
Debt, endless Refactoring.
SOA Principles
1. Standardized Service Contracts
2. Service Loose Coupling
3. Service Abstraction
4. Service Reusability
5. Service Autonomy
6. Service Statelessness
7. Service Discoverability
8. Service Composability
9. Service Interoperability
Microservices Practices (I)
1. Separated Build:
◦ Each Microservice is built independently
and has its own version.
2. Independent Deployment:
◦ Each Microservice may be deployed
without affecting the others.
3. Separated Data Stores:
◦ Microservices should not share data stores.
4. Independence of Platform:
◦ Microservices should be deployed in
containers.
Microservices Practices (II)
5. Individual Technology Choice:
◦ Each Microservice may be implemented
using a different technology.
6. Confinement of Failure:
◦ If a failure occurs in a particular
Microservice it should not propagate to
the other ones.
7. Independent Scalability:
◦ It should be possible to scale each
Microservice independently of the others.
Conclusions
 Software systems must evolve over
time.
 Evolution must be planned and
supported by Adaptable Software
Designs.
 Adaptable Software Development:
◦ Experimentation instead of Specification
◦ Evolution instead of Implementation
◦ Adaptation instead of Modification
◦ Extension instead of Growth
Adaptability & Evolution
“It is not the
strongest of the
species that
survives, nor the
most intelligent that
survives. It is the
one that is the
most adaptable to
change.”
Charles Darwin
Thanks!
Q&A
http://EffectiveSoftwareDesign.com

More Related Content

PPTX
ADUF - Adaptable Design Up Front
PDF
Agile archiecture iltam 2014
PPTX
Software Architecture for Agile Development
PPTX
An Event-Driven Approach for the Separation of Concerns
PPTX
Hierarchical Composable Optimization of Web Pages
PDF
Resource Adaptive Systems
PPTX
To document or not to document? An exploratory study on developers' motivatio...
PDF
Agile Development
ADUF - Adaptable Design Up Front
Agile archiecture iltam 2014
Software Architecture for Agile Development
An Event-Driven Approach for the Separation of Concerns
Hierarchical Composable Optimization of Web Pages
Resource Adaptive Systems
To document or not to document? An exploratory study on developers' motivatio...
Agile Development

What's hot (20)

PDF
Sterling Barton Movemements of a Hypnotic Nature
PPTX
Agile development
PPTX
Invincible React States with Domain Driven Design
PPTX
Architecture In An Agile World
PPT
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...
PPTX
Refactoring, Emergent Design & Evolutionary Architecture
PDF
What a Good Software Architect Does
PPTX
Software Quality assurance Introduction & Software process models
PPTX
Software development philosophies v1
PDF
Agile Software Development Approaches
PPT
OO Development 2 - Software Development Methodologies
PPTX
Evolution of Software Engineering in NCTR Projects
PPTX
Large Scale Software Project
PDF
Agile Introduction for newbies by Arokia S Armel
PPT
software lecture
PDF
Design Sprints for Enterprises - Go weekly
PPT
Unit 1 sepm introduction to software
PPT
Agile Development Ultimate Slides
PPT
PPT
Best Practices - Software Engineering
Sterling Barton Movemements of a Hypnotic Nature
Agile development
Invincible React States with Domain Driven Design
Architecture In An Agile World
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...
Refactoring, Emergent Design & Evolutionary Architecture
What a Good Software Architect Does
Software Quality assurance Introduction & Software process models
Software development philosophies v1
Agile Software Development Approaches
OO Development 2 - Software Development Methodologies
Evolution of Software Engineering in NCTR Projects
Large Scale Software Project
Agile Introduction for newbies by Arokia S Armel
software lecture
Design Sprints for Enterprises - Go weekly
Unit 1 sepm introduction to software
Agile Development Ultimate Slides
Best Practices - Software Engineering
Ad

Similar to Adaptable Designs for Agile Software Development (20)

PPT
Introduction to Software Engineering
PPT
Best practices for agile design
PPT
Arch factory - Agile Design: Best Practices
PPTX
Software Engineering Primer
PPTX
Agile Process models
PDF
Agile Database Development - SDC2012
PPTX
Chapter 5
PPTX
Pressman_Pressman_SoftwareEngineeringPA_9e_Ch004_PPT.pptx
PDF
Introduction To Agile Refresh Savannah July20 2010 V1 4
PPTX
Software development with agile methodologies
PPT
3. Agility and extreme programming OF UNIT-1 PPT
PPTX
Agile and Scrum Workshop
PPT
lecture24.ppt
PDF
L5555555555555555555555 Agile Scrum Framework.pdf
PPTX
Software Development Process
PPTX
Being Agile
PDF
Agile Simplified
PPTX
Ordina Accelerator program 2019 - DevOps CI-CD
PDF
CS 123 Lecture 02 2023-2024.pdf take it s
PPTX
Agile Overview Session
Introduction to Software Engineering
Best practices for agile design
Arch factory - Agile Design: Best Practices
Software Engineering Primer
Agile Process models
Agile Database Development - SDC2012
Chapter 5
Pressman_Pressman_SoftwareEngineeringPA_9e_Ch004_PPT.pptx
Introduction To Agile Refresh Savannah July20 2010 V1 4
Software development with agile methodologies
3. Agility and extreme programming OF UNIT-1 PPT
Agile and Scrum Workshop
lecture24.ppt
L5555555555555555555555 Agile Scrum Framework.pdf
Software Development Process
Being Agile
Agile Simplified
Ordina Accelerator program 2019 - DevOps CI-CD
CS 123 Lecture 02 2023-2024.pdf take it s
Agile Overview Session
Ad

More from Hayim Makabee (20)

PDF
Movie Quotes Search Engine Industrial Project
PPTX
Managing your Reputation
PPTX
Applications of Machine Learning - INDT Webinar
PPTX
Applications of Machine Learning
PPTX
Blue Ocean Strategy: KashKlik Use Case
PPTX
Managing your Reputation Gvahim Webinar
PPTX
Explainable Machine Learning (Explainable ML)
PPTX
Automated Machine Learning (Auto ML)
PPTX
Managing your Reputation
PPTX
The Story of a Young Oleh (Immigrant in Israel)
PPTX
Applications of Machine Learning
PPTX
Antifragile Software Design
PDF
To document or not to document? An exploratory study on developers' motivatio...
PPTX
The SOLID Principles Illustrated by Design Patterns
PPTX
Aliyah: Looking for a hi-tech job in Israel
PPTX
The Role of the Software Architect (short version)
PPTX
Software Quality Attributes
PPTX
The Role of the Software Architect
PDF
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
PPTX
Reducing Technical Debt
Movie Quotes Search Engine Industrial Project
Managing your Reputation
Applications of Machine Learning - INDT Webinar
Applications of Machine Learning
Blue Ocean Strategy: KashKlik Use Case
Managing your Reputation Gvahim Webinar
Explainable Machine Learning (Explainable ML)
Automated Machine Learning (Auto ML)
Managing your Reputation
The Story of a Young Oleh (Immigrant in Israel)
Applications of Machine Learning
Antifragile Software Design
To document or not to document? An exploratory study on developers' motivatio...
The SOLID Principles Illustrated by Design Patterns
Aliyah: Looking for a hi-tech job in Israel
The Role of the Software Architect (short version)
Software Quality Attributes
The Role of the Software Architect
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
Reducing Technical Debt

Recently uploaded (20)

PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
Transform Your Business with a Software ERP System
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
ai tools demonstartion for schools and inter college
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
top salesforce developer skills in 2025.pdf
PDF
Understanding Forklifts - TECH EHS Solution
PDF
AI in Product Development-omnex systems
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
history of c programming in notes for students .pptx
Adobe Illustrator 28.6 Crack My Vision of Vector Design
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PTS Company Brochure 2025 (1).pdf.......
Wondershare Filmora 15 Crack With Activation Key [2025
Transform Your Business with a Software ERP System
Design an Analysis of Algorithms II-SECS-1021-03
VVF-Customer-Presentation2025-Ver1.9.pptx
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
ai tools demonstartion for schools and inter college
Navsoft: AI-Powered Business Solutions & Custom Software Development
How to Choose the Right IT Partner for Your Business in Malaysia
How to Migrate SBCGlobal Email to Yahoo Easily
top salesforce developer skills in 2025.pdf
Understanding Forklifts - TECH EHS Solution
AI in Product Development-omnex systems
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Design an Analysis of Algorithms I-SECS-1021-03
CHAPTER 2 - PM Management and IT Context
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
history of c programming in notes for students .pptx

Adaptable Designs for Agile Software Development

  • 1. Adaptable Designs for Agile Software Development Hayim Makabee http://EffectiveSoftwareDesign.com
  • 2. My life in logos: Education: Experience:
  • 3. Agile Software Development  Iterative, Incremental  Example: Scrum
  • 7. Minimum Viable Product (MVP) The MVP is the “version of a new product which allows a team to collect the maximum amount of validated learning about customers with the least effort.” The MVP should have the core features which allow it to be deployed to real customers to get initial feedback, but not more.
  • 9. Adaptability  “A system that can cope readily with a wide range of requirements, will, all other things being equal, have an advantage over one that cannot. Such a system can allow unexpected requirements to be met with little or no reengineering, and allow its more skilled customers to rapidly address novel challenges.” - Brian Foote and Joseph Yoder – “Big Ball of Mud”
  • 10. New development mindset  Instead of planning for software development, plan for software evolution.
  • 11. Adaptable Design  Adaptable Software Design: A generic software design for a family of systems which does not need to be changed to accommodate new requirements.
  • 12. Manifesto for Agile Software Development Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
  • 13. Manifesto for Adaptable Software Development Experimentation instead of Specification Evolution instead of Implementation Adaptation instead of Modification Extension instead of Growth
  • 14. Experimentation instead of Specification  Traditional software development: ◦ Detailed specification of system requirements, functional and non- functional.  Modern software development: ◦ Allows the discovery of requirements through experimentation.
  • 15. Evolution instead of Implementation  Traditional software development: ◦ Focuses on the prioritized implementation of features according to specified requirements.  Modern software development: ◦ Allows the constant evolution of the system’s functionality to meet the dynamically varying customer needs.
  • 16. Adaptation instead of Modification  Traditional software development: ◦ The code must be modified in order to meet changing requirements.  Modern software development: ◦ Allows the existing code base to be easily adapted to satisfy any change in requirements.
  • 17. Extension instead of Growth  Traditional software development: ◦ The system must grow in order to accommodate additional requirements.  Modern software development: ◦ Allows the easy extension of the system’s functionality through modular features.
  • 18. Architectural needs  The Software Architecture must support: ◦ Experimentation ◦ Evolution ◦ Adaptation ◦ Extension  If the Software Architecture is not adaptable, the Agile process will fail.  Consequences: Increasing Technical Debt, endless Refactoring.
  • 19. SOA Principles 1. Standardized Service Contracts 2. Service Loose Coupling 3. Service Abstraction 4. Service Reusability 5. Service Autonomy 6. Service Statelessness 7. Service Discoverability 8. Service Composability 9. Service Interoperability
  • 20. Microservices Practices (I) 1. Separated Build: ◦ Each Microservice is built independently and has its own version. 2. Independent Deployment: ◦ Each Microservice may be deployed without affecting the others. 3. Separated Data Stores: ◦ Microservices should not share data stores. 4. Independence of Platform: ◦ Microservices should be deployed in containers.
  • 21. Microservices Practices (II) 5. Individual Technology Choice: ◦ Each Microservice may be implemented using a different technology. 6. Confinement of Failure: ◦ If a failure occurs in a particular Microservice it should not propagate to the other ones. 7. Independent Scalability: ◦ It should be possible to scale each Microservice independently of the others.
  • 22. Conclusions  Software systems must evolve over time.  Evolution must be planned and supported by Adaptable Software Designs.  Adaptable Software Development: ◦ Experimentation instead of Specification ◦ Evolution instead of Implementation ◦ Adaptation instead of Modification ◦ Extension instead of Growth
  • 23. Adaptability & Evolution “It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is the most adaptable to change.” Charles Darwin