Chapter Summary
Chapter 14:
Beyond Functionality: Software Quality Attributes
© Karl E. Wiegers
1
Quality Distinguishes Products
Functional requirements (features) may only satisfy a customer
Quality attributes make customers “enjoy” your product (an old-fashioned view of quality)
Quality attributes are often critical to product usefulness (the architecture-centric view)
Quality attributes are harder to elicit from customers—they don’t usually think to volunteer them
2
Software Quality Attributes
3
1. Quality Attributes For Users
Availability ◦ Uptime / (Uptime + Downtime) ◦ Downtime can be scheduled or unscheduled ◦ Driven by business and safety needs ◦ Could be time-dependent
Efficiency ◦ Minimal consumption of resources ◦ Needs to consider spikes, growth
4
Flexibility ◦ Ease of adding new capabilities ◦ Essential for incremental, iterative development
Integrity ◦ Blocking unwanted access ◦ Enforcing privacy ◦ Preventing data loss
5
Interoperability ◦ Exchange of data with other systems ◦ File and message formats
Reliability ◦ Operation without failure ◦ Related to availability ◦ Trade off impact severity against development
cost.
6
Robustness ◦ Continued operation when faced with invalid
inputs, unexpected conditions
Usability ◦ Can be very subjective ◦ Effort to provide inputs, use outputs ◦ Often specified in terms of task times
7
2. Quality Attributes For Developers
Maintainability ◦ Defect correction ◦ Feature enhancement ◦ Related to flexibility ◦ Understandable, simple design
8
Portability ◦ Preparing for variations in operating environment ◦ Hardware platform, operating system, database, GUI.
Reusability ◦ Using components in other applications ◦ Modular, independent, well-documented, generic
software
Testability ◦ Ease of looking for, finding defects ◦ Affects design guidelines for complexity
9
3. Performance Requirements
Speed of functions ◦ Response time ◦ Throughput ◦ Capacity ◦ Timing deadlines
Can, however, affect system safety
10
Summary of Quality Attributes
11
4. Documenting Quality Attributes (quantifiable and verifiable)
12
13
5. Quality Attribute Relationships (Trade-offs)
14
6. Implementing Nonfunctional Requirements
15
Integrity, interoperability, robustness, usability, safety
Functional requirements
Availability, efficiency, flexibility, performance, reliability
System architecture
Interoperability, usability Design constraint
Flexibility, maintainability, portability, reliability, reusability, testability, usability
Design guideline
Portability Implementation constraint
END
16