SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
An introduction to Multilayered
Software Architecture
1 april 2016
Andrei Pîrjoleanu
2
› What is “Multilayered Architecture”?
› Advantages/Disadvantages
› What layers?
› Implementation
› Further directions
› Conclusions
Agenda
3
› “A multilayered software architecture is a software architecture that uses
many layers for allocating the different responsibilities of a software
product”
 https://en.wikipedia.org/wiki/Multilayered_architecture
What is “Multilayered Architecture”?
Definition
4
› “In object-oriented design, a layer is a group of classes that have the same
set of link-time module dependencies to other modules. In other words, a
layer is a group of reusable components that are reusable in similar
circumstances”
› “Layers are often arranged in a tree-form hierarchy, with dependency
relationships as links between the layers.”
 https://en.wikipedia.org/wiki/Layer_(object-oriented_design)
What is “Multilayered Architecture”?
The “Layers” architectural pattern
5
› Spaghetti code:
 Complex and tangled control structure
 “unstructured” branching constructs
 Can be caused by several factors, such as continuous modifications by several people over a long life cycle
 https://en.wikipedia.org/wiki/Spaghetti_code
› Lasagna code:
 characterized by several well-defined and separable layers, where each layer of code accesses services in the layers
below through well-defined interfaces
 Enforces encapsulation between the different layers
 https://en.wikipedia.org/wiki/Spaghetti_code#Lasagna_code
What is “Multilayered Architecture”?
Spaghetti vs Lasagna
6
 Increased flexibility, maintainability and scalability
 Multiple applications can reuse the components
 Enables teams to work on different parts of the application in parallel with minimal
dependencies on other teams
 Different components can be independently deployed, maintained and updated, on
different time schedules
 It allows you to test the components independently of each other
 Supports the incremental development of sub-systems in different layers. When a layer
interface changes, only the adjacent layer is affected.
 Allows replacement of entire layers so long as the interface is maintained.
Advantages vs Disadvantages
Advantages
7
 It helps to control and encapsulate the complexity of large applications, but adds
complexity to simple applications
 More difficult to set up and maintain as well
 In practice, a clean separation between layers is often difficult and a high-level layer may
have to interact directly with lower-level layers rather than through the layer
immediately below it
 Performance can be a problem because of multiple levels of interpretation of a service
request as it is processed at each layer
Advantages vs Disadvantages
Disadvantages
8
 Infrastructure
 Presentation
 Application
 Domain
 Persistence
