Software Science: Lexicon and quotationary

Divider

Related pages: Software science bibliography

Under construction

Lexicon

algorithm
According to Church/Turing Thesis, an algorithm is "an effective and completely specified procedure for solving a whole class of problems. ... An algorithm does not require ingenuity; its application is prescribed in advance and does not depend upon any empirical or random factors." [E. Mendelson, "Second Thoughts About Church's Thesis and Mathematical Proofs". Journal of Philosophy 87(5), p. 225–233]
information technology
Technology constituted by the merging of data processing and telecommunications (with diverse input devices, processing programs, communication systems, storage formats, and output displays.) [C. Mitcham. "Philosophy of Information Technology." Ch. in: L. Floridi (ed.) The Blackwell Guide to Philosophy of Computing and Information. Malden: Blackwell, 2004]
problem domain
That part of the world in which the machine is required to bring about some effect desired by the customer for whom the system is developed. [M. Jackson. "Some basic tenets of description." Software and Systems Modeling 1(1), pp. 5–9]
program
The main idea is to regard a program as a communication to human beings rather than as a set of instructions to a computer. [D. Knuth]
A description of machine with a desired behaviour: It exhibits the behaviour that a general-purpose computer will exhibit when it executes the program. [M. Jackson. "Some basic tenets of description." Software and Systems Modeling 1(1), pp. 5–9.]
An abstract symbol manipulator which can be turned into a concrete one by supplying a computer to it. [E.W. Dijkstra, "On the cruelty of really teaching computing"]
programming
Constructing instruction tables is usually described as "programming". To "program a machine to carry out the operation A" means to put the appropriate instruction into the machine so that it will do A. [A. Turing, in B.J. Copeland (ed.) The Essential Turing, p. 30]
reengineering
The process of examination, understanding, and alteration of a system with the intent of implementing the system in a new form. [Elliot J. Chikofsky, J. H. Cross II, "Reverse Engineering and Design Recovery: A Taxonomy". IEEE Software 7(1), pp 13–17.]
reverse engineering
The process of analyzing the components and component interrelationships of a software system in order to describe that system at a level of abstraction higher than that of the original system. [Elliot J. Chikofsky, J. H. Cross II, Reverse Engineering and Design Recovery: A Taxonomy. IEEE Software 7(1),  pp 13–17.]
requirement
A description of desired effects on the world outside the computer. [M. Jackson. "Some basic tenets of description." Software and Systems Modeling 1(1), pp. 5–9]
requirements specification
To deal with a significant problem you have to analyze and structure it. That means analyzing and structuring the problem itself, not the system that will solve it. [M. Jackson. Software Requirements and Specification. Harlow, UK: Addison-Wesley]
software design
(1) The process of defining the architecture, components, interfaces, and other characteristics of a system or component (2) The result of [that] process [IEEE610.12-90]
software science
See: What is software science?
Divider

Quotationary

