130 likes | 287 Views
The Basics Of Software Architecture For .NET Developers. Dan 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/system
E N D
The Basics Of Software Architecture For .NET Developers Dan 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/system • Components, and how they are implemented • Connectors – the relationship between the components • Reducing complexity through abstraction • Breaking an application into distinct features that overlap in functionality as little as possible • Functions can be optimized independently • Failure of one function does not cause the others to fail
The Software Architect Takes Into Account: • Design Patterns • Best Practices • n-Layering (UI, Façade, Business, Data, etc) • Modularity • Application Frameworks • Current and Emerging Technologies • Reusability
Advantages of a Good Architecture • Compatibility • Extensibility • Reliability • Maintainability • Usability • Availability • Security • Solutions that are easier to design, enhance, and maintain
Implicit Requirements • An 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 Requirements • It is the “duty” of the software architect to determine potential problems or risks with a design and mitigate or eliminate these risks • The 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 Risk • This will lead to a better analysis and resolution of risk, including: • Scaling • Compatibility • Future Maintenance and Enhancements • Usability Issues • Stakeholder Buy-In and Support • Proper Business Processes In Place • etc…
For .NET Developers • Solid Understanding of Object Oriented Programming • Objects, Instances, Inheritance, Abstraction, Encapsulation (Interfaces), Polymorphism, Decoupling, etc • .NET Design Patterns • Very useful patterns to understand include (Strategy, Façade, Adapter, and Singleton) • Keep up to date on the latest technology • SOA, WF, WPF, WCF, LINQ, etc
For .NET Developers • Increase Your Productivity and Effectiveness • Develop application components that are re-useable • Look to re-use existing components • Always consider modularity and decoupling • Look at third party components (Infragistics, Telerik, etc) • Consider ORM mapping tools such as LLBL Gen Pro
For .NET Developers • Understand the Value of Generics • Generics make type parameters possible • Defers 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 animal • Understand the Value of Reflection • System.Reflection namespace • Load objects at run time, get a list of methods and properties of objects at run time (even private ones) and call them • Many practical uses, including the ability to create a “Pluggable Architecture”
For .NET Developers • Microsoft Patterns & Practices • Enterprise Library • Provides 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 Client • Red-Gate .NET Reflector is a Cool Tool! • Allows you to view, navigate, and search through the class hierarchies of .NET assemblies • Look at the code behind the objects in .NET Framework classes to see how they work
Resources • MSDN Architecture Centerhttp://msdn.microsoft.com/en-us/architecture/default.aspx • Bredemeyer.com (Software Architecture Resources)http://www.bredemeyer.com/ • Data & Object Factory (.NET Design Patterns)http://www.dofactory.com • Microsoft Patterns & Practices • http://msdn.microsoft.com/en-us/practices/default.aspx • .NET Reflectorhttp://www.red-gate.com/products/reflector/ • System.Reflection Namespace • http://msdn.microsoft.com/en-us/library/system.reflection.aspx • My Blog (Dan Douglas)http://dandouglas.wordpress.com
Dan Douglas |Senior Software Developer/ Architect Blog: http://dandouglas.wordpress.com Twitter: @Dan_Douglas E-mail: dan.douglas@gmail.com Questions? • Consulting Inquiries? (519) 777-2258