The Basics Of Software Architecture For .NET DevelopersDan Douglas |Senior Software Developer/ Architect       Blog: http://dandouglas.wordpress.com   Twitter: @Dan_Douglas   E-mail: dan.douglas@gmail.com
Software Architecture is:Structure and design of the application/systemComponents, and how they are implementedConnectors – the relationship between the componentsReducing complexity through abstractionBreaking an application into distinct features that overlap in functionality as little as possibleFunctions can be optimized independentlyFailure of one function does not cause the others to fail
The Software Architect Takes Into Account:Design PatternsBest Practicesn-Layering (UI, Façade, Business, Data, etc)ModularityApplication FrameworksCurrent and Emerging TechnologiesReusability
Advantages of a Good ArchitectureCompatibilityExtensibilityReliabilityMaintainabilityUsabilityAvailabilitySecuritySolutions that are easier to design, enhance, and maintain
Implicit RequirementsAn Analogy: 	Implicit requirements are those that engineers automatically include as a matter of professional duty. Most of these are requirements the engineer knows more about than their sponsor. For instance, the original Tacoma Narrows Bridge showed that winds are a problem for suspension bridges. The average politician is not expected to know about this, however. Civil engineers would never allow themselves to be in a position to say, after a new bridge has collapsed, “We knew wind would be a problem, but you didn’t ask us to deal with it in your requirements.”Source: MSDN Architecture Article: Are We Engineers? or Crafts People? http://msdn.microsoft.com/en-us/library/bb508955.aspx
Implicit RequirementsIt is the “duty” of the software architect to determine potential problems or risks with a design and mitigate or eliminate these risksThe stakeholders of the project, don’t necessarily understand these risks nor do they necessarily understand their importance to the long term success of the project
Implicit Understanding Of RiskThis will lead to a better analysis and resolution of risk, including:ScalingCompatibilityFuture Maintenance and EnhancementsUsability IssuesStakeholder Buy-In and SupportProper Business Processes In Placeetc…
For .NET DevelopersSolid Understanding of Object Oriented Programming Objects, Instances, Inheritance, Abstraction, Encapsulation (Interfaces), Polymorphism, Decoupling, etc.NET Design PatternsVery useful patterns to understand include (Strategy, Façade, Adapter, and Singleton)Keep up to date on the latest technologySOA, WF, WPF, WCF, LINQ, etc
For .NET DevelopersIncrease Your Productivity and EffectivenessDevelop application components that are re-useableLook to re-use existing components Always consider modularity and decouplingLook at third party components (Infragistics, Telerik, etc)Consider ORM mapping tools such as LLBL Gen Pro
For .NET DevelopersUnderstand the Value of GenericsGenerics make type parameters possibleDefers the type of a method or object until it is instantiated (ex: List(Of T) Ex:) New List object is typed to be of type animalUnderstand the Value of ReflectionSystem.Reflection namespaceLoad objects at run time, get a list of methods and properties of objects at run time (even private ones) and call themMany practical uses, including the ability to create a “Pluggable Architecture”
For .NET DevelopersMicrosoft Patterns & PracticesEnterprise LibraryProvides common application blocks to be used within your application for Data Access, Cryptography, Caching, Exception Handling, Logging, Security, and more.Software Factories Architectural factories for building your application, including, Smart Client, Web Service, and Mobile ClientRed-Gate .NET Reflector is a Cool Tool!Allows you to view, navigate, and search through the class hierarchies of .NET assembliesLook at the code behind the objects in .NET Framework classes to see how they work
ResourcesMSDN Architecture Centerhttp://msdn.microsoft.com/en-us/architecture/default.aspxBredemeyer.com (Software Architecture Resources)http://www.bredemeyer.com/Data & Object Factory (.NET Design Patterns)http://www.dofactory.comMicrosoft Patterns & Practiceshttp://msdn.microsoft.com/en-us/practices/default.aspx.NET Reflectorhttp://www.red-gate.com/products/reflector/System.Reflection Namespacehttp://msdn.microsoft.com/en-us/library/system.reflection.aspxMy Blog (Dan Douglas)http://dandouglas.wordpress.com
Questions?Dan Douglas |Senior Software Developer/ Architect       Blog: http://dandouglas.wordpress.com   Twitter: @Dan_Douglas   E-mail: dan.douglas@gmail.comConsulting Inquiries? (519) 777-2258

More Related Content

