Next Generation Software Configuration Management System

As companies move towards larger software projects, management of these projects becomes a crucial issue. Software management can take on many meanings, from revision control to dependency tree specification. The dependency tree specification side of software management has been chiefly controlled by the UNIX Make command. This lightweight, text-based program allows users to specify dependencies between files and then to execute the Make command. Make evaluates which files have changed since the last compile and then recompiles only the files that depended upon the changed files. This concept allows for only parts of large software projects to be recompiled, reducing the amount of time and resources consumed. There are many properties that are missing from the UNIX Make environment. Make is not user-friendly. The dependency graph has no visual representation, which can make managing large projects difficult. More importantly, Make does not allow for files to be distributed across the network. This is becoming a more important part of the software development world as companies have branches throughout the world where many teams are working together on a project. In this paper a design is presented of a Next Generation Software Configuration Management System. The traditional features of Make are incorporated and expanded upon. Background information in the configuration management field is presented to show some of the many uses of configuration management today and the future. Examples of Make are given so as to be referenced throughout and used to explain how the system presented here meets the requirements of being upwardly compatible with Make. Formal specification is employed to describe the design of the system and show that it allows for such functions as saving, loading, editing, viewing, and compiling a dependency tree. Specifications for converting a datafile from Make are also given to allow for a way for users to convert existing projects into the native format of this product. Some screenshots from a sample graphical user interface are also presented. These are to be used as guidelines for what the functionality and look of the implemented product should be.