SlideShare a Scribd company logo
1 of 38
A P P L I C AT I O N
ARCHITECTURE
J U M P S TA R T
Clint Edmonson
Senior Consultant
Polaris Solutions
clinted@polarissolutions.com
Platinum
Sponsors

Gold Sponsors

Silver
Sponsors
Who the heck needs architecture?
CONQUERING COMPLEXITY
• Abstraction
• Partitioning
ARCHITECTURE
“A unifying or coherent form or structure.”
merriam-webster.com
DESIGN
“Design, at its most fundamental, is about finding solutions.”
Garr Reynolds
ITERATIVE ARCHITECTURE & DESIGN

Page 41
1. Identify architecture objectives
A. Determine goals based on size, scope, time
• Complete application
• Prototype
• Solving a technical risk
• Exploring potential options
• Building shared, reference models

B. Identify target audience
• Other architects
• Developers
• Testers
• Operations
2. Identify key scenarios
A. Define the solution’s boundaries
B. Identify who will impacted by the solution
C. Discover what valuable activities will be automated
D. Uncover constraints that will limit the solution
E. Identify activities that are most important to the
success of your application
F. Highlight those that are architecturally significant
BRAINSTORMING SCOPE & KEY SCENARIOS
3. Create an application overview
A. Determine your application type
• Web
• Mobile
• Rich client
• RIA
• Web service
• Some combination of the above

B. Identify your deployment constraints
C. Determine your relevant technologies
4. Identify key issues
A. Cross-cutting concerns
• Configuration
• Security
• Communication
• Compression
• Encryption
• Logging & instrumentation
• Validation
• Error management

B. Quality attributes
• Run-time performance
• Scalability
• Disaster recovery
5. Define candidate solution(s)
A. Choose an architecturally significant scenario

B. Design a candidate baseline architecture
C. Build out the scenario to prove it out
FUNDAMENTAL DESIGN TOOLS
• Layers
• Assemblies
• Namespaces
COMMON APPLICATION
ARCHITECTURE

Page 10
LAY(ER)ING IT ALL OUT
• Describe the application at a high level
• Identify major functional units of the design and their
interdependencies
• Each layer represents a logical group of
projects, namespaces, and/or other artifacts
LAYERED ARCHITECTURE DESIGN
STEPS
1.

Determine layers you require

2.

Determine rules for interaction between layers

3.

Identify cross-cutting concerns

4.

Determine if you need to collapse layers

5.

Choose deployment strategy
BASELINE LAYERED ARCHITECTURE
Physical deployment
• Visualize the physical structure of a system
• Executables
• Libraries
• Services
• Focus on components of the system, their
relationships, interfaces, and ports
• Highlight the service behavior that they provide and consume
through interfaces
Baseline physical deployment
Grouping layers into assemblies
• Prefer fewer, larger assemblies
•
•
•
•

Faster load time
Reduced working set
Better NGEN optimization
If several assemblies are always loaded together, consider
combining them into one

• Partition into separate assemblies based on
•
•
•
•
•

Deployment
Versioning
Data access
Security and access control
Contributions from disparate sources

• Avoid the one dll per namespace anti-pattern!
Rinse, repeat, refactor…

Page 41
ANALYSIS & DESIGN ARTIFACTS
• Sketch
• Blueprint
• Executable

• They are artifacts, not documentation!
• Don’t be afraid to throw them away and draw new ones!
Architecture after several iterations
BEST PRACTICES
• Minimize upfront design

• avoid starting more than one layer/namespace deep

• Analyze and refactor at the beginning of each iteration
• Separate functional areas of concern cleanly
• Avoid duplicating responsibilities

• Minimize dependencies between layers
• Make it obvious where code needs to go!
LAW OF PARSIMONY
“Reduce everything to its essence so that form
harmonizes with function.”
Chris Kobryn
REFERENCES
• Microsoft Application Architecture Guide 2nd Edition
by Microsoft Patterns & Practices Group

• Microsoft .NET: Architecting Application for the Enterprise
by Dino Esposito & Andrea Saltarello

