SlideShare a Scribd company logo
1 of 47
Download to read offline
Clean Architecture Essentials
Ivan Paulovich

Stockholm Software Craftsmanship

November 13, 2019
https://paulovich.net@ivanpaulovich
Agenda
• The “Software Architecture”

• Introduction to Clean Architecture

• Plugin Argument

• Use Cases Implementation Guided By Tests

• Ports and Adapters Explained

• The User Interface is a Detail

• Frameworks are Details

• Sample Application

• Wrapping up

• References
Ivan Paulovich
Agile Software Developer, Tech Lead,
20+ GitHub projects about Clean
Architecture, SOLID, DDD and TDD. 

Speaker/Streamer.
@ivanpaulovich
The “Software Architecture”
Presentation Layer ASP.NET MVC and Autofac
Business Layer MediatR and AutoMapper
Data Layer Entity Framework and Dapper
Database and Messaging SQL Server and RabbitMQ
IDE and Tools Visual Studio, Resharper and .NET Framework
4 @ivanpaulovich
The “Software Architecture”
Presentation Layer ASP.NET MVC and Autofac
Business Layer MediatR and AutoMapper
Data Layer Entity Framework and Dapper
Database and Messaging SQL Server and RabbitMQ
IDE and Tools Visual Studio, Resharper and .NET Framework
5 @ivanpaulovich
Not a Software
Architecture!
Architecture is About Usage
6 @ivanpaulovich
Clean Architecture
• Use Cases as central organising structure. 

• Follows the Ports and Adapters pattern (Hexagonal Architecture).

• Implementation is guided by tests.

• Decoupled from technology details.

• Lots of Principles (SAP, SDP, SOLID..)

• Pluggable User Interface
@ivanpaulovich
Ticket Terminal
Ticket Terminal
Display movies
Request
movie details
Print pre-ordered
tickets
Order tickets
Customer
Movie Catalog
Order System
Credit
Processing
Use Cases
• Use Cases are delivery independent.

• Show the intent of a system.

• Use Cases are algorithms that
interpret the input to generate the
output data.

• Primary and secondary actors.
8 @ivanpaulovich
Business
v
Primary

Actors
@ivanpaulovich9
Ports and Adapters
Cloud
Messaging
UI
In Memory

Persistence

Tests
In Memory
Messaging

SQL
Secondary

Actors
Use Cases
@ivanpaulovich
Abstractions and Stability

Principles
@ivanpaulovich
Concrete

Specific 

Unstable
Abstract 

General

Stable
@ivanpaulovich
Abstract ⭐ ⭐ 

General ⭐ ⭐

Stable ⭐ ⭐
Concrete ⭐ ⭐ 

Inconsistent ⭐ ⭐

Specific ⭐ ⭐
Abstractions and Stability

Principles
Concrete ⭐ ⭐ 

Consistent ⭐ 

Specific ⭐
EntitiesEntities
CleanArchitecture
Entities
Use Cases
Controllers
Gatew
ays
Presenters
D
evices W
eb
UI
DB
External Interfaces
@ivanpaulovich
•Abstractness increases with
stability.

•Depend in the direction of
stability.

•Classes that change together
are packaged together.
Entities
Use Cases
Controllers
Presenters
Gateways
Devices UIDB Web
External Interfaces
Abstract, General, 

Stable, Consistent
Concrete, Specific, 

Unstable,
Inconsistent
Level
CleanArchitecture
@ivanpaulovich
Plugin Architecture
TicketController IOrderTicketUseCase
OrderTicket ITicketRepository
SQLTicket

Storage
Core

Layer
Infrastructure

Layer
User Interface

Layer
Abstract,
General,

Stable
Concrete, 

Specific, 

Unstable
Concrete, 

Specific, 

Unstable
Level
Level
15
<<interface>>
<<interface>>
@ivanpaulovich
Software Architecture
“A good architecture allows major decisions
to be deferred. 

A good architect maximizes the number of
decisions not made.

