August 5, 2017

Software design concepts


Software design Principle
  • Should have Domain and software knowledge
  • Give more time to rewrite the design of software
  • Take the time to review design
  • Keep the code simple. Simple help you to solve critical problem
  • Make small method
  • Single level of abstraction - 
  • YAGNI - You aren't gonna need it (or you don't have much idea about it) wait to implement it later (cost of implementation will be less if we postponed) 
  • High Cohesive - Like things stay together (indirectly one responsibility)
  • Low coupling - Keep less dependency between the class
  • DRY - Don't repeat the code
  • Single Responsibility Principle - Give only one responsibility to single object
  • Open Closed Principle - Open for extension but close for modification
  • Liskov Substitution Principle - Derived class must completely substitutable for their base types
  • Interface Segregation Principle - Clients should not be forced to depend upon interfaces that they do not use.
  • Dependency Inversion Principle - removing direct dependencies between classes.  
  • If we can't name a variable or function properly it may be sign..we have not yet understood its true purpose.
  • Modularity -  dividing the software into uniquely named and addressable components
  • Understand design pattern

https://msdn.microsoft.com/en-us/library/ee658098.aspx

http://www.oodesign.com/

https://code.msdn.microsoft.com/windowsapps/OOPS-Principles-SOLID-7a4e69bf

http://ecomputernotes.com/software-engineering/techniques-for-maintenance


Software Architecture and Design
http://msdn.microsoft.com/en-us/library/ee658093.aspx


Design Fundamentals
http://msdn.microsoft.com/en-us/library/ee658116.aspx

MSDN Library
http://msdn.microsoft.com/en-us/library/ms123401.aspx

Pattern and Practice
http://msdn.microsoft.com/en-us/library/ff921345.aspx


No comments: