Robust Software
Robust software keeps working correctly when it receives input it did not expect, such as text typed where a number was needed or a value far outside the normal range. It does not crash, lose data or behave unpredictably: it either carries on safely or refuses the input with a clear message. Simply staying open is not enough — a program that quietly stores nonsense is not robust either.
Software should be made robust, and free from vulnerabilities, before it is released. A fault found during development is a job for the team. The same fault found by users is an incident: work stops, a fix is rushed out, and the damage may already be done.
Weaknesses in released software can harm far more than the program itself:
| Consequence | What it could look like |
|---|---|
| Data loss | A school's recycling reward points are wiped when a strange value is entered and the program crashes mid-save. |
| Security breach | An attacker gets into a museum's audio guide app and reads visitors' booking details. |
| Harm to users | A faulty reading from a weather station is used to send an outdoor club out in dangerous conditions. |
| Damage to reputation | A bakery's order form fails on the busiest day, and customers go elsewhere. |
| Legal or financial consequences | A theatre's ticket page charges the wrong amount for a group booking, leading to refunds and a fine. |
Each of these costs someone money, trust or safety, so known weaknesses should be designed out and checked for before release rather than left for users to discover. Validation and exception handling help a running program cope with bad input, but neither can repair a weakness built into the design.
Imagine a club booking lanes at a pool. The programmer expects a whole number from 1 to 6, but the secretary types "four". A fragile program stops with an error, the booking is lost and the pool sorts it out by hand. A robust program keeps running and tells the user what to enter instead. Finding that fault in a test session costs a few minutes; finding it on a busy Saturday costs the pool trust and money.