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
- Code testability.
- Code maintainability.
- Code understandability.
- Code robustness
- Code security.
- 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.
- Meeting budgets.
- 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
- Test Driven Development(TDD)/ Acceptance Test Driven Development (ATDD)
- High level Users / QA Test cases execution
- Write detail unit tests
- Continuous Integration (CI)
- Pair Programming
- Code review
- Static analysis tools
- Coding standards
- Team cohesion
- Use development IDE
Software Quality has many dimensions and we can measure quality on these dimensions. Some of them are below:
- Concurrency/ Thread-safeness.
- Usability / Ease-of-use
- Legibility / Readability
BLOG By : Nishi Kumar Jain
Senior Manager – IT, ACS Group