Abstract : Computer simulation is used for many purposes and is one of the first 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 engi- neering), the motivations for reuse have long been advocated and dem- onstrated: lower risks of defects, collective support of potentially larger user community, lower development costs, and so on. In simulation soft- ware architectures, we can also cite business-specific 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: reus- ing and being reused. Accordingly, this chapter is divided into two parts, each geared at one of these two directions. This dichotomy also reflects the dual nature of modeling & simulation (M&S), with modeling on one side, which requires domain-specific 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 first part of this chapter demonstrates how some of the main features required for building the simulation engine can be found in existing general pur- pose software solutions, while the second part of this chapter demon- strates how specifically 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 first part is primarily intended for first-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 simu- lation software developers, that look for ideas and techniques to further improve the design of their more mature simulation software.