Book: Building Software for Simulation: Theory and Algorithms, with Applications in C++
Publisher: John Wiley & Sons
Simulation has made possible systems that would otherwise be impracticable. The sophisticated controls in modern aircraft and automobiles, the powerful microprocessors in desktop computers, and space-faring robots are possible because simulations reduce substantially the need for expensive prototypes. These complicated systems are designed with the aid of sophisticated simulators, and the simulation software itself has therefore become a major part of most engineering efforts. A project’s success may hinge on the construction of affordable, reliable simulators.
Good software engineering practices and a serviceable software architecture are essential to building software for any purpose, and simulators are no exception. The cost of a simulator is determined less by the technical intricacy of its subject than by factors common to all software: the clarity and completeness of requirements, the design and development processes that control complexity, effective testing and maintenance, and the ability to adapt to changing needs. Small software projects that lack any of these attributes are expensive at best, and the absence of some or all of these points is endemic to projects that fail.
A unique guide to the design and implementation of simulation software
This book offers a concise introduction to the art of building simulation software, collecting the most important concepts and algorithms in one place. Written for both individuals new to the field of modeling and simulation as well as experienced practitioners, this guide explains the design and implementation of simulation software used in the engineering of large systems while presenting the relevant mathematical elements, concept discussions, and code development.
The book approaches the topic from the perspective of Zeigler's theory of modeling and simulation, introducing the theory's fundamental concepts and showing how to apply them to engineering problems. Readers will learn five necessary skills for building simulations of complicated systems:
Working with fundamental abstractions for simulating dynamic systems
Developing basic simulation algorithms for continuous and discrete event models
Combining continuous and discrete event simulations into a coherent whole
Applying strategies for testing a simulation
Understanding the theoretical foundations of the modeling constructs and simulation algorithms
The central chapters of the book introduce, explain, and demonstrate the elements of the theory that are most important for building simulation tools. They are bracketed by applications to robotics, control and communications, and electric power systems; these comprehensive examples clearly illustrate how the concepts and algorithms are put to use. Readers will explore the design of object-oriented simulation programs, simulation using multi-core processors, and the integration of simulators into larger software systems.
The focus on software makes this book particularly useful for computer science and computer engineering courses in simulation that focus on building simulators. It is indispensable reading for undergraduate and graduate students studying modeling and simulation, as well as for practicing scientists and engineers involved in the development of simulation tools.