What layers?
Common layers
Presentation
Application
Domain
Persistence
Infrastructure
9
What layers?
Common layers
Infrastructure
Presentation
Application
Domain
Persistence
10
› Also known as: UI layer, view layer
› It determines how the data will be presented
› It uses a data-validation strategy to protect the system from untrusted
input
› Does not contain any business logic
What layers?
Presentation layer
11
› Also known as: Application Service layer, Services layer
› It represents the use cases and behavior of the application
› Operates at a higher level of abstraction than the Domain layer (exposes what the
system does, but not how it does it)
› It requires dependencies on external layers
› It contains only application logic (security, transaction management, communication),
being all about coordination and orchestration through delegation to Domain and
Infrastructural services
› Can sometimes be found implemented as a part of the Domain layer
› Does not contain any business logic
What layers?
Application layer
12
› Also known as: Business layer, Business logic layer (BLL)
› Represents a conceptual abstract view of the problem domain created to
fulfill the needs of the business use cases
› Prescribes how business objects interact with one another
› Focused only on Domain rules, concepts, information and workflows
› Does not depend on anything else
› Does not contain any technical details, nor persistence details
What layers?
Domain layer
13
› Also known as: Data access layer (DAL)
› Provides simplified access to data stored in persistent storage of some kind, such as an
entity-relational database
› Hides the complexity of the underlying data store from the external world
› Provides a centralized location for all calls into the storage and thus makes it easier to
port the application to other database systems
› Most implemented layers will not achieve persistence directly, but will use a storage
engine located in the Infrastructure layer
› Can sometimes be found implemented as a part of the Infrastructure layer
› Does not contain any business logic
What layers?
Persistence layer
14
› It gives energy to a system; you will not be able to run the application without it
› Contains technical details that enable the application to function
› Is concerned with purely technical capabilities, such as messaging, logging, security,
notifications, operations, commands, events, integration services, storage engines etc.
› Should not directly affect the use case exposed and the Domain logic of an application
› Can be partitioned into different levels (high-level or low-level technical services)
› Does not contain any business logic
What layers?
Infrastructure layer
15
› Some also identify a separate layer called the Business Infrastructure layer
(BI), located between the Domain layer and the Infrastructure layer; this
layer is very general and can be used in several application tiers (e.g. a
CurrencyConverter)
› All types are not always exclusive to one particular layer; a relaxed layered
system (as opposed to a strict layered system) can use so called “shared
data definition modules”, which are types not belonging in a particular
layer
What layers?
Other notes
16
Implementation
4 layer architecture
Components
Application
services
Domain
Services
Controllers UI views
Domain
Entities
Value
Objects
Repository
Contracts
Unit of Work Repositories Gateways
Query
handlers
Commands
Storage adapters Storage adapters
Integration
services
3rdPartyAdapters
Error
Hub
Command
Bus
CacheSecurity
17
Implementation
“Check Item stock” use case – Distributing responsibility
ItemController
WarehouseManagerService
ProductModel StockModel
ProductRepository StockRepository
ProductMysqlGateway StockMySqlGateway
ErrorHub
MessageBus
NotificationBus
MySqlStorageAdapter MongoDbSTorageAdapter
StockMongoDBGateway
18
Implementation
“Check Item stock” use case – Flow
ItemController WarehouseManagerService ProductMySqlGateway
MySqlStorageAdapter
StockRepository StockGateway
ProductRepository
checkStock getProductByCode getProductByCode
getRow
return rowreturn ProductDTOreturn ProductModel
getStockByItem getStockByItem
getRow
return rowreturn StockDTOreturn StockModelreturn StockDTO
19
Implementation
Dependency inversion
20
Implementation
Dependency inversion principle (SOLID)
› It refers to a specific form of decoupling software modules
 A. High-level modules should not depend on low-level modules. Both should depend on
abstractions
 B. Abstractions should not depend on details. Details should depend on abstractions.
› The goal is to avoid the highly coupled distribution with the mediation of
an abstract layer, and to increase the re-usability of higher/policy layers
21
Implementation
Dependency inversion
22
Implementation
Hexagonal architecture
23
Implementation
Onion architecture
24
Implementation
Reusable patterns
› Value Objects
› Entities
› Aggregates
› Domain Services
› Domain Events
› Factories
› Repositories
› Gateways
› Data Mappers
› Data Transfer Objects (DTOs)
› Query Object
› Identity Map
› Unit of Work
25
Further directions
Bounded Contexts
26
27
Further directions
Other concepts
› DDD
 Domain-Driven Design
 or how to effectively manage the construction and maintenance of software for complex
problem domains
› Commands, Command Handlers, Command Bus
› Events, Event Listeners, Event Dispatcher
› CQRS
 Command Query Responsibility Segregation
 or how to separate Read and Write
28
Conclusions
› Single responsibility
› Dependency inversion
› Separation of concerns
› Ports/Adapters – a.k.a. Interfaces and Concrete implementations
› Reusable patterns
29
References
› https://en.wikipedia.org/wiki/Multilayered_architecture
› http://csis.pace.edu/~marchese/CS389/L6/Chapter%206_Summary.pdf
› http://alistair.cockburn.us/Hexagonal+architecture
› http://jeffreypalermo.com/blog/the-onion-architecture-part-1/
› “Patterns, Principles and Practices of Domain-Driven Design” – Scott
Millett with Nick Tune
› “Patterns of Enterprise Application Architecture” – Martin Fowler
Avangate
Redwood Shores, California - USA
Amsterdam - Netherlands
Bucharest – Romania
Atlanta, Georgia - USA
Tel: (650) 249 – 5280 / +31 20 890 8080
Q&A

Mais conteúdo relacionado

Mais procurados

Database connectivity and web technologies
Database connectivity and web technologiesDatabase connectivity and web technologies
Database connectivity and web technologiesDhani Ahmad
 
Software architecture and software design
Software architecture and software designSoftware architecture and software design
Software architecture and software designMr. Swapnil G. Thaware
 
