You decide to improve your software quality: and now what?
Have you already decided to increase the quality of your software? Good choice!! Congratulations and welcome to this unknown but emerging discipline of computing engineering. By applying this discipline to your software development you will realize, little by little, that your programs are more effective, easier to maintain and cheaper!
Where are the limits?
It’s very important to understand that in software quality there are no limits, every hint, method, process that helps you to improve quality is welcome. From a single programming rule to a sophisticated process, changes have a reflection into the software. For this reason don’t be ambitious in the first step!! If you are too greedy you end up with nothing. Start with a few rules and increase them in every iteration of your development, get feedback and observe the results.
You will never finish to improve your quality, that is because everything is not invented and the world changes. But don’t get discouraged! What is important is to get a good quality level in your development and to be proud of this level.
Deconstructing ISO 9126
Don’t forget that you are not alone in this adventure, although the discipline is new there is an ISO reference that gives us a framework to make our life easier.
This ISO standard is the 9126, it divides software qualities into characteristics. Try to understand every characteristic like an aspect that software needs to fulfill in order to satisfy the requirements better.
Attention! I say: “to satisfy the requirements better” so it isn’t obligatory to fulfill all the characteristics if software does not require them. Let’s have a look to every single one and try to explain a possible case where it applies.
- Maintainability: maybe the most important characteristic is the software ability to be easy to maintain. But not in all cases software needs to be maintainable. For example, an application destined to migrate data from one system to another one in life does not need to be maintainable, it won’t be evolutionary.
- Portability: why does a software need to be portable? A software developed for a specific version of an embedded system does not need to be portable. So don’t waste your time and don’t pay so much attention to the portability in this case.
- Efficiency: in time or space is one of the most appreciated characteristics of software quality. Make an effort to improve them if almost one is critical for your system.
- Reliability: software should not be bugs safe, it should only fail as much as permitted. The best way to measure is to take this characteristic into account.
- Functionality: maybe the most difficult to measure and the most important. Don’t forget to always keep in mind this characteristic when you design your quality hints, even if you don’t want to measure functionality.
- Usability: are you programming a back-end application for a mainframe or are you programming an end user application? Depending on your answer you will need usability or not.