Software science references

If I had actually been aware of all the
efforts made in the past centuries, I would never have written a line, but would
have done something else.
-- Goethe
DISCLAIMER. This page is neither complete nor accurate. It
merely serves as a point of reference on certain subjects.
Contact me if you have any questions.
A good scientist is a person with original ideas. A
good engineer is a person who makes a design that works with as few
original ideas as possible. There are no prima donnas in engineering.
-- Freeman Dyson
According to Robin Milner [2006], the term 'software science' refers to the
"principles, concepts, models and constructions that we use to build and
understand software systems", contributing theories to which include "automata
theory, formal language theory, automation of logics, program semantics,
specification and verification disciplines, type theories, process calculi,
temporal and modal logics, calculi for mobile systems, intelligent agents".
Software science is
distinguished from software engineering as being concerned with descriptive
(rather then normative) statements. Software science stands to software engineering
in the way chemistry stands to chemical engineering and material science to
civil engineering.
Dijkstra argued that the term computer science is unfortunate
because “Computer science is no more about computers than astronomy is
about telescopes”. Yet the engineering bias has steered research in software
towards current technologies and towards effective and commercially-viable
techniques for constructing software, including methodologies (such as Jackson
Structured Programming, Object-Oriented Analysis) and processes (such as
software lifecycle models), which are at the scope of the SWEBOK enterprise [Abran
et al. 2004].
Treated as a natural (empirical) science, software
science can be understood as the discipline which emanates from treating computer programs
(“source code”) as objects tantamount to “natural phenomena”, much in the way
that astronomy treats planets and zoology treats natural species, thereby
suggesting scientific methods of investigation such as observation, analysis,
measurement, verification, and empirical validation.
Almost anything in software can be implemented, sold,
and even used given enough determination. There is nothing a mere scientist can say that will stand against the flood of a
hundred million dollars.
-- C.A.R. Hoare, "The Emperor's Old Clothes"
Software science has been conducted and will continue to be conducted, but to
date there are no conferences, journals, books or papers on “software science”
( Google it!). Categories of software are demarcated for example by theories of
computability, computational complexity, software complexity, and the
Intension/Locality criteria.
The theory of programming languages and programming paradigms, formal modelling of software design, Lehman's
laws of
software evolution, Turner's foundations to the theory of functional
specifications and many other contributions count towards “software science”.
Further reading:
- Michael S. Mahoney. "
Software as Science—Science as Software." in: Ulf Hashagen, Reinhard Keil-Slawik,
Arthur Norberg (eds.) History of Computing: Software Issues. Berlin: Springer Verlag, 2002.
- Robin Milner.
"Ubiquitous Computing: Shall we Understand It?
The Computer Journal, Vol. 49, No. 4 (2006), pp. 383–389.
- W.V.O. Quine. "On what there is." In:
From a Logical Point of View. 2nd ed. Cambridge, MA: Harvard University Press, 1961.
Amnon Eden
Revised: April 2008
- B. Jack Copeland. “Computability.” Ch. in: Luciano Floridi (ed.) Philosophy of Computing and Information. Oxford: Blackwell, 2004.
- Alasdair Urquhart. “Complexity.” Ch. in: Luciano Floridi (ed.) Philosophy of Computing and Information. Oxford: Blackwell, 2004.
- Michael R.A. Huth, Mark Ryan. Logic in Computer Science. Cambridge: Cambridge University Press, 2000.
- Raymond Turner.
Computable Models. Springer, 2009.
Programming
- Donald Knuth. The art of computer programming, Vol. I, 3rd Edition. Reading: Addison-Wesley, 1997.
- Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Reading: Addison Wesley, 1986.
- R.D. Tennent. Principles of Programming Languages. Englewood Cliffs: Prentice Hall, 1981.
- Michael L. Scott. Programming Language Pragmatics. Morgan Kaufmann, 2000.
- Harold Abelson, Jerald J. Sussman. Structure and Interpretation of Computer Programs, 2nd ed. Cambridge: MIT Press, 1996.
- Ole L. Madsen. “Towards a Unified Programming Language.” Proc. European Conf. Object-Oriented Programming—ECOOP (2000), Lecture Notes in Computer Science, Vol. 1850, pp. 1–26.
See also: Philosophy of programming languages
The computer programmer is a creator of universes for which he
alone is responsible. Universes of virtually unlimited complexity can be created
in the form of computer programs.
-- Joseph Weizenbaum
See separate pages: Software architecture,
object-oriented programming,
design patterns
- E. Yourdon, L.L. Constantine. Structured design. New York: Yourdon, 1978.
- Martin Fowler. Refactoring. Addison-Wesley, 2003.
- Clement A. Szyperski. Component Software—Beyond Object-Oriented Programming, 2nd Edition. Reading: Addison-Wesley, 2002.
Critique
- C.A.R. Hoare. “Software Design: A Parable.” Software World, Vol. 5, Nos. 9–10 (1975), pp 53–56.
Our work on software design theory
- Amnon H. Eden, Yoram Hirshfeld, Rick Kazman. “Abstraction Classes in Software Design.” IEE Software, Vol. 153, No. 4 (Aug. 2006), pp. 163–182. London, UK: The Institution of Engineering and Technology.
- Amnon H. Eden, Rick Kazman.
“Architecture, Design, Implementation.” In: Laurie Dillon, Walter Tichy (eds.)
Proc. 25th Int'l Conf. Software Engineering—ICSE
(3–10 May 2003), Portland, OR, USA, pp. 149–159.
Los Alamitos, USA: IEEE Computer Society Press
Classics
See separate pages:
To abstract is to eschew the devil in the detail.
-- Lilith
Modelling
- Michael Jackson. “Some basic tenets of description.” Software and Systems Modeling, Vol. 1, No. 1 (Sep. 2002), pp. 5–9.
- LePUS3 and Class-Z:
object-oriented Design Description Languages defined as axiomatized subsets
of first-order predicate logic and tailored for tool support in fully
automated verification and program visualization.
Software engineering
Failure is central to engineering. Every single
calculation that an engineer makes is a failure calculation. Successful
engineering is all about understanding how things break or fail.
--
Henry Petroski
Summary presentation
Classics
- Peter Naur, Brian Randell, (Eds.) Software Engineering: Report of a conference sponsored by the NATO Science Committee (7–11 Oct. 1968), Garmisch, Germany. Brussels, Scientific Affairs Division, NATO, 1969.
- Alain Abran, James W. Moore. Guide to the Software Engineering Body of Knowledge—SWEBOK, 2004 Edition. Los Alamitos: IEEE, 2004.
- Frederick P. Brooks Jr. “No Silver Bullet: Essence and Accidents of Software Engineering.” IEEE Computer, Vol. 20, No. 4 (Apr. 1987), pp. 10–19.
- C.A.R. Hoare. “The Emperor's Old Clothes” (Transcript of the ACM Turing Award Lecture.) Communications of the ACM, Vol. 24, No. 2 (Feb. 1981), pp. 75–83.
- W. Wayt Gibbs. “Software's Chronic Crisis.”Scientific American, Vol. 271, No. 3 (Sep. 1994), p. 86–95.
Standards
- IEEE Std 610.12-1990. IEEE Standard Glossary of Software Engineering Terms. Los Alamitos: IEEE Computer Society, 1990.
Software lifecycle theory
- E.R. Comer. “Alternative Software Lifecycle Models.” In: M. Dorfman, R.H. Thayer (eds.) Software Engineering. Los Alamitos: IEEE Computer Society Press, 1999.
- Leon Osterweil. “Software processes are software too, revisited.” Proc. Int'l Conf. Software Engineering—ICSE (1997), pp. 539–548.
Software Management
- Frederick P. Brooks. “The Mythical Man-Month.” Proc. Int'l Conf. Reliable Software, Los Angeles, CA, 1975.
Industrial software management
Embedded systems
- Bas Graaf, Marco Lormans, Hans Toetenel. “Embedded Software Engineering: The State of the Practice.” IEEE Software Vo. 20, No. 6 (Nov. 2003), pp. 61–69.
Critique
Webliography
News clippings
- Nickolas G. Carr. “Does Not Compute”. The New York Times, OP-ED contribution, 22 Jan. 2005.
Software maintenance, evolution, and re-engineering
- Manny Lehman. “Laws of Software Evolution Revisited”. Lecture Notes in Computer Science 1149 (Proc. 5th European Workshop on Software Process Technology), pp. 108–124. Berlin: Springer-Verlag, 1996.
- David L. Parnas. “Software Aging.” Proc. 16 Int'l Conf. Software Engineering—ICSE (2004), pp. pp. 279–287.
- E.J. Chikofsky, J.H. Cross II. “Reverse Engineering and Design Recovery: A Taxonomy”. IEEE Software Vol. 7, No. 1 (Jan. 1990), pp 13–17.
Software flexibility
- Amnon H. Eden, Tom Mens. “Measuring Software Flexibility.” IEE Software Vol. 153, No. 3 (Jun. 2006), pp. 113–126. London, UK: The Institution of Engineering and Technology.
Software metrics/complexity
- H. Zuse. Software Complexity. Berlin:
Walter de Gruyter, 1998.
- S.R. Chidamber, C.F. Kemerer. “A Metrics Suite for Object-Oriented
Design”. IEEE Trans. Software Engineering, Vol. 20, No. 6
(Jun. 1994), pp. 476–493.
- J.M. Bieman, L.M. Ott. “Measuring functional cohesion.” IEEE
Trans. Software Engineering, Vol. 20, No. 8 (Aug. 1994), pp. 644–658.
- B. Boehm. “Industrial Software Metrics Top 10 List.” IEEE
Software, Vol. 4, No. 5 (Sep. 1987), pp. 84–85.
- A. Fitzsimmons, T. Love. “A review and evaluation of software science.”
ACM Computing Surveys, Vol. 10, No. 1 (Mar. 1998), pp. 3-18.
Static analysis
- M. Weiser. “Program slicing.” Proc. 5th Int'l Conf. Software
Engineering—ICSE, San Diego, CA (1981), pp. 439–449.
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
Some conceptual background
- Anthony Hall. “Seven myths of formal methods.” IEEE Software, Vol. 7, No. 5 (Sep./Oct. 1990). pp. 11–19.
- G.A. Antonelli. “Logic”. Ch. in: L. Floridi (ed.) Philosophy of Computing and Information. Oxford: Blackwell, 2004.
- Janette M. Wing. “A Specifier's Introduction to Formal Methods.” IEEE Computer, Vol. 23, No. 9 (Sep. 1990), pp. 8–24.
Specification languages: General
Specification languages
- C.A.R. Hoare. Communicating Sequential Processes. Prentice-Hall International, 1985.
- John Derrick, Erik Boiten. Refinement in Z and Object-Z, Foundations and Advanced Applications. Berlin: Springer, 2000.
- Lesley Lamport. “The Temporal Logic of Actions.” ACM Trans. Programming Languages and Systems, Vol. 16, No. 3 (May 1994), pp. 872–923.
- J. Michael Spivey. The Z Notation: A Reference Manual. Hertfordshire: Prentice-Hall, 1992.
- Jean-Raymond Abrial. The B-Book: Assigning Programs to Meanings. Cambridge University Press, 1996.
Semantics of programming languages
- R.D. Tennent. Semantics of programming languages.
- Joseph E. Stoy. Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. Cambridge: MIT Press, 1977.
- C.A.R. Hoare. “An axiomatic basis for computer programming.” Communications of the ACM, Vol. 12, No. 10 (Oct. 1969), pp. 576–583.
Mathematical logic and object-oriented design
- Amnon H. Eden, Epameinondas Gasparis, Jonathan Nicholson. "LePUS3
and Class-Z Reference Manual." Department of Computer Science,
University of Essex, Tech. Rep. CSM-474, ISSN 1744-8050 (2007).
Links
- בזבוז ממשלתי מחושב
פרויקט מחשוב משרדי הממשלה, שבאחריות סגן החשכ"ל איציק כהן, היה אמור לעלות
150 מיליון שקל. בפועל הסכום הזה כבר התנפח ל-700 מיליון.
-
Woman targeted by web hackers BBC 31-May-2006
A woman from Greater Manchester has become a victim of an internet
scam in which hackers hijack computer files and blackmail owners to get them
back. The new phenomenon, known as Ransomware, means victims
cannot access any of the files stored in their My Documents folder.
- A thirst for knowledge Guardian 13-Apr-2006
Wikipedia and other online databases provide a soupy morass of
information, but where can we find the variety of views that leads to wisdom
- Orkut angels delight in fight Guardian 16-Mar-2006
Brazilian internet vigilantes trying to root out online criminals could end up making matters worse
Humour
|