(based on [GR16b])
In the presence of increasing complexity, simulation has become a vital tool for obtaining additional information about a subset of the world, such as the interactions of all entities, processes, life forms, and other key components that aid in understanding a particular context. A key advantage of simulation is the Principle of Substitution, which is perhaps best summarized by a quote from Marvin Minsky:
We use the term “model” in the following sense: To an observer B, an object A∗ is a model of an object A to the extent that B can use A∗ to answer questions that interest him about A. It is understood that B’s use of a model entails the use of encodings for input and output, both for A and A∗. If A is the world, questions for A are experiments. A∗ is a good model of A, in B’s view, to the extent that A∗’s answers agree with those of A’s, on the whole, with respect to the questions important to B. ( Minsky 1965)
The following definition offers several insights into the benefits of simulation and the importance of a model toward understanding parts of a real system:
Simulation is the imitation of the operation of a real-world process or system over time. The act of simulating something first requires that a model be developed; this model represents the key characteristics or behaviors/functions of the selected physical or abstract system or process. The model represents the system itself, whereas the simulation represents the operation of the system over time. Simulation is used in many contexts, such as simulation of technology for performance optimization, safety engineering, testing, training, education, and video games. Often, computer experiments are used to study simulation models. Simulation is also used with scientific modeling of natural systems or human systems to gain insight into their functioning. (Wikipedia 2016)
The definition further states the benefits and usefulness of simulation:
Simulation can be used to show the eventual real effects of alternative conditions and courses of action. Simulation is also used when the real system cannot be engaged, because it may not be accessible, or it may be dangerous or unacceptable to engage, or it is being designed but not yet built, or it may simply not exist. (Wikipedia 2016)
The core topics and ongoing research questions driven by simulation include the following:
Key issues in simulation include acquisition of valid source information about the relevant selection of key characteristics and behaviors, the use of simplifying approximations and assumptions within the simulation, and fidelity and validity of the simulation outcomes. Procedures and protocols for model verification and validation are an ongoing field of academic study, refinement, research and development in simulations technology or practice, particularly in the field of computer simulation. (Wikipedia 2016)
Modeling is a key ingredient for all forms and purposes of simulation. While not all forms of simulation are concerned with computer systems, most applications have some computational context. When considering the high-performance computing (HPC) community as an example, it can be observed that HPC researchers practice forms of modeling quite often. However, they very rarely use explicit modeling languages, but rather encode their models in low-level, but very efficient programming languages, such as C and Fortran, or they may even adopt Python as an easy to use configuration language for their high-level configuration.
Simulation science is emerging as a new discipline that connects a large set of sub-disciplines from many areas of domain knowledge. However, a simulation technology should have a mathematical and computer science foundation to handle the forms of models usable for simulation. The math theory on derivation/integration and the digital theory defined by computer science, which is based on discrete state changes in various forms, are core requirements. Numerical and algebraic techniques, software engineering, software architecture, compiler construction, computer architectures, networking, data science, machine learning, and numerous other related disciplines are necessary to fully use high performance computers and give users of various domains the desired tools that allow the application of simulation to new problem contexts.
Although modeling is a core element of simulation, it is not clear how explicit models will need to be in the future of simulation. Currently, the driving force is still the efficiency of the running program, while the effectiveness of the developer plays a lesser role. This was true for the automotive domain 10 years ago, which relied on C and assembly code for core computation expression. However, the automotive domain evolved—partially because better and more efficient compilers are available—and adopted more higher level modeling languages for designing and implementing automotive software. It is not yet clear whether this same trend will occur in other areas, such as HPC. Early examples show that this could work. For example, one of the authors of this editorial has defined a modeling language for neurons and brain activities, now in use in the European brain project.
When simulation becomes more dominant and broadly used by various industries, then there will likely be a need for additional focus on the effectiveness of developers, and many other unities, such as re-usability of the developed simulations. More advanced simulation techniques will also drive the need for explicit modeling languages and appropriate tooling for generating and deploying efficiently running code, for gathering and analyzing the simulation data, for understanding the deviations between simulation and reality and for predicting the future.
Edward Lee’s keynote at the MiSE (Modeling in Software Engineering) workshop at ICSE 2016 underscores the importance of models and their various uses in both science and engineering: “If the model does not describe the reality, then to a scientist, the model is wrong, but to an engineer the constructed reality is wrong.” If we want to understand whether a model and its reality correspond, simulation is one of several techniques that can aid in understanding complexity.
[GR16b]In: Journal Software and Systems Modeling (SoSyM), Volume 15(3), pp. 605-607, Springer Berlin / Heidelberg, 2016.