What is a good software? This question might seem trivial but software gurus have defined a set of characteristics and in order to be good a software must exhibit either all or a subset of these characteristics.
From a developer’s point of view some of these characteristics are very important. Let me explain them briefly here
- Maintainability: Changes/modifications are inevitable during the life cycle of a software. A software is said to be maintainable if developers can incorporate the changes with minimum effort and minimum impact on the existing functionality.
- Scalability: A software is said to be scalable if it can entertain the increasing number of users over the time.
- Extendability: Adding new functions to the software should be easy.
- Reusability: Divide the code into reusable units. These units should be loosely coupled and highly cohesive.
- Testability: Test driven designs (TDD) makes sure we write testable code. Writing automated tests has caught much attention in the recent years.
Brief explanation of the above leads us to the question how to write such code which should have these qualities and simplest answer is follow design principles and rules set by gurus of software industry. I have chosen SOLID programming principles for this walk-through.