Software Archeology Grady Booch IBM Fellow. Software Archeology. What it is/what it not/why we dig The process of archeology Architectural reconstruction Handbook of Software Architecture Preservation of classic software. How Much Software Exists In The World?. (not a measure of value)

Copyright Complaint Adult Content Flag as Inappropriate

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

Those interests which pertain to the system's development, its operation or any other aspects that are critical or otherwise important to one or more stakeholders. Concerns include system considerations such as performance, reliability, security, distribution, and evolvability (IEEE Std 1471-2000, 2000, p. 4).

View

A representation of a whole system from the perspective of a related set of concerns (IEEE Std 1471-2000, 2000, p. 3).

The view of a system's architecture that encompasses the use cases that described the behavior of the system as seen by its end users and other external stakeholders.

Logical view

The physical place where a system is developed, used, or deployed.

Process view

The view of a system's architecture that encompasses the threads and processes that form the system's concurrency and synchronization mechanisms; a process view addresses the performance, scalability, and throughput of the system.

Implementation view

The view of a system's architecture that encompasses the components used to assemble and release the physical system; an implementation view addresses the configuration management of the system's releases, made up of somewhat independent components that can be assembled in various well-structured ways to produce a running system.

Deployment view

The view of a system's architecture that encompassesthe nodes the form the system's hardware topology on which the system executes; a deployment view addresses the distribution, delivery, and installation of the parts that make up the physical system.

I'm seeking your help in preserving classic software products before they are forever lost to future generations.

As Bjarne Stroustrup, the inventor of C++, has observed, "our civilization runs on computers." There are a number of organizations - most notably the Computer Museum History Center - dedicated to preserving classic hardware, but it occurs to me (and others) that we should also preserve classic software as well.

There are a number of reasons to act now. Although many of the authors of such systems are still alive and many others may have the source code or design documents for these systems collecting dust in their offices or garages, time is our enemy and over time, these artifacts will become irretrievable. By the way, notice that I said "source code" and "design documents." Executables are interesting only insofar as we have the machines upon which to run them (and preserving running hardware is an entirely different issue), but the code and designs that these executables manifest tell us much about the state of the software practice, the minds of their inventors, and the technical, social, and economic forces that shaped these products in their time. Preserving such artifacts for future generations is certainly a valuable historical curiosity, but they also offer a statement of prior art (relevant to the issues of proving/disproving software patents), the evolution of software architecture (and how they were products of their time), and the creation of architectural patterns (patterns are common solutions to common problems, and such patterns have emerged for particular domains and development cultures). Preserving such artifacts also provides the raw materials for future generations of software archeologists, historians, and software developers (the latter who can learn from the past regarding what worked and what didn't as well as what was brilliant and what was an utter failure).

What constitutes a classic software product? I can only offer the subjective criteria that such a product is one that made a seminal technical, economic, or social difference. Lisp 1.5, the Mark I Time Sharing System, Smalltalk-72, Dijkstra's THE operating system, Unix/Linux, and EMACS are all examples of technically significant products. DOS, Windows 3.1, VisiCalc, and the original Mac OS all had significant economic impact. Space War, Pong, Zork, sendmail, IM, and the original Netscape browser all wove themselves into the fabric of society.

I'm not affiliated with the Computer Museum, although, from my discussions with them, my intent is to initiate this effort but to deliver up all such artifacts to them for their preservation and care. I expect to be creative - some of you have or may know of people who have dusty card decks, listings, or disks that we'd want to scan, capture and otherwise preserve, while certain companies may have source code locked up in their vaults as precious intellectual property yet who might be open to the suggestion of putting that source code into some secure escrow so that 50 or even 100 years from now, at which time there would be zero value in that IP, we could open a time capsule of software.

You are receiving this email because you are an important contributor to the theory and/or practice of software. I've emailed about 500 such folks, ranging from Turing Award winners to CTOs/CEOs, and researchers. I apologize if I've spammed you, but I know of no better way to begin this effort than to connect with those people who have helped invent the present and will continue to invent the future.

To draw this message to a close, I'm only asking two things of you. At the very least, could you respond to the first? If you are so able, some help on the second would be of enormous value.

First, tell me what's in your top ten list of classic software products. What software artifacts would you want to preserve for future generations, products that made a difference in shaping the software industry?

Second, please let me know if you have access to any such artifacts or if you know of colleagues who do. I'm aware of a few related efforts to keep old software running, and if you know of other such activities, please help me get in touch with their organizers. I'll happily absorb card decks, listings, documents, napkins full of sketches, and the like. If your company owns the rights to some of these artifacts, let's enter into a serious dialog about how we might put those artifacts into secure escrow to save them before your company discards them by intention, neglect, or merger/economic demise. If you are or know of the original architects of these classic software products, let's also talk about capturing an oral history of their creation.

Thank you for your time in listening to my ranting. Personally, I'm doing this because the software industry has been good to me, and I simply want to give back to those who will drive our industry in the future.