SlideShare una empresa de Scribd logo
1 de 64
Software Architecture for
Agile Development
Hayim Makabee
http://EffectiveSoftwareDesign.com
My life in logos:
Education:
Experience:
Part I: Architecture and Agile
 Different approaches for Software
Architecture in the context of Agile.
 The approach of Adaptable Design Up
Front (ADUF).
 Guidelines: How to put ADUF in
practice.
 An example of a real system.
Context
 Iterative Software Development
 Agile, Incremental
Question
 How much design should be done up
front?
 Up front = Before starting the
implementation (coding).
Big Design Up Front
 BDUF = Do detailed design before
starting to code.
 Problems:
◦ Requirements are incomplete.
◦ Requirements may change.
◦ “The Scrum product backlog is allowed to
grow and change as more is learned
about the product and its customers.”
Emergent Design
 “With emergent design, a
development organization starts
delivering functionality and lets the
design emerge.”
 First iteration:
◦ Implement initial features.
 Next iterations:
◦ Implement additional features.
◦ Refactor.
Just Enough Design
 “Just enough sits somewhere in the
chasm between big design up front's
analysis paralysis and emergent
design's refactor distractor.” – Simon
Brown
 Question: How much design is “just
enough”?
Planned: Modiin
Emergent: Jerusalem Old City
Eroding Design
Eroding Design
 “The biggest risk associated with
Piecemeal Growth is that it will
gradually erode the overall
structure of the system, and
inexorably turn it into a Big Ball of
Mud.” - Brian Foote and Joseph Yoder
– “Big Ball of Mud”
Software Entropy
 Entropy is a measure of the number of
specific ways in which a system may
be arranged (a measure of disorder).
 The entropy of an isolated system
never decreases.
Lehman Laws
 A computer program that is used will
be modified.
 When a program is modified, its
complexity will increase, provided that
one does not actively work against
this.
Conclusions so far…
 In summary:
◦ We must design up front.
◦ BDUF does not support change.
◦ Emergent design works at low-level.
◦ Just Enough DUF is not clear.
 We need:
◦ The design must support change.
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.
 Instead of designing a single system,
design a family of systems.
Family of Systems
 Software Product Line: “A set of
software-intensive systems that share
a common, managed set of features
satisfying the specific needs of a
particular market segment or mission
and that are developed from a
common set of core assets in a
prescribed way.” – Software
Engineering Institute
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.
 ADUF = Adaptable Design Up Front!
Open/Closed Principle
 “Software entities (classes, modules,
functions, etc.) should be open for
extension, but closed for modification.”
- Bertrand Meyer
Strategy Design Pattern
Adaptable Design Up Front and
the Open/Closed Principle
 ADUF focuses on the early definition
of the “closed” aspects of the design
while at the same time allows easy
evolution by making this design open
to extensions.
 Closed: Captures essential entities
and relationships.
 Open: Provides mechanisms for
extensibility.
Architecture vs. Interior
Design
Common Errors
 Too much design up front
 Not enough design up front
 Too much openness
 Not enough openness
Too much design up front
 Capturing aspects that are not
essential as if they were such.
 The design may need to change (thus
it is not really “closed”).
 Examples:
◦ Specific details are not generalized.
◦ Designing for a specific system instead of
designing for a family of systems.
Not enough design up front
 Leaving away some of the essential
aspects of the system.
 These aspects will need to be added
to the design when other parts of the
system are already implemented.
 Example:
◦ Adding relationships to new entities may
cause changes to existing interfaces.
Too much openness
 The design is over engineered,
resulting in complexity not really
necessary.
 Example:
◦ It is always possible to reduce coupling
through additional layers of indirection.
◦ With many layers, it is difficult to locate
where the business logic is implemented.
Not enough openness
 The design captures all essential
aspects, but there are not
mechanisms that allow this design to
be easily extended.
 Example:
◦ If there are Interfaces for the main
entities, there should also be Factories to
instantiate concrete subclasses.
Extensible Designs
Main alternatives for extensible designs:
 Frameworks
◦ Plug-ins
 Platforms
Frameworks
 Framework: “A software framework is
