Minds and Machines

, Volume 21, Issue 2, pp 135–152 | Cite as

Specification

Article

Abstract

The specification and implementation of computational artefacts occurs throughout the discipline of computer science. Consequently, unpacking its nature should constitute one of the core areas of the philosophy of computer science. This paper presents a conceptual analysis of the central role of specification in the discipline.

Keywords

Specification Correctness Scientific theory Philosophy of computer science 

References

  1. Abrial, J. (1996). The B-book. Cambridge: Cambridge University Press.MATHCrossRefGoogle Scholar
  2. Aho, A. S. (1985). Compilers principles, techniques and tools. Reading, Massachusetts: Addison-Wesley.Google Scholar
  3. Alan, J. (1994). Natural language understanding. London: Addison Wesley.Google Scholar
  4. Anguis, N. (2010). Abstraction and idelization in the verification of computer programs. Forthcoming.Google Scholar
  5. Asperti, A. (2009). Social processes, program verification and all that. Mathematical Structures in Computer Science, 19(5), 877–896.MathSciNetMATHCrossRefGoogle Scholar
  6. Baier, C. J. (2008). Principles of model checking. Cambridge, MA.: MIT Press.MATHGoogle Scholar
  7. Bass, L. C. (2003). Software architecture in practice. Pittsburgh: SEI.Google Scholar
  8. Bengt Nordström, K. P. (1990). Programming in Martin-Löf’s type theory. Oxford: Oxford University Press.MATHGoogle Scholar
  9. Boghossian, P. (1989). The rule-following considerations. Mind, 98(392), 507–549.MathSciNetCrossRefGoogle Scholar
  10. Chalmers, A. (1999). What is this thing called science. Maidenhead: Open University Press.Google Scholar
  11. Colburn, T. R. (2000). Philosophy and computer science. Explorations in philosophy, series. New York: M.E. Sharpe.Google Scholar
  12. Dawes, J. (1991). The VDM-SL reference guide. London: Pitman.Google Scholar
  13. De Millo, R. A., & Lipton, R. J. (1979). Social processes and proofs of theorems and programs. Communications of the ACM, 22, 271–280.MATHCrossRefGoogle Scholar
  14. Diller, A. Z. (1990). An introduction to formal methods. London: Wiley.MATHGoogle Scholar
  15. Eden, A. (2011). Codecharts: Roadmaps and blueprints for object-oriented programs. Hoboken, NJ: Wiley-Blackwell.Google Scholar
  16. Edmund, M., & Clarke, J. O. (1999). Model checking. Boston: MIT Press.Google Scholar
  17. Fernandez, M. (2004). Programming languages and operational semantics: An introduction. London: King’s College Publications.MATHGoogle Scholar
  18. Fetzer, J. (1988). Program verification: The very idea. Communications of the ACM, 31(9), 1048–1063.CrossRefGoogle Scholar
  19. Franssen, M. (2009). The philosophy of technology. Retrieved from Stanford encyclopedia of philosophy. http://plato.stanford.edu/entries/technology/.
  20. Fuchs, N. (1992). Specifications are (preferably) executable. Software Engineering Journal, 7(5), 323–334.CrossRefGoogle Scholar
  21. Gluer, K. W. (2008). The normativity of meaning and content. Retrieved from Stanford encyclopedia of philosophy. http://plato.stanford.edu/entries/meaning-normativity/.
  22. Grady Booch, J. R. (1999). The unified modeling language. Reading, Massachusetts: Adison Wesley.Google Scholar
  23. Gupta, A. (2008). Stanford encyclopedia of philosophy. Retrieved from definitions. http://plato.stanford.edu/entries/definitions/.
  24. Hale, B. (1987). Abstract objects. Oxford: Basil Blackwell.Google Scholar
  25. Hale, B. (2001). The reason’s proper study. Oxford: Clarendon Press.MATHCrossRefGoogle Scholar
  26. Horty, J. (2007). Frege on definitions. New York: Oxford University Press.Google Scholar
  27. Jacquette, D. (2002). Ontology. Chesham: Acumen Publishing Ltd.Google Scholar
  28. Jones, C. (1986). Systematic software development using VDM. Hemel Hemstead: Prentice Hall.MATHGoogle Scholar
  29. Jones, C. (1990). Specifications are not (necessarily) harmful. Software Engineering Journal, 330–339.Google Scholar
  30. Kripke, S. (1982). Wittgenstein on rules and private language. Boston: Harvard University Press.Google Scholar
  31. Kroes, P., & Meijers, A. (Eds.). (2006). The dual nature of technical artifacts. Special issue of Studies in History and Philosophy of Science, 37, 1–158.Google Scholar
  32. McCarthy, N. (2006). Philosophy in the making. Ingenia, issue 26.Google Scholar
  33. Milner, R. (1978). A theory of type polymorphism in programming. Jcss, 17, 348–375.MathSciNetMATHGoogle Scholar
  34. Moor, J. (1978). Three myths of computer science. British Journal for the Philosophy of Science, 29, 213–222.Google Scholar
  35. Morgan, C. (1990). Programming from specifications. London: Prentice Hall.MATHGoogle Scholar
  36. O’Hearn, P. W. (2010). Abductive, inductive and deductive reasoning about resources. In csl: DBLP conference 2010. (pp. 49–50).Google Scholar
  37. Pierce, B. (2002). Types and programming languages. London: The MIT Press.Google Scholar
  38. Plotkin, G. (2004). A structural approach to operational semantics. Journal of Logic and Algebraic Programming, 60–61, 17–139.MathSciNetGoogle Scholar
  39. Potter, B. S. (1991). An introduction to formal specification and Z. New Jersey: Prentice Hall.MATHGoogle Scholar
  40. Robinson, R. (1950). Definition. Oxford: Clarendon Press.Google Scholar
  41. Rosen, G. (2001). Abstract objects. Retrieved from Stanford encyclopedia of philosophy. http://plato.stanford.edu/entries/abstract-objects/.
  42. Rosenberg, A. (2000). The philosophy of science. London: Routledge.Google Scholar
  43. Spivey, J. (1998). Understanding Z. Cambridge: Cambridge University Press.Google Scholar
  44. Stoy, J. (1977). Denotational semantics. Massachusetts: MIT.Google Scholar
  45. Turner, R. (1991). Constructive foundations for functional languages. New York: Prentice Hall.Google Scholar
  46. Turner, R. (2007). Understanding programming languages. Minds and Machines, 17(2), 129–133.CrossRefGoogle Scholar
  47. Turner, R. (2009). Computable models. New York: Springer.MATHCrossRefGoogle Scholar
  48. Turner, R. (2010). Programming languages as mathematical theories. In J. Valllverdu, Thinking machines and the philosophy of computer science. IGI Global Publishers.Google Scholar
  49. Vallverdu, J. (2010). Thinking machines and the philosophy of computer science. IGI Global.Google Scholar
  50. Van Vliet, H. (2008). Software engineering: Principles and practice. Chichester: John Wiley.Google Scholar
  51. Woodcock, J. (1996). Using Z- specifications, refinement and proof. New Jersey: Prentice Hall.Google Scholar
  52. Zalta, E. (1983). Abstract objects. Dordrecht, New York: D. Reidel.Google Scholar

Copyright information

© Springer Science+Business Media B.V. 2011

Authors and Affiliations

  1. 1.CSEEEssex UniversityColchesterUK

Personalised recommendations