Uncle Bob.
16
@ivanpaulovich
Plugin Architecture
OrderTicket ITicketRepository
SQL Server / NoSQL
<<interface>>
Core

Layer
Infrastructure

Layer 17 @ivanpaulovich
• The dependencies point in the direction of the abstract components.
Core

Layer
Infrastructure

Layer
Plugin Architecture
OrderTicket ITicketRepository
SQL Server / NoSQL
<<interface>>
2nd
18 @ivanpaulovich
• The dependencies point in the direction of the abstract components.
Core

Layer
Infrastructure

Layer
Plugin Architecture
OrderTicket ITicketRepository
SQL Server / NoSQL
<<interface>>
2nd
Fake Storage
1st
Development Order19 @ivanpaulovich
• The dependencies point in the direction of the abstract components.

• The simplest component version are implemented first.
Core

Layer
Infrastructure

Layer
Plugin Architecture
OrderTicket ITicketRepository
SQL Server / NoSQL
Fake Storage
Cloud Storage
Development Order
• The dependencies point in the direction of the abstract components.

• The simplest component version are implemented first.

• Defer decisions. Keep the options open as long as possible!
<<interface>>
1st
2nd 3rd
20 @ivanpaulovich
Use Cases Implementation

Guided by Tests
• Test Cases are the first consumers implemented.

• Design the Use Cases with Single Responsibility
Principle in mind.

• Fake implementations are the first delivery mechanisms
implemented.

• Test Cases help you design fine grained Use Cases
(Interface Segregation Principle).
Test Cases
Use Cases
Fake
Persistence
Core

Layer
Infrastructure

Layer
Test Suite
21 @ivanpaulovich
Use Cases Implementation

Guided by Tests
• Test Cases are the first consumers implemented.

• Design the Use Cases with Single Responsibility
Principle in mind.

• Fake implementations are the first delivery mechanisms
implemented.

• Test Cases help you design fine grained Use Cases
(Interface Segregation Principle).
22 @ivanpaulovich
Whats is a Fake (Test Double)?

• Runs in memory (No I/O).

• Same capability as the real one.
@ivanpaulovich
Components Overview
1. Components are designed to fulfill the Core needs and
are implemented and tested in isolation.

2. Components could be replaced, upgraded or
decommissioned with minimum Core business impact.

3. Good components are loosely coupled.
Test Cases
Infrastructure

Layer
Test Suite
SQL

Storage
24 @ivanpaulovich
Run the host 

using Fakes
Run the host 

using the 

Real Implementations
@ivanpaulovich
ASPNETCORE_ENVIRONMENT=Development
ASPNETCORE_ENVIRONMENT=Production
Application
Infrastructure
Unit Test
Web
Database
Domain
Ports and Adapters
@ivanpaulovich26
Application
Infrastructure
Unit Test
Web
Database
Domain
Ports and Adapters
@ivanpaulovich27
Application
Infrastructure
Unit Test
Web
Database
Domain
Ports and Adapters
@ivanpaulovich28
Application
Infrastructure
Unit Test
Web
Database
Domain
Ports and Adapters
@ivanpaulovich29
You can run it in Production

if you want.
Get feedback!
Application
Infrastructure
Unit Test
Web
Database
Domain
Ports and Adapters
@ivanpaulovich30
Application
Infrastructure
Unit Test
Web
Database
Domain
Ports and Adapters
@ivanpaulovich31
Application
Infrastructure
Unit Test
Web
Database
Domain
Ports and Adapters
@ivanpaulovich32
Application
Unit Test
Web
Database
Domain
Primary

Actors
Secondary

Actors
@ivanpaulovich33
Infrastructure
Ports and Adapters
Frameworks are Details
• Application code called by frameworks should be under control.

• Hide 3rd party libraries, use them behind core interfaces. 

• The .NET Framework is a detail.

• Keep outside the Business Layer: 