an abstraction in which software
providing generic functionality can be
selectively changed by additional
user-written code, thus providing
application-specific software.”
Plug-ins
 Plug-in: “A plug-in is a software
component that adds a specific
feature to an existing software
application. When an application
supports plug-ins, it enables
customization.”
Pluggable Components
Versioning
 Traditional:
◦ Version = modifications + additions.
◦ After n iterations: n versions.
 Component-based:
◦ Version = combination of new
implementations of components.
◦ System with m components, after n
iterations: nm versions.
Platforms
 Platform: “Technology that enables the
creation of products and processes
that support present or future
development.”
 Software platforms provide services
that are used by several applications.
 Platforms and applications may evolve
independently of each other.
Question 1
 How do you identify the components
in your framework or the services in
your platform?
Domain Modeling
 “A domain model is a conceptual
model of all the topics related to a
specific problem. It describes the
various entities, their attributes, roles,
and relationships, plus the constraints
that govern the problem domain.”
Question 2
 How do you decouple the components
in your framework?
Design Patterns
 Reduce coupling using Design
Patterns.
 Most patterns avoid direct links
between concrete classes, using
interfaces and abstract classes.
 Example: Use Observer when several
types of objects must react to the
same event.
Example: Recommender
System
Recommender System Model
Model Recommender
Trainer Historic Data
Recommender System
Framework
After 1 year of development:
 Historic Data: 13 subclasses.
 Model: 9 subclasses.
 Trainer: 9 subclasses.
 Recommender: 19 subclasses.
What about YAGNI?
 YAGNI = You aren't gonna need it.
 A principle of extreme programming
(XP) that states that a programmer
should not add functionality until
deemed necessary.
 “Always implement things when you
actually need them, never when you
just foresee that you need them.” -
Ron Jeffries
YAGNI vs. ADUF
 YAGNI tells us to avoid doing what we
are not sure we will need.
 ADUF tells us:
◦ Define the things you are sure you will
need in any case.
◦ Prepare for the things that you will
probably need in the future (adaptability).
◦ NIAGNI: “No, I am gonna need it!”
Conclusions
 Software systems must evolve over time.
 This evolution should be planned and
supported trough Adaptable Software
Designs.
 Domain Modeling: Identify the entities
and relationships that form the “closed”
part of the design.
 Framework Design: Design a framework
that represents the model and add
mechanisms for extensibility, making it
“open”.
Related Work
 Software Engineering Institute:
◦ Software Product Lines
 Alistair Cockburn:
◦ Walking Skeleton
◦ Incremental Rearchitecture
 Neal Ford:
◦ Emergent Design
◦ Evolutionary Architecture
 Simon Brown:
◦ Just Enough Design Up Front
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
Part II: Manifesto for
Adaptability
 Lean Startup
 Minimum Viable Product
 Manifesto for Adaptable Software
Development
 SOA Principles
 Microservices Practices
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
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.
In Summary
 Adaptable Software Development:
◦ Experimentation instead of Specification
◦ Evolution instead of Implementation
◦ Adaptation instead of Modification
◦ Extension instead of Growth
Thanks!
Q&A
http://EffectiveSoftwareDesign.com

Más contenido relacionado

La actualidad más candente

Architecture In An Agile World
Architecture In An Agile WorldArchitecture In An Agile World
Architecture In An Agile WorldJames Cooper
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...Hayim Makabee
 
Agile Architecture Agile Dev Practices 2013 Keynote
Agile Architecture Agile Dev Practices 2013 KeynoteAgile Architecture Agile Dev Practices 2013 Keynote
Agile Architecture Agile Dev Practices 2013 KeynoteAdam Boczek
 
Innovate 2013 Design on a Diet - session 2131
Innovate 2013 Design on a Diet - session 2131Innovate 2013 Design on a Diet - session 2131
Innovate 2013 Design on a Diet - session 2131Daniel Leroux
 
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...Lean Implementation of Organizational Process Focus (OPF) and Risk Management...
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...aamahdys
 
