pyam is a software development framework with tools for facilitating the rapid development of software in a concurrent software development environment. pyam provides solutions for development challenges associated with software reuse, managing multiple software configurations, developing software product lines, and multiple platform development and build management. pyam uses release-early, release-often development cycles to allow developers to integrate their changes incrementally into the system on a continual basis. It facilitates the creation and merging of branches to support the isolated development of immature software to avoid impacting the stability of the development effort. It uses modules and packages to organize and share software across multiple software products, and uses the concepts of link and work modules to reduce sandbox setup times even when the codebase is large. One side-benefit is the enforcement of a strong module-level encapsulation of a module’s functionality and interface. This increases design transparency, system stability, and software reuse.

pyam is written in Python and is organized as a set of utilities on top of the open source SVN software version control package. All development software is organized into a collection of “modules.” pyam “packages” are defined as sub-collections of the available modules. Developers can set up private sandboxes for module/package development. All module/package development takes place on private SVN branches. Highlevel pyam commands support the setup, update, and release of modules and packages. Released and pre-built versions of modules are available to developers. Developers can tailor the source/link module mix for their sandboxes so that new sandboxes (even large ones) can be built up easily and quickly by pointing to pre-existing module releases. All intermodule interfaces are publicly exported via links. A minimal, but uniform, convention is used for building modules

This work was done by Steven Myint and Abhinandan Jain of Caltech for NASA’s Jet Propulsion Laboratory. For more information, contact This email address is being protected from spambots. You need JavaScript enabled to view it..

This software is available for commercial licensing. Please contact Daniel Broderick of the California Institute of Technology at This email address is being protected from spambots. You need JavaScript enabled to view it.. NPO-48447

NASA Tech Briefs Magazine

This article first appeared in the December, 2012 issue of NASA Tech Briefs Magazine.

Read more articles from this issue here.

Read more articles from the archives here.