SlideShare a Scribd company logo
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

What's hot (20)

Aspect Oriented Development
Aspect Oriented DevelopmentAspect Oriented Development
Aspect Oriented Development
tyrantbrian
 
Software architecture and software design
Software architecture and software designSoftware architecture and software design
Software architecture and software design
Mr. Swapnil G. Thaware
 
Software Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - DefinitionsSoftware Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - Definitions
Jose Emilio Labra Gayo
 
Software architecture also needs agile
Software architecture also needs agileSoftware architecture also needs agile
Software architecture also needs agile
Boyan Mihaylov
 
Software architecture introduction
Software architecture introductionSoftware architecture introduction
Software architecture introduction
Freddy Munandar
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being Driven
Antonio Terreno
 
Reducing Technical Debt
Reducing Technical DebtReducing Technical Debt
Reducing Technical Debt
Hayim Makabee
 
Java Community Webinar #8: “High Performance Systems Design”
Java Community Webinar #8: “High Performance Systems Design”Java Community Webinar #8: “High Performance Systems Design”
Java Community Webinar #8: “High Performance Systems Design”
GlobalLogic Ukraine
 
The Role of the Software Architect (short version)
The Role of the Software Architect (short version)The Role of the Software Architect (short version)
The Role of the Software Architect (short version)
Hayim Makabee
 
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
siouxhotornot
 
Software Architecture and Design Introduction
Software Architecture and Design IntroductionSoftware Architecture and Design Introduction
Software Architecture and Design Introduction
Usman Khan
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
Dharmalingam Ganesan
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Enea Gabriel
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Nikolay Vasilev
 
A Model-Based Systems Engineering Approach to Portfolio Management
A Model-Based Systems Engineering Approach to Portfolio ManagementA Model-Based Systems Engineering Approach to Portfolio Management
A Model-Based Systems Engineering Approach to Portfolio Management
Elizabeth Steiner
 
Software architect - roles & responsabilities
Software architect - roles & responsabilitiesSoftware architect - roles & responsabilities
Software architect - roles & responsabilities
Adrian Cristian Grigoras
 
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
Niels Bech Nielsen
 
Software Architecture: Principles, Patterns and Practices
Software Architecture: Principles, Patterns and PracticesSoftware Architecture: Principles, Patterns and Practices
Software Architecture: Principles, Patterns and Practices
Ganesh Samarthyam
 
Agile Open 2009 Tdd And Architecture Influences
Agile Open 2009   Tdd And Architecture InfluencesAgile Open 2009   Tdd And Architecture Influences
Agile Open 2009 Tdd And Architecture Influences
Gustavo Andres Brey
 
02 architectures in_context
02 architectures in_context02 architectures in_context
02 architectures in_context
Majong DevJfu
 
Aspect Oriented Development
Aspect Oriented DevelopmentAspect Oriented Development
Aspect Oriented Development
tyrantbrian
 
Software architecture and software design
Software architecture and software designSoftware architecture and software design
Software architecture and software design
Mr. Swapnil G. Thaware
 
Software Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - DefinitionsSoftware Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - Definitions
Jose Emilio Labra Gayo
 
Software architecture also needs agile
Software architecture also needs agileSoftware architecture also needs agile
Software architecture also needs agile
Boyan Mihaylov
 
Software architecture introduction
Software architecture introductionSoftware architecture introduction
Software architecture introduction
Freddy Munandar
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being Driven
Antonio Terreno
 
Reducing Technical Debt
Reducing Technical DebtReducing Technical Debt
Reducing Technical Debt
Hayim Makabee
 
Java Community Webinar #8: “High Performance Systems Design”
Java Community Webinar #8: “High Performance Systems Design”Java Community Webinar #8: “High Performance Systems Design”
Java Community Webinar #8: “High Performance Systems Design”
GlobalLogic Ukraine
 
The Role of the Software Architect (short version)
The Role of the Software Architect (short version)The Role of the Software Architect (short version)
The Role of the Software Architect (short version)
Hayim Makabee
 
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
siouxhotornot
 
Software Architecture and Design Introduction
Software Architecture and Design IntroductionSoftware Architecture and Design Introduction
Software Architecture and Design Introduction
Usman Khan
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Enea Gabriel
 
