| Please note: This documentation is very dated and should be treated as an old draft. Among the major updates as of 8/2005 are a jump from version .6 to .8, the renaming of staging to launcher. |
Pyre is a framework, a combination of software and design philosophy that promotes the reuse of code. In their excellent software design book, Design Patterns, Erich Gamma et al. boil the concept of a framework concept down to, "When you use a framework, you resuse the main body and write the code it calls." They also mention, "If applications are hard to design, and toolkits even harder, then frameworks are hardest of all." By its definition, a framework is object-oriented, with a set of classes that collaborate with each other.
The Pyre framework provides a multitude of features aimed at enabling the scientific non-expert to perform tasks easily without hindering the expert. Target features for end-users allow complete and intuitive simulation specification, reasonable defaults, consistency checks of input, good diagnostics, easy access to remote facilities, and status monitoring. Target features for developers include easy access to user input, a shorter development cycle, and good debugging support.
The structure of Pyre's software architecture includes a specification of the software system, a description of the crucial structural elements and their interfaces, a specification for the possible collaborations of these elements, and a strategy for the composition of structural and behavioral elements.
Pyre combines several individual layers to produce a framework, including a specification of the organization of the software system, a description of the crucial structural elements and their interfaces, a specification for the possible collaborations of these elements, and a strategy for the composition of structural and behavioral elements.