Skip to main content
Log in

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

  • Discussion
  • Published:
Journal for General Philosophy of Science Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Notes

  1. We call our article ‘essay’, in appreciation of Brooks’ famous ‘Essays on Software Engineering’ (Brooks 1995). As far as ethics of software engineering is concerned, we have not yet studied how it would differ specifically from the general ethics of engineering (or technics, or technology) which were already discussed by many contemporary philosophers.

  2. Recently it was reported in the news that Iranian programmers have (allegedly) programmed an Islamist computer game, which mimics the corresponding Western games but with reversed roles: the player of that game will find himself in a scenario in which he has to fight an anti-Western campaign in the role of an ardent religious Jihadist. The game seems to have become quite popular amongst the disgruntled Oriental youths.

  3. For a general introduction to the philosophy of technics (technology, engineering), we refer to well-known modern and contemporary philosophers such as H. Beck, N. Berdjajew, F. Dessauer, J. Ellul, A. Gehlen, A. Huning, E. Kapp, H. Lenk, R. Mackey, C. Mitcham (Mitcham and Mackey 1973), F. Rapp, G. Ropohl, H. Sachsse, K. Schilling, H. Stork, K. Tuchel, A. Wenzl, S. Wollgast, W. Zimmerli, B. Zschimmer, and many others. For the difference between ‘technics’ and ‘technology’ see Sachsse (1994a, b). A bibliography newer than (Mitcham and Mackey 1973), comprising more than 100 titles on this topic, can be found on the internet at http://www.stefan-gruner.de/Bibl-Phil-Eth-Techn.zip.

  4. We have used a general dictionary here, instead of a specific historic-philosophical one, because specialist dictionaries, in all their ‘scholastic’ subtlety often obfuscate (rather than clarify) the term in question.

  5. Thus, operating systems, too, are a manifestation of a general principle of abstraction, which is one of the most important methodological guidelines in computer science and SE.

  6. The fact that the conference was organised under the umbrella of the NATO in the middle of the ‘Cold War’ also indicates the importance of software systems from a military perspective—like every novel technology in its own historical time.

  7. See, for example, ICSE Conference 2008, on the internet at http://icse08.upb.de/program/40years.html.

  8. That seminar was attended, inter alia, by Naur and Randall of the 1968 NATO Garmisch event, as well as by ‘celebrities’ such as Parnas, Boehm (2002), Shapiro, etc.

  9. It provoked, for example, Knuth’s response about structured programming with GOTO commands (Knuth 1974).

  10. The website http://www.sereferences.com/software-failure-list.php lists a number of spectacular software failures which are all due to the intrinsic complexity of modern software systems and the limited ability of the human mind to cope with such high levels of structural and behavioural complexity; see also Brooks (1995) for comparison.

  11. The ‘Waterfall’ development process, adopted by SE from classical engineering disciplines, is nicely summarised and discussed also by Arageorgis and Baltas (1989, pp. 225–226); however they make the mistake of confusing the terms ‘efficient’ and ‘effective’: where they say ‘effective’ they should have said ‘efficient’. (‘Effective’ merely means that a desired result is achieved within a finite—however long—period of time.)

  12. German-speaking readers should keep in mind that the English word ‘methodology’ is conceptually closer to the German words ‘Methode’ or ‘Methodik’ rather than to the German ‘Methodologie’; it means a framework of related methods rather than a fully elaborated science or theory of methods: see Geldsetzer (1980) for comparison.

  13. There are, of course, ad-hoc ‘micro-plans’ for “responding to change”. The process is not supposed to be chaotic.

  14. For this reason a philosophical analysis of SE might even be interesting for philosophers in the tradition of Structuralism.

  15. Margolis acknowledges his indebtedness to Peirce for the type-token-distinction, although he also notes that he departs from Peirce’s usage who perceived types and tokens exclusively as signs.

  16. This is related to questions of organisational knowledge, upon which we shall touch only briefly in Sect. 6.

  17. For a brief overview of Feyerabendianism in SE see Gruner (2007). For a more profound critique of Feyerabendianism in SE see Snelting (1997, 1998). Another example of Feyerabendianism in computer science can be found on the internet at http://www.dreamsongs.com/Feyerabend/ETAPS03/.

  18. Our colleague, Morkel Theunissen, hinted in a private communication at the powerful role of the American DARPA doctrine in the widespread adoption of the strictly hierarchy-procedural development process both in classical-mechanical and in SE.

  19. This ‘rapid’ engineering method was ignored the methodological discussion of Arageorgis and Baltas (1989), presumably because this detail was not central to their general ‘science versus engineering’ theme.

  20. This entire synopsis is intentionally limited to literature that explicitly applies the theories of professional philosophers and excludes any literature that uses the word ‘philosophy’ loosely in the senses of ‘guiding principle’ or ‘general outlook on life’.

  21. ‘Ontology’ in SE does not have the same meaning as in philosophy. An ‘ontology’ in SE is, basically, a ‘name space’.

  22. In our opinion, OOP should be better characterized as ‘Aristotelian’ rather than ‘Platonic’, but this discussion would lead us too far away from the central topic of our paper; see Rayside and Campbell (2000) for comparison.

  23. We cite several authors whose writings have been published in the Cutter Consortium’s own book series. All of them can be found in the Cutter Consortium’s own bookstore (Cutter 2007).

  24. K. Beck: Personal e-mail communication with M. Northover, December 2006.

  25. Model checking is a method of testing the possible behaviour of a finite-state machine against a formal specification in a temporal logic, to generate counterexamples or refutations if the specification is violated.

  26. This includes ourselves, the authors of this essay; none of us is a professional philosopher.

  27. Here we refer particularly to some notoriously anti-technological paragraphs in Marcuse (1964).

  28. Note that similar thoughts are evident in the later works by M. Heidegger—technics as ‘Gestell’ (Heidegger 1949)—in spite of the School of Frankfurt regarding itself as notoriously anti-Heideggerian.

  29. D. Knuth’s seminal book ‘The Art of Computer Programming’ (Knuth 1968) was followed by D. Gries’ book ‘The Science of Programming’ (Gries 1981): this shows how slowly the computer science community is trying to come to terms with an appropriate philosophical understanding of their own practices and activities; see Bishop (1991) and Arageorgis and Baltas (1989) for comparison.

  30. Whilst some authors have claimed that Kuhn would use his term ‘paradigm’ in a large variety of different notions throughout his writings (see for example Masterman 1970), Kuhn himself, in his ‘Postscript’ (Kuhn 1970), has rejected such allegations and insisted—including a reference to Masterman—that he would use the term ‘paradigm’ in two notions only (Kuhn 1970, pp. 181–182). These are the ones which we have mentioned above.

  31. The theories, however, are like dry autumn leaves which are falling off, after having enabled the tree of science to breathe for another while. Our translation, from Mach (1871, p. 46).

  32. Note that Popper did not dispute the possibility of a positive mathematical or logical proof within the realm of mathematics; in fact Popper needs the validity of logics itself in order to be able to claim that one counter-example is sufficient to disprove an all-quantified expression of a disputed hypothesis.

  33. Mathematically verified software tends to reveal less defects in the testing phase than software which had been created without formal verification. With respect to the density of flaws in program code, the SE practitioner’s classical ‘rule of thumb’ states: ‘one flaw per thousand lines of software code’, which would sum up to approximately thousand flaws in a larger software system consisting of about one million lines of code.

  34. Entire conferences are dedicated to this specific sub-field of SE; see for example the IEEE-ICST Conference on Software Testing, Verification and Validation, on the internet at http://www.cs.colostate.edu/icst2008/.

  35. One might feel slightly reminded of Hegel’s well-known 3-step dialectics: as far as the analogy holds, a Popperian double step (TS → EE) would resemble some ‘operational refinement’ of an Hegelian ‘anti-thesis’—the well-known fundamental differences between Hegel’s and Popper’s general philosophies of history not being taken into account at this specific point.

  36. Dessauer’s fourth ‘Reich’ (realm), as the “Inbegriff aller eindeutig prästabilierten Lösungsgestalten” (Dessauer 1933, p. 50), comprises the ‘ideas’ of all technically feasible solutions which are ‘awaiting’ their ‘discovery’—similar to the realm of algorithms and mathematical solutions in the quasi-platonic ontology of Penrose (1989). Even more (namely five) ‘worlds’ (of ‘discovery’, ‘invention’, ‘development’, ‘being’, and ‘becoming’), have been distinguished by Jürgen Mittelstraß in several of his works; see for example Mittelstraß (2001).

  37. European Association of Software Science and Technology; on the internet at http://www.easst.org/.

  38. This philosophical limbo is reflected by the organisations of different universities, in which we can find computer science and SE sometimes attached to the faculties of engineering, sometimes to the faculties of mathematics and natural sciences. Moreover, within the discipline itself, there is also growing dissent about whether SE still is (or should be) a sub-discipline of computer science, or whether it is (or should be) already a discipline in its own right, emancipated from computer science (in analogy to the similar debate about the relationship between computer science and artificial intelligence some time ago).

