Software Quality Models(SQM)

  • A Software Quality Model is a structured framework that defines different characteristics and factors used to evaluate the quality of a software product.
  • It helps in measuring and ensuring that the software meets user requirements and quality standards.
  • Purpose of Software Quality Model
    • SQM defines software quality attributes.
    • SQM measures and evaluates software quality.
    • SQM improves product reliability and performance.
Common Software Quality Models
    • McCall’s Quality Model
      • McCall’s Quality Model is one of the earliest software quality models, proposed by Jim McCall in1977.
      • McCall’s Quality Model provides a comprehensive, structured framework to evaluate software quality by dividing quality factors into product operation, revision, and transition.
      • It helps improve reliability, maintainability, and adaptability of software systems.
      • The model focuses on the relationship between software quality characteristics and product operations, revision, and transition.
      • Structure of McCall’s Quality Model

McCall’s model is divided into three major perspectives:-

        • Product Operation

These factors describe how well the software performs during operation and include features –

            • Correctness – It is the ability to meet specified requirements.
            • Reliability – It is the ability to perform consistently without failure.
            • Efficiency – It is the use of system resources effectively.
            • Integrity – It is the protection from unauthorized access (security).
            • Usability – It is the ease of use and user-friendliness.
        • Product Revision

These factors relate to the ability to modify the software and include –

            • Maintainability – It is the ease of fixing defects.
            • Flexibility – It is the ease of making changes.
            • Testability – It is the ease of testing the software.
        • Product Transition

These factors relate to adapting software to new environments and include-

            • Portability – It is the ease of transferring software to other systems.
            • Reusability – It is the ability to reuse components in other applications.
            • Interoperability – It is the ability to interact with other systems.
      • Advantages of McCall’s Quality Model
        • It clearly structured the software into three major categories.
        • It covers both operational and maintenance aspects.
        • It helps in systematic quality evaluation.
        • It is easy to understand for academic study.
    • Boehm’s Quality Model
      • Boehm’s Quality Model is a software quality model proposed by Barry W. Boehm in1978.
      • This model defines different quality characteristics to evaluate and measure the quality of a software product.
      • Boehm’s Quality Model is an important software quality framework that defines multiple (different) quality characteristics in a hierarchical form. It helps in evaluating and improving software performance, reliability, and maintainability.
      • This model focuses on improving software utility and maintainability.
      • Structure of Boehm’s Quality Model

Boehm’s model is divided into three levels:-

        • High-Level Characteristics
          • This level describes the overall utility of the software:-
            • As-is Utility – How well the software can be used in its current state.
            • Maintainability – Ease of modifying and updating the software.
            • Portability – Ease of transferring software to different environments.
        • Intermediate-Level Characteristics
          • These include:-
            • Reliability
            • Efficiency
            • Human Engineering (Usability)
            • Testability
            • Understandability
            • Maintainability
            • Portability
            • Flexibility
        • Primitive Characteristics
          • These are measurable attributes like:-
            • Completeness
            • Consistency
            • Accuracy
            • Structuredness
      • Advantages of Boehm’s Quality Model
        • It provides a hierarchical structure.
        • It covers both user and developer perspectives.
        • It helps improve maintainability and portability.
        • It is easy to understand and apply.
    • ISO 9126 Quality Model
      • The ISO 9126 Quality Model is a widely accepted international standard that defines six major characteristics to evaluate software quality. It helps organizations develop reliable, efficient, and user-friendly software systems.
      • It was developed by the International Organization for Standardization (ISO) to define a structured way to measure and assess software quality.
      • This model identifies the main characteristics that determine the quality of a software product.
      • The ISO 9126 model defines six primary quality characteristics:
        • Functionality
        • Reliability
        • Usability
        • Efficiency
        • Maintainability
        • Portability
      • Importance of the ISO 9126 model
        • It provides a standardized quality framework
        • It helps measure and evaluate software quality
        • It improves product reliability and performance
        • It ensures customer satisfaction
    • Musa Model
      • The Musa Model is a software reliability growth model that uses software execution time and observed failure behavior to estimate software reliability.
      • The Musa Model is a software reliability growth model used to estimate and predict the reliability of software during testing and operation.
      • It was developed by John D. Musa at Bell Laboratories in the mid-1970s.
      • This model assumes that as testing progresses and faults are detected and removed, failure intensity decreases and software reliability increases.
      • The model is useful for answering questions such as: how many failures are likely to remain, how failure intensity changes during testing, and how much additional execution/testing time may be needed to reach a desired reliability level.
      • Musa Basic Execution Time Model
        • The Basic model assumes a finite failure potential.
        • This model assumes that as testing progresses and faults are detected and removed, failure intensity decreases and software reliability increases. During testing:

