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