In
computer programming
Computer programming or coding is the composition of sequences of instructions, called computer program, programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of proc ...
and
software engineering
Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining Application software, software applications. It involves applying engineering design process, engineering principl ...
, software brittleness is the increased difficulty in fixing older
software
Software consists of computer programs that instruct the Execution (computing), execution of a computer. Software also includes design documents and specifications.
The history of software is closely tied to the development of digital comput ...
that may appear reliable, but instead, fails, when presented with unusual data or data that is altered in a seemingly minor way. The phrase is derived from analogies to
brittleness
A material is brittle if, when subjected to stress (physics), stress, it fractures with little elastic deformation and without significant plastic deformation. Brittle materials absorb relatively little energy prior to fracture, even those of h ...
in
metalworking
Metalworking is the process of shaping and reshaping metals in order to create useful objects, parts, assemblies, and large scale structures. As a term, it covers a wide and diverse range of processes, skills, and tools for producing objects on e ...
.
Causes
When software is new, it is very malleable; it can be formed to be whatever is wanted by the implementers. But as the software in a given project grows larger and larger, and develops a larger base of users with long experience with the software, it becomes less and less malleable. Like a metal that has been work-hardened, the software becomes a
legacy system
Legacy or Legacies may refer to:
Arts and entertainment
Comics
* " Batman: Legacy", a 1996 Batman storyline
* '' DC Universe: Legacies'', a comic book series from DC Comics
* ''Legacy'', a 1999 quarterly series from Antarctic Press
* ''Legacy ...
, brittle and unable to be easily
maintained without fracturing the entire system.
Brittleness in software can be caused by
algorithms
In mathematics and computer science, an algorithm () is a finite sequence of mathematically rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for per ...
that do not work well for the full range of input data. Following, are some examples:
* A good example is an algorithm that allows a
divide by zero to occur, or a
curve-fitting equation
In mathematics, an equation is a mathematical formula that expresses the equality of two expressions, by connecting them with the equals sign . The word ''equation'' and its cognates in other languages may have subtly different meanings; for ...
that is used to
extrapolate beyond the data that it was fitted to. Another cause of brittleness is the use of
data structure
In computer science, a data structure is a data organization and storage format that is usually chosen for Efficiency, efficient Data access, access to data. More precisely, a data structure is a collection of data values, the relationships amo ...
s 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 interface
A graphical user interface, or GUI, is a form of user interface that allows user (computing), users to human–computer interaction, interact with electronic devices through Graphics, graphical icon (computing), icons and visual indicators such ...
s that make invalid assumptions. For example, a user may be running on a low
resolution display, may witness the software opening a
window
A window is an opening in a wall, door, roof, or vehicle that allows the exchange of light and may also allow the passage of sound and sometimes air. Modern windows are usually glazed or covered in some other transparent or translucent ma ...
too large to fit the
display. The opposite could be the case as well; say, a window too small for the display, without the capability to resize, or a window, where elements do not fit correctly, because the developers' assumption about the resolution were no longer true. 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
In metal typesetting, a font is a particular size, weight and style of a ''typeface'', defined as the set of fonts that share an overall design.
For instance, the typeface Bauer Bodoni (shown in the figure) includes fonts " Roman" (or "regul ...
other than the default, which won't fit in the allowed space and cuts off instructions and labels.
Very often, an old codebase is simply abandoned in favor of a brand-new one (which is intended to be free of many of the burdens of the legacy system; ''a.k.a.'' a
rewrite) created from scratch, but this can be an expensive and time-consuming process.
Some examples and reasons behind software brittleness:
* Users expect a
relatively constant user interface. Once a feature has been implemented and exposed to the users, it is very difficult to convince them to accept major changes to that feature, even if the feature was not well designed or the existence of the feature blocks further progress.
* A great deal of documentation may describe the current behavior and would be expensive to change. In addition, it is essentially impossible to recall all copies of the existing documentation, so users are likely to continue to refer to obsolete manuals.
* The original implementers, who knew all intricate details of the software, have moved on and left insufficient documentation of said intricate details. Many such details were only passed onto others via oral traditions of the design team, many of which are eventually irretrievably lost, although some can be rediscovered through the diligent (and expensive) application of
software archaeology.
*
Patches have probably been issued throughout the years, subtly changing the behavior of the software. In many cases, these patches, while correcting the overt failure for which they were issued, introduce other, more subtle, failures into the system. If not detected by
regression testing
Regression testing (rarely, ''non-regression testing'') is re-running functional and non-functional tests to ensure that previously developed and tested software still performs as expected after a change. If not, that would be called a '' regr ...
, these subtle failures make subsequent changes to the system more difficult.
* More subtle forms of brittleness commonly occur in
artificial intelligence
Artificial intelligence (AI) is the capability of computer, computational systems to perform tasks typically associated with human intelligence, such as learning, reasoning, problem-solving, perception, and decision-making. It is a field of re ...
systems. These systems often rely on significant assumptions about the input data. When these assumptions aren't met, perhaps because they were not be stated (as is often the case), then the system will respond in completely unpredictable ways.
* Systems can also be brittle if the component
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 (
compiling) or at
runtime.
* Fewer technical resources are available to support changes when a system is in maintenance, rather than during development (in terms of the
Systems Development Life Cycle (SDLC)).
See also
*
Brittle system
*
Software entropy
*
Software rot
*
Robustness (computer science)
References
*
*{{cite journal , title=Power fantasies: the strange appeal of the Y2K bug – Year 2000 transition problem , journal=Reason , year=1999 , author=Virginia Postrel , url=http://findarticles.com/p/articles/mi_m1568/is_11_30/ai_54259936 , access-date=2008-07-25 , archive-url=https://web.archive.org/web/20050910120935/http://www.findarticles.com/p/articles/mi_m1568/is_11_30/ai_54259936 , archive-date=2005-09-10 , url-status=dead
Computer errors
Computer jargon
Software maintenance