jQuery -Chapter 2 - Selectors and Events
jQuery -Chapter 2 - Selectors and Events jQuery -Chapter 2 - Selectors and Events
jQuery -Chapter 2 - Selectors and Events WebStackAcademy
 
Introduction to Azure SQL DB
Introduction to Azure SQL DBIntroduction to Azure SQL DB
Introduction to Azure SQL DBChristopher Foot
 
Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12koolkampus
 
Object Oriented Analysis and Design
Object Oriented Analysis and DesignObject Oriented Analysis and Design
Object Oriented Analysis and DesignHaitham El-Ghareeb
 
Software engineering : Layered Architecture
Software engineering : Layered ArchitectureSoftware engineering : Layered Architecture
Software engineering : Layered ArchitectureMuhammed Afsal Villan
 
Feature and Future of ASP.NET
Feature and Future of ASP.NETFeature and Future of ASP.NET
Feature and Future of ASP.NETMd. Mahedee Hasan
 
An Introduction to Software Architecture
An Introduction to Software ArchitectureAn Introduction to Software Architecture
An Introduction to Software ArchitectureRahimLotfi
 
Functional vs Non-functional Requirements - Which comes first?
Functional vs Non-functional Requirements - Which comes first?Functional vs Non-functional Requirements - Which comes first?
Functional vs Non-functional Requirements - Which comes first?Evgeniy Labunskiy
 
Object Oriented Software Engineering (OOSE) presentation on SOFTWARE MAINTENANCE
Object Oriented Software Engineering (OOSE) presentation on SOFTWARE MAINTENANCEObject Oriented Software Engineering (OOSE) presentation on SOFTWARE MAINTENANCE
Object Oriented Software Engineering (OOSE) presentation on SOFTWARE MAINTENANCEVipin Kumar
 
JavaScript - Chapter 3 - Introduction
 JavaScript - Chapter 3 - Introduction JavaScript - Chapter 3 - Introduction
JavaScript - Chapter 3 - IntroductionWebStackAcademy
 

Mais procurados (20)

Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Database connectivity and web technologies
Database connectivity and web technologiesDatabase connectivity and web technologies
Database connectivity and web technologies
 
Software architecture and software design
Software architecture and software designSoftware architecture and software design
Software architecture and software design
 
jQuery -Chapter 2 - Selectors and Events
jQuery -Chapter 2 - Selectors and Events jQuery -Chapter 2 - Selectors and Events
jQuery -Chapter 2 - Selectors and Events
 
Introduction to Azure SQL DB
Introduction to Azure SQL DBIntroduction to Azure SQL DB
Introduction to Azure SQL DB
 
Introduction to Mysql
Introduction to MysqlIntroduction to Mysql
Introduction to Mysql
 
Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12
 
J2EE Introduction
J2EE IntroductionJ2EE Introduction
J2EE Introduction
 
2 tier and 3 tier architecture
2 tier and 3 tier architecture2 tier and 3 tier architecture
2 tier and 3 tier architecture
 
RMMM Plan
RMMM PlanRMMM Plan
RMMM Plan
 
Object Oriented Analysis and Design
Object Oriented Analysis and DesignObject Oriented Analysis and Design
Object Oriented Analysis and Design
 
Software engineering : Layered Architecture
Software engineering : Layered ArchitectureSoftware engineering : Layered Architecture
Software engineering : Layered Architecture
 
Error handling in ASP.NET
Error handling in ASP.NETError handling in ASP.NET
Error handling in ASP.NET
 
Requirements Engineering
Requirements EngineeringRequirements Engineering
Requirements Engineering
 
Feature and Future of ASP.NET
Feature and Future of ASP.NETFeature and Future of ASP.NET
Feature and Future of ASP.NET
 
An Introduction to Software Architecture
An Introduction to Software ArchitectureAn Introduction to Software Architecture
An Introduction to Software Architecture
 
Basics of the Web Platform
Basics of the Web PlatformBasics of the Web Platform
Basics of the Web Platform
 
Functional vs Non-functional Requirements - Which comes first?
Functional vs Non-functional Requirements - Which comes first?Functional vs Non-functional Requirements - Which comes first?
Functional vs Non-functional Requirements - Which comes first?
 
