SlideShare una empresa de Scribd logo
1 de 62
Descargar para leer sin conexión
A Case for Outside-In Design
@sandromancuso
Bias: inclination or prejudice for
or against someone or something
in way that is considered unfair.
We all have software design biases.
Structural Biases
• Code matches the sequence which requirements were described.
• Developers focus on implementing the behaviour, without worrying about mapping domain
concepts.
Procedural
• Starts with an analysis on how data across features relate. A static view of the system is created.
• Data model is used to create the database structure and entities. Behaviour away from data model.Data
• Nouns are identified and become the center piece of the design. Verbs are then attached to nouns.
• Behaviour is encapsulated in objects. Objects send messages to each other in order to collaborate.Object
• Focus on a sequence of data transformations, internal steps first. Complex behaviour via
composition.
• Side effects and mutability are controlled and isolated from the main logic
Functional
• Focus on behaviour of the business features and then the data needed for that behaviour.
• Verbs are more important than the nouns and are considered to provide the real business value.Service
• Focus on not only the actions but also all events before and after each significant action of the
system.
• Events are a key design building block. Decoupling is a key aspect of design.
Event
Operational & Architectural
Design Biases
Performance
Architectural
Patterns
Scalability CQRS/ES
Micro
Services
SOAThroughput
Containers
Actor Model Plugin etc…
Hexagonal
Design Direction Biases
•Persistence >> Domain Model >> User Interface.
•Data, and the way it is stored, is the most important aspect of the design.Persistence
•Domain Model >> Persistence >> User Interface. (a.k.a. Inside-Out)
•Domain Model is the main focus. Persistence and user interface are details of
implementation.
Domain
•User Interface >> Domain Model >> Persistence.
•Usability is the main focus. Domain Model and Persistence should only exist to
satisfy the external needs.
User
Interface
•Similar to UI. Focus on incremental design and continuous delivery, splitting
requirements in thin vertical slices. Describes how users interact with the system.
•Tests, design, and execution flow point to the same direction (outside >> inside)
Incremental
Outside-In
Design techniques and their impact.
(internal vs. external perspective)
Domain
Model
An insider’s perspective
Domain
Model
An outsider’s perspective
Domain
Model
Adapter layer and accidental complexity
Adapter
Layer
Are we over or under engineering?
Domain Model is a much wider concept than what we
see in the middle of a hexagon.
Product Backlog
(small intersection)
Small intersection, big problem
The goal of software design is to
enable companies to continuously
achieve their business goals.
A Case for Outside-In Design
The usefulness of a domain model
needs to be evaluated from an outside
(business) perspective.
Clients & Company
Functional Areas
Services ecosystem
Service
Modules
(OUTSIDE) Real domain / value
(INSIDE) Abstract sub-domain model
Strategic design
(business alignment)
Software implementation
(delivery mechanisms,
use cases, sub-domain
models, infrastructure, etc)
So, where do we start if we want to build a new
system or a set of features related to a business
outcome?
Product box
Impact Mapping
Functional Mapping
User Interaction via Mockups
Outside-In TDD/Design
Omni-channel, with
sales over the web,
Catalog management
per country.
Outside-In Design Domain Modeling PracticesLevelofabstraction
Product box
Impact Mapping
Functional Mapping
User Interaction via Mockups
Outside-In TDD/Design
Omni-channel, with
sales over the web,
Catalog management
per country.
Outside-In Design Domain Modeling PracticesLevelofabstraction
Identifying High Cohesive Functional Areas
(birds-eye view)
Product Box
• Omni-channel, with sales over the web,
mobile, physical stores, and external
market places.
• Catalogue management per country.
• Multi-warehouse management.
• Product and supplier management.
• Orders management and support.
• Customers wish lists and favourites.
• Multiple delivery options.
• Multiple payment methods and anti-
fraud detection.
• Customer information management.
• Sales and promotion.
• Marketplace for franchisees.
Functional areas
• Basket
• Catalogue
• Warehouse
• Product
• Supplier
• Order
• Customer
• Delivery
• Payment
• Sales
• Marketplace
• Omni-channel, with sales over the web,
mobile, physical stores, and external
market places.
• Catalogue management per country.
• Multi-warehouse management.
• Product and supplier management.
• Orders management and support.
• Customers wish lists and favourites.
• Multiple delivery options.
• Multiple payment methods and anti-
fraud detection.
• Customer information management.
• Sales and promotion.
• Marketplace for franchisees.
Product Box
Product Box
Goal: Identify the most important goals and features
of the system and their respective functional areas.
Benefits:
• Creation of product roadmaps or portfolio level backlog.
• Organize the architecture according to functional areas.
• Help teams and POs to map features to functional areas.
• Enable teams organisation and planning.
• Help with the prioritisation of features related to strategic
areas.
Frequency: 1 session every 6 to 12 months. Duration: 3 hours
People involved: Business and development team
Product box
Impact Mapping
Functional Mapping
User Interaction via Mockups
Outside-In TDD/Design
Omni-channel, with
sales over the web,
Catalog management
per country.
Outside-In Design Domain Modeling PracticesLevelofabstraction
Finding answers to the following
questions:
- What should we build in the next few months?
- Which features would give us a higher impact?
- How do we identify bounded contexts and high
level architecture?
- How do we enable teams to work in parallel?
- How do we show a plan of action to our
stakeholders?
- How do we reduce dependencies and plan for
continuous delivery?
Impact Mapping
Goal
Actor 1
Impact 1
Deliverable 1
Deliverable 2
Impact 2 Deliverable 3
Actor 2
Impact 3
Deliverable 4
Deliverable 5
Impact 4
Deliverable 6
Deliverable 7
Let’s see a real example
A Case for Outside-In Design
A Case for Outside-In Design
A Case for Outside-In Design
Impact Mapping results
• Business focus on high value features.
• Bounded Contexts defined in collaboration with
the business, enabling the ubiquitous language.
• Service candidates and high-level architecture.
• Technology stack of each bounded context /
service can be discussed in isolation.
• Easier to parallelize work across teams.
• Concrete plan of action to stakeholders.
• Easier to achieve continuous delivery due to
system modularisation.
Frequency: 1 session for each milestone (3/4 months). Duration: 1 day
People involved: Business and development team
Product box
Impact Mapping
Functional Mapping
User Interaction via Mockups
Outside-In TDD/Design
Omni-channel, with
sales over the web,
Catalog management
per country.
Outside-In Design Domain Modeling PracticesLevelofabstraction
Functional Mapping
The goal is to understand:
• External world (users/systems) interactions with
our system(s).
• Business flows.
• Interactions between functional areas.
• Separation of concerns across functional areas.
• Define which functional areas should become
services.
Functional Mapping - Catalogue
Functional Mapping – View Catalogue
Functional Mapping – Add to Cart
Functional Mapping – View Cart
Functional Mapping – Check Out
Functional Mapping – Make the payment
Helps to identify the behaviour of each Functional Area
and the relationship among them.
Functional Mapping
Analysing
Functional
Coupling
Changes worth
considering.
Product box
Impact Mapping
Functional Mapping
User Interaction via Mockups
Outside-In TDD/Design
Omni-channel, with
sales over the web,
Catalog management
per country.
Outside-In Design Domain Modeling PracticesLevelofabstraction
Mockups and APIs
The goal is to:
•Identify the behaviour (actions/use cases) each
service will need to provide to the external world.
•Identify the scope of the delivery mechanism.
•Define the granularity and contract of end-points
Let’s see a example
Mockups and APIs
Mockups and APIs
API Contract
Mockups
Help us identify the entry points (actions/use cases)
of our domain model.
Product box
Impact Mapping
Functional Mapping
User Interaction via Mockups
Outside-In TDD/Design
Omni-channel, with
sales over the web,
Catalog management
per country.
Outside-In Design Domain Modeling PracticesLevelofabstraction
Outside-TDD / Design
The goal is to:
•Implement the specified behaviour in each service.
•Build features in small vertical slices.
•Use just-in-time design to build the delivery
mechanism and domain model.
•Build just enough well-designed and tested code to
satisfy the external need.
Outside-TDD
A Case for Outside-In Design
Incremental Development
Product box
Impact Mapping
Functional Mapping
User Interaction via Mockups
Outside-In TDD/Design
Omni-channel, with
sales over the web,
Catalog management
per country.
Outside-In Design Domain Modeling PracticesLevelofabstraction
Product Box
• Every 6/12
months
Impact
Mapping
• Every 3/4
months
(milestone)
Functional
Mapping
• Around once
a month
(when
exploring
new flows)
Mockups
• Once every 1
or 2 weeks
(when
building new
screens)
Outside-In
TDD
• Daily (while
building
software)
Frequency of each practice
Where do we go from here?
Business
product design
Technology
software design
We need to widen the intersection
Aligning product and software design
https://www.youtube.com/user/codurance
https://cleancoders.com/videos/comparativeDesign
Thank you
sandro@codurance.com
@sandromancuso