PPTX
Software Architecture: introduction to the abstraction
PDF
What a Good Software Architect Does
PPTX
The Role of the Software Architect
PDF
Software architecture for developers by Simon Brown
PPTX
.NET Architecture for Enterprises
PDF
Refactoring for Software Architecture Smells
PPTX
A summary of software architecture guide
PDF
Composable Software Architecture with Spring
Software Architecture: introduction to the abstraction
What a Good Software Architect Does
The Role of the Software Architect
Software architecture for developers by Simon Brown
.NET Architecture for Enterprises
Refactoring for Software Architecture Smells
A summary of software architecture guide
Composable Software Architecture with Spring

What's hot (20)

PDF
Aspect Oriented Development
PPTX
Software architecture and software design
PPTX
Software Architecture Course - Part III Taxonomies - Definitions
PPTX
Software architecture also needs agile
PPTX
Software architecture introduction
PPT
Importance Of Being Driven
PPTX
Reducing Technical Debt
PDF
Java Community Webinar #8: “High Performance Systems Design”
PPTX
The Role of the Software Architect (short version)
PPS
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
PDF
Software Architecture and Design Introduction
PPTX
Software Architecture
PDF
Elements of DDD with ASP.NET MVC & Entity Framework Code First
PDF
Domain Driven Design
PPTX
A Model-Based Systems Engineering Approach to Portfolio Management
PDF
Software architect - roles & responsabilities
PPTX
Modern software architect post the agile wave
PDF
Software Architecture: Principles, Patterns and Practices
PPT
Agile Open 2009 Tdd And Architecture Influences
PPT
02 architectures in_context
Aspect Oriented Development
Software architecture and software design
Software Architecture Course - Part III Taxonomies - Definitions
Software architecture also needs agile
Software architecture introduction
Importance Of Being Driven
Reducing Technical Debt
Java Community Webinar #8: “High Performance Systems Design”
The Role of the Software Architect (short version)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Software Architecture and Design Introduction
Software Architecture
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Domain Driven Design
A Model-Based Systems Engineering Approach to Portfolio Management
Software architect - roles & responsabilities
Modern software architect post the agile wave
Software Architecture: Principles, Patterns and Practices
Agile Open 2009 Tdd And Architecture Influences
02 architectures in_context
Ad

Viewers also liked (20)

PPT
LINQ 2 SQL Presentation To Palmchip And Trg, Technology Resource Group
PDF
Software Architecture: Design Decisions
PDF
Principles of software architecture design
PPTX
Software Architecture Patterns
PPTX
A Software Architect's View On Diagramming
PPTX
Software Architecture vs design
PPTX
Fundamentals Of Software Architecture
PPTX
Software Architecture and Design - An Overview
PPT
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
PPTX
Layered Software Architecture
PPTX
Agile software architecture
PDF
An Entrepreneur's Guide to Guerrilla Marketing: A Condensed Crash Course
PPTX
Software Architecture taxonomies - Integration patterns
PPTX
Software architecture
PDF
Jumping Into WordPress Plugin Programming
KEY
Writing your Third Plugin
PPTX
Eclipse Overview
PDF
Best Practices in Plugin Development (WordCamp Seattle)
PDF
Building GPE: What We Learned
PPTX
Creating a Plug-In Architecture
LINQ 2 SQL Presentation To Palmchip And Trg, Technology Resource Group
Software Architecture: Design Decisions
Principles of software architecture design
Software Architecture Patterns
A Software Architect's View On Diagramming
Software Architecture vs design
Fundamentals Of Software Architecture
Software Architecture and Design - An Overview
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Layered Software Architecture
Agile software architecture
An Entrepreneur's Guide to Guerrilla Marketing: A Condensed Crash Course
Software Architecture taxonomies - Integration patterns
Software architecture
Jumping Into WordPress Plugin Programming
Writing your Third Plugin
Eclipse Overview
Best Practices in Plugin Development (WordCamp Seattle)
Building GPE: What We Learned
Creating a Plug-In Architecture
Ad

Similar to Basics of Software Architecture for .NET Developers (20)

