SlideShare a Scribd company logo
ADUF
Adaptable Design Up Front
Hayim Makabee
http://EffectiveSoftwareDesign.com
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 may 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
Thanks!
Q&A
http://EffectiveSoftwareDesign.com

More Related Content

What's hot

Software quality assurance
Software quality assuranceSoftware quality assurance
Software quality assurance
Aman Adhikari
 
Introduction to design patterns
Introduction to design patternsIntroduction to design patterns
Introduction to design patterns
Amit Kabra
 
Agile development, software engineering
Agile development, software engineeringAgile development, software engineering
Agile development, software engineering
Rupesh Vaishnav
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
Sachithra Gayan
 
Design Concept software engineering
Design Concept software engineeringDesign Concept software engineering
Design Concept software engineering
Darshit Metaliya
 
Software Quality Attributes
Software Quality AttributesSoftware Quality Attributes
Software Quality Attributes
Hayim Makabee
 
Building a Test Automation Strategy for Success
Building a Test Automation Strategy for SuccessBuilding a Test Automation Strategy for Success
Building a Test Automation Strategy for Success
Lee Barnes
 
Git workflow step by step
Git workflow step by stepGit workflow step by step
Git workflow step by step
Binh Quan Duc
 
Agile Testing Strategy
Agile Testing StrategyAgile Testing Strategy
Agile Testing Strategytharindakasun
 
Static Code Analysis
Static Code AnalysisStatic Code Analysis
Static Code Analysis
Annyce Davis
 
User Interface Analysis and Design
User Interface Analysis and DesignUser Interface Analysis and Design
User Interface Analysis and Design
Saqib Raza
 
The Singleton Pattern Presentation
The Singleton Pattern PresentationThe Singleton Pattern Presentation
The Singleton Pattern Presentation
JAINIK PATEL
 
What is Test Plan? Edureka
What is Test Plan? EdurekaWhat is Test Plan? Edureka
What is Test Plan? Edureka
Edureka!
 
Design patterns
Design patternsDesign patterns
Design patterns
abhisheksagi
 
Code Smell, Software Engineering
Code Smell, Software EngineeringCode Smell, Software Engineering
Code Smell, Software Engineering
Anshul Vinayak
 
Software Architecture: Design Decisions
Software Architecture: Design DecisionsSoftware Architecture: Design Decisions
Software Architecture: Design Decisions
Henry Muccini
 
Automation of Release and Deployment Management - Maveric
Automation of Release and Deployment Management - MavericAutomation of Release and Deployment Management - Maveric
Automation of Release and Deployment Management - Maveric
Maveric Systems
 
Scrumban
ScrumbanScrumban
Software Development Life Cycle
Software Development Life CycleSoftware Development Life Cycle
Software Development Life Cycle
RIKSOF
 

What's hot (20)

Software quality assurance
Software quality assuranceSoftware quality assurance
Software quality assurance
 
Introduction to design patterns
Introduction to design patternsIntroduction to design patterns
Introduction to design patterns
 
Agile development, software engineering
Agile development, software engineeringAgile development, software engineering
Agile development, software engineering
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Design Concept software engineering
Design Concept software engineeringDesign Concept software engineering
Design Concept software engineering
 
Software Quality Attributes
Software Quality AttributesSoftware Quality Attributes
Software Quality Attributes
 
Building a Test Automation Strategy for Success
Building a Test Automation Strategy for SuccessBuilding a Test Automation Strategy for Success
Building a Test Automation Strategy for Success
 
Git workflow step by step
Git workflow step by stepGit workflow step by step
Git workflow step by step
 
Agile Testing Strategy
Agile Testing StrategyAgile Testing Strategy
Agile Testing Strategy
 
Static Code Analysis
Static Code AnalysisStatic Code Analysis
Static Code Analysis
 
User Interface Analysis and Design
User Interface Analysis and DesignUser Interface Analysis and Design
User Interface Analysis and Design
 
The Singleton Pattern Presentation
The Singleton Pattern PresentationThe Singleton Pattern Presentation
The Singleton Pattern Presentation
 
Software quality
Software qualitySoftware quality
Software quality
 
