Week 7: Ensuring Excellence in Software Development
By the end of this session, you will be able to:
Software quality management ensures that software has a low number of defects and reaches required standards of maintainability, reliability, and portability.
The subjective quality of software is largely based on its non-functional characteristics. Users can often work around missing functionality, but if software is unreliable or too slow, they cannot achieve their goals.
Missing Feature
Workaround Possible
Poor Performance
Goal Blocking
User-Visible Characteristics
Can evolve to meet changing customer needs
Reliable, secure, and safe operation
Optimal use of system resources
Understandable, usable, and compatible
Parallel to Software Development
Software Development:
Quality Management:
Short and Succinct Plans
What we're building
How we'll build it
Steps we'll follow
What quality means for this project
Identification and mitigation of potential quality threats
Quality Not OK
Quality OK
Runtime measurements - closely related to quality attributes
Easy to measure, direct relationship
Code analysis - indirect relationship to quality
Help assess complexity and maintainability
How well does the system support current business goals?
How effective is the system's environment? How expensive to maintain?
What is the quality of the application software system?
Higher number = Lower quality
More interfaces = More inconsistencies
Larger volumes = More errors and inconsistencies
Expensive and time-consuming indicator
Standards define required attributes of products or processes and provide:
Each level provides more specific guidance for quality management
Focus: Defect removal
Target: Product quality
Focus: Progress assessment
Target: Product & process
Focus: Standards compliance
Target: Product & standards
Peer reviews where engineers examine source code to discover anomalies and defects
Most maintenance effort is spent on a relatively small number of system components.
Complexity of decision paths and loops
Complexity of data organization and relationships
Size of objects, methods, and modules
Fix bugs and correct deficiencies in the system
Adapt to different operating environments and platforms
Add or modify functionality to satisfy new requirements
| Traditional Approach | Agile Approach |
|---|---|
| Document-based quality assurance | Informal, culture-based quality |
| Formal quality processes | Team collaboration focus |
| Dedicated QA team responsibility | Shared team responsibility |
| Phase-gate quality reviews | Continuous quality improvement |
All team members feel responsible for quality outcomes
Team works together to identify and implement quality improvements
Regular retrospectives focus on quality lessons learned
Emphasis on preventing defects rather than finding them
Measurable code characteristics
User-experienced quality
Internal attributes predict external quality attributes, helping teams focus improvement efforts effectively.
Encompasses reliability, maintainability, efficiency, and usability
Good processes lead to good products
Use metrics to predict and assess quality
Define what quality means in your context
Most widely used technique for quality assessment
Better to prevent defects than find them later