Topic: handling complexity

topics > computer science > programming > Group: goals for a programming system


abstraction in programming
algorithmic complexity analysis
decomposition of a system into levels
disorientation in a user interface
function definition
general vs. specific purpose systems
hierarchical structures
information hiding
Kolmorgorov and algorithmic complexity
localized understanding
minimal language systems
RISC computer architecture
sensitivity of software to change
separate a module's interface specification from its implementation
the effect of scale
understanding systems
uniform language systems


Complexity may increase product attractiveness and flexibility but it decreases usable power, maintainability, and reliability. The task of programming is to make simple order out of complex problems. Frequent modification, insufficient memory and tight timing constraints all increase complexity. Often a method which works well for small problems will become tangled and complicated for large ones. Good examples of this are state machines and RPG. Complexity can be represented by simple components interrelated in a structure. For instance Jackson's hierarchical structures grow as the problem grows but do not become more complex. (cbb 5/80)
Subtopic: true and sufficient simplicity up

Quote: Newton's first rule--admit only true and sufficient causes; Nature is pleased with simplicity, and affects not the pomp of superfluous causes [»newtI_1685, OK]
Quote: everything should be as simple as possible but no simpler [»lampBW10_1983]
Quote: perfection is reached when there is nothing to take away [»lampBW10_1983]
Quote: while brevity is good, should not eliminate expressive words [»heckP_1984]
Quote: science shows opposite tendencies towards unity--simplicity and diversity--complication [»poinH_1902, OK]

Subtopic: flexibility vs. complexity up

Quote: programs are complex systems that should be reliable and infinitely malleable; they should manage complexity and facilitate change [»guttJV_2002]
QuoteRef: gilbT_1977 ;;164 "flexibility is useful complexity

Subtopic: complexity as a monster up

Quote: complexity is a living, growing monster; degrades project goals while hiding the fact that it has done so; P6 Simplification Effort was a success [»colwRP_2006]
Quote: secure systems should be as simple as possible; complexity is the worst enemy of security [»schnB_2000]

Subtopic: complexity as long descriptions up

Quote: an object is complicated if its description is necessarily long [»raatP_1998]

Subtopic: using divide and conquer up

Quote: use divide and conquer to handle complexity [»stroB_1991]
Quote: simplify a problem by splitting it into two
Quote: a module or class separates a program into an implementation and an interface
Quote: build complex constraints from simple ones by abstraction: recursive embedding, parameterization, and type declaration [»deutLP1_1981]
Quote: Smalltalk scales well; the second half is as easy to develop as the first half [»teslL8_1981]
Quote: organize programming as distinct activities with clearly defined interactions
Quote: knowledge of the elements in a complex is clearer and more effective than knowing the complex without knowing its elements [»plat_368]
Quote: use routines to reduce complexity by hiding the details [»mccoS7_1998]
Quote: the alphabet (events) for an object simplifies its behavior; e.g., ignore emptying the coin box of a vending machine [»hoarCA_1985]

Subtopic: using hierarchy up

Quote: a manageable program is organized as a tree or a directed acyclic graph with localized dependencies [»stroB_1991]
Quote: hierarchy allows large and complex programs out of simple components; complexity only through number of components and levels [»jackMA_1975]
Quote: structured analysis produces a hierarchy of diagrams, each describing a limited area; even complex subjects may be understood [»rossDT1_1977]

Subtopic: problem of history, change, and chance up

Quote: a system must be designed to remain as simple as possible under a sequence of changes that cannot all be foreseen [»stroB_1991]
Quote: perhaps the complexity of the subatomic world is due to its complicated history [»ferrT9_1982]
Quote: if all facts were complex, they would not repeat; a chance occurrence of a thousand circumstances

Subtopic: problem of scale up

Quote: a vast amount of code is required to realize a programmer's intent, often concisely stated [»laruJR5_2004]
Quote: use correctness tools to close the immense gap between code and intent

Subtopic: accidental complexity up

Quote: high-level languages free programs from their accidental complexity but not their essential complexity [»abboRJ3_1990]
Quote: software is too complex to work; a model of 300 Boolean variables has more internal states than stars in the sky [»menzT1_2007]

Subtopic: prefer simplicity up

