Advertisement

Journal for General Philosophy of Science

, Volume 39, Issue 1, pp 85–113 | Cite as

Towards a Philosophy of Software Development: 40 Years after the Birth of Software Engineering

  • Mandy Northover
  • Derrick G. Kourie
  • Andrew Boake
  • Stefan Gruner
  • Alan Northover
Discussion

Abstract

Over the past four decades, software engineering has emerged as a discipline in its own right, though it has roots both in computer science and in classical engineering. Its philosophical foundations and premises are not yet well understood. In recent times, members of the software engineering community have started to search for such foundations. In particular, the philosophies of Kuhn and Popper have been used by philosophically-minded software engineers in search of a deeper understanding of their discipline. It seems, however, that professional philosophers of science are not yet aware of this new discourse within the field of software engineering. Therefore, this article aims to reflect critically upon recent software engineers’ attempts towards a philosophy of software engineering and to introduce our own philosophical thoughts in this context. Finally, we invite the professional philosophers of science to participate in this interesting new discourse.

Keywords

Philosophy of technology Philosophy of software development Software science versus software engineering Development process Change Evolution Revolution Paradigm shift Popper Kuhn Feyerabend 

Notes

Acknowledgments

Thanks to our colleagues Morkel Theunissen and Markus Roggenbach for inspiring discussions about ‘Software Engineering versus Software Science’. Thanks to our colleague Tim Grant for directing our attention to Smith (1997). Elaine Byrne is acknowledged for providing a copy of Lyytinen and Klein (1985), and Judith Bishop for a copy of Bishop (1991). Many thanks also to Gert König, Helmut Pulte and Lutz Geldsetzer, editors, as well as the anonymous reviewers of this journal for their helpful remarks and comments on various draft versions of the manuscript; their hints have been taken into account for this published version of our essay. Moreover we would like to thank the editors for sending us a copy of Arageorgis and Baltas (1989). Last but not least thanks to Marlene Fischer at the editorial office for friendly communications and efficient handling of the manuscripts.