A Model-Based Systems Engineering Approach to Portfolio Management
A Model-Based Systems Engineering Approach to Portfolio ManagementA Model-Based Systems Engineering Approach to Portfolio Management
A Model-Based Systems Engineering Approach to Portfolio Management
Elizabeth Steiner
 
Software architect - roles & responsabilities
Software architect - roles & responsabilitiesSoftware architect - roles & responsabilities
Software architect - roles & responsabilities
Adrian Cristian Grigoras
 
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
Niels Bech Nielsen
 
Software Architecture: Principles, Patterns and Practices
Software Architecture: Principles, Patterns and PracticesSoftware Architecture: Principles, Patterns and Practices
Software Architecture: Principles, Patterns and Practices
Ganesh Samarthyam
 
Agile Open 2009 Tdd And Architecture Influences
Agile Open 2009   Tdd And Architecture InfluencesAgile Open 2009   Tdd And Architecture Influences
Agile Open 2009 Tdd And Architecture Influences
Gustavo Andres Brey
 
02 architectures in_context
02 architectures in_context02 architectures in_context
02 architectures in_context
Majong DevJfu
 

Viewers also liked (20)

LINQ 2 SQL Presentation To Palmchip And Trg, Technology Resource Group
LINQ 2 SQL Presentation To Palmchip  And Trg, Technology Resource GroupLINQ 2 SQL Presentation To Palmchip  And Trg, Technology Resource Group
LINQ 2 SQL Presentation To Palmchip And Trg, Technology Resource Group
Shahzad
 
Software Architecture: Design Decisions
Software Architecture: Design DecisionsSoftware Architecture: Design Decisions
Software Architecture: Design Decisions
Henry Muccini
 
Principles of software architecture design
Principles of software architecture designPrinciples of software architecture design
Principles of software architecture design
Len Bass
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture Patterns
Assaf Gannon
 
A Software Architect's View On Diagramming
A Software Architect's View On DiagrammingA Software Architect's View On Diagramming
A Software Architect's View On Diagramming
meghantaylor
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design
Arslan Anwar
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
Markus Voelter
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An Overview
Oliver Stadie
 
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overviewEnterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Winton Winton
 
Layered Software Architecture
Layered Software ArchitectureLayered Software Architecture
Layered Software Architecture
Lars-Erik Kindblad
 
Agile software architecture
Agile software architectureAgile software architecture
Agile software architecture
Boyan Mihaylov
 
An Entrepreneur's Guide to Guerrilla Marketing: A Condensed Crash Course
An Entrepreneur's Guide to Guerrilla Marketing: A Condensed Crash CourseAn Entrepreneur's Guide to Guerrilla Marketing: A Condensed Crash Course
An Entrepreneur's Guide to Guerrilla Marketing: A Condensed Crash Course
shyamal singha
 
Software Architecture taxonomies - Integration patterns
Software Architecture taxonomies - Integration patternsSoftware Architecture taxonomies - Integration patterns
Software Architecture taxonomies - Integration patterns
Jose Emilio Labra Gayo
 
Software architecture
Software architectureSoftware architecture
Software architecture
Ahmad Raza Aslam
 
Jumping Into WordPress Plugin Programming
Jumping Into WordPress Plugin ProgrammingJumping Into WordPress Plugin Programming
Jumping Into WordPress Plugin Programming
Dougal Campbell
 
Writing your Third Plugin
Writing your Third PluginWriting your Third Plugin
Writing your Third Plugin
Justin Ryan
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
Lars Vogel
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)
andrewnacin
 
Building GPE: What We Learned
Building GPE: What We LearnedBuilding GPE: What We Learned
Building GPE: What We Learned
rajeevdayal
 
Creating a Plug-In Architecture
Creating a Plug-In ArchitectureCreating a Plug-In Architecture
Creating a Plug-In Architecture
ondrejbalas
 
LINQ 2 SQL Presentation To Palmchip And Trg, Technology Resource Group
LINQ 2 SQL Presentation To Palmchip  And Trg, Technology Resource GroupLINQ 2 SQL Presentation To Palmchip  And Trg, Technology Resource Group
LINQ 2 SQL Presentation To Palmchip And Trg, Technology Resource Group
Shahzad
 