What is Test Plan? Edureka
What is Test Plan? EdurekaWhat is Test Plan? Edureka
What is Test Plan? Edureka
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Code Smell, Software Engineering
Code Smell, Software EngineeringCode Smell, Software Engineering
Code Smell, Software Engineering
 
Software Architecture: Design Decisions
Software Architecture: Design DecisionsSoftware Architecture: Design Decisions
Software Architecture: Design Decisions
 
Automation of Release and Deployment Management - Maveric
Automation of Release and Deployment Management - MavericAutomation of Release and Deployment Management - Maveric
Automation of Release and Deployment Management - Maveric
 
Scrumban
ScrumbanScrumban
Scrumban
 
Software Development Life Cycle
Software Development Life CycleSoftware Development Life Cycle
Software Development Life Cycle
 

Viewers also liked

Adaptable Designs for Agile Software Development
Adaptable Designs for Agile  Software DevelopmentAdaptable Designs for Agile  Software Development
Adaptable Designs for Agile Software Development
Hayim Makabee
 
Watch-It-Next: A Contextual TV Recommendation System
Watch-It-Next: A Contextual TV Recommendation SystemWatch-It-Next: A Contextual TV Recommendation System
Watch-It-Next: A Contextual TV Recommendation System
Raz Nissim
 
Resource Adaptive Systems
Resource Adaptive SystemsResource Adaptive Systems
Resource Adaptive Systems
Tom Mueck
 
Antifragile Software Design
Antifragile Software DesignAntifragile Software Design
Antifragile Software Design
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 Patterns
Hayim 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 Israel
Hayim Makabee
 
Introduction to Event Sourcing and CQRS (IASA-IL)
Introduction to Event Sourcing and CQRS (IASA-IL)Introduction to Event Sourcing and CQRS (IASA-IL)
Introduction to Event Sourcing and CQRS (IASA-IL)
Vladik Khononov
 
Agile archiecture iltam 2014
Agile archiecture   iltam 2014Agile archiecture   iltam 2014
Agile archiecture iltam 2014
Dani Mannes
 
Reducing Technical Debt
Reducing Technical DebtReducing Technical Debt
Reducing Technical Debt
Hayim Makabee
 
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard WorkTaming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Joseph Yoder
 
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
 
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
 
An Event-Driven Approach for the Separation of Concerns
An Event-Driven Approach for the Separation of ConcernsAn Event-Driven Approach for the Separation of Concerns
An Event-Driven Approach for the Separation of ConcernsHayim 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
 
July 2013 Talk, What Industry Needs from Architecture Description Languages
July 2013 Talk, What Industry Needs from Architecture Description LanguagesJuly 2013 Talk, What Industry Needs from Architecture Description Languages
July 2013 Talk, What Industry Needs from Architecture Description Languagesgrossd18
 
Adaptive Object Model - IASA IL Meeting on Software Evolution (3/2014)
Adaptive Object Model - IASA IL Meeting on Software Evolution  (3/2014)Adaptive Object Model - IASA IL Meeting on Software Evolution  (3/2014)
Adaptive Object Model - IASA IL Meeting on Software Evolution (3/2014)
Atzmon Hen-Tov
 
Designing with tests
Designing with testsDesigning with tests
Designing with tests
Dror Helper
 
Extracting Quality Scenarios from Functional Scenarios
Extracting Quality Scenarios from Functional ScenariosExtracting Quality Scenarios from Functional Scenarios
Extracting Quality Scenarios from Functional Scenarios
Prof. Amir Tomer
 
The five expertise of a software architect
The five expertise of a software architectThe five expertise of a software architect
The five expertise of a software architect
Lior Bar-On
 
Emotional adaptability
Emotional adaptabilityEmotional adaptability
Emotional adaptabilityStephen Yusuf
 

Viewers also liked (20)

Adaptable Designs for Agile Software Development
Adaptable Designs for Agile  Software DevelopmentAdaptable Designs for Agile  Software Development
Adaptable Designs for Agile Software Development
 
Watch-It-Next: A Contextual TV Recommendation System
Watch-It-Next: A Contextual TV Recommendation SystemWatch-It-Next: A Contextual TV Recommendation System
Watch-It-Next: A Contextual TV Recommendation System
 
Resource Adaptive Systems
Resource Adaptive SystemsResource Adaptive Systems
Resource Adaptive Systems
 