• Domain Driven Design
by Eric Evans

• Framework Design Guidelines
by Krzysztof Cwalina & Brad Abrams
Q&A
Application architecture jumpstart

More Related Content

What's hot

What's hot (20)

Micro Focus Filr - #MFSummit2017
Micro Focus Filr - #MFSummit2017Micro Focus Filr - #MFSummit2017
Micro Focus Filr - #MFSummit2017
 
Best Practice In Software Development
Best Practice In Software DevelopmentBest Practice In Software Development
Best Practice In Software Development
 
AppliFire Blue Print Design Guidelines
AppliFire Blue Print Design GuidelinesAppliFire Blue Print Design Guidelines
AppliFire Blue Print Design Guidelines
 
SPEC Innovations: New Features in Innoslate Webinar
SPEC Innovations: New Features in Innoslate WebinarSPEC Innovations: New Features in Innoslate Webinar
SPEC Innovations: New Features in Innoslate Webinar
 
Strange Bedfellows? Agile and Architecture
Strange Bedfellows? Agile and ArchitectureStrange Bedfellows? Agile and Architecture
Strange Bedfellows? Agile and Architecture
 
The Future of DITA
The Future of DITAThe Future of DITA
The Future of DITA
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Pillars of great Azure Architecture
Pillars of great Azure ArchitecturePillars of great Azure Architecture
Pillars of great Azure Architecture
 
Scribe online 03 scribe online cdk and api overview
Scribe online 03   scribe online cdk and api overviewScribe online 03   scribe online cdk and api overview
Scribe online 03 scribe online cdk and api overview
 
Event Streaming Architecture - Deep Dive
Event Streaming Architecture - Deep DiveEvent Streaming Architecture - Deep Dive
Event Streaming Architecture - Deep Dive
 
Real World – Rapid prototyping with Logic Apps
Real World – Rapid prototyping with Logic AppsReal World – Rapid prototyping with Logic Apps
Real World – Rapid prototyping with Logic Apps
 
Super Secret Salesforce
Super Secret SalesforceSuper Secret Salesforce
Super Secret Salesforce
 
Modern Agile Software Architecture
Modern Agile Software ArchitectureModern Agile Software Architecture
Modern Agile Software Architecture
 
[WSO2Con EU 2017] Resilience Patterns with Ballerina
[WSO2Con EU 2017] Resilience Patterns with Ballerina[WSO2Con EU 2017] Resilience Patterns with Ballerina
[WSO2Con EU 2017] Resilience Patterns with Ballerina
 
Your App Deserves More – The Art of App Modernization
Your App Deserves More – The Art of App ModernizationYour App Deserves More – The Art of App Modernization
Your App Deserves More – The Art of App Modernization
 
Monolithic to Microservices - Handson
Monolithic to Microservices - HandsonMonolithic to Microservices - Handson
Monolithic to Microservices - Handson
 
Microservices
MicroservicesMicroservices
Microservices
 
A lap around ASP.NET 4.5 and Visual Studio 2011 Developer Preview
A lap around ASP.NET 4.5 and Visual Studio 2011 Developer Preview A lap around ASP.NET 4.5 and Visual Studio 2011 Developer Preview
A lap around ASP.NET 4.5 and Visual Studio 2011 Developer Preview
 
Useful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with JavaUseful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with Java
 
Deep Dive into the Idea of Software Architecture
Deep Dive into the Idea of Software ArchitectureDeep Dive into the Idea of Software Architecture
Deep Dive into the Idea of Software Architecture
 

Viewers also liked

CISSP Week 16
CISSP Week 16CISSP Week 16
CISSP Week 16
jemtallon
 

Viewers also liked (11)

Advanced oop laws, principles, idioms
Advanced oop laws, principles, idiomsAdvanced oop laws, principles, idioms
Advanced oop laws, principles, idioms
 
Architecting Scalable Applications in the Cloud
Architecting Scalable Applications in the CloudArchitecting Scalable Applications in the Cloud
Architecting Scalable Applications in the Cloud
 
