Software brittleness
Encyclopedia
In computer programming
and software engineering
, the term software brittleness refers to the increased difficulty in fixing older software that may appear reliable, but fails badly when presented with unusual data or altered in a seemingly minor way. The term is derived from analogies to brittleness in metalworking
.
, brittle and unable to be easily maintained
without fracturing the entire system.
Brittleness in software can be caused by algorithm
s 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 structure
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
s 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.
Very often, an old code base is simply abandoned and a brand-new system (which is intended to be free of many of the burdens of the legacy system) created from scratch, but this can be an expensive and time-consuming process.
Some examples and reasons behind software brittleness:
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...
and software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...
, the term software brittleness refers to the increased difficulty in fixing older software that may appear reliable, but fails badly when presented with unusual data or altered in a seemingly minor way. The term is derived from analogies to brittleness in metalworking
Metalworking
Metalworking is the process of working with metals to create individual parts, assemblies, or large scale structures. The term covers a wide range of work from large ships and bridges to precise engine parts and delicate jewelry. It therefore includes a correspondingly wide range of skills,...
.
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 systemLegacy system
A legacy system is an old method, technology, computer system, or application program that continues to be used, typically because it still functions for the users' needs, even though newer technology or more efficient methods of performing a task are now available...
, brittle and unable to be easily maintained
Software maintenance
Software Maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes....
without fracturing the entire system.
Brittleness in software can be caused by algorithm
Algorithm
In mathematics and computer science, an algorithm is an effective method expressed as a finite list of well-defined instructions for calculating a function. Algorithms are used for calculation, data processing, and automated reasoning...
s that do not work well for the full range of input data. A good example is an algorithm that allows a divide by zero
Division by zero
In mathematics, division by zero is division where the divisor is zero. Such a division can be formally expressed as a / 0 where a is the dividend . Whether this expression can be assigned a well-defined value depends upon the mathematical setting...
to occur, or a curve-fitting
Curve fitting
Curve fitting is the process of constructing a curve, or mathematical function, that has the best fit to a series of data points, possibly subject to constraints. Curve fitting can involve either interpolation, where an exact fit to the data is required, or smoothing, in which a "smooth" function...
equation
Equation
An equation is a mathematical statement that asserts the equality of two expressions. In modern notation, this is written by placing the expressions on either side of an equals sign , for examplex + 3 = 5\,asserts that x+3 is equal to 5...
that is used to extrapolate
Extrapolation
In mathematics, extrapolation is the process of constructing new data points. It is similar to the process of interpolation, which constructs new points between known points, but the results of extrapolations are often less meaningful, and are subject to greater uncertainty. It may also mean...
beyond the data that it was fitted to. Another cause of brittleness is the use of data structure
Data structure
In computer science, a data structure is a particular way of storing and organizing data in a computer so that it can be used efficiently.Different kinds of data structures are suited to different kinds of applications, and some are highly specialized to specific tasks...
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
Year 2000 problem
The Year 2000 problem was a problem for both digital and non-digital documentation and data storage situations which resulted from the practice of abbreviating a four-digit year to two digits.In computer programs, the practice of representing the year with two...
; 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
Graphical user interface
In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...
s that make invalid assumptions. For example, a user may be running on a low resolution
Display resolution
The display resolution of a digital television or display device is the number of distinct pixels in each dimension that can be displayed. It can be an ambiguous term especially as the displayed resolution is controlled by all different factors in cathode ray tube , flat panel or projection...
display, and the software will open a window
Window (computing)
In computing, a window is a visual area containing some kind of user interface. It usually has a rectangular shape that can overlap with the area of other windows...
too large to fit the display
Display
Display may refer to:* Display , an American thoroughbred racehorse* Display , a form of animal behaviour* Display advertising, type that typically contains text, i.e., copy, logos, images, location maps, etc....
. Another common problem is expressed when a user uses a color scheme
Color scheme
In color theory, a color scheme is the choice of colors used in design for a range of media. For example, the use of a white background with black text is an example of a basic and commonly default color scheme in web design....
other than the default
Default (computer science)
A default, in computer science, refers to a setting or value automatically assigned to a software application, computer program or device, outside of user intervention. Such settings are also called presets, especially for electronic devices...
, causing text to be rendered in the same color as the background, or a user uses a font
Font
In typography, a font is traditionally defined as a quantity of sorts composing a complete character set of a single size and style of a particular typeface...
other than the default, which won't fit in the allowed space and cuts off instructions and labels.
Very often, an old code base is simply abandoned and a brand-new system (which is intended to be free of many of the burdens of the legacy system) 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 how things really worked) have moved on and left insufficient documentation of the internal workings of the software. Many small implementation details were only understood through the oral traditions of the design team, and many of these details eventually are irretrievably lost, although some can be rediscovered through the diligent (and expensive) application of software archaeologySoftware archaeologySoftware archaeology or software archeology is the study of poorly documented or undocumented legacy software implementations, as part of software maintenance...
. - PatchesPatch (computing)A patch is a piece of software designed to fix problems with, or update a computer program or its supporting data. This includes fixing security vulnerabilities and other bugs, and improving the usability or performance...
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. These subtle failures make subsequent changes to the system more difficult. - 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, because they may not be stated, this may easily be the case – then the system will respond in completely unpredictable ways.
- Systems can also be brittle if the component dependencies are too rigidDependency hellDependency hell is a colloquial term for the frustration of some software users who have installed software packages which have dependencies on specific versions of other software packages. This was mainly attributable to old Linux package managers...
. 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 runtimeRuntimeIn computer science, run time, run-time, runtime, or execution time is the time during which a program is running , in contrast to other phases of a program's lifecycle such as compile time, link time, load time, etc....
.
Examples of brittleness in software
- Ariane 5 Flight 501Ariane 5 Flight 501Cluster was a constellation of four European Space Agency spacecraft which were launched on the maiden flight of the Ariane 5 rocket, Flight 501, and subsequently lost when that rocket failed to achieve orbit. The launch, which took place on Tuesday, June 4, 1996, ended in failure due to an error...
, in which an overflow in a velocity calculation shut down a rocket's navigational system. - Corner caseCorner caseA corner case is a problem or situation that occurs only outside of normal operating parameters – specifically one that manifests itself when multiple environmental variables or conditions are simultaneously at extreme levels, even though each parameter is within the specified range for that...
, a common area in which systems are brittle. - Microsoft WindowsMicrosoft WindowsMicrosoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
still has some compatibility with older versions, meaning that code hasn't been updated since the first version. Likewise, security was never an issue in the pre-internet era, which has become a problem in the last decade.
See also
- Edward YourdonEdward YourdonEdward Nash Yourdon is an American software engineer, computer consultant, author and lecturer, and pioneer in the software engineering methodology...
- Fred BrooksFred BrooksFrederick Phillips Brooks, Jr. is a software engineer and computer scientist, best known for managing the development of IBM's System/360 family of computers and the OS/360 software support package, then later writing candidly about the process in his seminal book The Mythical Man-Month...
- The Mythical Man-MonthThe Mythical Man-MonthThe Mythical Man-Month: Essays on Software Engineering is a book on software engineering and project management by Fred Brooks, whose central theme is that "adding manpower to a late software project makes it later"...
- The Mythical Man-Month
- Software entropySoftware entropyA work on software engineering by Ivar Jacobson et al.describes software entropy as follows:Andrew Hunt and David Thomas use Fixing Broken Windows as a metaphor for avoiding software entropy in software development....
- Software rotSoftware rotSoftware rot, also known as code rot or software erosion or software decay or software entropy, is a type of bit rot. It describes the perceived slow deterioration of software over time that will eventually lead to it becoming faulty, unusable, or otherwise in need of maintenance...
- Stovepipe systemStovepipe systemIn engineering and computing, a stovepipe system is a system that is an assemblage of inter-related elements that are so tightly bound together that the individual elements cannot be differentiated, upgraded or refactored. The stovepipe system must be maintained until it can be entirely replaced by...
- Spaghetti codeSpaghetti codeSpaghetti code is a pejorative term for source code that has a complex and tangled control structure, especially one using many GOTOs, exceptions, threads, or other "unstructured" branching constructs. It is named such because program flow tends to look like a bowl of spaghetti, i.e. twisted and...