T B O S A F .NET D

basiliskcanoeSoftware and s/w Development

Nov 2, 2013 (3 years and 10 months ago)

102 views

T
HE

B
ASICS

O
F

S
OFTWARE

A
RCHITECTURE

F
OR

.NET
D
EVELOPERS

Dan Douglas |

Senior Software Developer/ Architect






Blog:
http://dandouglas.wordpress.com


Twitter: @Dan_Douglas


E
-
mail: dan.douglas@gmail.com

S
OFTWARE

A
RCHITECTURE

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




T
HE

S
OFTWARE

A
RCHITECT

T
AKES

I
NTO

A
CCOUNT
:


Design Patterns


Best Practices


n
-
Layering (UI, Façade, Business, Data, etc)


Modularity


Application Frameworks


Current and Emerging Technologies


Reusability




A
DVANTAGES

OF

A

G
OOD

A
RCHITECTURE


Compatibility


Extensibility


Reliability


Maintainability


Usability


Availability


Security


Solutions that are easier to design, enhance, and
maintain

I
MPLICIT

R
EQUIREMENTS


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


I
MPLICIT

R
EQUIREMENTS


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




I
MPLICIT

U
NDERSTANDING

O
F

R
ISK


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…




F
OR

.NET D
EVELOPERS


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







F
OR

.NET D
EVELOPERS


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






F
OR

.NET D
EVELOPERS


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”





F
OR

.NET D
EVELOPERS


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








R
ESOURCES


MSDN Architecture Center

http://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 Reflector

http://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










Q
UESTIONS
?



Dan Douglas |

Senior Software Developer/ Architect






Blog:
http://dandouglas.wordpress.com


Twitter: @
Dan_Douglas


E
-
mail:
dan.douglas@gmail.com

Consulting Inquiries? (519) 777
-
2258