Brittle (software)

From Wikipedia, the free encyclopedia

The term brittle, when applied to a system such as software, means the system that may appear reliable, but will fail badly when presented with unusual data, or altered in seemingly minor ways.

[edit] Causes

Brittleness in software can be caused by algorithms that do not work well for the full range of input data. A good example is an algorithm that allows a divide by zero to occur, or a curve fitting equation that is used to extrapolate beyond the data that it was fitted to. Another cause of brittleness is the use of data structures that restrict values. This was commonly seen in the late 1990s as people realized that their software only had room for a 2 digit year entry; this led to the sudden updating of tremendous quantities of brittle software before the year 2000. Another more commonly encountered form of brittleness is in graphical user interfaces (GUIs) that make invalid assumptions. For example, a user may be running on a low resolution display, and the software will open a window too large to fit the display. Another common problem is expressed when a user uses a color scheme other than the default, causing text to be rendered in the same color as the background, or a user uses a font other than the default, which won't fit in the allowed space and cuts off instructions and labels.

More subtle forms of brittleness commonly occur in artificial intelligence systems. These systems often rely on significant assumptions about the input data. When these assumptions aren't met (and as they may not be stated, this could be an easy case), then the system will respond in completely unpredictable ways.

Systems can also be brittle if the internal dependencies are too rigid. One example of this is seen in the difficulties transitioning to new versions of dependencies. When one component expects another to output only a given range of values, and that range changes, then it can cause errors to ripple through the system, either during building or at runtime.

[edit] Examples of brittleness in software

  • Ariane 5 Flight 501, where an overflow in a velocity calculation shut down a rocket's navigational system.
  • Corner case, a common area where systems are brittle.

[edit] References