software design and development principles

software design patterns that developer use to develop a software.

Have you heard of DRY, KISS, YAGNI before throughout your developer carrier? I am sure you have, but for people who have not heard of this accept KISS, this content is for you. Software design principles are a set of guidelines to help developers make good system designs. While there are many design principles to follow, I will highlight only the most recommended to learn based on my humble personal opinion.

DRY

Don’t repeat your self encourage the developer to not repeat software patterns or code. It encourages code usability in a form of methods, functions or subroutines. If it implements the developer can make one change and it affects many related elements and also avoids making changes to unrelated elements.

YAGNI

You aren’t going to need it is a software design principle from the Extreme Programming framework that states when developing software functionality should not be added unless it is necessary. Within agile software development, the requirement is always open and extra functionality may end up wasted.

KISS

Keep it simple, stupid. It states to avoiding complexity is the best way to develop software that is easy to maintain, understand and easy to debug. A simple product that does a single thing well is better than a single, product that does many things poorly.

SOLID

Is a set of principles that applied to Object-oriented design to create, maintain understanding and be flexible while keeping code clean.

  • Single Responsibility
  • Open/Closed
  • Liskov Substitution
  • Interface Segregation
  • Dependency Inversion

Test-Driven Development (TDD)

Is the process of writing tests for software requirements that will fail until the software is developed. this ensures that the software is written to meet requirements and make sure the code is free from defects.

What do you think?

Hope you learn and implement the software design and development principles on your next projects. If you have any feedback, please feel free to live a comment or email me at [email protected]