Agile Introduction for newbies by Arokia S Armel
Agile Introduction for newbies by Arokia S ArmelAgile Introduction for newbies by Arokia S Armel
Agile Introduction for newbies by Arokia S ArmelXebia IT Architects
 
Sterling Barton Movemements of a Hypnotic Nature
Sterling Barton Movemements of a Hypnotic NatureSterling Barton Movemements of a Hypnotic Nature
Sterling Barton Movemements of a Hypnotic NatureBrent Barton
 
Agile development
Agile developmentAgile development
Agile developmentJoshuaU1
 
Introduction to Modern Software Architecture
Introduction to Modern Software ArchitectureIntroduction to Modern Software Architecture
Introduction to Modern Software ArchitectureJérôme Kehrli
 
Invincible React States with Domain Driven Design
Invincible React States with Domain Driven Design Invincible React States with Domain Driven Design
Invincible React States with Domain Driven Design Prateek
 
Tailoring your SDLC for DevOps, Agile and more
Tailoring your SDLC for DevOps, Agile and moreTailoring your SDLC for DevOps, Agile and more
Tailoring your SDLC for DevOps, Agile and moreJeff Schneider
 
Prerequisites for evolutionary architecture
Prerequisites for evolutionary architecturePrerequisites for evolutionary architecture
Prerequisites for evolutionary architectureChris Howe-Jones
 
SDLC & DevOps Transformation with Agile
SDLC & DevOps Transformation with AgileSDLC & DevOps Transformation with Agile
SDLC & DevOps Transformation with AgileAbdel Moneim Emad
 
Agile Software Development Approaches
Agile Software Development ApproachesAgile Software Development Approaches
Agile Software Development Approachesdcsunu
 
Agile Architecture
Agile ArchitectureAgile Architecture
Agile ArchitectureSteve Green
 
Software Quality assurance Introduction & Software process models
Software Quality assurance Introduction & Software process modelsSoftware Quality assurance Introduction & Software process models
Software Quality assurance Introduction & Software process modelsJesminBinti
 
Agile paris 2022 sharing
Agile paris 2022   sharingAgile paris 2022   sharing
Agile paris 2022 sharingJas Chong
 
Evolutionary Architecture And Design
Evolutionary Architecture And DesignEvolutionary Architecture And Design
Evolutionary Architecture And DesignNaresh Jain
 

La actualidad más candente (20)

Architecture In An Agile World
Architecture In An Agile WorldArchitecture In An Agile World
Architecture In An Agile World
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...
 
Agile Architecture Agile Dev Practices 2013 Keynote
Agile Architecture Agile Dev Practices 2013 KeynoteAgile Architecture Agile Dev Practices 2013 Keynote
Agile Architecture Agile Dev Practices 2013 Keynote
 
Innovate 2013 Design on a Diet - session 2131
Innovate 2013 Design on a Diet - session 2131Innovate 2013 Design on a Diet - session 2131
Innovate 2013 Design on a Diet - session 2131
 
Agile Development
Agile DevelopmentAgile Development
Agile Development
 
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...Lean Implementation of Organizational Process Focus (OPF) and Risk Management...
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...
 
Agile Introduction for newbies by Arokia S Armel
Agile Introduction for newbies by Arokia S ArmelAgile Introduction for newbies by Arokia S Armel
Agile Introduction for newbies by Arokia S Armel
 
Sterling Barton Movemements of a Hypnotic Nature
Sterling Barton Movemements of a Hypnotic NatureSterling Barton Movemements of a Hypnotic Nature
Sterling Barton Movemements of a Hypnotic Nature
 
Agile development
Agile developmentAgile development
Agile development
 
Introduction to Modern Software Architecture
Introduction to Modern Software ArchitectureIntroduction to Modern Software Architecture
Introduction to Modern Software Architecture
 
Invincible React States with Domain Driven Design
Invincible React States with Domain Driven Design Invincible React States with Domain Driven Design
Invincible React States with Domain Driven Design
 
Tailoring your SDLC for DevOps, Agile and more
Tailoring your SDLC for DevOps, Agile and moreTailoring your SDLC for DevOps, Agile and more
Tailoring your SDLC for DevOps, Agile and more
 