Introduction to Windows Azure Virtual Machines
Introduction to Windows Azure Virtual MachinesIntroduction to Windows Azure Virtual Machines
Introduction to Windows Azure Virtual Machines
 
Windows Azure jumpstart
Windows Azure jumpstartWindows Azure jumpstart
Windows Azure jumpstart
 
Peering through the Clouds - Cloud Architectures You Need to Master
Peering through the Clouds - Cloud Architectures You Need to MasterPeering through the Clouds - Cloud Architectures You Need to Master
Peering through the Clouds - Cloud Architectures You Need to Master
 
Cissp
CisspCissp
Cissp
 
CISSP Week 16
CISSP Week 16CISSP Week 16
CISSP Week 16
 
Slide Deck CISSP Class Session 2
Slide Deck CISSP Class Session 2Slide Deck CISSP Class Session 2
Slide Deck CISSP Class Session 2
 
Slide Deck CISSP Class Session 6
Slide Deck CISSP Class Session 6Slide Deck CISSP Class Session 6
Slide Deck CISSP Class Session 6
 
Slide Deck CISSP Class Session 5
Slide Deck CISSP Class Session 5Slide Deck CISSP Class Session 5
Slide Deck CISSP Class Session 5
 
How to Prepare for the CISSP Exam
How to Prepare for the CISSP ExamHow to Prepare for the CISSP Exam
How to Prepare for the CISSP Exam
 

Similar to Application architecture jumpstart

1 introduction to sa
1 introduction to sa1 introduction to sa
1 introduction to sa
david10hm
 

Similar to Application architecture jumpstart (20)

Nimble framework
Nimble frameworkNimble framework
Nimble framework
 
Application architecture jumpstart
Application architecture jumpstartApplication architecture jumpstart
Application architecture jumpstart
 
Architectural design
Architectural designArchitectural design
Architectural design
 
1 introduction to sa
1 introduction to sa1 introduction to sa
1 introduction to sa
 
02archintro
02archintro02archintro
02archintro
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile Projects
 
Democratising Software Architecture
Democratising Software ArchitectureDemocratising Software Architecture
Democratising Software Architecture
 
Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15
 
Unit4
Unit4Unit4
Unit4
 
2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use it2019-Nov: Domain Driven Design (DDD) and when not to use it
2019-Nov: Domain Driven Design (DDD) and when not to use it
 
Domain Driven Design - garajco Education 2017
Domain Driven Design - garajco Education 2017Domain Driven Design - garajco Education 2017
Domain Driven Design - garajco Education 2017
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile wave
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuable
 
Designing OpenStack Architectures
Designing OpenStack ArchitecturesDesigning OpenStack Architectures
Designing OpenStack Architectures
 
CHAPTER12.ppt
CHAPTER12.pptCHAPTER12.ppt
CHAPTER12.ppt
 
Ch 9-design-engineering
Ch 9-design-engineeringCh 9-design-engineering
Ch 9-design-engineering
 
Domain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsDomain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic Patterns
 
Designing OpenStack Architectures
Designing OpenStack ArchitecturesDesigning OpenStack Architectures
Designing OpenStack Architectures
 
SCM Patterns for Agile Architectures
SCM Patterns for Agile ArchitecturesSCM Patterns for Agile Architectures
SCM Patterns for Agile Architectures
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
 

More from Clint Edmonson

Visual Studio 2010 Ultimate
Visual Studio 2010 UltimateVisual Studio 2010 Ultimate
Visual Studio 2010 Ultimate
Clint Edmonson
 
Building a Twitter App with Silverlight 3 - Part 2
Building a Twitter App with Silverlight 3 - Part 2Building a Twitter App with Silverlight 3 - Part 2
Building a Twitter App with Silverlight 3 - Part 2
Clint Edmonson
 

More from Clint Edmonson (20)

New Product Concept Design.pptx
New Product Concept Design.pptxNew Product Concept Design.pptx
New Product Concept Design.pptx
 
Lean & Agile Essentials
Lean & Agile EssentialsLean & Agile Essentials
Lean & Agile Essentials
 