Software Architecture: Design Decisions
Software Architecture: Design DecisionsSoftware Architecture: Design Decisions
Software Architecture: Design Decisions
Henry Muccini
 
Principles of software architecture design
Principles of software architecture designPrinciples of software architecture design
Principles of software architecture design
Len Bass
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture Patterns
Assaf Gannon
 
A Software Architect's View On Diagramming
A Software Architect's View On DiagrammingA Software Architect's View On Diagramming
A Software Architect's View On Diagramming
meghantaylor
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design
Arslan Anwar
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
Markus Voelter
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An Overview
Oliver Stadie
 
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overviewEnterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Winton Winton
 
Agile software architecture
Agile software architectureAgile software architecture
Agile software architecture
Boyan Mihaylov
 
An Entrepreneur's Guide to Guerrilla Marketing: A Condensed Crash Course
An Entrepreneur's Guide to Guerrilla Marketing: A Condensed Crash CourseAn Entrepreneur's Guide to Guerrilla Marketing: A Condensed Crash Course
An Entrepreneur's Guide to Guerrilla Marketing: A Condensed Crash Course
shyamal singha
 
Software Architecture taxonomies - Integration patterns
Software Architecture taxonomies - Integration patternsSoftware Architecture taxonomies - Integration patterns
Software Architecture taxonomies - Integration patterns
Jose Emilio Labra Gayo
 
Jumping Into WordPress Plugin Programming
Jumping Into WordPress Plugin ProgrammingJumping Into WordPress Plugin Programming
Jumping Into WordPress Plugin Programming
Dougal Campbell
 
Writing your Third Plugin
Writing your Third PluginWriting your Third Plugin
Writing your Third Plugin
Justin Ryan
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
Lars Vogel
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)
andrewnacin
 
Building GPE: What We Learned
Building GPE: What We LearnedBuilding GPE: What We Learned
Building GPE: What We Learned
rajeevdayal
 
Creating a Plug-In Architecture
Creating a Plug-In ArchitectureCreating a Plug-In Architecture
Creating a Plug-In Architecture
ondrejbalas
 

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

Software Patterns
Software PatternsSoftware Patterns
Software Patterns
Sudarsun Santhiappan
 
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptxchapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
MahmoudZidan53
 
Software_Archi-1.ppt
Software_Archi-1.pptSoftware_Archi-1.ppt
Software_Archi-1.ppt
FaizaZulkifal
 
Power point for project
Power point for projectPower point for project
Power point for project
abdussalam taher
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
adesso AG
 
Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects
Eberhard Wolff
 
NISI Agile Software Architecture Slide Deck
NISI Agile Software Architecture Slide DeckNISI Agile Software Architecture Slide Deck
NISI Agile Software Architecture Slide Deck
Utrecht University
 
Software architecture
Software architectureSoftware architecture
Software architecture
nazn
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notes
Sudarshan Dhondaley
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and Design
Ra'Fat Al-Msie'deen
 
Architecture in an Agile World
Architecture in an Agile WorldArchitecture in an Agile World
Architecture in an Agile World
Don McGreal
 
Ibm irl
Ibm irlIbm irl
Ibm irl
Rambabu Duddukuri
 
Architecture Principles CodeStock
Architecture Principles CodeStock Architecture Principles CodeStock
Architecture Principles CodeStock
Steve Barbour
 
How to Speak the Language of Application Architecture
How to Speak the Language of Application ArchitectureHow to Speak the Language of Application Architecture
How to Speak the Language of Application Architecture
Brad Beiermann
 
03 basic concepts
03 basic concepts03 basic concepts
03 basic concepts
Majong DevJfu
 
Software Architecture in an Agile World
Software Architecture in an Agile WorldSoftware Architecture in an Agile World
Software Architecture in an Agile World
Abhilash Gopalakrishnan
 
Architecture Design
Architecture DesignArchitecture Design
Architecture Design
Saqib Raza
 
