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

Basics of Software Architecture for .NET Developers

  • 1.
    The Basics OfSoftware Architecture For .NET DevelopersDan Douglas |Senior Software Developer/ Architect     Blog: http://dandouglas.wordpress.com Twitter: @Dan_Douglas E-mail: dan.douglas@gmail.com
  • 2.
    Software Architecture is:Structureand 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 ArchitectTakes Into Account:Design PatternsBest Practicesn-Layering (UI, Façade, Business, Data, etc)ModularityApplication FrameworksCurrent and Emerging TechnologiesReusability
  • 4.
    Advantages of aGood 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 isthe “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 OfRiskThis 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 DevelopersSolidUnderstanding 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 DevelopersIncreaseYour 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 DevelopersUnderstandthe 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 DevelopersMicrosoftPatterns & 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 |SeniorSoftware Developer/ Architect     Blog: http://dandouglas.wordpress.com Twitter: @Dan_Douglas E-mail: dan.douglas@gmail.comConsulting 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.