MICROSOFT BLAZOR - NEXT GENERATION WEB UI OR SILVERLIGHT ALL OVER AGAIN?
MICROSOFT BLAZOR - NEXT GENERATION WEB UI OR SILVERLIGHT ALL OVER AGAIN?MICROSOFT BLAZOR - NEXT GENERATION WEB UI OR SILVERLIGHT ALL OVER AGAIN?
MICROSOFT BLAZOR - NEXT GENERATION WEB UI OR SILVERLIGHT ALL OVER AGAIN?
 
Flow, the Universe and Everything
Flow, the Universe and EverythingFlow, the Universe and Everything
Flow, the Universe and Everything
 
Code smells and Other Malodorous Software Odors
Code smells and Other Malodorous Software OdorsCode smells and Other Malodorous Software Odors
Code smells and Other Malodorous Software Odors
 
Lean & Agile DevOps with VSTS and TFS 2015
Lean & Agile DevOps with VSTS and TFS 2015Lean & Agile DevOps with VSTS and TFS 2015
Lean & Agile DevOps with VSTS and TFS 2015
 
Agile Metrics That Matter
Agile Metrics That MatterAgile Metrics That Matter
Agile Metrics That Matter
 
ADO.NET Entity Framework
ADO.NET Entity FrameworkADO.NET Entity Framework
ADO.NET Entity Framework
 
Windows 8 - The JavaScript Story
Windows 8 - The JavaScript StoryWindows 8 - The JavaScript Story
Windows 8 - The JavaScript Story
 
Windows Azure Jumpstart
Windows Azure JumpstartWindows Azure Jumpstart
Windows Azure Jumpstart
 
Windows Azure Virtual Machines
Windows Azure Virtual MachinesWindows Azure Virtual Machines
Windows Azure Virtual Machines
 
A Force of One - Agile and the Solo Developer
A Force of One - Agile and the Solo DeveloperA Force of One - Agile and the Solo Developer
A Force of One - Agile and the Solo Developer
 
Agile is as Agile Does
Agile is as Agile DoesAgile is as Agile Does
Agile is as Agile Does
 
Visual Studio 2010 Ultimate
Visual Studio 2010 UltimateVisual Studio 2010 Ultimate
Visual Studio 2010 Ultimate
 
Visual Studio 2010 - The Good Stuff
Visual Studio 2010 - The Good StuffVisual Studio 2010 - The Good Stuff
Visual Studio 2010 - The Good Stuff
 
Intro to VS 2010 & .Net 4.0
Intro to VS 2010 & .Net 4.0Intro to VS 2010 & .Net 4.0
Intro to VS 2010 & .Net 4.0
 
Sky High With Azure
Sky High With AzureSky High With Azure
Sky High With Azure
 
Building a Twitter App with Silverlight 3 - Part 2
Building a Twitter App with Silverlight 3 - Part 2Building a Twitter App with Silverlight 3 - Part 2
Building a Twitter App with Silverlight 3 - Part 2
 
Building a Twitter App with Silverlight 3 - Part 1
Building a Twitter App with Silverlight 3 - Part 1Building a Twitter App with Silverlight 3 - Part 1
Building a Twitter App with Silverlight 3 - Part 1
 
Windows Server 2008 R2 Dev Session 01
Windows Server 2008 R2 Dev Session 01Windows Server 2008 R2 Dev Session 01
Windows Server 2008 R2 Dev Session 01
 

Recently uploaded

TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Recently uploaded (20)

Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern Enterprise
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 

