Minds and Machines

, Volume 21, Issue 2, pp 275–299 | Cite as

Problems for a Philosophy of Software Engineering

  • Stefan GrunerEmail author


On the basis of an earlier contribution to the philosophy of computer science by Amnon Eden, this essay discusses to what extent Eden’s ‘paradigms’ of computer science can be transferred or applied to software engineering. This discussion implies an analysis of how software engineering and computer science are related to each other. The essay concludes that software engineering can neither be fully subsumed by computer science, nor vice versa. Consequently, also the philosophies of computer science and software engineering—though related to each other—are not identical branches of a general philosophy of science. This also implies that not all of Eden’s earlier arguments can be directly mapped from the domain of computer science into the domain of software science. After the discussion of this main topic, the essay also points to some further problems and open issues for future studies in the philosophy of software science and engineering.


Computer science Software engineering Paradigms 



Thanks to the students of my software engineering seminars at the University of Pretoria for some interesting discussions in the context of this essay. Thanks also to Tom Maibaum for some inspiring conversations during the ICFEM International Conference on Formal Engineering Methods, 2008. Several fruitful discussions with my colleagues Derrick Kourie and Morkel Theunissen are gratefully acknowledged, too. Last but not least many thanks to the editors of this journal, to the guest-editors of this special issue, as well as to their anonymous reviewers, for the helpful comments which they have provided on the pre-print drafts of this essay.


  1. Amman, P., & Offut, J. (2008). Introduction to software testing. Cambridge: Cambridge University Press.Google Scholar
  2. Broy, M., & Rombach, D. (2002). Software engineering: Wurzeln, stand und perspektiven. In Informatik spektrum (Vol. 16, pp. 438–451). Heidelberg: Springer.Google Scholar
  3. Cleland, C. E. (2001). Recipes, algorithms, and programs. In Minds and machines (Vol. 11, No. 2, pp. 219–237). Dordrecht/Heidelberg:Kluwer Academic Publ./Springer.Google Scholar
  4. Colburn, T. R. (2000). Philosophy and computer science series: Explorations in philosophy. Armonk, NY: M.E. Sharpe Publ.zbMATHGoogle Scholar
  5. De Marco, T. (1986). Controlling software projects: Management, measurement, and estimates. London: Prentice Hall Publ.Google Scholar
  6. De Marco, T. (2009). Software engineering: An Idea whose time has come and gone? In IEEE Software (Vol. 26, No. 4, pp. 95–96). IEEE Computer Society Press.Google Scholar
  7. Denning, P. J. (2007). Computing is a natural science. In Communications of the ACM (Vol. 50, No. 7, pp. 13–18). ACM Press.Google Scholar
  8. Diemer, A. (Ed.). (1968). System und Klassifikation, including three classical essays by Lambert, J. H. Drei Abhandlungen zum Systembegriff, 1782–1787.Google Scholar
  9. Eden, A. (2007). Three paradigms of computer science. In Minds and Machines (Vol. 17, No. 2, pp. 135–167). Heidelberg: Springer.Google Scholar
  10. Edmonds, E. (2007). The art of programming or programs as art. In Proceedings of new trends in software methodologies, tools and techniques (pp. 119–125). IOS Press.Google Scholar
  11. Fetzer, J. H. (1988). Program verification: The very Idea. In Communications of the ACM (Vol. 31, No. 9, pp. 1048–1063). ACM Press.Google Scholar
  12. Fetzer, J. H. (1998). Philosophy and computer science: Reflections on the program verification debate. In: T. Bynum & J. H. Moor (Eds.), The digital phoenix: How computers are changing philosophy (pp. 253-273). Basil Blackwell Publ.Google Scholar
  13. Fetzer, J. H. (1999). The role of models in computer science. In The Monist (Vol. 82, pp. 20–36). Hegeler Institute Publ.Google Scholar
  14. Floridi, L. (1999). Philosophy and computing: An introduction. London: Routledge Publ.zbMATHGoogle Scholar
  15. Gruner, S. (2010). Software engineering between technics and science: Recent discussions about the foundations and the scientificness of a rising discipline. In Zeitschrift für allgemeine Wissenschaftstheorie (Vol. 41, No. 1, pp. 237–260). Heidelberg: Springer.Google Scholar
  16. Kondoh, H. (2000). What is mathematicalness in software engineering? Towards precision software engineering. In Lecture Notes in Computer Science (Vol. 1783, pp. 163–177). Heidelberg: Springer.Google Scholar
  17. Kroeze, J. H. (2010). Ontology goes Postmodern in ICT. In Proceedings of the SAICSIT’10 Conference, South Africa (pp. 153–159). ACM Press. ISBN 978-1-60558-950-3.Google Scholar
  18. Lakatos, I. (1978). The methodology of scientific research programmes. In Philosophical papers (Vol. 1). Cambridge: Cambridge University Press.Google Scholar
  19. Landauer, R. (1961). Irreversibility and heat generation in the computing process. IBM Journal of Research and Development, 5(3). Reprinted in IBM Journal of Research and Development, 44(1/2), pp. 261–269, 2000. IBM Press.Google Scholar
  20. Maibaum, T. (2008). Formal methods versus engineering. In Proceedings of the First Iinternational workshop on formal methods in education and training at the ICFEM’08 international conference on formal engineering methods, Japan.Google Scholar
  21. Masterman, M. (1970). The nature of a paradigm. In: I. Lakatos & A. Musgrave (Eds.), Criticism and the growth of knowledge (Proceedings of the 1965 International Colloquium in the Philosophy of Science ay Bedford College) (Vol. 4, pp. 59–89). Cambridge: Cambridge University Press.Google Scholar
  22. Northover, M., Kourie, D. G., Boake, A., Gruner, S., Northover, A. (2007). Agile software development: A contemporary philosophical perspective. In Proceedings of the SAICSIT’07 Conference, South Africa (pp. 106–115). ACM Press. ISBN 978-1-59593-775-9.Google Scholar
  23. Northover, M., Kourie, D. G., Boake, A., Gruner, S., Northover, A. (2008). Towards a philosophy of software development: 40 years after the birth of software engineering. In Zeitschrift für allgemeine Wissenschaftstheorie (Vol. 39, No. 1, pp. 85–113). Heidelberg: Springer.Google Scholar
  24. Olson, E. T. (1997). The ontological basis of strong artificial life. In Artificial Life (Vol. 3, No. 1, pp. 113–126). Cambridge: MIT Press.Google Scholar
  25. Rapp, F. (Ed) (1974). Contributions to a philosophy of technology: Studies in the structure of thinking in the technological sciences. Dordrecht: Reidel Publ.Google Scholar
  26. Roettgers, K. (1983). Der Ursprung der Prozeidee aus dem Geiste der Chemie. In Archiv für Begriffsgeschichte (Vol. 27, pp. 93–157). Meiner-Verlag.Google Scholar
  27. Rombach, D., & Seelisch, F. (2008). Formalisms in software engineering: Myths versus empirical facts. In Lecture notes in computer science (Vol. 5082, pp. 13–25). Heidelberg: Springer.Google Scholar
  28. Smith, B. C. (1998). On the origin of objects. Cambridge: MIT Press.Google Scholar
  29. Snelting, G. (1998). Paul Feyerabend und die Softwaretechnologie. In Informatik Spektrum (Vol. 21, No. 5, pp. 273–276). New York: Springer. English translation: Paul Feyerabend and Software Technology. Software Tools for Technology Transfer, Vol. 2, No. 1, pp. 1–5, 1998. Heidelberg: Springer.Google Scholar
  30. Tichy, W. (2007). Empirical Methods in Software Engineering Research. In Invited lecture, Proceedings of the 4th IFIP WG 2.4 summer school on software technology and engineering, South Africa.Google Scholar
  31. Zhirnov, V., Cavin, R., Leeming, G., Galatsis, K. (2008). An assessment of integrated digital cellular automata architectures. In Computer (Vol. 41, No. 1, pp. 38–44). IEEE Computer Society Press.Google Scholar

Copyright information

© Springer Science+Business Media B.V. 2011

Authors and Affiliations

  1. 1.Research Group for Software Science and Formal Methods, Department of Computer ScienceUniversiteit van PretoriaPretoriaRepublic of South Africa

Personalised recommendations