PPTX
SA_UNIT_1.pptx
PDF
Design Decisions For Understanding Software Architecture
PDF
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
PDF
ASAS 2014 - Simon Brown
PPTX
Design patterns
PPT
PDF
What is Software Architecture?
PPTX
Unit_4_Software_Design.pptx
PPS
Management of Complexity in System Design of Large IT Solutions
PDF
software-architecture-patterns
PDF
Software architecture-patterns
PDF
Software arquitectura patron diseño
PPT
04 designing architectures
PPT
Design engineering
PPT
Design engineering
PDF
Introduction to SOFTWARE ARCHITECTURE
PPTX
System analysis and design
PDF
Design Engineering is a topic of software engineering of second year fourth s...
PPTX
SDA 01.pptx
SA_UNIT_1.pptx
Design Decisions For Understanding Software Architecture
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
ASAS 2014 - Simon Brown
Design patterns
What is Software Architecture?
Unit_4_Software_Design.pptx
Management of Complexity in System Design of Large IT Solutions
software-architecture-patterns
Software architecture-patterns
Software arquitectura patron diseño
04 designing architectures
Design engineering
Design engineering
Introduction to SOFTWARE ARCHITECTURE
System analysis and design
Design Engineering is a topic of software engineering of second year fourth s...
SDA 01.pptx

Recently uploaded (20)

PDF
Be ready for tomorrow’s needs with a longer-lasting, higher-performing PC
PDF
Applying Agentic AI in Enterprise Automation
PDF
FASHION-DRIVEN TEXTILES AS A CRYSTAL OF A NEW STREAM FOR STAKEHOLDER CAPITALI...
PDF
Uncertainty-aware contextual multi-armed bandits for recommendations in e-com...
PDF
Peak of Data & AI Encore: Scalable Design & Infrastructure
PDF
NewMind AI Journal Monthly Chronicles - August 2025
PDF
Altius execution marketplace concept.pdf
PPTX
AQUEEL MUSHTAQUE FAKIH COMPUTER CENTER .
PDF
Decision Optimization - From Theory to Practice
PDF
EGCB_Solar_Project_Presentation_and Finalcial Analysis.pdf
PDF
Secure Java Applications against Quantum Threats
PDF
Child-friendly e-learning for artificial intelligence education in Indonesia:...
PPT
Overviiew on Intellectual property right
PDF
Addressing the challenges of harmonizing law and artificial intelligence tech...
PPTX
Report in SIP_Distance_Learning_Technology_Impact.pptx
PDF
Ebook - The Future of AI A Comprehensive Guide.pdf
PDF
State of AI in Business 2025 - MIT NANDA
PPTX
Rise of the Digital Control Grid Zeee Media and Hope and Tivon FTWProject.com
PDF
CCUS-as-the-Missing-Link-to-Net-Zero_AksCurious.pdf
PDF
The Digital Engine Room: Unlocking APAC’s Economic and Digital Potential thro...
Be ready for tomorrow’s needs with a longer-lasting, higher-performing PC
Applying Agentic AI in Enterprise Automation
FASHION-DRIVEN TEXTILES AS A CRYSTAL OF A NEW STREAM FOR STAKEHOLDER CAPITALI...
Uncertainty-aware contextual multi-armed bandits for recommendations in e-com...
Peak of Data & AI Encore: Scalable Design & Infrastructure
NewMind AI Journal Monthly Chronicles - August 2025
Altius execution marketplace concept.pdf
AQUEEL MUSHTAQUE FAKIH COMPUTER CENTER .
Decision Optimization - From Theory to Practice
EGCB_Solar_Project_Presentation_and Finalcial Analysis.pdf
Secure Java Applications against Quantum Threats
Child-friendly e-learning for artificial intelligence education in Indonesia:...
Overviiew on Intellectual property right
Addressing the challenges of harmonizing law and artificial intelligence tech...
Report in SIP_Distance_Learning_Technology_Impact.pptx
Ebook - The Future of AI A Comprehensive Guide.pdf
State of AI in Business 2025 - MIT NANDA
Rise of the Digital Control Grid Zeee Media and Hope and Tivon FTWProject.com
CCUS-as-the-Missing-Link-to-Net-Zero_AksCurious.pdf
The Digital Engine Room: Unlocking APAC’s Economic and Digital Potential thro...