O.Savchenko FWDays workshop Software Architecture
O.Savchenko FWDays workshop Software ArchitectureO.Savchenko FWDays workshop Software Architecture
O.Savchenko FWDays workshop Software Architecture
Alexandr Savchenko
 
Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)
stanbridge
 
Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)
stanbridge
 
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptxchapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
MahmoudZidan53
 
Software_Archi-1.ppt
Software_Archi-1.pptSoftware_Archi-1.ppt
Software_Archi-1.ppt
FaizaZulkifal
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
adesso AG
 
Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects
Eberhard Wolff
 
NISI Agile Software Architecture Slide Deck
NISI Agile Software Architecture Slide DeckNISI Agile Software Architecture Slide Deck
NISI Agile Software Architecture Slide Deck
Utrecht University
 
Software architecture
Software architectureSoftware architecture
Software architecture
nazn
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notes
Sudarshan Dhondaley
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and Design
Ra'Fat Al-Msie'deen
 
Architecture in an Agile World
Architecture in an Agile WorldArchitecture in an Agile World
Architecture in an Agile World
Don McGreal
 
Architecture Principles CodeStock
Architecture Principles CodeStock Architecture Principles CodeStock
Architecture Principles CodeStock
Steve Barbour
 
How to Speak the Language of Application Architecture
How to Speak the Language of Application ArchitectureHow to Speak the Language of Application Architecture
How to Speak the Language of Application Architecture
Brad Beiermann
 
Architecture Design
Architecture DesignArchitecture Design
Architecture Design
Saqib Raza
 
O.Savchenko FWDays workshop Software Architecture
O.Savchenko FWDays workshop Software ArchitectureO.Savchenko FWDays workshop Software Architecture
O.Savchenko FWDays workshop Software Architecture
Alexandr Savchenko
 
Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)
stanbridge
 
Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)
stanbridge
 

Recently uploaded (20)

Palo Alto Networks Cybersecurity Foundation
Palo Alto Networks Cybersecurity FoundationPalo Alto Networks Cybersecurity Foundation
Palo Alto Networks Cybersecurity Foundation
VICTOR MAESTRE RAMIREZ
 
Evaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical ContentEvaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical Content
Paul Groth
 
Microsoft Build 2025 takeaways in one presentation
Microsoft Build 2025 takeaways in one presentationMicrosoft Build 2025 takeaways in one presentation
Microsoft Build 2025 takeaways in one presentation
Digitalmara
 
Cognitive Chasms - A Typology of GenAI Failure Failure Modes
Cognitive Chasms - A Typology of GenAI Failure Failure ModesCognitive Chasms - A Typology of GenAI Failure Failure Modes
Cognitive Chasms - A Typology of GenAI Failure Failure Modes
Dr. Tathagat Varma
 
Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)
Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)
Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)
Peter Bittner
 
Jeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software DeveloperJeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software Developer
Jeremy Millul
 
Agentic AI - The New Era of Intelligence
Agentic AI - The New Era of IntelligenceAgentic AI - The New Era of Intelligence
Agentic AI - The New Era of Intelligence
Muzammil Shah
 
Securiport - A Border Security Company
Securiport  -  A Border Security CompanySecuriport  -  A Border Security Company
Securiport - A Border Security Company
Securiport
 
Let’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack CommunityLet’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack Community
SanjeetMishra29
 
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto CertificateCybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
VICTOR MAESTRE RAMIREZ
 
Kubernetes Cloud Native Indonesia Meetup - May 2025
Kubernetes Cloud Native Indonesia Meetup - May 2025Kubernetes Cloud Native Indonesia Meetup - May 2025
Kubernetes Cloud Native Indonesia Meetup - May 2025
Prasta Maha
 
Jira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : IntroductionJira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : Introduction
Ravi Teja
 
Measuring Microsoft 365 Copilot and Gen AI Success
Measuring Microsoft 365 Copilot and Gen AI SuccessMeasuring Microsoft 365 Copilot and Gen AI Success
Measuring Microsoft 365 Copilot and Gen AI Success
Nikki Chapple
 
End-to-end Assurance for SD-WAN & SASE with ThousandEyes
End-to-end Assurance for SD-WAN & SASE with ThousandEyesEnd-to-end Assurance for SD-WAN & SASE with ThousandEyes
End-to-end Assurance for SD-WAN & SASE with ThousandEyes
ThousandEyes
 
