How to improve software quality

How to Improve Software Quality

Software Quality is the most important thing if you want to compete the ever growing market of software application. Here are few time-tested techniques that would definitely help you improve the quality of your software products.

Clear Objective

It seems very ordinary rhetoric but you should not underestimate its importance. We cannot achieve anything if we are not clear what we are going to achieve.

Testing objectives should be clear
Testing objectives should be clear

In an experiment, the researchers divided the software developers in two teams. The instructions for team A were. “Your software should have very good quality” and the instruction for team B was. “Your software should follow object oriented paradigm and you should write unit test for each method.”

Team A developers strived to achieve the quality but as the instructions were not clear, they interpreted it in their own way and instead of wasting so much time, could not reach anywhere.

Team B developers were clear in their objectives so they did follow the OOP design and they did write the unit tests for each method of their code.

It is general observation that the developers tend to do what they are asked to do in explicit and objective way.

Explicit Quality Activity.

If we have in mind that we would improve the quality of the software applications but we do not allocate separate time for it, our claims are nothing but shallow rhetoric. If you are serious about improving quality of the software applications, you should have a daily activity for it. Say if you work 8 hours a day on a development project. You should allocate some hours daily for quality enhancing or code refactoring. It really depends upon your time management and cost calculations that how much time you can allocate for this quality assurance activity.

Proper strategy

You have set your goals, and have allocated time and resources to achieve those goals. It is the time to choose the right strategy to achieve those goals. The strategy really depends upon the scenario and type of you application. You should take a short course on software testing strategies and should choose the right strategy and the right tool for you specific application.

A better testing strategy is a great way to achieve the results faster
A better testing strategy is a great way to achieve the results faster

Following Standard Guidelines

Every company may have devised certain quality guidelines in the form of a checklist. This checklist may include the coding standards and generic guidelines of testing. These checklists are very crucial. The checklists make sure that all the developers are on the same page and follow the same quality standards. In addition to that, following specific coding standards also creates distinction for a company.

Testing guidelines bring all the stakeholder on the same page.
Testing guidelines bring all the stakeholder on the same page.

Informal technical review

The brainpower multiplies when more than one person brainstorm about a problem. That is called synergy where the combinational effect is more than the sum of two individual efforts. During coding breaks, say at lunch or tea break, the developers should discuss their work with friends. These type of informal discussions not only improve the quality but also save the time of formal meetings.

Formal Technical Reviews

The formal technical reviews or FTR’s are mandatory for every big project. In FTRs, a weekly, bi-weekly or monthly meeting is scheduled to review the current progress of the project and quality of the development.

Development should not enter in new phase before meeting the bare minimum quality threshold.
Development should not enter in new phase before meeting the bare minimum quality threshold.

For FTRs, we divide the project into phases. At the completion of every phase, we have quality gate. The developer is not allowed to move forward until he/she meets the standards of that quality gate. It is a fact that we cannot test every bit of the project under development. However, the concept of quality gate makes sure that before entering into new phase, there should be no major blunder that may be catastrophic at later stage. As the time passes, the time and complexity of a bug fixing increases. Therefore, the idea of phases and gates is very useful.

External Audits

There are specific companies that do the external audits. These companies have earned reliability in the market and the feedback by those companies not only helps improve quality standards but it also builds a trust between the company and the clients. The clients prefer those companies that have good feedback. In software industry there are different types of standards that a company can attain based upon the quality. Good capability maturity level shows the company has matured the development processes. CMM level 5 is highest standard. The companies with higher maturity level get more business from the market.

Change control procedure.

Repeated rework in any process pollutes the original good design. Keeping the client involved from the very beginning to the end is definitely a good thing but client may hijack the whole coding process as well. With the passage of time, client may come up with new ideas that may change the originally finalized design. This wish cycle of the client is sometime so gruesome that everything is messed up at the end. To stop the client from such exploitation, a proper change control procedure should be defined. The initial requirement from the client should be finalized in requirement specification document. After that, if the client demands any change in initial requirement, the change control procedure re-calculates the cost for that change. The project owner and the client approve the change and then the developer starts working on it. Due to this procedure, the developer plays safe and things go smoothly.

Change control procedure is in fact a blessing for the code.
Change control procedure is in fact a blessing for the code.

Measurement of results.

There are no results until we are able to measure. The quality is good or the quality is bad are just subjective expressions. There should be some measurable or countable method to gauge the quality.

There is no distance until we are able to measure it.
There is no distance until we are able to measure it.

These measuring tools are like a feedback for the quality enhancing activities.

Prototyping

For a coder, the quality of the application is all about good and error free coding. However, for the client, the quality is about how much the end product is according to the client’s expectation. Therefore, the client being non-technical always have hard time explaining and the developer being too much technical cannot easily understand the nitty gritty of the client’s business. The best way to bridge the gap is, building a prototype for the client. As the proverb says – one-picture thousand words. The prototype helps both the client and the developer to be on the same page.

Prototyping helps a lot in requirement gathering phase.
Prototyping helps a lot in requirement gathering phase.
Prototyping is a also a great to engage client in the development process
Prototyping is a also a great to engage client in the development process

Nip the evil in the bud

The cost of the bug increases with time. Therefore, you should fix the bug as soon as you find it. The cost of bug in start may be 1 dollar. But with every passing day, its cost keeps on increasing. It may be 100 dollar after first week, 200 dollar after second week and so it. It may cost thousands of dollar if kept unfixed until the delivery of the project. You may understand it with the simple analogy of home construction. If there is some construction fault in foundation, you should fix it right there. Nevertheless, if you do not fix it there and keep on constructing the building, you may end up with the catastrophic end.