Quote: a Cleanroom objective was simplifying designs; sometimes achieved a five-fold reduction in size [»lingRC10_1988]
QuoteRef: richF12_1977 ;;73 "A language should be limited in complexity and size
Quote: a computer should be as simple as possible and avoid simultaneous operations as done by existing devices (e.g., add) [»vonnJ6_1945]
Quote: simple algorithms often faster because easily optimized and good cache performance
Quote: programs should always be simple even if their tasks are complex [»jackMA_1975]
Quote: a simple design is more difficult to produce than a complex one; competes with trade-secrets and profits [»wirtN3_1976]
QuoteRef: millH_1973 ;;229 complexity equivalent to difficulty in proving correctness
QuoteRef: millH_1973 ;;225 program complexity forms a real barrier to software development

Subtopic: problem of limits up

Quote: programming costs increase rapidly when reach hardware limits of speed and memory [»boehBW5_1973, OK]
Quote: 17 man-months to write requirements for a working A-7 flight program with tight memory and time constraints [»heniKL1_1980]
QuoteRef: seedH_1971 ;; [cbb: RPG very good for simple problems by gets very complicated very fast
Quote: AI researchers write their programs for other AI researchers; incredibly complex data structures [»coddEF_1990]

Subtopic: symmetry from complexity up

Quote: partial symmetries such as neutrons/protons may arise out of complexity [»feynR_1965]

Subtopic: accidents and bugs up

Quote: system accidents naturally occur in systems with interactive complexity and tight coupling; e.g., nuclear power plants [»perrC_1984]
Quote: studied bug history of NAG library; bugs proportional to logarithm of complexity [»hattL3_1997]
Quote: smaller components have disproportionally more bugs; best may be 200-400 lines of code

Subtopic: software complexity up

Quote: man's creations can be more complex than the laws of nature; e.g., can predict tides but not when a system will overload [»dennPJ9_1980]
Quote: the software crisis is due to our human limitations in handling complexity; to solve the problem, we must simplify the program text [»wulfWA_1977a]
Quote: software is especially complex because no two parts are alike while physical systems contain many repeated components [»brooFP_1986]
Quote: software systems are neither repetitive nor continuous; large number of discrete states [»parnDL12_1985]
Quote: analog systems can be reliable because they are continuous; small input changes cause small output changes [»parnDL12_1985]
Quote: computer hardware is reliable because its repetitive structure does not need exhaustive testing [»parnDL12_1985]
Quote: computer science needs to discover how to maintain order in a very large, discrete, intertwined universe; and how to teach this [»dijkEW_1979]
Quote: a Smalltalk system is likely to be large and complex; how should it be structured to be easily understood [»reenTM8_1981]
Quote: Smalltalk has fallen into the hacker trap of too many features; these overwhelm the novice [»nielJ5_1989]
Quote: since an individual's total information needs are large and complex, his Smalltalk system will also be large and complex
Quote: Pascal is almost too complex as a programming language [»wirtN3_1976]
Quote: complexity may increase performance but at cost of intransparency, unreliability, and difficulty of documentation [»wirtN3_1976]
Quote: most modern operating systems are too complex for user modification; only recourse is to modify the hardware [»bailGV8_1977]
Quote: 140 orders to translate algebraic notation into code; the most intricate program that Glennie produced [»glenAE2_1953]

Subtopic: structure not necessary up

Quote: users build elaborate models with spreadsheets; no structure, just a collection of equations [»joneSP8_2003]

Related Topics up

Group: testing   (18 topics, 557 quotes)

Topic: abstraction in programming (67 items)
Topic: algorithmic complexity analysis (10 items)
Topic: decomposition of a system into levels (49 items)
Topic: disorientation in a user interface (13 items)
Topic: function definition (25 items)
Topic: general vs. specific purpose systems (11 items)
Topic: hierarchical structures (46 items)
Topic: information hiding (50 items)
Topic: Kolmorgorov and algorithmic complexity (10 items)
Topic: localized understanding (43 items)
Topic: minimal language systems (12 items)
Topic: randomness (20 items)
Topic: RISC computer architecture (11 items)
Topic: sensitivity of software to change (44 items)
Topic: separate a module's interface specification from its implementation (86 items)
Topic: the effect of scale (17 items)
Topic: understanding systems (48 items)
Topic: uniform language systems
(25 items)

Updated barberCB 6/04
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.