quality evaluation Flashcards
(18 cards)
Software Quality
- Software quality refers to the degree to which software conforms to its requirements and meets the needs of its users.
- Definition 1: “The capability of a software product to satisfy stated and implied needs when used under specified conditions.”
- Definition 2: Software quality depends on “the degree to which those established requirements accurately represent stakeholder needs, wants, and expectations.”
- High quality software meets its requirements, which in turn should accurately reflect stakeholder needs.
- Quality is about aligning the software with both its formal requirements as well as true user needs.
Error
- A human mistake made by a developer.
- An example is misunderstanding a requirement and coding to the wrong specification.
defect
- A flaw or imperfection inserted into a software due to an error.
- An example is a bug in the code or issues with other artifacts like requirements. Defects get inserted when errors are made.
failure
- The termination of the software’s ability to function as intended.
- Occur when the software executing encounters a defect.
- The user experiences the software failing in some unintended way
Software Quality Management
- Quality planning – Defining quality objectives, requirements, targets, and planning of quality assurance.
- Quality control– Techniques to measure quality characteristics, review work products, and find defects.
- Quality assurance– Processes to ensure compliance with procedures.
- Quality improvement– Defect analysis and process enhancements.
- Resources– Infrastructure, tools, training that enable quality processes.
- Standards– Regulations, models, certifications that guide quality work.
- Culture– Values, behaviors that encourage quality mindset.
How to Control Software Quality?
- Testing the software
- Static analysis of software
- Dynamic analysis of software
Various points of view
- Functionality
- Performance
- Quality
- Usability
- Maintainability
Various approaches
- Quantitative
- Qualitative
What Represents a Good Software Metric?
Comparability
Intuitive interpretation
Simple and efficient computation
LOC
number of lines of code
Chidamber and Kemerer (CK) Metrics Suite
Metrics for object-oriented software
- Weighted Methods per Class (WMC): measures the complexity of a class by assessing the sum of complexities of its methods
- Number Of Children (NOC): represents the number of immediate subclasses a class has; provides an understanding of class reuse and potential dependencies
- Coupling Between Object Classes (CBO): measures the number of classes to which a class is coupled; helps in evaluating the level of interdependence among classes
McCabe Cyclomatic Complexity Metric
- A quantitative measure of independent paths in the source code of the software product
- An independent path is that path which has at least one edge that has not been yet traversed in any other path
Tools for Software Evaluation & Quality Assessment
- Understand
- SonarQube
Quality Attributes
table
Performance Efficiency
- Represents the degree to which a software performs its functions within specified time and is efficient in the use of resources (such as CPU, memory, storage, network devices, energy, materials…) under specified conditions.
- Time behaviour - Degree to which the response time and throughput rates of a software, when performing its functions, meet requirements.
- Resource utilization - Degree to which the amounts and types of resources used by a software, when performing its functions, meet requirements.
- Capacity - Degree to which the maximum limits of a software parameter meet requirements.
Code Smells
- Indicators of potential issues (deeper problems) in the code over time
- Results of poor or misguided programming (e.g., not conforming to the SOLID principles)
- Examples of Code Smells
- Large/God Class
- Long Method
- Duplicated Code
- Switch Statement
- Feature Envy
SOLID principles
- Single Responsibility
- Open/Closed
- Liskov Substitution
- Interface Segregation
- Dependency Inversion
Refactoring
- Performs structural changes to improve the quality of the code
- The external behavior remains unchanged