Group: testing
Topic: abstraction in programming
Topic: algorithmic complexity analysis
Topic: decomposition of a system into levels
Topic: disorientation in a user interface
Topic: function definition
Topic: general vs. specific purpose systems
Topic: hierarchical structures
Topic: information hiding
Topic: Kolmorgorov and algorithmic complexity
Topic: localized understanding
Topic: minimal language systems
Topic: randomness
Topic: RISC computer architecture
Topic: sensitivity of software to change
Topic: separate a module's interface specification from its implementation
Topic: the effect of scale
Topic: understanding systems
Topic: uniform language systems
| |
Summary
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
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
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
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
Quote: an object is complicated if its description is necessarily long [»raatP_1998]
| Subtopic: using divide and conquer
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
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
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
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
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
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
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
Quote: partial symmetries such as neutrons/protons may arise out of complexity [»feynR_1965]
| Subtopic: accidents and bugs
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
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
Quote: users build elaborate models with spreadsheets; no structure, just a collection of equations [»joneSP8_2003]
|
Related Topics
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)
|