Basics of Software Architecture for .NET Developers

  • 1. The Basics Of Software Architecture For .NET DevelopersDan Douglas |Senior Software Developer/ Architect     Blog: http://dandouglas.wordpress.com Twitter: @Dan_Douglas E-mail: [email protected]
  • 2. Software Architecture is:Structure and design of the application/systemComponents, and how they are implementedConnectors – the relationship between the componentsReducing complexity through abstractionBreaking an application into distinct features that overlap in functionality as little as possibleFunctions can be optimized independentlyFailure of one function does not cause the others to fail
  • 3. The Software Architect Takes Into Account:Design PatternsBest Practicesn-Layering (UI, Façade, Business, Data, etc)ModularityApplication FrameworksCurrent and Emerging TechnologiesReusability
  • 4. Advantages of a Good ArchitectureCompatibilityExtensibilityReliabilityMaintainabilityUsabilityAvailabilitySecuritySolutions that are easier to design, enhance, and maintain
  • 5. Implicit RequirementsAn Analogy: Implicit requirements are those that engineers automatically include as a matter of professional duty. Most of these are requirements the engineer knows more about than their sponsor. For instance, the original Tacoma Narrows Bridge showed that winds are a problem for suspension bridges. The average politician is not expected to know about this, however. Civil engineers would never allow themselves to be in a position to say, after a new bridge has collapsed, “We knew wind would be a problem, but you didn’t ask us to deal with it in your requirements.”Source: MSDN Architecture Article: Are We Engineers? or Crafts People? http://msdn.microsoft.com/en-us/library/bb508955.aspx
  • 6. Implicit RequirementsIt is the “duty” of the software architect to determine potential problems or risks with a design and mitigate or eliminate these risksThe stakeholders of the project, don’t necessarily understand these risks nor do they necessarily understand their importance to the long term success of the project
  • 7. Implicit Understanding Of RiskThis will lead to a better analysis and resolution of risk, including:ScalingCompatibilityFuture Maintenance and EnhancementsUsability IssuesStakeholder Buy-In and SupportProper Business Processes In Placeetc…
  • 8. For .NET DevelopersSolid Understanding of Object Oriented Programming Objects, Instances, Inheritance, Abstraction, Encapsulation (Interfaces), Polymorphism, Decoupling, etc.NET Design PatternsVery useful patterns to understand include (Strategy, Façade, Adapter, and Singleton)Keep up to date on the latest technologySOA, WF, WPF, WCF, LINQ, etc
  • 9. For .NET DevelopersIncrease Your Productivity and EffectivenessDevelop application components that are re-useableLook to re-use existing components Always consider modularity and decouplingLook at third party components (Infragistics, Telerik, etc)Consider ORM mapping tools such as LLBL Gen Pro
  • 10. For .NET DevelopersUnderstand the Value of GenericsGenerics make type parameters possibleDefers the type of a method or object until it is instantiated (ex: List(Of T) Ex:) New List object is typed to be of type animalUnderstand the Value of ReflectionSystem.Reflection namespaceLoad objects at run time, get a list of methods and properties of objects at run time (even private ones) and call themMany practical uses, including the ability to create a “Pluggable Architecture”
  • 11. For .NET DevelopersMicrosoft Patterns & PracticesEnterprise LibraryProvides common application blocks to be used within your application for Data Access, Cryptography, Caching, Exception Handling, Logging, Security, and more.Software Factories Architectural factories for building your application, including, Smart Client, Web Service, and Mobile ClientRed-Gate .NET Reflector is a Cool Tool!Allows you to view, navigate, and search through the class hierarchies of .NET assembliesLook at the code behind the objects in .NET Framework classes to see how they work
  • 12. ResourcesMSDN Architecture Centerhttp://msdn.microsoft.com/en-us/architecture/default.aspxBredemeyer.com (Software Architecture Resources)http://www.bredemeyer.com/Data & Object Factory (.NET Design Patterns)http://www.dofactory.comMicrosoft Patterns & Practiceshttp://msdn.microsoft.com/en-us/practices/default.aspx.NET Reflectorhttp://www.red-gate.com/products/reflector/System.Reflection Namespacehttp://msdn.microsoft.com/en-us/library/system.reflection.aspxMy Blog (Dan Douglas)http://dandouglas.wordpress.com
  • 13. Questions?Dan Douglas |Senior Software Developer/ Architect     Blog: http://dandouglas.wordpress.com Twitter: @Dan_Douglas E-mail: [email protected] Inquiries? (519) 777-2258

Editor's Notes

  • #3: ComponentsWhich components?How are they implemented?Reducing complexity through abstractionBreaking an application into distinct features that overlap in functionality as little as possibleFunctions can be optimized independentlyFailure of one function does not cause the others to fail
  • #9: Keep up to date on the latest technology – Not always necessary to have intimate knowledge of new technology, but useful to have an understand of the technology to get an idea of where it may assist or be useful within a software system
  • #11: This is a very quick introduction about reflection and generics.. Many resources on the web available.