Typically in software engineering, Software Quality refers to bug or defect free, delivered on time and within budget, meets requirements and/or expectations, and is maintainable.
Software engineering define Software Quality as “The totality of functionality and features of a software product that bear on its ability to satisfy stated or implied needs.”
In layman words:
“Software quality is the degree of conformance to explicit or implicit requirements and expectations.”
We can categorized Software Quality in to three aspects:
1. Software Functional Quality means that the software correctly performs the tasks it’s intended to do for its users. Attributes of functional quality are:
Meeting the specified requirements.
Creating software that has zero/few defects.
Functional quality is typically enforced and measured through software testing.
2. Software Structural Quality refers to meets non-functional requirements that support the delivery of the functional requirements. The attributes of this type of quality include
Good enough performance.
Ease of learning and ease of use.
Unlike functional quality, structural quality is hard to test. It can be evaluated through the analysis of source code at unit, technology and system level. Each level should adheres to sound principles of software architecture.
3. Software Process Quality refers how much all the process that touches the development of product are helpful to achieve above two aspect of Quality. Users, development teams, and sponsors have a stake in improving this aspect of software quality.
Meeting delivery dates.
Stresses less environment
Software process quality is driven by collaboration throughout the entire software development life cycle. One can move from waterfall to agile development, which results faster pace of development and feedback.
Thus to improve software quality, we need to address all three aspects.
Here now we are discussing some points about how to improve Structural Quality aspect of software.
Test Driven Development(TDD)/ Acceptance Test Driven Development (ATDD)
High level Users / QA Test cases execution
Write detail unit tests
Continuous Integration (CI)
Static analysis tools
Use development IDE
Software Quality has many dimensions and we can measure quality on these dimensions. Some of them are below:
Usability / Ease-of-use
Legibility / Readability