Automated Software Engineering, 11, 323–326, 2004 c 2004 Kluwer Academic Publishers. Manufactured in The Netherlands. Desert Island Column: Saving Software Engineering DAVID M. WEISS weiss@avaya.com Director, Software Technology Research, Avaya Labs, 233 Mt. Airy Rd., Basking Ridge, NJ 07920, USA Me: “I hear that we’re going to be cast away on a desert island for a while.” Myself: “Not only that, but while we’re there, the little software engineering knowledge that’s known to the world is going to be lost. Any books or papers that survive with us will be the sum of that knowledge when we return.” I: “Just books and papers? How would we try out our ideas without a computer? I can rig some solar cells to provide power and we could take along the Powerbook, and maybe a few DVDs to watch as well.” Me: “Brilliant. Now what should we bring? I mean, of course, in addition to our book, Software Fundamentals, which we will need to educate the next generation on the fundamental ideas and ethics of software engineering.” I: “Actually, most of what we’ve been reading lately has not been written by and for the software engineering community, but has direct relevance for them. Here’s what I mean.” Start with George Miller’s paper “The Magical Number Seven, Plus or Minus Two, Some limits on our capacity for processing information.” Miller reminds us of the limitations of the human mind and explains some simple experiments that quantify those limitations. People can’t keep more than about seven chunks of information in their short term memory at one time. Are you writing code? How many variables does someone have to keep in short- term memory to understand your code? Are you writing specifications? How much context does one need to read them? Remember those seven chunks; think of each chunk as an abstraction. Miller tells us that we can keep about seven abstractions in mind at one time, ergo we should choose and use a few abstractions wisely. I also think of this as one quantification of Einstein’s dictum “Everything should be as simple as possible but no simpler.” Next we move to Edward O. Wilson’s book Consilience. Wilson believes that one can give complete scientific explanations of the universe by decomposing phenomena into other, underlying, well-understood phenomena. We achieve intellectual coherence and clarity of understanding by such decomposition. The body works by interactions of organs. Organs are composed of cells. The operations of cells are dictated by DNA. DNA is composed of amino acids according to strict structuring rules. To the software engineer this may sound like a description of virtual machine layers, one of our basic architectural structuring mechanisms. Layers above may be viewed as operating on a base of instructions defined by layers below. Building your systems this way allows you to build a family of systems by adding or removing layers. Furthermore, your development process can be iterative, creating one or a few layers at a time, in part or in whole.