Topics covered:

  • What Is Software Quality?
  • Causes of Software Defects
  • What is Quality Assurance?
  • Improving the Software Quality

Video (in Bulgarian)

Presentation Content

What is Software Quality?

  • Pressman’s definition of "Software Quality“
Software quality measures how well software is designed
(quality of design), and how well the software
conforms to that design (quality of conformance)
  • Whereas quality of conformance is concerned with implementation, quality of design measures how valid the design and requirements are in creating a worthwhile product
  • IEEE Definition of "Software Quality“
- The degree to which a system, component, or
process meets specified requirements
- The degree to which a system, component, or
process meets customer or user needs or expectations
  • Steve McConnell’s Code Complete defines two types of quality characteristics:
    • External
      • Those parts of a product that face its users
    • Internal
      • Not apparent to the user

External Characteristics

  • Correctness
  • Usability
  • Efficiency
  • Reliability
  • Integrity
  • Adaptability
  • Accuracy
  • Robustness

Internal Characteristics

  • Maintainability
  • Flexibility
  • Portability
  • Reusability
  • Readability
  • Testability
  • Understandability

Causes of Software Defects

  • A human being can make an error (mistake)
  • Errors produce defects
    • Defects are faults / bugs in the program code, or in a document
  • If a defect in code is executed, that might cause a failure:
    • Fail to do what it should do
    • Do something it shouldn’t
  • The human factor
    • Humans make mistakes
    • Poor training
    • Time pressure
    • Code complexity
    • Complexity of infrastructure
    • Changing technologies
  • Organizational factors
    • Inefficient team communication
    • Incomplete data specifications
    • Unclearly defined requirements
    • Incorrect project documentation
  • Environmental conditions
    • Radiation
    • Magnetism
    • Electronic fields
    • Pollution
    • Etc.

What Is Software Quality Assurance?

  • IEEE Definition of "Software Quality Assurance“
- A planned and systematic pattern of all
actions necessary to provide adequate
confidence that an item or product conforms
to established technical requirements.
- A set of activities designed to evaluate
the process by which the products are developed
or manufactured.  Contrast with quality control.
  • Software quality assurance is a planned and systematic program of activities
    • Designed to ensure that a system has the desired characteristics

The Role of SQA

  • What is the role of SQA in the software development process?
    • Monitoring the software engineering processes
    • Reducing the risk of problems
    • Ensuring the quality of the software
    • Providing information for decision-making
    • Help meeting standards:
      • Contractual or legal requirements
      • Industry-specific standards

Techniques for Improving Software Quality

  • Software-quality objectives
  • Explicit quality-assurance activity
  • Testing strategy
  • Software-engineering guidelines
  • Informal technical reviews
  • Formal technical reviews
  • External audits

Higher Defect Detection Rate

  • Combination of Techniques
  • Extreme programing Techniques

Recommended Combination

  • Formal inspections of all requirements, all architecture, and designs for critical parts of a system
  • Modeling or prototyping
  • Code reading or inspections
  • Automated testing

The General Principle

  • The General Principle of Software Quality is that improving quality reduces development costs
    • The industry-average productivity for a software product is about 10 to 50 of lines of delivered code per person per day
    • Debugging and associated refactoring and other rework consume about 50 percent of the time on a traditional, naive software-development cycle