Application architecture jumpstart

  • 1. A P P L I C AT I O N ARCHITECTURE J U M P S TA R T Clint Edmonson Senior Consultant Polaris Solutions clinted@polarissolutions.com
  • 3.
  • 4. Who the heck needs architecture?
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 13.
  • 14. ARCHITECTURE “A unifying or coherent form or structure.” merriam-webster.com
  • 15. DESIGN “Design, at its most fundamental, is about finding solutions.” Garr Reynolds
  • 16. ITERATIVE ARCHITECTURE & DESIGN Page 41
  • 17. 1. Identify architecture objectives A. Determine goals based on size, scope, time • Complete application • Prototype • Solving a technical risk • Exploring potential options • Building shared, reference models B. Identify target audience • Other architects • Developers • Testers • Operations
  • 18. 2. Identify key scenarios A. Define the solution’s boundaries B. Identify who will impacted by the solution C. Discover what valuable activities will be automated D. Uncover constraints that will limit the solution E. Identify activities that are most important to the success of your application F. Highlight those that are architecturally significant
  • 19. BRAINSTORMING SCOPE & KEY SCENARIOS
  • 20. 3. Create an application overview A. Determine your application type • Web • Mobile • Rich client • RIA • Web service • Some combination of the above B. Identify your deployment constraints C. Determine your relevant technologies
  • 21. 4. Identify key issues A. Cross-cutting concerns • Configuration • Security • Communication • Compression • Encryption • Logging & instrumentation • Validation • Error management B. Quality attributes • Run-time performance • Scalability • Disaster recovery
  • 22. 5. Define candidate solution(s) A. Choose an architecturally significant scenario B. Design a candidate baseline architecture C. Build out the scenario to prove it out
  • 23. FUNDAMENTAL DESIGN TOOLS • Layers • Assemblies • Namespaces
  • 25. LAY(ER)ING IT ALL OUT • Describe the application at a high level • Identify major functional units of the design and their interdependencies • Each layer represents a logical group of projects, namespaces, and/or other artifacts
  • 26. LAYERED ARCHITECTURE DESIGN STEPS 1. Determine layers you require 2. Determine rules for interaction between layers 3. Identify cross-cutting concerns 4. Determine if you need to collapse layers 5. Choose deployment strategy
  • 28. Physical deployment • Visualize the physical structure of a system • Executables • Libraries • Services • Focus on components of the system, their relationships, interfaces, and ports • Highlight the service behavior that they provide and consume through interfaces
  • 30. Grouping layers into assemblies • Prefer fewer, larger assemblies • • • • Faster load time Reduced working set Better NGEN optimization If several assemblies are always loaded together, consider combining them into one • Partition into separate assemblies based on • • • • • Deployment Versioning Data access Security and access control Contributions from disparate sources • Avoid the one dll per namespace anti-pattern!
  • 32. ANALYSIS & DESIGN ARTIFACTS • Sketch • Blueprint • Executable • They are artifacts, not documentation! • Don’t be afraid to throw them away and draw new ones!
  • 34. BEST PRACTICES • Minimize upfront design • avoid starting more than one layer/namespace deep • Analyze and refactor at the beginning of each iteration • Separate functional areas of concern cleanly • Avoid duplicating responsibilities • Minimize dependencies between layers • Make it obvious where code needs to go!
  • 35. LAW OF PARSIMONY “Reduce everything to its essence so that form harmonizes with function.” Chris Kobryn
  • 36. REFERENCES • Microsoft Application Architecture Guide 2nd Edition by Microsoft Patterns & Practices Group • Microsoft .NET: Architecting Application for the Enterprise by Dino Esposito & Andrea Saltarello • Domain Driven Design by Eric Evans • Framework Design Guidelines by Krzysztof Cwalina & Brad Abrams
  • 37. Q&A

Editor's Notes

  1. Photo credits: http://www.flickr.com/photos/cogdog/2708223050/Creative Commons Attribution License
  2. Photo credits: http://www.flickr.com/photos/dullhunk/2859826117/Creative Commons Attribution License
  3. Photo credits: http://www.flickr.com/photos/rutlo/4094249840/Creative Commons Attribution License
  4. Photo credits: http://www.flickr.com/photos/annahape-gallery/Creative Commons Attribution License
  5. Photo credits: http://www.flickr.com/photos/wwarby/2460644803/Creative Commons Attribution License
  6. Photo credits: http://www.flickr.com/photos/paalia/3582759194/Creative Commons Attribution License
  7. Photo credits: http://www.flickr.com/photos/emilysoo/3863285545/Creative Commons Attribution License