Object Oriented Software Engineering (OOSE) presentation on SOFTWARE MAINTENANCE
Object Oriented Software Engineering (OOSE) presentation on SOFTWARE MAINTENANCEObject Oriented Software Engineering (OOSE) presentation on SOFTWARE MAINTENANCE
Object Oriented Software Engineering (OOSE) presentation on SOFTWARE MAINTENANCE
 
JavaScript - Chapter 3 - Introduction
 JavaScript - Chapter 3 - Introduction JavaScript - Chapter 3 - Introduction
JavaScript - Chapter 3 - Introduction
 

Semelhante a An Introduction to Multilayered Software Architecture

Layered architecture style
Layered architecture styleLayered architecture style
Layered architecture styleBegench Suhanov
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitectureABDEL RAHMAN KARIM
 
Middle ware Technologies
Middle ware TechnologiesMiddle ware Technologies
Middle ware Technologiesprakashk453625
 
Web Oriented Architecture at Oracle
Web Oriented Architecture at OracleWeb Oriented Architecture at Oracle
Web Oriented Architecture at OracleEmiliano Pecis
 
Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"Fwdays
 
Refactoring to a system of systems
Refactoring to a system of systemsRefactoring to a system of systems
Refactoring to a system of systemsVMware Tanzu
 
Mobile iOS Application Architectures
Mobile iOS Application ArchitecturesMobile iOS Application Architectures
Mobile iOS Application ArchitecturesArpit Kulsreshtha
 
Best practices for creating modular Web applications
Best practices for creating modular Web applicationsBest practices for creating modular Web applications
Best practices for creating modular Web applicationspeychevi
 
Middleware Technologies
Middleware Technologies Middleware Technologies
Middleware Technologies prakashk453625
 
N-tier Application Developement
N-tier Application DevelopementN-tier Application Developement
N-tier Application DevelopementDetectivee Mirza
 
Web technology and commerce unit 2
Web technology and commerce unit 2Web technology and commerce unit 2
Web technology and commerce unit 2arun0501
 
Linux Assignment 3
Linux Assignment 3Linux Assignment 3
Linux Assignment 3Diane Allen
 
Hibernate interview questions
Hibernate interview questionsHibernate interview questions
Hibernate interview questionsvenkata52
 
Stephane Lapointe & Alexandre Brisebois: Développer des microservices avec Se...
Stephane Lapointe & Alexandre Brisebois: Développer des microservices avec Se...Stephane Lapointe & Alexandre Brisebois: Développer des microservices avec Se...
Stephane Lapointe & Alexandre Brisebois: Développer des microservices avec Se...MSDEVMTL
 
The way from DB-driven development to DDD
The way from DB-driven development to DDDThe way from DB-driven development to DDD
The way from DB-driven development to DDDProvectus
 

Semelhante a An Introduction to Multilayered Software Architecture (20)

Layering
LayeringLayering
Layering
 
Layered architecture style
Layered architecture styleLayered architecture style
Layered architecture style
 
Wl application architecture3
Wl application architecture3Wl application architecture3
Wl application architecture3
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitecture
 
Lec 4.ppt
Lec 4.pptLec 4.ppt
Lec 4.ppt
 
Middle ware Technologies
Middle ware TechnologiesMiddle ware Technologies
Middle ware Technologies
 
Web Oriented Architecture at Oracle
Web Oriented Architecture at OracleWeb Oriented Architecture at Oracle
Web Oriented Architecture at Oracle
 
Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"Viktor Turskyi "Effective NodeJS Application Development"
Viktor Turskyi "Effective NodeJS Application Development"
 
Refactoring to a system of systems
Refactoring to a system of systemsRefactoring to a system of systems
Refactoring to a system of systems
 
Mobile iOS Application Architectures
Mobile iOS Application ArchitecturesMobile iOS Application Architectures
Mobile iOS Application Architectures
 
Best practices for creating modular Web applications
Best practices for creating modular Web applicationsBest practices for creating modular Web applications
Best practices for creating modular Web applications
 
Middleware Technologies
Middleware Technologies Middleware Technologies
Middleware Technologies
 
N-tier Application Developement
N-tier Application DevelopementN-tier Application Developement
N-tier Application Developement
 
oracle
oracleoracle
oracle
 
Web technology and commerce unit 2
Web technology and commerce unit 2Web technology and commerce unit 2
Web technology and commerce unit 2
 