References

  1. Adorno, T., Albert, H., & Dahrendorf, R. (1993). Der Positivismusstreit in der deutschen Soziologie. München: DTV.Google Scholar
  2. Aichernig, B. K. (2001). Systematic Black-Box Testing of Computer-Based Systems through Formal Abstraction Techniques. Dissertation, Technische Universität Graz, Austria.Google Scholar
  3. Albert, H. (1994). Kritischer Rationalismus. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 177–182). München: DTV Wissenschaft.Google Scholar
  4. Alexander, C. (1999). The origins of pattern theory. IEEE Software, September/October, 71–82.Google Scholar
  5. Arageorgis, A., & Baltas, A. (1989). Demarcating technology from science—Problems and problem solving in technology. Zeitschrift für allgemeine Wissenschaftstheorie, 20(2), 212–229.CrossRefGoogle Scholar
  6. Bach, J. (2000). Skill over process. Cutter Consortium. Retrieved November 2007 from https://cutter.com/cgi-bin/catalog/store.cgi.
  7. Basden, A. (2008). Philosophical frameworks for understanding information systems. USA: IGI Publishing. ISBN-10: 1599040360.Google Scholar
  8. Beck, K. (2002). XP and culture change. Cutter Consortium. Retrieved November 2007 from https://cutter.com/cgi-bin/catalog/store.cgi.
  9. Beck, K., & Andres, C. (2005). Extreme programming explained: Embrace change (2nd ed.). London: Addison-Wesley.Google Scholar
  10. Beck, K., & Fowler, A. (2001). Manifesto for agile software development. Retrieved November 2007 from http://www.agilemanifesto/org/.
  11. Becker, W. (1994). Ideologie. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 144–150). München: DTV Wissenschaft.Google Scholar
  12. Bishop, J. M. (1991). Computer programming: Is it computer science? (Inaugural Lecture). South-African Journal of Science (Suid-Afrikaanse Tydskrif vir Wetenskap), 87, 22–33.Google Scholar
  13. Boehm, B. (2002). Get ready for agile methods, with care. IEEE Software, 35(1), 64–69.Google Scholar
  14. Brennecke, A., & Keil-Slawik, R. (Eds.). (1996). Position Papers for Dagstuhl-Seminar 9635 on the History of Software Engineering. Schloß Dagstuhl, Germany, August 1996. Retrieved November 2007 from http://www.dagstuhl.de/en/program/calendar/semhp/?semnr=199635.
  15. Brooks, F. P. (1987). No silver bullet: Essence and accidents of software engineering. Computer, 20(4), 10–19.CrossRefGoogle Scholar
  16. Brooks, F. P. (1995). The mythical man-month and other essays on software engineering (2nd ed.). London: Addison Wesley.Google Scholar
  17. Buchler, J. (Ed.). (1955). Philosophical writings of peirce. New York: Dover.Google Scholar
  18. Bullock, A., & Trombley, S. (Eds.). (1999). The new fontana dictionary of modern thought (3rd ed.). Glasgow: Harper Collins.Google Scholar
  19. Cockburn, A. (1999). A methodology per project. Retrieved November 2007 from http://alistair.cockburn.us/index.php/Methodology_per_project.
  20. Cockburn, A. (2002). Agile software development (2nd ed.). London: Addison-Wesley.Google Scholar
  21. Coutts, D. (2007). The test case as a scientific experiment. Retrieved November 2007 from http://www.stickyminds.com/sitewide.asp?Function=edetail&ObjectType=ART&ObjectId=8965.
  22. Cutter (2007). Cutter consortium, Online Bookstore. Retrieved November 2007 from https://cutter.com/cgi-bin/catalog/store.cgi.
  23. Davies, R. (2006). Agile paradigm shift. Keynote lecture to the Agile North Conference, 2006. Retrieved November 2007 from http://www.agilenorth.net/DownloadFiles/2006Conference/.
  24. Dessauer, F. (1933). Philosophie der Technik: Das Problem der Realisierung (3rd edn.). Bonn: Verlag von Friedrich Cohen (1st ed., 1927).Google Scholar
  25. Dijkstra, E. W. (1968). Go-to statement considered harmful (Letter to the Editor). Communications of the ACM, 11(3), 147–148.CrossRefGoogle Scholar
  26. Erdmann, J. E. (1896). Grundriss der Geschichte der Philosophie (Reprint 1993: Petra Wald).Google Scholar
  27. Firestone, J. M., & McElroy, W. (2003). The open enterprise: building business architectures for openness and sustainable innovation. Hartland Four Corners, VT: KMCI On-line Press. Retrieved November 2007 from http://www.dkms.com/papers/openenterpriseexcerptnumb1final.pdf.
  28. Fuller, S. (2003). Kuhn versus Popper: The struggle for the soul of science. Cambridge: Icon Books.Google Scholar
  29. Geldsetzer, L. (1980). Methodologie. In J. Ritter & K. Gründer (Eds.), Historisches Wörterbuch der Philosophie (Vol. V, pp. 1379–1386). Basel: Schwabe-Verlag.Google Scholar
  30. Giguette, R. (2006). Building objects out of plato: Applying philosophy, symbolism and analogy to software design. Communications of the ACM, 49(10), 66–71.CrossRefGoogle Scholar
  31. Gregg, D. G., Kulkarni, U. R., & Vinze, A. S. (2001). Understanding the philosophical underpinnings of software engineering research in information systems. Information Systems Frontiers, 3(2), 169–183.CrossRefGoogle Scholar
  32. Gries, D. (1981). The science of programming (1st ed.). Heidelberg/New York: Springer-Verlag.Google Scholar
  33. Gruner, S. (2007). The path to innovation. Innovate, 2, 96. Pretoria: ISSN 1814-443X.Google Scholar
  34. Hall, W. P. (2003). Managing maintenance knowledge in the context of large engineering projects: Theory and case study. Journal of Information and Knowledge Management, 2(3), 1–17.Google Scholar
  35. Hamlet, D. (2002). Science, computer science, mathematics and software development. Keynote Lecture to the SR Quality Week Conference. Retrieved November 2007 from http://web.cecs.pdx.edu/~hamlet/QW.pdf.
  36. Hanks, P. (Ed.). (1991). Collins English dictionary (3rd ed.). Glasgow: Harper Collins.Google Scholar
  37. Heidegger, M. (1927). Sein und Zeit (19th ed. 2006). Tübingen: Niemeyer-Verlag.Google Scholar
  38. Heidegger, M. (1949). Die Frage nach der Technik (Reprinted 1954 in Heidegger, M., Vorträge und Aufsätze. (Pfullingen: Neske-Verlag)).Google Scholar
  39. Hoare, C. A. R. (1985). Communicating sequential processes. London/New York: Prentice-Hall.Google Scholar
  40. Hoare, C. A. R. (2003a). Towards the verifying compiler. Lecture notes in computer science (Vol. 2757, pp. 151–160). Heidelberg: Springer-Verlag.CrossRefGoogle Scholar
  41. Hoare, C. A. R. (2003b). Assertions: A personal perspective. IEEE Annals of the History of Computing, 25(2), 14–25.CrossRefGoogle Scholar
  42. Hoare, C. A. R. (2006). Why ever CSP? Electronic Notes in Theoretical Computer Science, 162, 209–215. Retrieved November 2007 from http://dx.doi.org/10.1016/j.entcs.2006.01.031.
  43. Knuth, D. (1968). The art of computer programming (1st ed.). London: Addison-Wesley.Google Scholar
  44. Knuth, D. (1974). Structured programming with go-to statements. ACM Computing Surveys, 6(4), 261–301.CrossRefGoogle Scholar
  45. Kroeze, J. H. (2007). Linguistic information—A humanistic endeavour. Innovate, 2, 38–39. Pretoria: ISSN 1814-443X.Google Scholar
  46. Kuhn, T. (1962). The structure of scientific revolutions. Chicago: University of Chicago Press.Google Scholar
  47. Kuhn, T. (1970). The structure of scientific revolutions—Postscript (2nd ed.). Chicago: University of Chicago Press.Google Scholar
  48. Lobkowicz, N. (1994). Interesse. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 158–160). München: DTV Wissenschaft.Google Scholar
  49. Lux Group. (2007). Project lifecycles—Waterfall, rapid application development, and all that. Retrieved November 2007 from http://luxworldwide.com/whitepapers/project_lifecycles_waterfall_rapid_application_development.asp.
  50. Lyytinen, K. J., & Klein, H. K. (1985). The critical theory of Jürgen Habermas as a basis for a theory of information systems. In E. Mumford et al. (Eds.), Research methods in information systems (pp. 219–236). Amsterdam: North-Holland/Elsevier.Google Scholar
  51. Mach, E. (1871). Die Geschichte und die Wurzel des Satzes von der Erhaltung der Arbeit. Lecture to the Royal Bohemian Society of Sciences, 15th November 1871. (1st ed., Prague: 1871; 2nd ed., Leipzig: 1909).Google Scholar
  52. Marcuse, H. (1964). One-dimensional man—Studies in the ideology of advanced industrial society. Boston: Beacon Press.Google Scholar
  53. Margolis, J. (1980). Art and philosophy. Sussex: Harvester Press.Google Scholar
  54. Marick, B. (2004). Methodology work is ontology work. ACM SIGPLAN Notices, 39(12), 64–71.CrossRefGoogle Scholar
  55. Marzolf, T., & Guttman, M. (2002). Systems minus systems thinking equals big trouble. Cutter Consortium. Retrieved November 2007 from https://cutter.com/cgi-bin/catalog/store.cgi.
  56. Masterman, M. (1970). The nature of a paradigm. In I. Lakatos & A. Musgrave (Eds.), Criticism and the growth of knowledge (pp. 59–89). Cambridge: Cambridge University Press.Google Scholar
  57. McElroy, W. (2002). Deep knowledge management. Retrieved November 2007 from http://www.macroinnovation.com/images/DeepKMbyM.W.McElroy.pdf.
  58. Methner, H., Oberhoff, W. D., Schmidt, P., Swiridow, A. P., Unger, H., & Vollmar, R. (Eds.). (1997). Computer und Kybernetik—Anmerkungen zu ihrer Geschichte und zu Perspektiven in der Zeit von 1940 bis 1965. III Russisch-Deutsches Symposium, Heidelberg, Germany, November 1997 (Bonn: Gesellschaft für Informatik, and Moscow: Russian International Informatization Academy).Google Scholar
  59. Meyer, S. (2007). Pragmatic versus structured computer programming. Retrieved November 2007 from http://www.pragmatic-c.com/docs/structprog.pdf.
  60. Mitcham, C. (1994). Thinking through technology: The path between engineering and philosophy. Chicago: University of Chicago Press.Google Scholar
  61. Mitcham, C. & Mackey, R. (1973). Bibliography of the philosophy of technology. Technology and Culture, 14/2, Part II.Google Scholar
  62. Mittelstraß, J. (2001). Konstruktion und Deutung: Über Wissenschaft in einer Leonardo – und Leibniz-Welt. Festvortrag anläßlich der Verleihung der Ehrendoktorwürde, January 2001. Technical Report, Series Öffentliche Vorlesungen, 110, Faculty of Philosophy, Humboldt-University to Berlin. (Berlin: ISSN 1618-4866, ISBN 3-86004-144-4).Google Scholar
  63. Moss, M. (2003). Why management theory needs Popper: The relevance of falsification. Retrieved November 2007 from http://www.markwmoss.com/falsificationism.htm.
  64. Naur, P., & Randell, B. (Eds.). (1968). Software engineering—Report on a conference sponsored by the NATO Science Committee. Garmisch, Germany, October 1968, published January 1969. Retrieved November 2007 from http://homepages.cs.ncl.ac.uk/brian.randell/NATO/.
  65. Nonaka, I., & Takeuchi, H. (1995). The knowledge-creating company. Oxford: Oxford University Press.Google Scholar
  66. Northover, M., Boake, A., & Kourie, D. G. (2006). Karl Popper’s critical rationalism in agile software development. Lecture notes in artificial intelligence (Vol. 4068). Heidelberg: Springer-Verlag.Google Scholar
  67. Northover, M., Northover, A., Gruner, S., Kourie, D. G., & Boake, A. (2007). Agile software development: A contemporary philosophical perspective. ACM International Conference Proceeding Series (Vol. 226, pp. 106–115). doi:http://doi.acm.org/10.1145/1292491.1292504.
  68. Penrose, R. (1989). The emperor’s new mind. Oxford: Oxford University Press.Google Scholar
  69. Polanyi, M. (1967). The tacit dimension. New York: Doubleday.Google Scholar
  70. Popper, K. R. (1963). Conjectures and refutations: The growth of scientific knowledge. London: Routledge.Google Scholar
  71. Popper, K. R. (1999). All life is problem solving. London: Routledge.Google Scholar
  72. Rayside, D., & Campbell, G. T. (2000). An Aristotelian understanding of object-oriented programming. 15th ACM SIGPLAN Conference on OOP Systems, Languages and Applications (pp. 337–353). doi:http://doi.acm.org/10.1145/353171.353194.
  73. Roscoe, A. W. (1997). Theory and practice of concurrency. London/New York: Prentice-Hall.Google Scholar
  74. Roscoe, B. (=A.W.) (Ed.). (2005). Communicating sequential processes—The first 25 years. Lecture notes in computer science (Vol. 3525). Heidelberg: Springer-Verlag.Google Scholar
  75. Sachsse, H. (1994a). Technik. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 358–361). München: DTV Wissenschaft.Google Scholar
  76. Sachsse, H. (1994b). Technologie. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 361–365). München: DTV Wissenschaft.Google Scholar
  77. Schnädelbach, H. (1994). Positivismus. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 267–269). München: DTV Wissenschaft.Google Scholar
  78. Schwaber, K. (2001). The agile alliance revolution. Cutter Consortium. Retrieved November 2007 from https://cutter.com/cgi-bin/catalog/store.cgi.
  79. Seiffert, H. (1994). Die Theorie Thomas S Kuhns. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 411–412). München: DTV Wissenschaft.Google Scholar
  80. Shaw, M. (1996). Three patterns that help [to] explain the development of software engineering. In A. Brennecke & R. Keil-Slawik (Eds.), Position Papers for Dagstuhl-Seminar 9635 on the History of Software Engineering. Schloß Dagstuhl, Germany, August 1996 (pp. 52–56). Retrieved November 2007 from http://www.dagstuhl.de/en/program/calendar/semhp/?semnr=199635.
  81. Simon-Schaefer, R. (1994). Kritische Theorie. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 172–177). München: DTV Wissenschaft.Google Scholar
  82. Smith, R. P. (1997). The historical roots of concurrent engineering fundamentals. IEEE Transactions on Engineering Management, 44(1), 67–78.CrossRefGoogle Scholar
  83. Snelting, G. (1997). Paul Feyerabend und die Softwaretechnologie. Softwaretechnik-Trends, 17(3) (Bonn: Gesellschaft für Informatik). Reprinted in Informatik Spektrum, 21(5), 273–276, 1998. Retrieved November 2007 from http://pi.informatik.uni-siegen.de/stt/17_3/17_3_LB_snelting.ps.
  84. Snelting, G. (1998). Paul feyerabend and software technology (English Translation of Snelting 1997). Software Tools for Technology Transfer, 2(1), 1–5. doi: 10.1007/s100090050013.
  85. Sommerville, I. (2007). Software engineering (8th ed.). London: Addison-Wesley Publ.Google Scholar
  86. Tichy, W. (2007). Empirical methods in software engineering research. Invited Lecture to the 4th IFIP WG 2.4 Summer School on Software Technology and Engineering, March 2007, Gordon’s Bay, South-Africa.Google Scholar
  87. Vangheluwe, H. (2008). Foundations of modelling and simulation of complex systems. Invited Lecture to the 7th GT-VMT International Workshop on Graph Transformation and Visual Modeling Techniques at ETAPS’08, March 2008, Budapest, Hungary.Google Scholar
  88. Wernick, P., & Hall, T. (2004). Can Thomas Kuhn’s paradigms help us [to] understand software engineering? European Journal of Information Systems, 13, 235–243.CrossRefGoogle Scholar
  89. Yourdon, E. (2001a). Paradigm shifts. Cutter Consortium. Retrieved November 2007 from https://cutter.com/cgi-bin/catalog/store.cgi.
  90. Yourdon, E. (2001b). The XP paradigm shift. Cutter Consortium. Retrieved November 2007 from https://cutter.com/cgi-bin/catalog/store.cgi.

Copyright information

© Springer Science+Business Media B.V. 2008

Authors and Affiliations

  • Mandy Northover
    • 1
  • Derrick G. Kourie
    • 1
  • Andrew Boake
    • 1
  • Stefan Gruner
    • 1
  • Alan Northover
    • 2
  1. 1.Department of Computer ScienceUniversity of PretoriaPretoriaRepublic of South Africa
  2. 2.Department of EnglishUniversity of PretoriaPretoriaRepublic of South Africa

Personalised recommendations