Execute Software – Failure Occurs – Locate Fault – Correct Fault – Continue Testing.

Thus, Software reliability should be related to how much the software has actually been executed. This is why Musa’s model uses execution time as its principal time measure.

A common representation of the failure intensity is:

λ(t)=λ0eβt\boxed{\lambda(t)=\lambda_0e^{-\beta t}}

where:

          • λ(t)\lambda(t) = failure intensity after execution time tt
          • λ0\lambda_0 = initial failure intensity
          • t = execution time
          • β\beta = parameter controlling the rate at which failure intensity decreases

Thus, the model predicts an exponential reduction in failure intensity as testing progresses.

Another useful form expresses failure intensity in terms of failures already experienced:

λ(μ)=λ0(1μν0)\boxed{\lambda(\mu)=\lambda_0\left(1-\frac{\mu}{\nu_0}\right)}

where:

          • λ0\lambda_0 = initial failure intensity
          • λ(μ)\lambda(\mu) = current failure intensity
          • μ\mu = expected/cumulative failures experienced
          • ν0\nu_0 = total failure potential

Thus, this expresses the basic idea that the failure intensity falls as faults responsible for failures are detected and corrected. The Basic Execution Time Model is a finite-failure model.

      • Advanced Musa-Okumoto Logarithmic Poisson Execution Time Model
        • The logarithmic model describes a different pattern of reliability growth.
        • The Musa-Okumoto model is another important execution-time reliability model. Its failure intensity can be expressed as:

λ(t)=λ01+λ0θt\boxed{\lambda(t)=\frac{\lambda_0}{1+\lambda_0\theta t}}

where:

            • λ0\lambda_0 = initial failure intensity
            • θ\theta = failure-intensity decay parameter
            • t = execution time
      • Assumptions of Musa Model

There are several typical assumptions associated with Musa execution-time reliability modeling, including:

        • Software reliability is related to actual execution time.
        • Failures occur as the software is exercised.
        • Failures are treated probabilistically.
        • Fault removal during testing improves reliability.
        • The operational/testing profile should reasonably represent the way the software is expected to be used.
        • For the Musa-Okumoto formulation, failures are assumed independent and failure intensity decreases as execution proceeds.
      • Applications

The Musa model can be used to estimate:

        • Current software reliability
        • Initial and current failure intensity
        • Expected number of remaining failures
        • MTTF(Mean Time to Failure)
        • Additional testing/execution time required
        • Reliability growth during testing
        • Whether a reliability objective has been reached
        • Approximate release readiness based on reliability criteria
      • Advantages
        • Measures reliability growth: It shows how software reliability improves as faults are discovered and corrected.
        • Predicts failure behavior: It can estimate future failures and failure intensity from testing information.
        • Supports testing decisions: It can help determine whether additional testing is necessary.
        • Supports release decisions: Reliability objectives such as target failure intensity or MTTF can be used as release criteria.
      • Limitations
        • Requires accurate failure data: Poorly recorded failures can produce unreliable estimates.
        • Requires model assumptions to fit the project: Actual failure behavior may not follow the assumed mathematical pattern.
        • Execution time must be measured: This can require appropriate instrumentation or operational records.
        • Operational profile matters: Testing that poorly represents actual use may produce misleading reliability estimates.
        • Testing technique can affect estimates: Research has shown that testing methods and coverage can influence reliability estimates obtained from time-domain models.
  • Importance of Software Quality Model
    • It provides a clear way to measure quality.
    • It helps in improving software performance.
    • It ensures customer satisfaction.
    • It supports standards-based development.

