Out of the Tar Pit

Complexity is the single major diculty in the successful development of large-scale software systems. Following Brooks we distinguish accidental from essential diculty, but disagree with his premise that most complexity remaining in contemporary systems is essential. We identify common causes of complexity and discuss general approaches which can be taken to eliminate them where they are accidental in nature. To make things more concrete we then give an outline for a potential complexity-minimizing approach based on functional programming and Codd’s relational model of data.

[1]  C. J. Date,et al.  Foundation for Future Database Systems: The Third Manifesto , 2000 .

[2]  B. Randell,et al.  Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7-11 Oct. 1968, Brussels, Scientific Affairs Division, NATO , 1969 .

[3]  Charles Antony Richard Hoare,et al.  The emperor's old clothes , 1981, CACM.

[4]  Robert A. Kowalski,et al.  Algorithm = logic + control , 1979, CACM.

[5]  Edsger W. Dijkstra,et al.  The humble programmer , 1972, CACM.

[6]  Leon Sterling,et al.  The Art of Prolog - Advanced Programming Techniques , 1986 .

[7]  Randall B. Smith,et al.  A Simple and Unifying Approach to Subjective Objects , 1996, Theory Pract. Object Syst..

[8]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[9]  Grady Booch,et al.  Object-Oriented Design with Applications , 1990 .

[10]  T. H. Merrett Persistence and Aldat , 1985, Data Types and Persistence , Informal Proceedings.

[11]  Peter Buneman,et al.  Type inference in a database programming language , 1988, LISP and Functional Programming.

[12]  Leon Sterling,et al.  The Art of Prolog - Advanced Programming Techniques, 2nd Ed , 1986 .

[13]  E. F. Codd,et al.  Extending the database relational model to capture more meaning , 1979, ACM Trans. Database Syst..

[14]  F. E. A Relational Model of Data Large Shared Data Banks , 2000 .

[15]  Henry G. Baker,et al.  Equal rights for functional objects or, the more things change, the more they are the same , 1993, OOPS.

[16]  Edsger W. Dijkstra,et al.  The humble programmer , 1972, CACM.

[17]  Limsoon Wong,et al.  Kleisli, a functional query system , 2000, J. Funct. Program..

[18]  Stéphane Bressan,et al.  Introduction to Database Systems , 2005 .

[19]  Cliff B. Jones,et al.  Specifications are not (necessarily) executable , 1989 .

[20]  Peter Van Roy,et al.  Concepts, Techniques, and Models of Computer Programming , 2004 .

[21]  Brian Randell,et al.  Software engineering : report on a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7th to 11th October 1968 , 1969 .

[22]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[23]  Richard A. O'Keefe,et al.  The Craft of Prolog , 1990 .

[24]  Philip Wadler,et al.  Monads for functional programming , 1995, NATO ASI PDC.

[25]  Dennis H. Rouvray,et al.  Beyond calculation: The next fifty years of computing , 1997 .

[26]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[27]  Frederick P. Brooks,et al.  No Silver Bullet: Essence and Accidents of Software Engineering , 1987 .

[28]  C. A. R. Hoare,et al.  The emperor's old clothes , 1981, CACM.

[29]  Edsger W. Dijkstra,et al.  The tide, not the waves , 1997 .

[30]  F. J. Corbató,et al.  On building systems that will fail , 1991, CACM.

[31]  E. F. Codd,et al.  The Relational Model for Database Management, Version 2 , 1990 .

[32]  Paul Hudak,et al.  Functional reactive animation , 1997, ICFP '97.