EaSy Sim


Modeling and Simulation Project

David Bélanger
Hesheng Chen


Two simulators will be designed and implemented:

Emphasis will be put on the ES Simulator.

Software Engineering Process

We will iterate several times through five phases. Each iteration will result with a prototype. The first prototype would contain basic functionality. Also, features that we are not sure how to design and implement will be prototyped early. Further iterations will improve the prototype.

Figure 1 shows the development cycle.

Fig. 1 - Five Phases

We now briefly describe each phase.

Requirements and Use Cases

Requirements consist of this document. Once defined and aproved, there should be no major change. They will be reviewed at every iteration to ensure that they are being fullfilled.

Test Cases

This phase consists of developping test cases using the Python pyUnit framework. In order to do this, the API will be designed at this phases.


In this phase we will design the algorithms and data structures that will be used to achieve the goals. The design will be documented and UML diagrams will be used.


We will implementation our design in the Python programming language.


Our simulators will be tested using test cases developed in the second phase. This will help ensure that our design and implementation fit the requirements.

Platform and Development Tools

Work Planning

Our team consists of two people. In the spirit of extreme programming, we will work together on most modules. No specific modules have been assigned to each team member. Assignment on a per module or per class basis will be done as time comes.

We are also planning to let the Hybrid (ODEs and Event Scheduling) simulator group composed of Olivier Dubois and Eric McSween use our ES simulator as part of their project. This will give them more time to work on other parts of their simulator as well as help us improve and debug our ES simulator from their feedback.

Design Goals

Design Specification

Event Scheduling


A model should be composed of only events and state variables. Two kinds of events will have a special meaning to the simulator kernel:

The simulator will provide a default StartEvent and EndEvent.


State Variables

A model may use any number and any type of state variables. In our object-oriented design, state variables will be objects. Statistics will be automatically gathered by the simulator.


The final software product will make use of its own Random Number Generator (RNG). We will use a RNG that is known to be good for simulation purposes instead of the RNG provided by the Python library. The source code is provided in C, we will translate it to Python.


The simulator will gather data to allow the user to plot Event and State Trajectory graph. It is not required that the simulator itself contains a plot module. It could instead save all the data to a text file and let the user use GNU plot or any other software to plot the data.

Performance metrics

Built-in primitive including average queue length and utilization of resources will be automatically computed by the simulator. The user will also have the possibility to use these as building blocks for more complex performance metrics formula.

Activity Scheduling

Our goal is to have a basic (although general enough to be used for several models) AS simulator. We list below the requirements and optional functionality that may be added.


The model consists only of activies.


Each activity consists of a condition with several actions. Activities can have priorities and can also be parametrized.


We briefly list optional features of the AS simulator:

$Id: reqs.html,v 1.2 2003/03/23 19:11:44 dbelan2 Exp $