Prerequisites for evolutionary architecture
Prerequisites for evolutionary architecturePrerequisites for evolutionary architecture
Prerequisites for evolutionary architecture
 
SDLC & DevOps Transformation with Agile
SDLC & DevOps Transformation with AgileSDLC & DevOps Transformation with Agile
SDLC & DevOps Transformation with Agile
 
Agile Software Development Approaches
Agile Software Development ApproachesAgile Software Development Approaches
Agile Software Development Approaches
 
Agile Architecture
Agile ArchitectureAgile Architecture
Agile Architecture
 
Software Quality assurance Introduction & Software process models
Software Quality assurance Introduction & Software process modelsSoftware Quality assurance Introduction & Software process models
Software Quality assurance Introduction & Software process models
 
7 Myths of Agile Development
7 Myths of Agile Development7 Myths of Agile Development
7 Myths of Agile Development
 
Agile paris 2022 sharing
Agile paris 2022   sharingAgile paris 2022   sharing
Agile paris 2022 sharing
 
Evolutionary Architecture And Design
Evolutionary Architecture And DesignEvolutionary Architecture And Design
Evolutionary Architecture And Design
 

Similar a Software Architecture for Agile Development

Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture uploadThe Real Dyl
 
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycleAfrasiyab Haider
 
04 designing architectures
04 designing architectures04 designing architectures
04 designing architecturesMajong DevJfu
 
Fed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype DcphpFed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype DcphpTony Bibbs
 
Software Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsSoftware Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsNishu Rastogi
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile waveNiels Bech Nielsen
 
Agile Engineering
Agile EngineeringAgile Engineering
Agile EngineeringJohn Lewis
 
Software Process Model in software engineering
Software Process Model in software engineeringSoftware Process Model in software engineering
Software Process Model in software engineeringMuhammadTalha436
 
Chapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.pptChapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.pptRayonJ1
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net coreSam Nasr, MCSA, MVP
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)FarjanaAhmed3
 
DevExForPlatformEngineers, introducing Kratix
DevExForPlatformEngineers, introducing KratixDevExForPlatformEngineers, introducing Kratix
DevExForPlatformEngineers, introducing KratixAbigail Bangser
 
Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemGiovanni Asproni
 
Different Methodologies Used By Programming Teams
Different Methodologies Used By Programming TeamsDifferent Methodologies Used By Programming Teams
Different Methodologies Used By Programming TeamsNicole Gomez
 

Similar a Software Architecture for Agile Development (20)

Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture upload
 
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycle
 
04 designing architectures
04 designing architectures04 designing architectures
04 designing architectures
 
Cnpm bkdn
Cnpm bkdnCnpm bkdn
Cnpm bkdn
 
Fed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype DcphpFed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype Dcphp
 
Software Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsSoftware Engineering- Crisis and Process Models
Software Engineering- Crisis and Process Models
 
Software process model
Software process modelSoftware process model
Software process model
 
SE Lecture 3.ppt
SE Lecture 3.pptSE Lecture 3.ppt
SE Lecture 3.ppt
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile wave
 
Agile Engineering
Agile EngineeringAgile Engineering
Agile Engineering
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Software Process Model in software engineering
Software Process Model in software engineeringSoftware Process Model in software engineering
Software Process Model in software engineering
 
Chapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.pptChapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.ppt
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
 
L02 Architecture
L02 ArchitectureL02 Architecture
L02 Architecture
 
DevExForPlatformEngineers, introducing Kratix
DevExForPlatformEngineers, introducing KratixDevExForPlatformEngineers, introducing Kratix
DevExForPlatformEngineers, introducing Kratix
 
Software development process models
Software development process modelsSoftware development process models
Software development process models
 
Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your System
 
Different Methodologies Used By Programming Teams
Different Methodologies Used By Programming TeamsDifferent Methodologies Used By Programming Teams
Different Methodologies Used By Programming Teams
 

Más de Hayim Makabee

Managing your Reputation
Managing your ReputationManaging your Reputation
Managing your ReputationHayim Makabee
 
Applications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT WebinarApplications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT WebinarHayim Makabee
 