Software Quality Control(SQC)

  • Software Quality Control (SQC) is a process used to ensure that the developed software product meets the specified quality requirements and standards.
  • It focuses on identifying defects in the actual software product through testing and inspection activities.
  • Unlike Software Quality Assurance (SQA), which is process-oriented, Software Quality Control is product-oriented.
  • The main purpose of software quality control is to detect and correct defects before the software is delivered to the customer.

Software Quality Assurance(SQA)

  • SQA stands for Software Quality Assurance. 
Definition
  • Software Quality Assurance is the process of ensuring that software products and services meet the defined quality standards. 
  • SQA is a set of activities and processes that ensure that the software products and services meet the defined quality requirements, standards, and specifications and are free from defects. 
Characteristics
  • Software Quality Assurance (SQA) is a process-oriented mechanism.
  • SQA involves establishing standards and procedures and implementing processes that ensure that the software development team adheres to these standards.
  • SQA is essential for ensuring that the software product is of high quality, meets the user’s requirements, and is free of defects and issues.
  • By implementing SQA processes, software development teams can minimize the risks of software failures, reduce costs, and increase user satisfaction.
Phases of SQA
The SQA process typically involves the following activities:
    • Planning: In this phase, we develop an SQA plan that outlines the standards, procedures, and metrics for the software development process. This involves defining the quality goals, objectives, and strategies for the software development project.
    • Requirements Analysis: In this phase, we ensure that the software requirements are well-defined, complete, and testable.
    • Design: In this phase, we ensure that the software design meets the quality standards and specifications.
    • Implementation: In this phase, we ensure that the software code is written according to the standards and is free from defects.
    • Review: In this step, the software requirements, design, and code are reviewed to ensure compliance with quality standards and specifications.
    • Testing: In this phase, we conduct various types of testing, including functional testing, performance testing, and security testing, to ensure that the software meets the quality standards. The software is tested using various test cases to identify any defects or issues that need to be addressed.
    • Reporting: The test results and any issues identified are documented and reported to the development team for remediation.
    • Re-testing: The software is re-tested after the issues have been fixed to ensure that the fixes are effective.
      1. Release: In this phase, we ensure that the software is released only after it has met the quality standards and has been thoroughly tested. After successful testing, the software is released to the end users.
      2. Maintenance: In this phase, we ensure that the software is maintained and updated regularly to fix any defects or issues that may arise.
    Objectives
    • The primary objective of SQA is to prevent defects, errors, and issues in the software product by implementing various quality control measures throughout the software development life cycle.
    • Another goal of SQA is to identify and address potential issues in the software development process before the product is released to end users.
    • By implementing an effective SQA process, software development teams can ensure that their software meets quality standards and is free from defects, thereby improving customer satisfaction, reducing costs, and increasing the overall efficiency of the development process.
    Advantages
    There are the following advantages of SQA –
    • Improves Software Quality
      • SQA helps in developing high-quality software by following proper standards and processes.
    • Continuous Monitoring
      • SQA helps continuously check development activities to maintain quality.
    • Audit and Review
      • SQA ensures regular reviews and audits that verify quality practices.
    • Risk Management
      • SQA helps identify and reduce risks related to software quality.
    • Defect Detection
      • In SQA, errors are detected and prevented in the early development lifecycle or stages, which makes software fixing easier and cheaper. 
    • Reliability
      • SQA ensures the software works consistently without failures. Thus, SQA helps produce reliable and stable software products.
    • Customer Satisfaction
      • SQA helps in the creation of high-quality and reliable software, which increases user or customer requirements, expectations, trust, and satisfaction.
    • Development Cost
      • SQA helps in finding and fixing defects early, which reduces maintenance and rework costs.
    • Process Control
      • SQA improves management and monitoring of the development process.
    • Ensures Standard Compliance
      • In SQA, software is developed according to industry standards, procedures, and guidelines. 
    • Improves Documentation Quality
      • In SQA, proper documentation is maintained throughout the project lifecycle, which improves documentation quality.
      • SQA ensures proper documentation of requirements, design, coding, and testing.
    • Reduces Risk
      • SQA helps identify risks related to quality and reduces them early.
    • Continuous Improvement
      • SQA helps organizations improve development processes over time.

    Loading


    0 Comments

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.