Simulation software can persist for as long as the system it models, supporting design at first, and later test, operations, maintenance, and the design of the system's replacement. Some models are built to satisfy specific, short-term needs, and these are designed, constructed, and tested with little or no concern for long-term maintenance. Large models, however, or families of models that will provide service for years, must be treated like any large software project. An appropriate lifecycle model, with careful attention to documentation, testing, and version control, are fundamental to success.

The composition of the development team is also important, and there are two roles that every simulation project must fill in some measure. Domain experts who understand the system that is being modeled are an obvious necessity. Software engineers conversant with simulation techniques—numerical analysis, discrete-event simulation, and the other topics addressed in this book—are also needed. Models for engineering often require analysts, who (perhaps surprisingly) are not necessarily domain experts, to prepare input for and process output from the model; this is particularly important when the model has substantial random elements and, consequently, statistical rigor is needed to use it effectively.

The concern of the software engineer is chiefly with the design, construction, and maintenance of the simulation program. The modular modeling framework ...

Get Building Software for Simulation: Theory and Algorithms, with Applications in C++ now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.