Antifragile Software Design
Antifragile Software DesignAntifragile Software Design
Antifragile Software Design
 
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
 
Introduction to Event Sourcing and CQRS (IASA-IL)
Introduction to Event Sourcing and CQRS (IASA-IL)Introduction to Event Sourcing and CQRS (IASA-IL)
Introduction to Event Sourcing and CQRS (IASA-IL)
 
Agile archiecture iltam 2014
Agile archiecture   iltam 2014Agile archiecture   iltam 2014
Agile archiecture iltam 2014
 
Reducing Technical Debt
Reducing Technical DebtReducing Technical Debt
Reducing Technical Debt
 
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard WorkTaming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
 
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)
 
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...
 
An Event-Driven Approach for the Separation of Concerns
An Event-Driven Approach for the Separation of ConcernsAn Event-Driven Approach for the Separation of Concerns
An Event-Driven Approach for the Separation of Concerns
 
Hierarchical Composable Optimization of Web Pages
Hierarchical Composable Optimization of Web PagesHierarchical Composable Optimization of Web Pages
Hierarchical Composable Optimization of Web Pages
 
July 2013 Talk, What Industry Needs from Architecture Description Languages
July 2013 Talk, What Industry Needs from Architecture Description LanguagesJuly 2013 Talk, What Industry Needs from Architecture Description Languages
July 2013 Talk, What Industry Needs from Architecture Description Languages
 
Adaptive Object Model - IASA IL Meeting on Software Evolution (3/2014)
Adaptive Object Model - IASA IL Meeting on Software Evolution  (3/2014)Adaptive Object Model - IASA IL Meeting on Software Evolution  (3/2014)
Adaptive Object Model - IASA IL Meeting on Software Evolution (3/2014)
 
Designing with tests
Designing with testsDesigning with tests
Designing with tests
 
Extracting Quality Scenarios from Functional Scenarios
Extracting Quality Scenarios from Functional ScenariosExtracting Quality Scenarios from Functional Scenarios
Extracting Quality Scenarios from Functional Scenarios
 
The five expertise of a software architect
The five expertise of a software architectThe five expertise of a software architect
The five expertise of a software architect
 
Emotional adaptability
Emotional adaptabilityEmotional adaptability
Emotional adaptability
 

Similar to ADUF - Adaptable Design Up Front

Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile Development
Hayim Makabee
 
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycle
Afrasiyab Haider
 
Software Process Model in software engineering
Software Process Model in software engineeringSoftware Process Model in software engineering
Software Process Model in software engineering
MuhammadTalha436
 
Chapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.pptChapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.ppt
RayonJ1
 
Week_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.pptWeek_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.ppt
RedHeart11
 
SE Lecture 3.ppt
SE Lecture 3.pptSE Lecture 3.ppt
SE Lecture 3.ppt
ssusere16bd9
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
FarjanaAhmed3
 
Agile Engineering
Agile EngineeringAgile Engineering
Agile EngineeringJohn Lewis
 
Chap 3 - Agile - XP.ppt
Chap 3 - Agile - XP.pptChap 3 - Agile - XP.ppt
Chap 3 - Agile - XP.ppt
Durga Prasad
 
Software process model
Software process modelSoftware process model
Software process model
Muhammad Yousuf Abdul Qadir
 
Fed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype DcphpFed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype Dcphp
Tony Bibbs
 
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
Giovanni Asproni
 
Various Process of Software Engineering notes
Various Process of Software Engineering notesVarious Process of Software Engineering notes
Various Process of Software Engineering notes
Dr Anuranjan Misra
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
Sam Nasr, MCSA, MVP
 
Software development philosophies v1
Software development philosophies v1Software development philosophies v1
Software development philosophies v1
Praveen Nair
 
Software Engineering with Objects (M363) Final Revision By Kuwait10
Software Engineering with Objects (M363) Final Revision By Kuwait10Software Engineering with Objects (M363) Final Revision By Kuwait10
Software Engineering with Objects (M363) Final Revision By Kuwait10
Kuwait10
 
Lecture1422914635
Lecture1422914635Lecture1422914635
Design final
Design finalDesign final
Design final
Indu Sharma Bhardwaj
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
jackcrews
 