Reflection, Linq, Entity Framework, MVC, Data Annotations, WCF.
34
@ivanpaulovich
• First-Class Collection.

• Encapsulation.
The User Interface is a detail
The User Interface is a detail
The User Interface is a detail
The User Interface is a detail
AccountsController IUseCase GetAccountDetails

UseCase
Core

Layer
User Interface

Layer
<<interface>>
GetAccountDetails

Input
GetAccountDetails

Presenter
GetAccountDetails

Output
IOutputPort
Response
<<interface>>
@ivanpaulovich39
Sample Application
Ticket Terminal
Todo List App
Add Todo Item
List Todo Items
Do
Undo
User Storage
40 @ivanpaulovich
Sample Application
Ticket Terminal
Todo List App
Add Todo Item
List Todo Items
Do
Undo
User Storage
41 @ivanpaulovich
42
✅ Commad-Line
Task management
with storage on
your GitHub 🔥
@ivanpaulovich
$ dotnet tool install -g todo
https://github.com/ivanpaulovich/todo
Evolutionary Architecture In Action
43
Use Cases Todo
List
Do Undo Remove
Rename
Unit Tests Web API
Console App
In Memory
File System
SQL Server
GitHub
Persistence
User Interface
@ivanpaulovich
@ivanpaulovich
Splitting packages on the software lifetime
Domain
Application
Infrastructure
User Interface
Tests
Tests
Core
Tests
Core
Infrastructure
1 2 3 4
Wrapping up Clean Architecture
• Clean Architecture is about usage and the use cases are the central
organising principle.

• Use cases implementation are guided by tests.

• The User Interface and Persistence are designed to fulfil the core
needs (not the opposite!).

• Defer decisions by implementing the simplest component first.
45
@ivanpaulovich
References
https://cleancoders.com
Clean Code: Component Design
Clean Code: SOLID Principles
Clean Code: Fundamentals
https://github.com/ivanpaulovich/clean-architecture-manga
Robert C Martin - Clean
Architecture and Design
47
Ask me two
questions!
@ivanpaulovich
Fork me on GitHub

More Related Content

What's hot

What's hot (20)

Clean architecture - Protecting the Domain
Clean architecture - Protecting the DomainClean architecture - Protecting the Domain
Clean architecture - Protecting the Domain
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Domain driven design and model driven development
Domain driven design and model driven developmentDomain driven design and model driven development
Domain driven design and model driven development
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Hexagonal architecture
Hexagonal architectureHexagonal architecture
Hexagonal architecture
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Patterns for distributed systems
Patterns for distributed systemsPatterns for distributed systems
Patterns for distributed systems
 
Introduction to DDD
Introduction to DDDIntroduction to DDD
Introduction to DDD
 
Hexagonal architecture for java applications
Hexagonal architecture for java applicationsHexagonal architecture for java applications
Hexagonal architecture for java applications
 
Hexagonal architecture with Spring Boot
Hexagonal architecture with Spring BootHexagonal architecture with Spring Boot
Hexagonal architecture with Spring Boot
 
Building rich domain models with ddd and tdd ivan paulovich - betsson
Building rich domain models with ddd and tdd   ivan paulovich - betssonBuilding rich domain models with ddd and tdd   ivan paulovich - betsson
Building rich domain models with ddd and tdd ivan paulovich - betsson
 
CQRS: Command/Query Responsibility Segregation
CQRS: Command/Query Responsibility SegregationCQRS: Command/Query Responsibility Segregation
CQRS: Command/Query Responsibility Segregation
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and Saga
 
From framework coupled code to #microservices through #DDD /by @codelytv
From framework coupled code to #microservices through #DDD /by @codelytvFrom framework coupled code to #microservices through #DDD /by @codelytv
From framework coupled code to #microservices through #DDD /by @codelytv
 
Domain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) Presentation
 
BPM Patterns & Best Practices with OutSystems BPT
BPM Patterns & Best Practices with OutSystems BPTBPM Patterns & Best Practices with OutSystems BPT
BPM Patterns & Best Practices with OutSystems BPT
 