Applications of Machine Learning
Applications of Machine LearningApplications of Machine Learning
Applications of Machine LearningHayim Makabee
 
Blue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use CaseBlue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use CaseHayim Makabee
 
Managing your Reputation Gvahim Webinar
Managing your Reputation Gvahim WebinarManaging your Reputation Gvahim Webinar
Managing your Reputation Gvahim WebinarHayim Makabee
 
Explainable Machine Learning (Explainable ML)
Explainable Machine Learning (Explainable ML)Explainable Machine Learning (Explainable ML)
Explainable Machine Learning (Explainable ML)Hayim Makabee
 
Automated Machine Learning (Auto ML)
Automated Machine Learning (Auto ML)Automated Machine Learning (Auto ML)
Automated Machine Learning (Auto ML)Hayim Makabee
 
Managing your Reputation
Managing your ReputationManaging your Reputation
Managing your ReputationHayim Makabee
 
The Story of a Young Oleh (Immigrant in Israel)
The Story of a Young Oleh (Immigrant in Israel)The Story of a Young Oleh (Immigrant in Israel)
The Story of a Young Oleh (Immigrant in Israel)Hayim Makabee
 
Applications of Machine Learning
Applications of Machine LearningApplications of Machine Learning
Applications of Machine LearningHayim Makabee
 
Antifragile Software Design
Antifragile Software DesignAntifragile Software Design
Antifragile Software DesignHayim Makabee
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...Hayim Makabee
 
The SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design PatternsThe SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design PatternsHayim Makabee
 
Aliyah: Looking for a hi-tech job in Israel
Aliyah: Looking for a hi-tech job in IsraelAliyah: Looking for a hi-tech job in Israel
Aliyah: Looking for a hi-tech job in IsraelHayim Makabee
 
The Role of the Software Architect (short version)
The Role of the Software Architect (short version)The Role of the Software Architect (short version)
The Role of the Software Architect (short version)Hayim Makabee
 
Software Quality Attributes
Software Quality AttributesSoftware Quality Attributes
Software Quality AttributesHayim Makabee
 
The Role of the Software Architect
The Role of the Software ArchitectThe Role of the Software Architect
The Role of the Software ArchitectHayim Makabee
 
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...Hayim Makabee
 
Reducing Technical Debt
Reducing Technical DebtReducing Technical Debt
Reducing Technical DebtHayim Makabee
 
Hierarchical Composable Optimization of Web Pages
Hierarchical Composable Optimization of Web PagesHierarchical Composable Optimization of Web Pages
Hierarchical Composable Optimization of Web PagesHayim Makabee
 

Más de Hayim Makabee (20)

Managing your Reputation
Managing your ReputationManaging your Reputation
Managing your Reputation
 
Applications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT WebinarApplications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT Webinar
 
Applications of Machine Learning
Applications of Machine LearningApplications of Machine Learning
Applications of Machine Learning
 
Blue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use CaseBlue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use Case
 
Managing your Reputation Gvahim Webinar
Managing your Reputation Gvahim WebinarManaging your Reputation Gvahim Webinar
Managing your Reputation Gvahim Webinar
 
Explainable Machine Learning (Explainable ML)
Explainable Machine Learning (Explainable ML)Explainable Machine Learning (Explainable ML)
Explainable Machine Learning (Explainable ML)
 
Automated Machine Learning (Auto ML)
Automated Machine Learning (Auto ML)Automated Machine Learning (Auto ML)
Automated Machine Learning (Auto ML)
 
Managing your Reputation
Managing your ReputationManaging your Reputation
Managing your Reputation
 
The Story of a Young Oleh (Immigrant in Israel)
The Story of a Young Oleh (Immigrant in Israel)The Story of a Young Oleh (Immigrant in Israel)
The Story of a Young Oleh (Immigrant in Israel)
 
Applications of Machine Learning
Applications of Machine LearningApplications of Machine Learning
Applications of Machine Learning
 
Antifragile Software Design
Antifragile Software DesignAntifragile Software Design
Antifragile Software Design
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...
 
The SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design PatternsThe SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design Patterns
 
