This book presents a comprehensive survey of the Vesta system for software configuration management (SCM). Vesta, unlike other SCM systems, is specifically designed to handle very large software projects comprising tens of millions of lines of code and beyond. Researchers in the field of software engineering and specialists in the construction of software development tools will especially benefit from this work, but it will also appeal to those responsible for designing and deploying configuration management solutions for large software systems.
Three important but hard-to-achieve properties lie at the heart of Vesta's unique approach to software configuration management:
Every build is repeatable
Every build is incremental
Every build is consistent
To realize these properties in a practical SCM system, Vesta provides a novel repository to store the versions of the files that make up an evolving software system and a flexible language for writing modular configuration descriptions that define how the system is put together. This book explains in depth these facilities and the suite of tools that supports them, together with a methodology for applying them in practice.
Readers who seek more information about Vesta may download the entire system as well as other publications, reference documents, and user documentation from the Vesta home page at http://www.vestasys.org.
This monograph, and accompanying open-source software Vesta, addresses two core problems in developing large software projects: 1) versioning and 2) building. In order to develop and sustain automated, scalable "software configuration management (SCM) systems," software systems engineers need to understand how large software code bases can be effectively managed and evolved. Using a well-known open-source software prototype system (Vesta developed at Digital and Compaq Systems Research Lab), the authors meticulously assess, develop, and demonstrate key concepts and methods to achieve such evolvable and scalable software systems. The concepts, lessons, and executable code allow researchers to develop a deeper understanding of the problems, and solution domains possible, for large-scale software construction practices.