Similar to Clean Architecture Essentials - Stockholm Software Craftsmanship

Optimizing Spark Deployments for Containers: Isolation, Safety, and Performan...
Optimizing Spark Deployments for Containers: Isolation, Safety, and Performan...Optimizing Spark Deployments for Containers: Isolation, Safety, and Performan...
Optimizing Spark Deployments for Containers: Isolation, Safety, and Performan...
Spark Summit
 

Similar to Clean Architecture Essentials - Stockholm Software Craftsmanship (20)

Clean Architecture Essentials @ivanpaulovich
Clean Architecture Essentials @ivanpaulovichClean Architecture Essentials @ivanpaulovich
Clean Architecture Essentials @ivanpaulovich
 
DDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan PaulovichDDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan Paulovich
 
Elastic-Engineering
Elastic-EngineeringElastic-Engineering
Elastic-Engineering
 
DevSecCon Boston 2018: Building a practical DevSecOps pipeline for free by Je...
DevSecCon Boston 2018: Building a practical DevSecOps pipeline for free by Je...DevSecCon Boston 2018: Building a practical DevSecOps pipeline for free by Je...
DevSecCon Boston 2018: Building a practical DevSecOps pipeline for free by Je...
 
Improve Visibility and Diagnostics of Your Network with Network Management So...
Improve Visibility and Diagnostics of Your Network with Network Management So...Improve Visibility and Diagnostics of Your Network with Network Management So...
Improve Visibility and Diagnostics of Your Network with Network Management So...
 
Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s
 
Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017
 
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e... Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 
Oracle Application Express 20.2 New Features
Oracle Application Express 20.2 New FeaturesOracle Application Express 20.2 New Features
Oracle Application Express 20.2 New Features
 
JCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxJCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptx
 
SUG Bangalore - Kick Off Session
SUG Bangalore - Kick Off SessionSUG Bangalore - Kick Off Session
SUG Bangalore - Kick Off Session
 
C# 4.0 - Whats New
C# 4.0 - Whats NewC# 4.0 - Whats New
C# 4.0 - Whats New
 
Azug BE Session Nov 2018 Wim Van den Broeck
Azug BE Session Nov 2018 Wim Van den BroeckAzug BE Session Nov 2018 Wim Van den Broeck
Azug BE Session Nov 2018 Wim Van den Broeck
 
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud Microservices
 
PostMan and Jenkins RestApi Automation.pptx
PostMan and Jenkins RestApi Automation.pptxPostMan and Jenkins RestApi Automation.pptx
PostMan and Jenkins RestApi Automation.pptx
 
Building Applications Using the U2 Toolkit for .NET
Building Applications Using the U2 Toolkit for .NETBuilding Applications Using the U2 Toolkit for .NET
Building Applications Using the U2 Toolkit for .NET
 
Security with the Speed of Continuous Delivery
Security with the Speed of Continuous DeliverySecurity with the Speed of Continuous Delivery
Security with the Speed of Continuous Delivery
 
Asp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech SoftwareAsp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech Software
 
Test Design for Fully Automated Build Architectures
Test Design for Fully Automated Build ArchitecturesTest Design for Fully Automated Build Architectures
Test Design for Fully Automated Build Architectures
 
Optimizing Spark Deployments for Containers: Isolation, Safety, and Performan...
Optimizing Spark Deployments for Containers: Isolation, Safety, and Performan...Optimizing Spark Deployments for Containers: Isolation, Safety, and Performan...
Optimizing Spark Deployments for Containers: Isolation, Safety, and Performan...
 

More from Ivan Paulovich

Mercado de ti e suas oportunidades
Mercado de ti e suas oportunidadesMercado de ti e suas oportunidades
Mercado de ti e suas oportunidades
Ivan Paulovich
 