References

  • Adorno, T., Albert, H., & Dahrendorf, R. (1993). Der Positivismusstreit in der deutschen Soziologie. München: DTV.

    Google Scholar 

  • Aichernig, B. K. (2001). Systematic Black-Box Testing of Computer-Based Systems through Formal Abstraction Techniques. Dissertation, Technische Universität Graz, Austria.

  • Albert, H. (1994). Kritischer Rationalismus. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 177–182). München: DTV Wissenschaft.

  • Alexander, C. (1999). The origins of pattern theory. IEEE Software, September/October, 71–82.

  • Arageorgis, A., & Baltas, A. (1989). Demarcating technology from science—Problems and problem solving in technology. Zeitschrift für allgemeine Wissenschaftstheorie, 20(2), 212–229.

    Article  Google Scholar 

  • Bach, J. (2000). Skill over process. Cutter Consortium. Retrieved November 2007 from https://cutter.com/cgi-bin/catalog/store.cgi.

  • Basden, A. (2008). Philosophical frameworks for understanding information systems. USA: IGI Publishing. ISBN-10: 1599040360.

    Google Scholar 

  • Beck, K. (2002). XP and culture change. Cutter Consortium. Retrieved November 2007 from https://cutter.com/cgi-bin/catalog/store.cgi.

  • Beck, K., & Andres, C. (2005). Extreme programming explained: Embrace change (2nd ed.). London: Addison-Wesley.

    Google Scholar 

  • Beck, K., & Fowler, A. (2001). Manifesto for agile software development. Retrieved November 2007 from http://www.agilemanifesto/org/.

  • Becker, W. (1994). Ideologie. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 144–150). München: DTV Wissenschaft.

  • 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 

  • Boehm, B. (2002). Get ready for agile methods, with care. IEEE Software, 35(1), 64–69.

    Google Scholar 

  • 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.

  • Brooks, F. P. (1987). No silver bullet: Essence and accidents of software engineering. Computer, 20(4), 10–19.

    Article  Google Scholar 

  • Brooks, F. P. (1995). The mythical man-month and other essays on software engineering (2nd ed.). London: Addison Wesley.

    Google Scholar 

  • Buchler, J. (Ed.). (1955). Philosophical writings of peirce. New York: Dover.

    Google Scholar 

  • Bullock, A., & Trombley, S. (Eds.). (1999). The new fontana dictionary of modern thought (3rd ed.). Glasgow: Harper Collins.

    Google Scholar 

  • Cockburn, A. (1999). A methodology per project. Retrieved November 2007 from http://alistair.cockburn.us/index.php/Methodology_per_project.

  • Cockburn, A. (2002). Agile software development (2nd ed.). London: Addison-Wesley.

    Google Scholar 

  • 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.

  • Cutter (2007). Cutter consortium, Online Bookstore. Retrieved November 2007 from https://cutter.com/cgi-bin/catalog/store.cgi.

  • Davies, R. (2006). Agile paradigm shift. Keynote lecture to the Agile North Conference, 2006. Retrieved November 2007 from http://www.agilenorth.net/DownloadFiles/2006Conference/.

  • Dessauer, F. (1933). Philosophie der Technik: Das Problem der Realisierung (3rd edn.). Bonn: Verlag von Friedrich Cohen (1st ed., 1927).

  • Dijkstra, E. W. (1968). Go-to statement considered harmful (Letter to the Editor). Communications of the ACM, 11(3), 147–148.

    Article  Google Scholar 

  • Erdmann, J. E. (1896). Grundriss der Geschichte der Philosophie (Reprint 1993: Petra Wald).

  • 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.

  • Fuller, S. (2003). Kuhn versus Popper: The struggle for the soul of science. Cambridge: Icon Books.

    Google Scholar 

  • 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 

  • Giguette, R. (2006). Building objects out of plato: Applying philosophy, symbolism and analogy to software design. Communications of the ACM, 49(10), 66–71.

    Article  Google Scholar 

  • 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.

    Article  Google Scholar 

  • Gries, D. (1981). The science of programming (1st ed.). Heidelberg/New York: Springer-Verlag.

    Google Scholar 

  • Gruner, S. (2007). The path to innovation. Innovate, 2, 96. Pretoria: ISSN 1814-443X.

  • 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 

  • 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.

  • Hanks, P. (Ed.). (1991). Collins English dictionary (3rd ed.). Glasgow: Harper Collins.

    Google Scholar 

  • Heidegger, M. (1927). Sein und Zeit (19th ed. 2006). Tübingen: Niemeyer-Verlag.

  • Heidegger, M. (1949). Die Frage nach der Technik (Reprinted 1954 in Heidegger, M., Vorträge und Aufsätze. (Pfullingen: Neske-Verlag)).

  • Hoare, C. A. R. (1985). Communicating sequential processes. London/New York: Prentice-Hall.

    Google Scholar 

  • Hoare, C. A. R. (2003a). Towards the verifying compiler. Lecture notes in computer science (Vol. 2757, pp. 151–160). Heidelberg: Springer-Verlag.

    Article  Google Scholar 

  • Hoare, C. A. R. (2003b). Assertions: A personal perspective. IEEE Annals of the History of Computing, 25(2), 14–25.

    Article  Google Scholar 

  • 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.

  • Knuth, D. (1968). The art of computer programming (1st ed.). London: Addison-Wesley.

    Google Scholar 

  • Knuth, D. (1974). Structured programming with go-to statements. ACM Computing Surveys, 6(4), 261–301.

    Article  Google Scholar 

  • Kroeze, J. H. (2007). Linguistic information—A humanistic endeavour. Innovate, 2, 38–39. Pretoria: ISSN 1814-443X.

    Google Scholar 

  • Kuhn, T. (1962). The structure of scientific revolutions. Chicago: University of Chicago Press.

    Google Scholar 

  • Kuhn, T. (1970). The structure of scientific revolutions—Postscript (2nd ed.). Chicago: University of Chicago Press.

    Google Scholar 

  • Lobkowicz, N. (1994). Interesse. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 158–160). München: DTV Wissenschaft.

  • 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.

  • 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.

  • 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).

  • Marcuse, H. (1964). One-dimensional man—Studies in the ideology of advanced industrial society. Boston: Beacon Press.

    Google Scholar 

  • Margolis, J. (1980). Art and philosophy. Sussex: Harvester Press.

    Google Scholar 

  • Marick, B. (2004). Methodology work is ontology work. ACM SIGPLAN Notices, 39(12), 64–71.

    Article  Google Scholar 

  • 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.

  • 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 

  • McElroy, W. (2002). Deep knowledge management. Retrieved November 2007 from http://www.macroinnovation.com/images/DeepKMbyM.W.McElroy.pdf.

  • 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).

  • Meyer, S. (2007). Pragmatic versus structured computer programming. Retrieved November 2007 from http://www.pragmatic-c.com/docs/structprog.pdf.

  • Mitcham, C. (1994). Thinking through technology: The path between engineering and philosophy. Chicago: University of Chicago Press.

    Google Scholar 

  • Mitcham, C. & Mackey, R. (1973). Bibliography of the philosophy of technology. Technology and Culture, 14/2, Part II.

  • 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).

  • Moss, M. (2003). Why management theory needs Popper: The relevance of falsification. Retrieved November 2007 from http://www.markwmoss.com/falsificationism.htm.

  • 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/.

  • Nonaka, I., & Takeuchi, H. (1995). The knowledge-creating company. Oxford: Oxford University Press.

    Google Scholar 

  • 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.

  • 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.

  • Penrose, R. (1989). The emperor’s new mind. Oxford: Oxford University Press.

    Google Scholar 

  • Polanyi, M. (1967). The tacit dimension. New York: Doubleday.

    Google Scholar 

  • Popper, K. R. (1963). Conjectures and refutations: The growth of scientific knowledge. London: Routledge.

    Google Scholar 

  • Popper, K. R. (1999). All life is problem solving. London: Routledge.

    Google Scholar 

  • 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.

  • Roscoe, A. W. (1997). Theory and practice of concurrency. London/New York: Prentice-Hall.

    Google Scholar 

  • Roscoe, B. (=A.W.) (Ed.). (2005). Communicating sequential processes—The first 25 years. Lecture notes in computer science (Vol. 3525). Heidelberg: Springer-Verlag.

  • Sachsse, H. (1994a). Technik. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 358–361). München: DTV Wissenschaft.

  • Sachsse, H. (1994b). Technologie. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 361–365). München: DTV Wissenschaft.

  • Schnädelbach, H. (1994). Positivismus. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 267–269). München: DTV Wissenschaft.

  • Schwaber, K. (2001). The agile alliance revolution. Cutter Consortium. Retrieved November 2007 from https://cutter.com/cgi-bin/catalog/store.cgi.

  • 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.

  • 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.

  • Simon-Schaefer, R. (1994). Kritische Theorie. In H. Seiffert & G. Radnitzky (Eds.), Handlexikon zur Wissenschaftstheorie (2nd ed., pp. 172–177). München: DTV Wissenschaft.

  • Smith, R. P. (1997). The historical roots of concurrent engineering fundamentals. IEEE Transactions on Engineering Management, 44(1), 67–78.

    Article  Google Scholar 

  • 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.

  • 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.

  • Sommerville, I. (2007). Software engineering (8th ed.). London: Addison-Wesley Publ.

    Google Scholar 

  • 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.

  • 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.

  • Wernick, P., & Hall, T. (2004). Can Thomas Kuhn’s paradigms help us [to] understand software engineering? European Journal of Information Systems, 13, 235–243.

    Article  Google Scholar 

  • Yourdon, E. (2001a). Paradigm shifts. Cutter Consortium. Retrieved November 2007 from https://cutter.com/cgi-bin/catalog/store.cgi.

  • Yourdon, E. (2001b). The XP paradigm shift. Cutter Consortium. Retrieved November 2007 from https://cutter.com/cgi-bin/catalog/store.cgi.

Download references

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.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Stefan Gruner.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Northover, M., Kourie, D.G., Boake, A. et al. Towards a Philosophy of Software Development: 40 Years after the Birth of Software Engineering. J Gen Philos Sci 39, 85–113 (2008). https://doi.org/10.1007/s10838-008-9068-7

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10838-008-9068-7

Keywords

Navigation