Our world runs in software, everything around us is software, the phones, the tv, even the cars depend on software. Therefore the relevance of software quality is increasing. But, what is Software Quality? Well, we’re here to define this concept.
Defining Software Quality
Software Quality is still an abstract concept, there are many variations on the definition. On what we can agree is that it´s presence can be difficult to define, but it´s absence can be seen easily and instantly. Wikipedia describes it as follows:
In the concept of Software Engineering, software quality refers to:
-Functional quality: how well it complies with a given design, based on specifications (how it compares to competitors in the marketplace as worthwhile product).
-Structural quality: how it meets non-functional requirements to support the delivery of functional requirements.
This is a process which assures that software engineering processes, methods, activities and work items are monitored and comply against the standards like ISO, CMMI, etc, that will see them in more detail on the next post.
It´s really important to ensure quality and to achieve that this process starts since the beginning of the project. To ensure this goal it’s necessary to practice and gain experience following the different processes and methodologies existing.
Software Quality Factors
To achieve the highest quality services, there are some quality factors to consider
- Functional Suitability: Are the required function available in the software?
- Functional Completeness
- Functional Correctness
- Functional Appropriateness
- Performance Efficiency: How efficient is the software?
- Time Behaviour
- Resource Utilization
- Capacity
- Compatibility:
- Co-existence
- Interoperability
- Usability: Is the software easy to use?
- Appropriate Recogniability
- Learnability
- Operability
- Use Error Protection
- User Interface Aesthetics
- Accessibility
- Reliability: How reliable is the software?
- Maturity
- Availability
- Fault Tolerance
- Recoverability
- Security:
- Confidentiality
- Integrity
- Non-repudiation
- Authenticity
- Accountability
- Maintainability: How easy is to modify the software?
- Modularity
- Reusability
- Analysability
- Modifiability
- Testability
- Portability: How easy is to transfer the software to another environment?
- Adaptability
- Installability
- Replaceability
These are attributes of the ISO/IEC 9126 standard. We will see more details on my next post.
If you’ve reached up to this point, I want to thank you for your time and interest on this blog. Wait my next one.