ABSTRACT

Introduction Computer simulation is used for many purposes and is one of the rst applications of computer programming. Given this long history and the many intended use of the simulation software written so far, writing about simulation software architectures without an additional strong point of focus would certainly turn into a challenging and endless exercise. In this chapter, our additional point of focus is placed on reuse. In general purpose software engineering (as opposed to simulation software engineering), the motivations for reuse have long been advocated and demonstrated: lower risks of defects, collective support of potentially larger

Introduction .................................................................................................... 263 Reusing ............................................................................................................ 264

Front-end user interface ........................................................................... 266 Project management .................................................................................. 268 Management of workows ...................................................................... 271 Online database ......................................................................................... 272 Component-based modeling ................................................................... 275

Being reused .................................................................................................... 277 Component-based architectures.............................................................. 277

Plug-in-based approach ....................................................................... 277 Component objects and inversion of control .................................... 279

Multilayered component architecture .................................................... 280 Dimensions ............................................................................................ 280 Technical issues ..................................................................................... 282 Example of layer separation using AOP ........................................... 283 Layer separation using Fractal ADL .................................................. 286

Conclusion ...................................................................................................... 289 References ........................................................................................................ 291

user community, lower development costs, and so on. In simulation software architectures, we can also cite business-specic motivations, such as providing a better reproducibility of simulation experiments, or avoiding a complex validation process. In practice, although it is rarely discussed, reuse is a problem that may be considered in two opposite directions: reusing and being reused. Accordingly, this chapter is divided into two parts, each geared at one of these two directions. This dichotomy also reects the dual nature of modeling & simulation (M&S), with modeling on one side, which requires domain-specic support and aims at being reused, and simulation on the other side, which requires a number of generic software elements and aims at reusing general purpose solutions. Hence, the rst part of this chapter demonstrates how some of the main features required for building the simulation engine can be found in existing general purpose software solutions, while the second part of this chapter demonstrates how specically tailored techniques and solutions have to be used to solve critical issues related to the modeling aspect. The two parts of this chapter also target different audiences: the rst part is primarily intended for rst-time experimenters and beginners that look for tips and ideas on how to start a new simulator development project without wasting too much time on reinventing the wheel with graphical user interfaces, data base, and so on; the second part is rather intended for experienced simulation software developers, that look for ideas and techniques to further improve the design of their more mature simulation software.