Más contenido relacionado

La actualidad más candente

Testingtechniques And Strategy
Testingtechniques And StrategyTestingtechniques And Strategy
Testingtechniques And Strategynazeer pasha
 
Software testing part
Software testing partSoftware testing part
Software testing partPreeti Mishra
 
Webapplicationtesting
WebapplicationtestingWebapplicationtesting
Webapplicationtestingnazeer pasha
 
Requirements Management Using Innoslate
Requirements Management Using InnoslateRequirements Management Using Innoslate
Requirements Management Using InnoslateElizabeth Steiner
 
Sanjeevi's SDLC Guest Lecture in Anna University campus at AU-PERS Centre (Ye...
Sanjeevi's SDLC Guest Lecture in Anna University campus at AU-PERS Centre (Ye...Sanjeevi's SDLC Guest Lecture in Anna University campus at AU-PERS Centre (Ye...
Sanjeevi's SDLC Guest Lecture in Anna University campus at AU-PERS Centre (Ye...Sanjeevi Prasad
 
Lecture 11 understanding requirements (3)
Lecture 11   understanding requirements (3)Lecture 11   understanding requirements (3)
Lecture 11 understanding requirements (3)IIUI
 
Software engineering rogers pressman chapter 7
Software engineering rogers pressman chapter 7Software engineering rogers pressman chapter 7
Software engineering rogers pressman chapter 7mohammad hossein Jalili
 
Requirement modeling
Requirement modelingRequirement modeling
Requirement modelingAbdul Basit
 
Model-Based Systems Requirements
Model-Based Systems RequirementsModel-Based Systems Requirements
Model-Based Systems RequirementsJean-Michel Bruel
 
Visualizing non-functional requirements
Visualizing non-functional requirementsVisualizing non-functional requirements
Visualizing non-functional requirementsNeil Ernst
 
Analysis modeling in software engineering
Analysis modeling in software engineeringAnalysis modeling in software engineering
Analysis modeling in software engineeringMuhammadTalha436
 

La actualidad más candente (20)

Testingtechniques And Strategy
Testingtechniques And StrategyTestingtechniques And Strategy
Testingtechniques And Strategy
 
Generic process model
Generic process modelGeneric process model
Generic process model
 
Slides chapter 17
Slides chapter 17Slides chapter 17
Slides chapter 17
 
Software testing part
Software testing partSoftware testing part
Software testing part
 
Webapplicationtesting
WebapplicationtestingWebapplicationtesting
Webapplicationtesting
 
Slides chapter 3
Slides chapter 3Slides chapter 3
Slides chapter 3
 
Slides chapters 13-14
Slides chapters 13-14Slides chapters 13-14
Slides chapters 13-14
 
testing
testingtesting
testing
 
Requirements Management Using Innoslate
Requirements Management Using InnoslateRequirements Management Using Innoslate
Requirements Management Using Innoslate
 
Sanjeevi's SDLC Guest Lecture in Anna University campus at AU-PERS Centre (Ye...
Sanjeevi's SDLC Guest Lecture in Anna University campus at AU-PERS Centre (Ye...Sanjeevi's SDLC Guest Lecture in Anna University campus at AU-PERS Centre (Ye...
Sanjeevi's SDLC Guest Lecture in Anna University campus at AU-PERS Centre (Ye...
 
Lecture 11 understanding requirements (3)
Lecture 11   understanding requirements (3)Lecture 11   understanding requirements (3)
Lecture 11 understanding requirements (3)
 
Software engineering rogers pressman chapter 7
Software engineering rogers pressman chapter 7Software engineering rogers pressman chapter 7
Software engineering rogers pressman chapter 7
 
Requirement modeling
Requirement modelingRequirement modeling
Requirement modeling
 
Model-Based Systems Requirements
Model-Based Systems RequirementsModel-Based Systems Requirements
Model-Based Systems Requirements
 
Visualizing non-functional requirements
Visualizing non-functional requirementsVisualizing non-functional requirements
Visualizing non-functional requirements
 
Ch04
Ch04Ch04
Ch04
 
SE chapter 4
SE chapter 4SE chapter 4
SE chapter 4
 
Ch05
Ch05Ch05
Ch05
 
Process Support for requirements engineering
Process Support for requirements engineeringProcess Support for requirements engineering
Process Support for requirements engineering
 
Analysis modeling in software engineering
Analysis modeling in software engineeringAnalysis modeling in software engineering
Analysis modeling in software engineering
 

Similar a A Case for Outside-In Design

Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introductionwojtek_s
 
Clarisoft Software Development Process (Lunch & Learn Presentation)
Clarisoft Software Development Process (Lunch & Learn Presentation)Clarisoft Software Development Process (Lunch & Learn Presentation)
Clarisoft Software Development Process (Lunch & Learn Presentation)Robert Haines
 
Product Design & Development Process By- Achia Nila
Product Design & Development Process  By- Achia NilaProduct Design & Development Process  By- Achia Nila
Product Design & Development Process By- Achia NilaAchia Nila
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAAiman Hud
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignMuhammad Ali
 
A brief introduction to Enterprise and Industrial UX
A brief introduction to Enterprise and Industrial UXA brief introduction to Enterprise and Industrial UX
A brief introduction to Enterprise and Industrial UXLarry Burks
 
Lect5 improving software economics
Lect5 improving software economicsLect5 improving software economics
Lect5 improving software economicsmeena466141
 
An Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHPAn Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHPChris Renner
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture uploadThe Real Dyl
 
User centered design process - Measurefest Presentation
User centered design process - Measurefest PresentationUser centered design process - Measurefest Presentation
User centered design process - Measurefest Presentationflashbender
 
Week 8 & 10
Week 8 & 10Week 8 & 10
Week 8 & 10Study Geek
 
How Celtra Optimizes its Advertising Platform with Databricks
How Celtra Optimizes its Advertising Platformwith DatabricksHow Celtra Optimizes its Advertising Platformwith Databricks
How Celtra Optimizes its Advertising Platform with DatabricksGrega Kespret
 
Reconnect17 PeopleSoft Supply Chain Management SIG Meeting
Reconnect17 PeopleSoft Supply Chain Management SIG MeetingReconnect17 PeopleSoft Supply Chain Management SIG Meeting
Reconnect17 PeopleSoft Supply Chain Management SIG MeetingSmart ERP Solutions, Inc.
 
1221 raise expectations_for_the_ always_on_enterprise
1221 raise expectations_for_the_ always_on_enterprise1221 raise expectations_for_the_ always_on_enterprise
1221 raise expectations_for_the_ always_on_enterpriseScott Simmons
 
Supporting material for my Webinar to the ACS - June2017
Supporting material for my Webinar to the ACS - June2017Supporting material for my Webinar to the ACS - June2017
Supporting material for my Webinar to the ACS - June2017Daljit Banger
 
Transitioning our Toolkit
Transitioning our ToolkitTransitioning our Toolkit
Transitioning our ToolkitIIBA UK Chapter
 

Similar a A Case for Outside-In Design (20)

Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introduction
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Clarisoft Software Development Process (Lunch & Learn Presentation)
Clarisoft Software Development Process (Lunch & Learn Presentation)Clarisoft Software Development Process (Lunch & Learn Presentation)
Clarisoft Software Development Process (Lunch & Learn Presentation)
 
Product Design & Development Process By- Achia Nila
Product Design & Development Process  By- Achia NilaProduct Design & Development Process  By- Achia Nila
Product Design & Development Process By- Achia Nila
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain Driven Design
Domain Driven Design Domain Driven Design
Domain Driven Design
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIA
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
A brief introduction to Enterprise and Industrial UX
A brief introduction to Enterprise and Industrial UXA brief introduction to Enterprise and Industrial UX
A brief introduction to Enterprise and Industrial UX
 
Lect5 improving software economics
Lect5 improving software economicsLect5 improving software economics
Lect5 improving software economics
 
An Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHPAn Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHP
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture upload
 
User centered design process - Measurefest Presentation
User centered design process - Measurefest PresentationUser centered design process - Measurefest Presentation
User centered design process - Measurefest Presentation
 
Week 8 & 10
Week 8 & 10Week 8 & 10
Week 8 & 10
 
How Celtra Optimizes its Advertising Platform with Databricks
How Celtra Optimizes its Advertising Platformwith DatabricksHow Celtra Optimizes its Advertising Platformwith Databricks
How Celtra Optimizes its Advertising Platform with Databricks
 
Reconnect17 PeopleSoft Supply Chain Management SIG Meeting
Reconnect17 PeopleSoft Supply Chain Management SIG MeetingReconnect17 PeopleSoft Supply Chain Management SIG Meeting
Reconnect17 PeopleSoft Supply Chain Management SIG Meeting
 
1221 raise expectations_for_the_ always_on_enterprise
1221 raise expectations_for_the_ always_on_enterprise1221 raise expectations_for_the_ always_on_enterprise
1221 raise expectations_for_the_ always_on_enterprise
 
Supporting material for my Webinar to the ACS - June2017
Supporting material for my Webinar to the ACS - June2017Supporting material for my Webinar to the ACS - June2017
Supporting material for my Webinar to the ACS - June2017
 
Chapter 6 design
Chapter 6 designChapter 6 design
Chapter 6 design
 
Transitioning our Toolkit
Transitioning our ToolkitTransitioning our Toolkit
Transitioning our Toolkit
 

Más de Sandro Mancuso

Software Modernisation: a strategic approach
Software Modernisation: a strategic approachSoftware Modernisation: a strategic approach
Software Modernisation: a strategic approachSandro Mancuso
 
Aligning Product and Software Design
Aligning Product and Software DesignAligning Product and Software Design
Aligning Product and Software DesignSandro Mancuso
 
Crafted Design - LJC World Tour Mash Up 2014
Crafted Design - LJC World Tour Mash Up 2014Crafted Design - LJC World Tour Mash Up 2014
Crafted Design - LJC World Tour Mash Up 2014Sandro Mancuso
 
Crafted Design - ITAKE 2014
Crafted Design - ITAKE 2014Crafted Design - ITAKE 2014
Crafted Design - ITAKE 2014Sandro Mancuso
 
Crafted Design - GeeCON 2014
Crafted Design - GeeCON 2014Crafted Design - GeeCON 2014
Crafted Design - GeeCON 2014Sandro Mancuso
 
Legacy Code Hands-on Session
Legacy Code Hands-on Session Legacy Code Hands-on Session
Legacy Code Hands-on Session Sandro Mancuso
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software CraftsmanshipSandro Mancuso
 
How much do we know about Object-Oriented Programming?
How much do we know about Object-Oriented Programming?How much do we know about Object-Oriented Programming?
How much do we know about Object-Oriented Programming?Sandro Mancuso
 
Software Craftsmanship - JAX London 2011
Software Craftsmanship - JAX London 2011Software Craftsmanship - JAX London 2011
Software Craftsmanship - JAX London 2011Sandro Mancuso
 

Más de Sandro Mancuso (9)

Software Modernisation: a strategic approach
Software Modernisation: a strategic approachSoftware Modernisation: a strategic approach
Software Modernisation: a strategic approach
 
Aligning Product and Software Design
Aligning Product and Software DesignAligning Product and Software Design
Aligning Product and Software Design
 
Crafted Design - LJC World Tour Mash Up 2014
Crafted Design - LJC World Tour Mash Up 2014Crafted Design - LJC World Tour Mash Up 2014
Crafted Design - LJC World Tour Mash Up 2014
 
Crafted Design - ITAKE 2014
Crafted Design - ITAKE 2014Crafted Design - ITAKE 2014
Crafted Design - ITAKE 2014
 
Crafted Design - GeeCON 2014
Crafted Design - GeeCON 2014Crafted Design - GeeCON 2014
Crafted Design - GeeCON 2014
 
Legacy Code Hands-on Session
Legacy Code Hands-on Session Legacy Code Hands-on Session
Legacy Code Hands-on Session
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software Craftsmanship
 
How much do we know about Object-Oriented Programming?
How much do we know about Object-Oriented Programming?How much do we know about Object-Oriented Programming?
How much do we know about Object-Oriented Programming?
 
Software Craftsmanship - JAX London 2011
Software Craftsmanship - JAX London 2011Software Craftsmanship - JAX London 2011
Software Craftsmanship - JAX London 2011
 

Último

Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLAlluxio, Inc.
 
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example ProjectMastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example Projectwajrcs
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampVICTOR MAESTRE RAMIREZ
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadIvo Andreev
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilVICTOR MAESTRE RAMIREZ
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntelliSource Technologies
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIIvo Andreev
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?AmeliaSmith90
 
20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기Chiwon Song
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeNeo4j
 
Kubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxKubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxPrakarsh -
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024Mind IT Systems
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorShane Coughlan
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmonyelliciumsolutionspun
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesShyamsundar Das
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Neo4j
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfBrain Inventory
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesSoftwareMill
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsJaydeep Chhasatia
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies
 

Último (20)

Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
 
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example ProjectMastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - Datacamp
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and Bad
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-Council
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptx
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AI
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?
 
20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기20240330_고급진 코드를 위한 exception 다루기
20240330_고급진 코드를 위한 exception 다루기
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG time
 
Kubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxKubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptx
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS Calculator
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security Challenges
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdf
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retries
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in Trivandrum
 

A Case for Outside-In Design

  • 1. A Case for Outside-In Design @sandromancuso
  • 2. Bias: inclination or prejudice for or against someone or something in way that is considered unfair.
  • 3. We all have software design biases.
  • 4. Structural Biases • Code matches the sequence which requirements were described. • Developers focus on implementing the behaviour, without worrying about mapping domain concepts. Procedural • Starts with an analysis on how data across features relate. A static view of the system is created. • Data model is used to create the database structure and entities. Behaviour away from data model.Data • Nouns are identified and become the center piece of the design. Verbs are then attached to nouns. • Behaviour is encapsulated in objects. Objects send messages to each other in order to collaborate.Object • Focus on a sequence of data transformations, internal steps first. Complex behaviour via composition. • Side effects and mutability are controlled and isolated from the main logic Functional • Focus on behaviour of the business features and then the data needed for that behaviour. • Verbs are more important than the nouns and are considered to provide the real business value.Service • Focus on not only the actions but also all events before and after each significant action of the system. • Events are a key design building block. Decoupling is a key aspect of design. Event
  • 5. Operational & Architectural Design Biases Performance Architectural Patterns Scalability CQRS/ES Micro Services SOAThroughput Containers Actor Model Plugin etc… Hexagonal
  • 6. Design Direction Biases •Persistence >> Domain Model >> User Interface. •Data, and the way it is stored, is the most important aspect of the design.Persistence •Domain Model >> Persistence >> User Interface. (a.k.a. Inside-Out) •Domain Model is the main focus. Persistence and user interface are details of implementation. Domain •User Interface >> Domain Model >> Persistence. •Usability is the main focus. Domain Model and Persistence should only exist to satisfy the external needs. User Interface •Similar to UI. Focus on incremental design and continuous delivery, splitting requirements in thin vertical slices. Describes how users interact with the system. •Tests, design, and execution flow point to the same direction (outside >> inside) Incremental Outside-In
  • 7. Design techniques and their impact. (internal vs. external perspective)
  • 10. Domain Model Adapter layer and accidental complexity Adapter Layer
  • 11. Are we over or under engineering?
  • 12. Domain Model is a much wider concept than what we see in the middle of a hexagon.
  • 13. Product Backlog (small intersection) Small intersection, big problem
  • 14. The goal of software design is to enable companies to continuously achieve their business goals.
  • 15. A Case for Outside-In Design
  • 16. The usefulness of a domain model needs to be evaluated from an outside (business) perspective.
  • 17. Clients & Company Functional Areas Services ecosystem Service Modules (OUTSIDE) Real domain / value (INSIDE) Abstract sub-domain model Strategic design (business alignment) Software implementation (delivery mechanisms, use cases, sub-domain models, infrastructure, etc)
  • 18. So, where do we start if we want to build a new system or a set of features related to a business outcome?
  • 19. Product box Impact Mapping Functional Mapping User Interaction via Mockups Outside-In TDD/Design Omni-channel, with sales over the web, Catalog management per country. Outside-In Design Domain Modeling PracticesLevelofabstraction
  • 20. Product box Impact Mapping Functional Mapping User Interaction via Mockups Outside-In TDD/Design Omni-channel, with sales over the web, Catalog management per country. Outside-In Design Domain Modeling PracticesLevelofabstraction
  • 21. Identifying High Cohesive Functional Areas (birds-eye view)
  • 22. Product Box • Omni-channel, with sales over the web, mobile, physical stores, and external market places. • Catalogue management per country. • Multi-warehouse management. • Product and supplier management. • Orders management and support. • Customers wish lists and favourites. • Multiple delivery options. • Multiple payment methods and anti- fraud detection. • Customer information management. • Sales and promotion. • Marketplace for franchisees.
  • 23. Functional areas • Basket • Catalogue • Warehouse • Product • Supplier • Order • Customer • Delivery • Payment • Sales • Marketplace • Omni-channel, with sales over the web, mobile, physical stores, and external market places. • Catalogue management per country. • Multi-warehouse management. • Product and supplier management. • Orders management and support. • Customers wish lists and favourites. • Multiple delivery options. • Multiple payment methods and anti- fraud detection. • Customer information management. • Sales and promotion. • Marketplace for franchisees. Product Box
  • 24. Product Box Goal: Identify the most important goals and features of the system and their respective functional areas. Benefits: • Creation of product roadmaps or portfolio level backlog. • Organize the architecture according to functional areas. • Help teams and POs to map features to functional areas. • Enable teams organisation and planning. • Help with the prioritisation of features related to strategic areas. Frequency: 1 session every 6 to 12 months. Duration: 3 hours People involved: Business and development team
  • 25. Product box Impact Mapping Functional Mapping User Interaction via Mockups Outside-In TDD/Design Omni-channel, with sales over the web, Catalog management per country. Outside-In Design Domain Modeling PracticesLevelofabstraction
  • 26. Finding answers to the following questions: - What should we build in the next few months? - Which features would give us a higher impact? - How do we identify bounded contexts and high level architecture? - How do we enable teams to work in parallel? - How do we show a plan of action to our stakeholders? - How do we reduce dependencies and plan for continuous delivery?
  • 27. Impact Mapping Goal Actor 1 Impact 1 Deliverable 1 Deliverable 2 Impact 2 Deliverable 3 Actor 2 Impact 3 Deliverable 4 Deliverable 5 Impact 4 Deliverable 6 Deliverable 7
  • 28. Let’s see a real example
  • 32. Impact Mapping results • Business focus on high value features. • Bounded Contexts defined in collaboration with the business, enabling the ubiquitous language. • Service candidates and high-level architecture. • Technology stack of each bounded context / service can be discussed in isolation. • Easier to parallelize work across teams. • Concrete plan of action to stakeholders. • Easier to achieve continuous delivery due to system modularisation. Frequency: 1 session for each milestone (3/4 months). Duration: 1 day People involved: Business and development team
  • 33. Product box Impact Mapping Functional Mapping User Interaction via Mockups Outside-In TDD/Design Omni-channel, with sales over the web, Catalog management per country. Outside-In Design Domain Modeling PracticesLevelofabstraction
  • 34. Functional Mapping The goal is to understand: • External world (users/systems) interactions with our system(s). • Business flows. • Interactions between functional areas. • Separation of concerns across functional areas. • Define which functional areas should become services.
  • 35. Functional Mapping - Catalogue
  • 36. Functional Mapping – View Catalogue
  • 37. Functional Mapping – Add to Cart
  • 40. Functional Mapping – Make the payment
  • 41. Helps to identify the behaviour of each Functional Area and the relationship among them. Functional Mapping
  • 44. Product box Impact Mapping Functional Mapping User Interaction via Mockups Outside-In TDD/Design Omni-channel, with sales over the web, Catalog management per country. Outside-In Design Domain Modeling PracticesLevelofabstraction
  • 45. Mockups and APIs The goal is to: •Identify the behaviour (actions/use cases) each service will need to provide to the external world. •Identify the scope of the delivery mechanism. •Define the granularity and contract of end-points
  • 46. Let’s see a example
  • 50. Mockups Help us identify the entry points (actions/use cases) of our domain model.
  • 51. Product box Impact Mapping Functional Mapping User Interaction via Mockups Outside-In TDD/Design Omni-channel, with sales over the web, Catalog management per country. Outside-In Design Domain Modeling PracticesLevelofabstraction
  • 52. Outside-TDD / Design The goal is to: •Implement the specified behaviour in each service. •Build features in small vertical slices. •Use just-in-time design to build the delivery mechanism and domain model. •Build just enough well-designed and tested code to satisfy the external need.
  • 56. Product box Impact Mapping Functional Mapping User Interaction via Mockups Outside-In TDD/Design Omni-channel, with sales over the web, Catalog management per country. Outside-In Design Domain Modeling PracticesLevelofabstraction
  • 57. Product Box • Every 6/12 months Impact Mapping • Every 3/4 months (milestone) Functional Mapping • Around once a month (when exploring new flows) Mockups • Once every 1 or 2 weeks (when building new screens) Outside-In TDD • Daily (while building software) Frequency of each practice
  • 58. Where do we go from here?
  • 60. Aligning product and software design https://www.youtube.com/user/codurance