Abstraction
Abstraction is selective ignorance. [Andrew Koenig]
The computer scientist's worlds is a world of nothing but abstractions. [Timothy Colburn]
artificial intelligence
One machine can do the work of fifty ordinary men. No machine can do the work of one extraordinary man. [Elbert Hubbard]
basic research
Basic research is what I am doing when I don't know what I am doing. [Wernher von Braun]
computer science
Computer Science is no more about computers than astronomy is about telescopes. [E.W. Dijkstra]
I am sure that the projected device, or rather the species of devices of which it is to be the first representative, is so radically new that many of its uses will become clear only after it has been put into operation. Uses which are likely to be the most important are by definition those which we do not recognize at present because they are farthest removed from our present sphere. [Von Neumann, in grant proposal to build the first von-Neumann computer, 24 Sep. 1954].
design
Weeks of programming can save you hours of planning [anon]
Act in haste and repent at leisure; code too soon and debug forever. [R. Kennington]
There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. The other way is to make it so complicated that there are no obvious deficiencies. [C.A.R. Hoare, The 1980 Turing Award Lecture]
I believe that the current situation in software design is bad, and that it is getting worse. I do not expect that this will be recognised by the designers, manufacturers, sellers, or even the users of software, who will regard the increase in complexity as a sign of progress, or at least an inevitable con-comitant thereof; and may even welcome it as a tribute to their intelligence, or at least a challenge. The larger manufacturers are not only set in their ways, but they have actually profited from the increase in complexity of their software, and the resulting decrease in the efficiency and effectiveness of their customers' use of hardware. And everything is now so complicated, that any particular attack on the problem of low quality software design can always be evaded by appeals to tradition, to standards, to customer prejudice, to compensating advantages, and even to promises to mend the fault in future issues. [Tony Hoare, 1975]
engineers
For humans, honesty is a matter of degree. Engineers are always honest in matters of technology and human relationships. That's why it's a good idea to keep engineers away from customers, romantic interests, and other people who can't handle the truth. [Scott Adams, The Dilbert Principle]
formal methods
Almost everyone who builds computing systems is convinced that all systems design—software or hardware—needs to be done within a rich conceptual frame, which is articulated by rigorous methodologies…The conceptual frame provided just by programming languages is too narrow; a wider frame is needed in which to understand the specifications of systems and the methodology which articulates this understanding must be based on some form of logic. [Milner 1986]
It is curious to observe how the authors in this field, who in the formal aspects of their work require painstaking demonstration and proof, in the informal aspects are satisfied with subjective claims that have not the slightest support, neither in argument nor in verifiable evidence. Surely common sense will indicate that such a manner is scientifically unacceptable. [P. Naur, "The place of Strictly Defined Notation in Human Insight", p. 8]
forecasts
If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside. [Robert X. Cringely, InfoWorld magazine]
Computers in the future may weigh no more than 1.5 tons.  [Popular Science, 1959]
internet
Getting information off the Internet is like taking a drink from a fire hydrant. [Mitchell Kapor]
mathematics
If people do not believe that mathematics is simple, it is only because they do not realize how complicated life is. [J. L. von Neumann]
micro·soft
There never was a chip that Bill Gates couldn't slow down with a new batch of features. [James Coates]
Microsoft Blows
modelling
All models are wrong; some of them are useful. [G. Box]
optimization
Premature optimization is the root of all evil. [C.A.R. Hoare]
Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet. [Michael A. Jackson]
programming
Programs must be written for people to read, and only incidentally for machines to execute. [Abelson & Sussman]
Computer programming: the art of putting as few bugs as possible into the algorithm. [Lilith]
I am a poet. I rhyme computer programs. [Lilith]
programming languages
The highest goal of programming language design [is] to enable good ideas to be elegantly expressed. [C.A.R. Hoare, "The Emperor's Old Clothes"]
Programming is complex because of the large number of conflicting objectives for each of our programming projects. If our basic tool, the language in which we design and code our programs, is also complicated, the language itself becomes part of the problem rather than part of its solution. [C.A.R. Hoare, "The Emperor's Old Clothes"]
There are only two kinds of programming languages: those people always bitch about and those nobody uses. [Bjarne Stroustrup]
It is my firm belief that all successful languages are grown and not merely designed from first principles. [Bjarne Stroustrup]
A programming language is a system of notation for describing computations. A useful programming language must therefore be suited for both description (i.e., for human writers and readers of programs) and for computation (i.e., for efficient implementation on computers). But human beings and computers are so different that it is difficult to find notational devices that are well suited to the capabilities of both. [R. Tennant, Principles of Programming Languages]
project management
Hofstadter's Law: it always takes longer than you expect, even when you take Hofstadter's Law into account. [D. Hofstadter, Gödel, Escher, Bach]
Reliability
The severity with which a system fails is directly proportional to the intensity of the designer's belief that it cannot fail. [DeMillo, Lipton & Perlis 1979]
specification
A lack of clarity in specification is one of the surest signs of a deficiency in the program it describes [C.A.R. Hoare, "The Emperor's Old Clothes"]
software engineering
"...Software engineering" should be known as "The Doomed Discipline" ... [it] has accepted as its charter "How to program if you cannot." [E.W. Dijkstra, "On the cruelty of really teaching computing"]
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. [R. Cook]
theory
It has long been my personal view that the separation of practical and theoretical work is artificial and injurious. Much of the practical work done in computing, both in software and in hardware design, is unsound and clumsy because the people who do it have not any clear understanding of the fundamental design principles of their work. Most of the abstract mathematical and theoretical work is sterile because it has no point of contact with real computing. [Christopher Strachey]
The design of computing systems can only properly succeed if it is well-grounded in theory, and ... the important concepts in a theory can only emerge through protracted exposure to application. [Robin Milner, 1986]
UML
industrial-strength hand-waving... [which has] spread like a particularly invasive weed across the computing landscape. [anon]