Construindo Apps com ASP.NET SignalR
Construindo Apps com ASP.NET SignalRConstruindo Apps com ASP.NET SignalR
Construindo Apps com ASP.NET SignalR
Ivan Paulovich
 
Levando sua aplicação para a nuvem
Levando sua aplicação para a nuvemLevando sua aplicação para a nuvem
Levando sua aplicação para a nuvem
Ivan Paulovich
 
Conhecendo os recursos do ASP.NET Web API
Conhecendo os recursos do ASP.NET Web APIConhecendo os recursos do ASP.NET Web API
Conhecendo os recursos do ASP.NET Web API
Ivan Paulovich
 
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Criando aplicativos para Windows 8 usando apenas HTML5 e JavascriptCriando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Ivan Paulovich
 

More from Ivan Paulovich (17)

Moving to Microservices
Moving to MicroservicesMoving to Microservices
Moving to Microservices
 
Produzindo e consumindo um stream de eventos
Produzindo e consumindo um stream de eventosProduzindo e consumindo um stream de eventos
Produzindo e consumindo um stream de eventos
 
Como uma aplicação baseada em fluxo de dados pode ampliar a segurança em crec...
Como uma aplicação baseada em fluxo de dados pode ampliar a segurança em crec...Como uma aplicação baseada em fluxo de dados pode ampliar a segurança em crec...
Como uma aplicação baseada em fluxo de dados pode ampliar a segurança em crec...
 
Como uma aplicação baseada em fluxo de dados pode ampliar a segurança em creches
Como uma aplicação baseada em fluxo de dados pode ampliar a segurança em crechesComo uma aplicação baseada em fluxo de dados pode ampliar a segurança em creches
Como uma aplicação baseada em fluxo de dados pode ampliar a segurança em creches
 
Aggregates com Event Sourcing
Aggregates com Event SourcingAggregates com Event Sourcing
Aggregates com Event Sourcing
 
Estudo do eShopOnContainers
Estudo do eShopOnContainersEstudo do eShopOnContainers
Estudo do eShopOnContainers
 
Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)
 
Princípios SOLID de OO usando .NET
Princípios SOLID de OO usando .NETPrincípios SOLID de OO usando .NET
Princípios SOLID de OO usando .NET
 
Utilize o vso e publique imagens docker Global Azure Bootcamp - BH
Utilize o vso e publique imagens docker Global Azure Bootcamp - BHUtilize o vso e publique imagens docker Global Azure Bootcamp - BH
Utilize o vso e publique imagens docker Global Azure Bootcamp - BH
 
Windows Azure Mobile Services InfoTech 2014
Windows Azure Mobile Services InfoTech 2014Windows Azure Mobile Services InfoTech 2014
Windows Azure Mobile Services InfoTech 2014
 
Mercado de ti e suas oportunidades
Mercado de ti e suas oportunidadesMercado de ti e suas oportunidades
Mercado de ti e suas oportunidades
 
Construindo Apps Com SignalR
Construindo Apps Com SignalRConstruindo Apps Com SignalR
Construindo Apps Com SignalR
 
Construindo apps de tempo real com SignalR
Construindo apps de tempo real com SignalRConstruindo apps de tempo real com SignalR
Construindo apps de tempo real com SignalR
 
Construindo Apps com ASP.NET SignalR
Construindo Apps com ASP.NET SignalRConstruindo Apps com ASP.NET SignalR
Construindo Apps com ASP.NET SignalR
 
Levando sua aplicação para a nuvem
Levando sua aplicação para a nuvemLevando sua aplicação para a nuvem
Levando sua aplicação para a nuvem
 
Conhecendo os recursos do ASP.NET Web API
Conhecendo os recursos do ASP.NET Web APIConhecendo os recursos do ASP.NET Web API
Conhecendo os recursos do ASP.NET Web API
 
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Criando aplicativos para Windows 8 usando apenas HTML5 e JavascriptCriando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
 

Recently uploaded

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Recently uploaded (20)

%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 

Clean Architecture Essentials - Stockholm Software Craftsmanship