Aliyah: Looking for a hi-tech job in Israel
Aliyah: Looking for a hi-tech job in IsraelAliyah: Looking for a hi-tech job in Israel
Aliyah: Looking for a hi-tech job in Israel
 
The Role of the Software Architect (short version)
The Role of the Software Architect (short version)The Role of the Software Architect (short version)
The Role of the Software Architect (short version)
 
Software Quality Attributes
Software Quality AttributesSoftware Quality Attributes
Software Quality Attributes
 
The Role of the Software Architect
The Role of the Software ArchitectThe Role of the Software Architect
The Role of the Software Architect
 
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
Reducing Technical Debt: Using Persuasive Technology for Encouraging Software...
 
Reducing Technical Debt
Reducing Technical DebtReducing Technical Debt
Reducing Technical Debt
 
Hierarchical Composable Optimization of Web Pages
Hierarchical Composable Optimization of Web PagesHierarchical Composable Optimization of Web Pages
Hierarchical Composable Optimization of Web Pages
 

Último

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 

Último (20)

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 

Software Architecture for Agile Development

  • 1. Software Architecture for Agile Development Hayim Makabee http://EffectiveSoftwareDesign.com
  • 2. My life in logos: Education: Experience:
  • 3. Part I: Architecture and Agile  Different approaches for Software Architecture in the context of Agile.  The approach of Adaptable Design Up Front (ADUF).  Guidelines: How to put ADUF in practice.  An example of a real system.
  • 4. Context  Iterative Software Development  Agile, Incremental
  • 5. Question  How much design should be done up front?  Up front = Before starting the implementation (coding).
  • 6. Big Design Up Front  BDUF = Do detailed design before starting to code.  Problems: ◦ Requirements are incomplete. ◦ Requirements may change. ◦ “The Scrum product backlog is allowed to grow and change as more is learned about the product and its customers.”
  • 7. Emergent Design  “With emergent design, a development organization starts delivering functionality and lets the design emerge.”  First iteration: ◦ Implement initial features.  Next iterations: ◦ Implement additional features. ◦ Refactor.
  • 8. Just Enough Design  “Just enough sits somewhere in the chasm between big design up front's analysis paralysis and emergent design's refactor distractor.” – Simon Brown  Question: How much design is “just enough”?
  • 12. Eroding Design  “The biggest risk associated with Piecemeal Growth is that it will gradually erode the overall structure of the system, and inexorably turn it into a Big Ball of Mud.” - Brian Foote and Joseph Yoder – “Big Ball of Mud”
  • 13. Software Entropy  Entropy is a measure of the number of specific ways in which a system may be arranged (a measure of disorder).  The entropy of an isolated system never decreases.
  • 14. Lehman Laws  A computer program that is used will be modified.  When a program is modified, its complexity will increase, provided that one does not actively work against this.
  • 15. Conclusions so far…  In summary: ◦ We must design up front. ◦ BDUF does not support change. ◦ Emergent design works at low-level. ◦ Just Enough DUF is not clear.  We need: ◦ The design must support change.
  • 16. 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”
  • 17. New development mindset  Instead of planning for software development, plan for software evolution.  Instead of designing a single system, design a family of systems.
  • 18. Family of Systems  Software Product Line: “A set of software-intensive systems that share a common, managed set of features satisfying the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way.” – Software Engineering Institute
  • 19. 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.  ADUF = Adaptable Design Up Front!
  • 20. Open/Closed Principle  “Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.” - Bertrand Meyer
  • 22. Adaptable Design Up Front and the Open/Closed Principle  ADUF focuses on the early definition of the “closed” aspects of the design while at the same time allows easy evolution by making this design open to extensions.  Closed: Captures essential entities and relationships.  Open: Provides mechanisms for extensibility.
  • 24. Common Errors  Too much design up front  Not enough design up front  Too much openness  Not enough openness
  • 25. Too much design up front  Capturing aspects that are not essential as if they were such.  The design may need to change (thus it is not really “closed”).  Examples: ◦ Specific details are not generalized. ◦ Designing for a specific system instead of designing for a family of systems.
  • 26. Not enough design up front  Leaving away some of the essential aspects of the system.  These aspects will need to be added to the design when other parts of the system are already implemented.  Example: ◦ Adding relationships to new entities may cause changes to existing interfaces.
  • 27. Too much openness  The design is over engineered, resulting in complexity not really necessary.  Example: ◦ It is always possible to reduce coupling through additional layers of indirection. ◦ With many layers, it is difficult to locate where the business logic is implemented.
  • 28. Not enough openness  The design captures all essential aspects, but there are not mechanisms that allow this design to be easily extended.  Example: ◦ If there are Interfaces for the main entities, there should also be Factories to instantiate concrete subclasses.
  • 29. Extensible Designs Main alternatives for extensible designs:  Frameworks ◦ Plug-ins  Platforms
  • 30. Frameworks  Framework: “A software framework is an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software.”
  • 31. Plug-ins  Plug-in: “A plug-in is a software component that adds a specific feature to an existing software application. When an application supports plug-ins, it enables customization.”
  • 33. Versioning  Traditional: ◦ Version = modifications + additions. ◦ After n iterations: n versions.  Component-based: ◦ Version = combination of new implementations of components. ◦ System with m components, after n iterations: nm versions.
  • 34. Platforms  Platform: “Technology that enables the creation of products and processes that support present or future development.”  Software platforms provide services that are used by several applications.  Platforms and applications may evolve independently of each other.
  • 35. Question 1  How do you identify the components in your framework or the services in your platform?
  • 36. Domain Modeling  “A domain model is a conceptual model of all the topics related to a specific problem. It describes the various entities, their attributes, roles, and relationships, plus the constraints that govern the problem domain.”
  • 37. Question 2  How do you decouple the components in your framework?
  • 38. Design Patterns  Reduce coupling using Design Patterns.  Most patterns avoid direct links between concrete classes, using interfaces and abstract classes.  Example: Use Observer when several types of objects must react to the same event.
  • 40. Recommender System Model Model Recommender Trainer Historic Data
  • 41. Recommender System Framework After 1 year of development:  Historic Data: 13 subclasses.  Model: 9 subclasses.  Trainer: 9 subclasses.  Recommender: 19 subclasses.
  • 42. What about YAGNI?  YAGNI = You aren't gonna need it.  A principle of extreme programming (XP) that states that a programmer should not add functionality until deemed necessary.  “Always implement things when you actually need them, never when you just foresee that you need them.” - Ron Jeffries
  • 43. YAGNI vs. ADUF  YAGNI tells us to avoid doing what we are not sure we will need.  ADUF tells us: ◦ Define the things you are sure you will need in any case. ◦ Prepare for the things that you will probably need in the future (adaptability). ◦ NIAGNI: “No, I am gonna need it!”
  • 44. Conclusions  Software systems must evolve over time.  This evolution should be planned and supported trough Adaptable Software Designs.  Domain Modeling: Identify the entities and relationships that form the “closed” part of the design.  Framework Design: Design a framework that represents the model and add mechanisms for extensibility, making it “open”.
  • 45. Related Work  Software Engineering Institute: ◦ Software Product Lines  Alistair Cockburn: ◦ Walking Skeleton ◦ Incremental Rearchitecture  Neal Ford: ◦ Emergent Design ◦ Evolutionary Architecture  Simon Brown: ◦ Just Enough Design Up Front
  • 46. 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
  • 47. Part II: Manifesto for Adaptability  Lean Startup  Minimum Viable Product  Manifesto for Adaptable Software Development  SOA Principles  Microservices Practices
  • 51. 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.
  • 53. 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
  • 54. Manifesto for Adaptable Software Development Experimentation instead of Specification Evolution instead of Implementation Adaptation instead of Modification Extension instead of Growth
  • 55. 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.
  • 56. 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.
  • 57. 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.
  • 58. 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.
  • 59. 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.
  • 60. 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
  • 61. 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.
  • 62. 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.
  • 63. In Summary  Adaptable Software Development: ◦ Experimentation instead of Specification ◦ Evolution instead of Implementation ◦ Adaptation instead of Modification ◦ Extension instead of Growth