**2.2.4 Computational model**

The Computation Model is the representation of the Conceptual Model in a programming language or simulation tool so that model can be evaluated and analyzed. The process of building the computation model is similar to application software development. Usually, the same tools are employed, such as text editors, integrated development environments (IDE's), testing tools, graphics libraries and so on.

The usage of a simulation framework allows the developer to keep her focus on the model and the simulation details instead of the programming language and running environment details. There are many simulation frameworks available, such as Repast, NetLogo and Swarm. Most of these frameworks can be combined with other tools and libraries. For instance, the Swarm Framework SwarmTeam (2008) is written in Objective-C and it also supports Java for simulation building. Since a simulation could be written in Java, it would be possible to use Java-based libraries - such as JESS Friedman-Hill (2009) - to enhance Swarm agents and the simulation as a whole.

Usually, the simulation developer must create objects that represent her agents. The agents' variables become the objects' fields. Likewise, the agents' actions become methods.

The simulation developer may face some challenges, such as:


#### **2.2.5 Verification and validation**

An aspect of great relevance in simulations is how accurately the conceptual model and the computational model depict the target system. Two processes can be used to check such confidence.

The first process is called validation. Its main purpose is to make sure that the conceptual model represents the target system in a certain (and desirable) level of precision and to show whether the simulation's results match the target system Ruas et al. (2011).

Verification goal is to certify if the conceptual model was rightfully implemented (translated) in the computation environment. Since a computer simulation works as a software application, it is possible to use software engineering tools, such as unit tests, to certify that the behavior designed for the simulation (found in the conceptual model) really happens in the software execution.

The validation process aims to certify that the conceptual model represents the target system in an acceptable degree of adherence. Thus, the validation processes fundamentally addresses a specific question: Does the simulation outcomes correspond to those from the target system? On the other hand, the verification process' main purpose is to assure that the conceptual model was correctly translated to the computational environment. Specifically, a multi-agent simulation model is based on the concept that it is feasible to simulate an artificial world inhabited by interactive computational entities. Such simulation can be achieved by transposing the population from a target system to its artificial counterpart. In that sense, an agent is similar to an entity or a group of entities of the target system. Moreover, agents can be of distinct natures and granularities, such as human beings, robots, computer algorithms, inanimate objects and organizations. (Ruas et al., 2011)
