Search code examples
oopprinciplesdesign-principles

OO Software Design Principles


I am a huge fan of software design principles such as SOLID and DRY. What other principles exist for OO software design?

Note. I’m not looking for answers like "comment your code" but instead looking for OO design principles like the ones discussed by Uncle Bob.


Solution

  • A fairly comprehensive list from Wikipedia:

    http://en.wikipedia.org/wiki/List_of_software_development_philosophies

    • Agile software development
    • Agile Unified Process (AUP)
    • Behavior Driven Development (BDD)
    • Big Design Up Front (BDUF)
    • Brooks's law
    • Cathedral and the Bazaar
    • Code and fix
    • Constructionist design methodology (CDM)
    • Cowboy coding
    • Crystal Clear
    • Design-driven development (D3)
    • Don't repeat yourself (DRY) or Once and Only Once (OAOO), Single Point of Truth (SPoT)
    • Dynamic Systems Development Method (DSDM)
    • Extreme Programming (XP)
    • Feature Driven Development
    • Hollywood Principle
    • Iterative and incremental development
    • Joint application design, aka JAD or "Joint Application Development"
    • Kaizen
    • Kanban
    • KISS principle (Keep It Simple, Stupid)
    • Lean software development
    • Microsoft Solutions Framework (MSF)
    • Model-driven architecture (MDA)
    • Open source
    • Open Unified Process
    • Quick-and-dirty
    • Rational Unified Process (RUP)
    • Scrum
    • Smart (agile development)
    • Separation of concerns (SoC)
    • Service-oriented modeling
    • Software Craftsmanship
    • Software System Safety
    • Spiral model
    • Test-driven development (TDD)
    • Unified Process (UP)
    • V-Model
    • Waterfall model
    • Wheel and spoke model
    • Worse is better (New Jersey style, as contrasted with the MIT approach)
    • Xtreme
    • You Ain't Gonna Need It (YAGNI)
    • Zero One Infinity