Similar to ADUF - Adaptable Design Up Front (20)

Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile Development
 
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycle
 
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
 
Week_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.pptWeek_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.ppt
 
SE Lecture 3.ppt
SE Lecture 3.pptSE Lecture 3.ppt
SE Lecture 3.ppt
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
 
Agile Engineering
Agile EngineeringAgile Engineering
Agile Engineering
 
Chap 3 - Agile - XP.ppt
Chap 3 - Agile - XP.pptChap 3 - Agile - XP.ppt
Chap 3 - Agile - XP.ppt
 
Software process model
Software process modelSoftware process model
Software process model
 
Fed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype DcphpFed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype Dcphp
 
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
 
Various Process of Software Engineering notes
Various Process of Software Engineering notesVarious Process of Software Engineering notes
Various Process of Software Engineering notes
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Software development philosophies v1
Software development philosophies v1Software development philosophies v1
Software development philosophies v1
 
06 fse design
06 fse design06 fse design
06 fse design
 
Software Engineering with Objects (M363) Final Revision By Kuwait10
Software Engineering with Objects (M363) Final Revision By Kuwait10Software Engineering with Objects (M363) Final Revision By Kuwait10
Software Engineering with Objects (M363) Final Revision By Kuwait10
 
Lecture1422914635
Lecture1422914635Lecture1422914635
Lecture1422914635
 
Design final
Design finalDesign final
Design final
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
 

More from Hayim Makabee

Managing your Reputation
Managing your ReputationManaging your Reputation
Managing your Reputation
Hayim Makabee
 
Applications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT WebinarApplications of Machine Learning - INDT Webinar
Applications of Machine Learning - INDT Webinar
Hayim Makabee
 
Applications of Machine Learning
Applications of Machine LearningApplications of Machine Learning
Applications of Machine Learning
Hayim Makabee
 
Blue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use CaseBlue Ocean Strategy: KashKlik Use Case
Blue Ocean Strategy: KashKlik Use Case
Hayim Makabee
 
Managing your Reputation Gvahim Webinar
Managing your Reputation Gvahim WebinarManaging your Reputation Gvahim Webinar
Managing your Reputation Gvahim Webinar
Hayim 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 Reputation
Hayim 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 Learning
Hayim 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 Role of the Software Architect
The Role of the Software ArchitectThe Role of the Software Architect
The Role of the Software Architect
Hayim 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
 

More from Hayim Makabee (13)

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

Recently uploaded

Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 

Recently uploaded (20)

Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 

ADUF - Adaptable Design Up Front

  • 1. ADUF Adaptable Design Up Front Hayim Makabee http://EffectiveSoftwareDesign.com
  • 2. Context  Iterative Software Development  Agile, Incremental
  • 3. Question  How much design should be done up front?  Up front = Before starting the implementation (coding).
  • 4. 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.”
  • 5. 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.
  • 6. 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”?
  • 10. 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”
  • 11. 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.
  • 12. 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.
  • 13. 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.
  • 14. 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”
  • 15. New development mindset  Instead of planning for software development, plan for software evolution.  Instead of designing a single system, design a family of systems.
  • 16. 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
  • 17. 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!
  • 18. Open/Closed Principle  “Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.” - Bertrand Meyer
  • 20. 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.
  • 22. Common Errors  Too much design up front  Not enough design up front  Too much openness  Not enough openness
  • 23. 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.
  • 24. 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.
  • 25. 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.
  • 26. 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.
  • 27. Extensible Designs Main alternatives for extensible designs:  Frameworks ◦ Plug-ins  Platforms
  • 28. 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.”
  • 29. 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.”
  • 31. 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.
  • 32. 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.
  • 33. Question 1  How do you identify the components in your framework or the services in your platform?
  • 34. 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.”
  • 35. Question 2  How do you decouple the components in your framework?
  • 36. 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.
  • 38. Recommender System Model Model Recommender Trainer Historic Data
  • 39. Recommender System Framework After 1 year of development:  Historic Data: 13 subclasses.  Model: 9 subclasses.  Trainer: 9 subclasses.  Recommender: 19 subclasses.
  • 40. 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
  • 41. 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 may need in the future (adaptability). ◦ NIAGNI: “No, I am gonna need it!”
  • 42. 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”.
  • 43. 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
  • 44. 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