Introducing FME Realize: A New Era of Spatial Computing and AR
Introducing FME Realize: A New Era of Spatial Computing and ARIntroducing FME Realize: A New Era of Spatial Computing and AR
Introducing FME Realize: A New Era of Spatial Computing and AR
Safe Software
 
Create Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent BuilderCreate Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent Builder
DianaGray10
 
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
James Anderson
 
Co-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using ProvenanceCo-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using Provenance
Paul Groth
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
Fortinet Certified Associate in Cybersecurity
Fortinet Certified Associate in CybersecurityFortinet Certified Associate in Cybersecurity
Fortinet Certified Associate in Cybersecurity
VICTOR MAESTRE RAMIREZ
 
Palo Alto Networks Cybersecurity Foundation
Palo Alto Networks Cybersecurity FoundationPalo Alto Networks Cybersecurity Foundation
Palo Alto Networks Cybersecurity Foundation
VICTOR MAESTRE RAMIREZ
 
Evaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical ContentEvaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical Content
Paul Groth
 
Microsoft Build 2025 takeaways in one presentation
Microsoft Build 2025 takeaways in one presentationMicrosoft Build 2025 takeaways in one presentation
Microsoft Build 2025 takeaways in one presentation
Digitalmara
 
Cognitive Chasms - A Typology of GenAI Failure Failure Modes
Cognitive Chasms - A Typology of GenAI Failure Failure ModesCognitive Chasms - A Typology of GenAI Failure Failure Modes
Cognitive Chasms - A Typology of GenAI Failure Failure Modes
Dr. Tathagat Varma
 
Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)
Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)
Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)
Peter Bittner
 
Jeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software DeveloperJeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software Developer
Jeremy Millul
 
Agentic AI - The New Era of Intelligence
Agentic AI - The New Era of IntelligenceAgentic AI - The New Era of Intelligence
Agentic AI - The New Era of Intelligence
Muzammil Shah
 
Securiport - A Border Security Company
Securiport  -  A Border Security CompanySecuriport  -  A Border Security Company
Securiport - A Border Security Company
Securiport
 
Let’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack CommunityLet’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack Community
SanjeetMishra29
 
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto CertificateCybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
VICTOR MAESTRE RAMIREZ
 
Kubernetes Cloud Native Indonesia Meetup - May 2025
Kubernetes Cloud Native Indonesia Meetup - May 2025Kubernetes Cloud Native Indonesia Meetup - May 2025
Kubernetes Cloud Native Indonesia Meetup - May 2025
Prasta Maha
 
Jira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : IntroductionJira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : Introduction
Ravi Teja
 
Measuring Microsoft 365 Copilot and Gen AI Success
Measuring Microsoft 365 Copilot and Gen AI SuccessMeasuring Microsoft 365 Copilot and Gen AI Success
Measuring Microsoft 365 Copilot and Gen AI Success
Nikki Chapple
 
End-to-end Assurance for SD-WAN & SASE with ThousandEyes
End-to-end Assurance for SD-WAN & SASE with ThousandEyesEnd-to-end Assurance for SD-WAN & SASE with ThousandEyes
End-to-end Assurance for SD-WAN & SASE with ThousandEyes
ThousandEyes
 
Introducing FME Realize: A New Era of Spatial Computing and AR
Introducing FME Realize: A New Era of Spatial Computing and ARIntroducing FME Realize: A New Era of Spatial Computing and AR
Introducing FME Realize: A New Era of Spatial Computing and AR
Safe Software
 
Create Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent BuilderCreate Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent Builder
DianaGray10
 
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...
James Anderson
 
Co-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using ProvenanceCo-Constructing Explanations for AI Systems using Provenance
Co-Constructing Explanations for AI Systems using Provenance
Paul Groth
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
Fortinet Certified Associate in Cybersecurity
Fortinet Certified Associate in CybersecurityFortinet Certified Associate in Cybersecurity
Fortinet Certified Associate in Cybersecurity
VICTOR MAESTRE RAMIREZ
 

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.