ReArchitecting . . .

February 12, 2006

Software design principles (mined from Books and papers)

Filed under: architecture, design, object oriented, pattern — rearchitect @ 11:37 pm

In the last post I wrote that “Design principles are quite generic and abstract that rarely help concretely a developer during the process of software design”.
In this post I report a list of Software Design principles that I have mined from several books, papers.

Source: [Gamma et all, "Design Patterns: Elements of Reusable Object-Oriented Software", Addison-Wesley, 1995]

  • Program an Interface not an Implementation
  • Favor Composition Versus Inheritance
  • Find what varies and encapsulate it

Source: [R. Martin, “Agile Software Development, Principles, Patterns, and Practices”, Prentice-Hall, 2002]

  • Dependency-Inversion Principle
  • Liskov Substitution Principle
  • Open-Closed Principle
  • Interface-Segregation Principle
  • Reuse/Release Equivalency Principle
  • Common Closure Principle
  • Common Reuse Principle
  • Acyclic Dependencies Principle
  • Stable Dependencies Principle
  • Stable Abstraction Principle

(more…)

Blog at WordPress.com.