Quality Assurance and Requirements
Quality Assurance and Requirements
Definition of Requirements
- IEEE Standard 729: Defines a requirement as a condition or capability needed by users to solve problems or achieve objectives. It can also refer to conditions that must be met by a system to satisfy contracts, standards, or specifications.
Software Requirements
- Software Requirements: Specifications of what should be implemented, describing system behavior, properties, or attributes. They may impose constraints on the development process.
- Behavior: Functional Requirements
- System Property/Attribute: Non-Functional Requirements
Role of Requirements
- Software requirements support various phases in project management.
- Project Planning
- Project Tracking
- Change Control
- System Testing
- User Documentation
- Construction Process
Levels of Software Requirements
- Business Requirements: High-level needs for the organization.
- User/Customer Requirements: Specific needs from the end-user perspective.
- Functional Requirements: Detailed functionalities the system must provide.
- Non-Functional Requirements (NFR): Quality attributes, regulations, and standards that the solution must meet.
Types of Requirements
- Functional Requirements include:
- Services the system should provide
- System reactions to specific inputs
- Expected behaviors in particular situations
Non-Functional Requirements (NFR)
- Include various critical attributes:
- Organizational Requirements
- External Requirements
- Efficiency, Reliability, Portability, Interoperability, Ethical requirements
Requirements Engineering (RE)
- Definition: A discipline that involves defining, documenting, and maintaining requirements throughout the software development lifecycle.
- RE Process: Includes 4 subprocesses:
- Assessing business usefulness (Feasibility Study)
- Discovering requirements (Elicitation and Analysis)
- Specification (standard form conversion)
- Validation (ensuring requirements meet customer needs)
Requirements Defects
- Categories of Defects:
- Errors of Commission
- Errors of Omission
- Errors of Clarity and Ambiguity
- Errors of Speed or Capacity
- Importance of Early Detection: Defective requirements can lead to failures in subsequent phases (e.g., design and coding).
Importance of Requirement Engineering
- A survey indicated that many projects fail due to incomplete requirements.
- Cost Analysis: Cost to fix software errors escalates:
- Requirements phase: 1.0
- Design phase: 5.0
- Code phase: 10.0
- Testing phase: 30.0
- Prevention of defects is preferable to removal.
Quality Assurance Approaches for Requirements
- Divided into:
- Constructive Approaches: Minimize mistakes during creation (e.g., style guidelines, templates).
- Analytical Approaches: Evaluated on a completed artifact.
- Static Techniques (e.g., inspections)
- Dynamic Techniques (e.g., testing with an executable version)
Comprehensive Software Quality Requirements
- Many projects fail due to insufficiently detailed quality requirements.
- Attributes impacting quality include maintenance, reliability, and training aspects.
McCall’s Quality Factors Model
- Classifies requirements into 11 quality factors grouped into:
- Product Operation Factors: Correctness, reliability, efficiency, usability.
- Product Revision Factors: Maintainability, flexibility, testability.
- Product Transition Factors: Portability, reusability, interoperability.
Product Operation Factors
- Correctness: Specifies required outputs and accuracy.
- Reliability: Concerns the likelihood of failures and maximum failure rates.
- Efficiency: Requires minimum resources (hardware performance measures).
- Integrity: Focuses on system security and access control.
- Usability: Involves training requirements and ease of operation.
Product Revision Factors
- Maintainability: Focus on correcting faults and maintaining the software.
- Flexibility: Adaptation of software to meet changing user needs.
- Testability: Ease of testing with predefined data and repair diagnostics.
Product Transition Factors
- Portability: Adaptation to different hardware and operating systems.
- Reusability: Ability to reuse code in new applications.
- Interoperability: Ability of systems to exchange and interpret data.
Conclusion
- Quality assurance and requirement engineering are deeply intertwined.
- Enhancing requirement definition is critical to ensure high-quality software delivery.
- Prevention of requirements defects is prioritized over later rectification.
Reading Assignment
- Compare McCall’s quality factors with other models such as Deutsch and Willis (1988), Evans and Marciniak (1987), and one of your own choice.