Click here to Skip to main content
15,867,453 members
Articles / All Topics

Software Architecture Cheat Blog 1: Design Principles

Rate me:
Please Sign up or sign in to vote.
5.00/5 (8 votes)
10 Mar 2012CPOL1 min read 32K   27   2
This blog series will gather a summary of all the software architecture design principles under one roof.
This blog series will gather summary of all the software architecture design principles under one roof. Intention is to keep in touch with these principles. First one is called “SOLID”, which is combination of five basic designing principles,

Single Responsibility Principle

Example: http://blog.sanaulla.info/2011/11/16/solid-single-responsibility-principle/ There should never be more than one reason for class to change.

Open – Closed Principle

Example: http://blog.sanaulla.info/2011/11/19/solid-open-closed-principle/ Software Entities (Classes, Modules, Functions, etc.) should be open for extension but closed for modifications.

Liscov Substitution Principle

Example: http://lassala.net/2010/11/04/a-good-example-of-liskov-substitution-principle/ Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.

Interface Segregation Principle

Clients should not be forced to depend upon interfaces that they don’t use.

Dependency Inversion Principle

A. High level modules should not depend on low level module. Both should depend on abstraction. Both should depend on Abstraction. B. Abstraction should not depend on details. Details should depend on Abstraction. Other important principles are

DRY (Don’t Repeat Yourself)

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. Aimed at reducing repetition of information of all kinds, especially useful in multi-tier architectures.

YAGNI - You ain't gonna need it

Always implement things when you actually need them, never when you just foresee that you need them.

KISS - Keep it simple, Stupid!

Most systems work best if they are kept simple rather than made complex, therefore simplicity should be a key goal in design and unnecessary complexity should be avoided.

Seven Principles Of Software Development

  1. The Reason It All Exists
  2. KISS (Keep It Simple, Stupid!)
  3. Maintain the Vision
  4. What You Produce, Others Will Consume
  5. Be Open to the Future
  6. Plan Ahead for Reuse
  7. Think
REF: http://csharpsimplified.wordpress.com/2010/10/01/design-principle/


License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Chief Technology Officer
Bangladesh Bangladesh
I am a Software Engineer and Microsoft .NET technology enthusiast. Professionally I worked on several business domains and on diverse platforms. I love to learn and share new .net technology and my experience I gather in my engineering career. You can find me from here

Personal Site
Personal Blog
FB MS enthusiasts group
About Me

Comments and Discussions

 
QuestionSmall error/type Pin
tamash_ionut11-Mar-12 8:03
tamash_ionut11-Mar-12 8:03 
GeneralInterested to see where this goes Pin
jkinter28-Feb-12 5:51
jkinter28-Feb-12 5:51 
I'm always interested in finding concise and consolidated sources of AppDev Architecture, Principles, or Project Management information. The fact that you started with SOLID leads me to believe that this will be something good that I can use as a training/growth tool for junior developers. Thanks! I'm really interested to see where this goes.

--Jim

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.