Software Resurrection Exercises

by

Introduction

Reading computer program code and documentation written by others is, we are told, one of the best ways to learn the art of writing intelligible and maintainable code and documentation. However, the complexity of modern production code is often off-putting for learners. The software resurrection exercise, introduced in this paper (pdf), requires a motivated learner to compile and test a historical release (e.g. 20 years old) version of a well maintained and widely adopted open source software on a modern hardware and software platform. This exercise concludes by writing a critique based on issues encountered while compiling and testing a historical software release on a hardware and software platform that could not have been foreseen at the time of release. The learner is also required to fix the issues as a part of the software resurrection exercise. The exercise of resurrecting a historical software allows motivated learners to experience the pain and joy of software maintenance which is essential for understanding the factors that contribute to intelligibility and maintainability of program code and documentation. The concept of software resurrection exercise is illustrated using a version of the SQLite database engine that was released 20 years ago. This illustration shows that software engineering principles (or programming pearls) emerge when a historical software release is adapted to run successfully on a modern platform. The software resurrection exercise also has the potential to lay foundations for a lifelong willingness to explore and learn from existing program code.

Software resurrection exercise begins with compilation of an old release of a well maintained and widely used software in a modern hardware and software platform. After successful compilation, the software's functionality is verified using automated suite of tests included with the release. Learning opportunities are provided by failure in compilation and testing processes. Learners engage with the program code and documentation to develop a fix for these issues. Finally, the exercise concludes by writing a critique of the software code and documentation which provides the opportunity to reflect on the experiences of compiling and testing the software in a modern platform.

Examples of Software Resurrection Exercise

Here are some examples of software resurrection exercise carried out on some well maintained and widely adopted open source software tools with a long history.