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:
    1. Assessing business usefulness (Feasibility Study)
    2. Discovering requirements (Elicitation and Analysis)
    3. Specification (standard form conversion)
    4. 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:
    1. Constructive Approaches: Minimize mistakes during creation (e.g., style guidelines, templates).
    2. 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.