Linux Assignment 3
Linux Assignment 3Linux Assignment 3
Linux Assignment 3
 
Sso & rman
Sso & rmanSso & rman
Sso & rman
 
Hibernate interview questions
Hibernate interview questionsHibernate interview questions
Hibernate interview questions
 
Stephane Lapointe & Alexandre Brisebois: Développer des microservices avec Se...
Stephane Lapointe & Alexandre Brisebois: Développer des microservices avec Se...Stephane Lapointe & Alexandre Brisebois: Développer des microservices avec Se...
Stephane Lapointe & Alexandre Brisebois: Développer des microservices avec Se...
 
The way from DB-driven development to DDD
The way from DB-driven development to DDDThe way from DB-driven development to DDD
The way from DB-driven development to DDD
 

An Introduction to Multilayered Software Architecture

  • 1. An introduction to Multilayered Software Architecture 1 april 2016 Andrei Pîrjoleanu
  • 2. 2 › What is “Multilayered Architecture”? › Advantages/Disadvantages › What layers? › Implementation › Further directions › Conclusions Agenda
  • 3. 3 › “A multilayered software architecture is a software architecture that uses many layers for allocating the different responsibilities of a software product”  https://en.wikipedia.org/wiki/Multilayered_architecture What is “Multilayered Architecture”? Definition
  • 4. 4 › “In object-oriented design, a layer is a group of classes that have the same set of link-time module dependencies to other modules. In other words, a layer is a group of reusable components that are reusable in similar circumstances” › “Layers are often arranged in a tree-form hierarchy, with dependency relationships as links between the layers.”  https://en.wikipedia.org/wiki/Layer_(object-oriented_design) What is “Multilayered Architecture”? The “Layers” architectural pattern
  • 5. 5 › Spaghetti code:  Complex and tangled control structure  “unstructured” branching constructs  Can be caused by several factors, such as continuous modifications by several people over a long life cycle  https://en.wikipedia.org/wiki/Spaghetti_code › Lasagna code:  characterized by several well-defined and separable layers, where each layer of code accesses services in the layers below through well-defined interfaces  Enforces encapsulation between the different layers  https://en.wikipedia.org/wiki/Spaghetti_code#Lasagna_code What is “Multilayered Architecture”? Spaghetti vs Lasagna
  • 6. 6  Increased flexibility, maintainability and scalability  Multiple applications can reuse the components  Enables teams to work on different parts of the application in parallel with minimal dependencies on other teams  Different components can be independently deployed, maintained and updated, on different time schedules  It allows you to test the components independently of each other  Supports the incremental development of sub-systems in different layers. When a layer interface changes, only the adjacent layer is affected.  Allows replacement of entire layers so long as the interface is maintained. Advantages vs Disadvantages Advantages
  • 7. 7  It helps to control and encapsulate the complexity of large applications, but adds complexity to simple applications  More difficult to set up and maintain as well  In practice, a clean separation between layers is often difficult and a high-level layer may have to interact directly with lower-level layers rather than through the layer immediately below it  Performance can be a problem because of multiple levels of interpretation of a service request as it is processed at each layer Advantages vs Disadvantages Disadvantages
  • 8. 8  Infrastructure  Presentation  Application  Domain  Persistence What layers? Common layers Presentation Application Domain Persistence Infrastructure
  • 10. 10 › Also known as: UI layer, view layer › It determines how the data will be presented › It uses a data-validation strategy to protect the system from untrusted input › Does not contain any business logic What layers? Presentation layer
  • 11. 11 › Also known as: Application Service layer, Services layer › It represents the use cases and behavior of the application › Operates at a higher level of abstraction than the Domain layer (exposes what the system does, but not how it does it) › It requires dependencies on external layers › It contains only application logic (security, transaction management, communication), being all about coordination and orchestration through delegation to Domain and Infrastructural services › Can sometimes be found implemented as a part of the Domain layer › Does not contain any business logic What layers? Application layer
  • 12. 12 › Also known as: Business layer, Business logic layer (BLL) › Represents a conceptual abstract view of the problem domain created to fulfill the needs of the business use cases › Prescribes how business objects interact with one another › Focused only on Domain rules, concepts, information and workflows › Does not depend on anything else › Does not contain any technical details, nor persistence details What layers? Domain layer
  • 13. 13 › Also known as: Data access layer (DAL) › Provides simplified access to data stored in persistent storage of some kind, such as an entity-relational database › Hides the complexity of the underlying data store from the external world › Provides a centralized location for all calls into the storage and thus makes it easier to port the application to other database systems › Most implemented layers will not achieve persistence directly, but will use a storage engine located in the Infrastructure layer › Can sometimes be found implemented as a part of the Infrastructure layer › Does not contain any business logic What layers? Persistence layer
  • 14. 14 › It gives energy to a system; you will not be able to run the application without it › Contains technical details that enable the application to function › Is concerned with purely technical capabilities, such as messaging, logging, security, notifications, operations, commands, events, integration services, storage engines etc. › Should not directly affect the use case exposed and the Domain logic of an application › Can be partitioned into different levels (high-level or low-level technical services) › Does not contain any business logic What layers? Infrastructure layer
  • 15. 15 › Some also identify a separate layer called the Business Infrastructure layer (BI), located between the Domain layer and the Infrastructure layer; this layer is very general and can be used in several application tiers (e.g. a CurrencyConverter) › All types are not always exclusive to one particular layer; a relaxed layered system (as opposed to a strict layered system) can use so called “shared data definition modules”, which are types not belonging in a particular layer What layers? Other notes
  • 16. 16 Implementation 4 layer architecture Components Application services Domain Services Controllers UI views Domain Entities Value Objects Repository Contracts Unit of Work Repositories Gateways Query handlers Commands Storage adapters Storage adapters Integration services 3rdPartyAdapters Error Hub Command Bus CacheSecurity
  • 17. 17 Implementation “Check Item stock” use case – Distributing responsibility ItemController WarehouseManagerService ProductModel StockModel ProductRepository StockRepository ProductMysqlGateway StockMySqlGateway ErrorHub MessageBus NotificationBus MySqlStorageAdapter MongoDbSTorageAdapter StockMongoDBGateway
  • 18. 18 Implementation “Check Item stock” use case – Flow ItemController WarehouseManagerService ProductMySqlGateway MySqlStorageAdapter StockRepository StockGateway ProductRepository checkStock getProductByCode getProductByCode getRow return rowreturn ProductDTOreturn ProductModel getStockByItem getStockByItem getRow return rowreturn StockDTOreturn StockModelreturn StockDTO
  • 20. 20 Implementation Dependency inversion principle (SOLID) › It refers to a specific form of decoupling software modules  A. High-level modules should not depend on low-level modules. Both should depend on abstractions  B. Abstractions should not depend on details. Details should depend on abstractions. › The goal is to avoid the highly coupled distribution with the mediation of an abstract layer, and to increase the re-usability of higher/policy layers
  • 24. 24 Implementation Reusable patterns › Value Objects › Entities › Aggregates › Domain Services › Domain Events › Factories › Repositories › Gateways › Data Mappers › Data Transfer Objects (DTOs) › Query Object › Identity Map › Unit of Work
  • 26. 26
  • 27. 27 Further directions Other concepts › DDD  Domain-Driven Design  or how to effectively manage the construction and maintenance of software for complex problem domains › Commands, Command Handlers, Command Bus › Events, Event Listeners, Event Dispatcher › CQRS  Command Query Responsibility Segregation  or how to separate Read and Write
  • 28. 28 Conclusions › Single responsibility › Dependency inversion › Separation of concerns › Ports/Adapters – a.k.a. Interfaces and Concrete implementations › Reusable patterns
  • 29. 29 References › https://en.wikipedia.org/wiki/Multilayered_architecture › http://csis.pace.edu/~marchese/CS389/L6/Chapter%206_Summary.pdf › http://alistair.cockburn.us/Hexagonal+architecture › http://jeffreypalermo.com/blog/the-onion-architecture-part-1/ › “Patterns, Principles and Practices of Domain-Driven Design” – Scott Millett with Nick Tune › “Patterns of Enterprise Application Architecture” – Martin Fowler
  • 30. Avangate Redwood Shores, California - USA Amsterdam - Netherlands Bucharest – Romania Atlanta, Georgia - USA Tel: (650) 249 – 5280 / +31 20 890 8080 Q&A