Software science references

Divider

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.

What is software science?

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. [History of software science]
  • Robin Milner. "Ubiquitous Computing: Shall we Understand It? The Computer Journal, Vol. 49, No. 4 (2006), pp. 383–389. [Definition of software science]
  • W.V.O. Quine. "On what there is." In: From a Logical Point of View. 2nd ed. Cambridge, MA: Harvard University Press, 1961. [Scientific theories as ontologies]

Amnon Eden
Revised: April 2008

Foundations

  • 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

Software design

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.

Formal methods

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

In the news

  • בזבוז ממשלתי מחושב
    פרויקט מחשוב משרדי הממשלה, שבאחריות סגן החשכ"ל איציק כהן, היה אמור לעלות 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

Links

Humour