The YaM computer program provides a conceptual framework (including configuration management) and a set of software tools that support the concurrent development of reusable software by members of a team. YaM favors development of software in modules that can be assembled into packages and that, during development, serve collectively as the software analog of scaffolding that supports the development of other modules. YaM is written in Practical Extraction and Reporting Language (PERL) and is organized as a set of software utilities on top of the public-domain Concurrent Versioning System (CVS) software. Programmers can set up sandboxes for the development of modules and packages: all such development takes place on private CVS branches. High-level YaM commands support the setup, update, and release of modules and packages. Released and prebuilt versions of modules are available to all programmers on the team. Programmers can tailor the mixes of source and link modules for their sandboxes so that new sandboxes can be built up easily and quickly by pointing to previously released modules. All intermodule interfaces are publicly exported via links. A minimal, but uniform, convention is used for building modules.

This program was written by Abhinandan Jain and Jeffrey Biesiadecki of Caltech for NASA's Jet Propulsion Laboratory. For further information, access the Technical Support Package (TSP) free on-line at  under the Software category.

This software is available for commercial licensing. Please contact Don Hart of the California Institute of Technology at (818) 393-3425. Refer to


This Brief includes a Technical Support Package (TSP).
Software for Concurrent Development of Reusable Software

(reference NPO-21083) is currently available for download from the TSP library.

Don't have an account? Sign up here.

NASA Tech Briefs Magazine

This article first appeared in the October, 2001 issue of NASA Tech Briefs Magazine.

Read more articles from the archives here.