Software Science: Lexicon and quotationary

Related pages: Software science bibliography

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?

- 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]

- 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]
|