I want to start a simulation project, which will be a descrete-time simulation. The purpose is simulating agent communication with some non-autonomous physical models involved, so it is not necessarily limited to a pure agent-based simulation. Before starting, I wanted to ask what software engineering practices specific to simulation do exist, for example test practices (TDD suited? Simulation tends to be hinghly non-deterministic), which problems from a software engineering point of view are common, often occurring problems, etc. I am not talking about the modelling process, but the process of the realization of a system that uses existing models. Related book recommendations are very welcome.
Thanks.
Marcin is right, this question is much too broad to have a correct answer apart from It Depends.™
The main reason for this is that simulation software is, first and foremost, still ‘just’ software, and the engineering part very much depends on your requirements (programming language, purposes of the software, time budget, constraints on resources, etc.).
Of course, there might be additional steps involved (such as VV&A) and certain tasks need extra care, such as testing, but all this depends on the context.
Also, before you start hacking away, have you looked at existing tools – maybe there is a library or framework that you can rely on? If so, what approaches have worked there?
Except general introductions (like this), most books and papers are also focused on specific subsets of simulation software (e.g. simulation software in C++, or agent-based simulations, or parallel and distributed simulations). So without more context it is hard to even point you to relevant material.