Software brittleness problem

Software brittleness problem

The software brittleness problem is a consequence of the well-known fact that computers carry out commands, rather than exhibiting initiative.

A computer system with true initiative would have large amounts of practical knowledge about the real world. When it could not carry out some instruction, it would look for an alternative method of accomplishing an equivalent result.

Instead, as of this date (2008) programs usually just fail with an error message.

There are several approaches to solving the brittleness problem.

Restricting the problem domain

Methods that limit the user's possible behaviors are arguably the most successful approach currently known to reducing software brittleness. In this way, the program can be designed to cope with all possible behaviors, and then tested to see if it meets its design.

Goal seeking software

In this design, the user specifies an acceptable outcome. The computer program has a set of operations it can combine. Crucially, the software must be able to try out different combinations of the operations without causing harm. When it finds a sequence that produces the acceptable result, the program is done.

Goal seeking is fine when the computer can identify every possible undesired result, but this is rarely possible. People are far more skilled at recognizing undesirable outcomes than software is.

Also, producing software to identify every possible bad solution is at least as complex as simply finding a solution. See the article on the frame problem for more on this.

Knowledge-based systems

In this design, goal seeking is combined with a large number of facts about the real world, and a logic engine to reason about the facts. This is a basic attempt to add to the computer's ability to recognize undesirable results.

At least one such software (see Cyc) has been under development for more than a decade (as of 2003).Whilst Cyc has captured far more domain knowledge than any other similar system, it is unclear how successful it has been at meeting its original goals.

Neural networks

This plan would substitute a self-training neural network for the knowledge base of goal-seeking software. No method is generally known to accomplish this.

Evolutionary systems

This plan uses a software ecology that breeds software to solve the identified problem. It is a goal-seeking system, so it can theoretically solve the brittleness probelem. As with other solutions, the problem is that there must be an identified method of rejecting all possible bad solutions.


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • Software brittleness — 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… …   Wikipedia

  • Software rot — Software 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,… …   Wikipedia

  • List of software engineering topics — This list complements the software engineering article, giving more details and examples. For an alphabetical listing of topics, please see List of software engineering topics (alphabetical).Influence on societySoftware engineers affect society… …   Wikipedia

  • Outline of software engineering — See also: Index of software engineering articles The following outline is provided as an overview of and topical guide to software engineering: Software engineering – application of a systematic, disciplined, quantifiable approach to the… …   Wikipedia

  • List of software engineering topics (alphabetical) — This page aims to list all topics related to the specific discipline of software engineering.See also: List of software engineering topics (thematic). NOTOC #2D computer graphics 3D computer graphicsAAbstract syntax tree Abstraction Accounting… …   Wikipedia

  • Fragile binary interface problem — The fragile binary interface problem or FBI is a shortcoming of certain object oriented language compilers, in which internal changes to an underlying class library can cause descendant libraries or programs to cease working. It is an example of… …   Wikipedia

  • AI-complete — In the field of artificial intelligence, the most difficult problems are informally known as AI complete or AI hard, implying that the difficulty of these computational problems is equivalent to solving the central artificial intelligence problem …   Wikipedia

  • Fragile base class — The fragile base class problem is a fundamental architectural problem of object oriented programming systems where base classes (superclasses) are considered fragile because seemingly safe modifications to a base class, when inherited by the… …   Wikipedia

  • Stovepipe system — In engineering and computing, a stovepipe system is a legacy 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… …   Wikipedia

  • AI winter — See also and An AI Winter is a collapse in the perception of artificial intelligence research. The term was coined by analogy with the relentless spiral of a nuclear winter: a chain reaction of pessimism in the AI community, followed by pessimism …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”