Defect
A defect in a software system is a quality level that is not acceptable.
Quality levels need to be elicited and negotiated.
Discussion
If your program crashes then it
- definitely has a bug.
- is highly likely to have a bug.
- may or may not have a bug.
If your program crashes, and the cause is in your code, then it
- definitely has a bug.
- is highly likely to have a bug.
- may or may not have a bug.
Let it carash to trigger the bug -> it is a feature
Quality Assurance
- Defect Avoidance or Prevention
- Defect Detection (find) and Rectification (fix)
Points of Quality
- Defect prevention design care, code review
- Defect appraisal detection, triaging
- Internal rectification
- External rectification
Classification of Software Qualities
1 External Qualities
External Qualities: what a user of software product is aware of.
Funtional Qualities = What the software does
Definition:
- behavioural
- What does it accomplish for the user
- primary requirements
Component:
- Correctness
- freedom form faults in specification, design, and implementation (Implementation and design could be perfect, but if there was a spec misunderstanding, ambiguity, or change, the software will not be correct)
- does the job
- fulfills all the use cases or user stories
- Accuracy
- quantitative outputs
- Adaptability - the extent to which a system can be used, without modification
Non-Functional Qualities = How it does it
- Usability - can the user make it go (easy for users to learn and use a system)
- Efficiency - minimal use of system resources, including execution time (write & read time) & taken space (memory & disk)
- Reliability - perform its required functions under stated conditions whenever required-having a long mean time bwteen failures
- Integrity
- prevent unauthorized or improper access to its programs and its data
- Robustness
- behaves well on strange or invaild input, and stressful environmental conditions
All these above contribute to the user experience (UX)!
- quality of service
- ecological features
2 Internal Qualities
Internal Qualities: what a developer directly experiences while working on that software
Qualities for Modification
- Maintainability
- the ease with which you can modify a software system to change or add capabilities, improve performance, or correct defects
- Flexibility
- the extend to which you can modify a system for uses or environments
- Portability
- the ease with which you can modify a system to operate in an environment different from now
- Reusability
- the ease to which and the ease with which you can use parts of a system in other systems
Qualities for Comprehension
-
Readability
-
the ease with which you can read and understand the source code of a system (esp at the detailed-statement level)
-
Understandability
-
the ease with which you can comprehend a system at both the system-organizational and detailed-statement levels
-
Testability
-
the degree to which you can unit-test and system-test a system
-
the degree to which you can verify that the system meets its requirements
[Testability] Determining Factor:
- Relative to a target quality
- A system could be highly tastable for correctness, lowly testable for efficiency
- Partly determined by test infrastructure
- Low testability blocks knowing qualities
3 Relationship