WFU
Software Quality
Software Quality
- meets requirements
- useful for situations in which the requirements were stated in terms of things that could be measured
- typically be quality inspectors at various points in the assembly line
- requirements are usually written in the form of stories or use cases
- should be traceability between the requirements and the goals of the stakeholder: Vision documents
- Achieving quality: doing things that build a quality product
- Assuring quality: convincing ourselves and others that we are building, or have built a quality product
- Return On Investment
Defects
- Error: A conceptual, syntactic or clerical discrepancy which results in one or more faults in the software
- Fault: A specific manifestation of an error. A discrepancy in the software which can impair its ability to function as intended. An error may be the cause for several faults
- Failure: A software failure occurs when a fault in the computer program is evoked by some input data, resulting in the computer program not correctly computing the required function in an exact manner.
- Defect: Either a fault or discrepancy between code and documentation that results in mischief in the testing, installation, maintenance, or use of software
- errors cause defects, which, in turn, can result in failures
- multiple ways to detect defects
- Reviews are performed by a group of people, including the developer of the code
- An informal review is called a walkthrough.
- A more formal type of review is a formal inspection
- root cause analysis
- Starting with a failure, we ask why did it happen? What was the defect that led to the failure?
- why did the defect occur? What error led to the defect?
- Handling Defects
- Record and categorize the defect
- Identify and record the error
- Look for similar defects and errors
- Categories of Defects
- by nature
- severity
- priority
- Removing Defects
- Change control: When we fix a defect, we are changing the software
- Regression testing: If you make a change to the software, you need to re-run some of the test cases to make sure you haven’t accidentally broken something else.
- Ripple effect: We need to do a careful job of analyzing the changes we make to the software to avoid ripple effects.
- Preventing Defects
- Defect tracking and cataloging
- Continuous Process Improvement
The Quality Triangle
- People, Processes, and Tools
- People
- Software is a labor-intensive operation
- Hire good people.
- Retain good people.
- Train your staff to keep their skills up to date.
- Management:
- Project managers.
- People managers.
- Technical staff:
- Analysts.
- Designers.
- Programmers.
- Quality Assurance Function.
- Testers.
- Configuration Management.
- Software Quality Assurance.
- Processes
- document our processes and standards.
- Based on our own experience
- Based on industry standards
- Maintain
- Train
- Ensure we are following the standards
- This is the role of Software Quality Assurance.
- Tools
- Reduces errors
- Increases productivity and efficiency
- Makes job easier
- Saves money in the long run
Quality Assurance
- People: Quality Organization
- Configuration Management:
- responsible for version control of the artifacts being produced by the developers
- code, of course, but also requirements and design documentation
- Testing
- developers themselves are responsible for unit testing of their own pieces of work
- separate group of people responsible for larger scale testing
- Software Quality Assurance.
- managerially Independent from the developers, as well as configuration management and testing
- ensures that standards are in place and are approved
- ensure that the standards are placed under configuration control
- runs periodic reviews to ensure that the standards are being followed
- assures all stakeholders of the quality of the workmanship of the rest of the team
- Process: Standards
- Standards are embodiments of best practices
- Government standards
- IEEE standards
- ISO standards
- Tools
- Computer-Aided Software Engineering
- Upper CASE tools
- Planning and estimating.
- Project management.
- Requirements analysis.
- Analysis and design.
- Lower CASE tools
- Coding and reuse.
- Analyzing code.
- Testing.
- Configuration management.
- Metrics.
- Documentation.
- Maintenance.