Very Large Model: Building the Modelisation
On the previous releases of Magasin, the main program was checking all the buttons and managing the whole system. It was a top-down approach.
Due to the complexity of the New Magasin, this was no longer possible. Remember, the complexity is not a linear function based on the number of inputs and ouputs but rather a quadratic one.
Furthermore, the model uses standard sub-systems, as conveyor belts, with slight differences: I could just copy-paste a generic process and adapt it the the specific needs of one given sub-system.
So I used a bottom-up approach instead. I considered each part of my model or each sub-system as a whole system per se, and analysed its interactions with its environment.
Actually, one sub-system only interacts with two sub-systems: the one which comes before and the one which comes after. So with this way, exponential complexity is avoided. Two close processes are going to publish and read their status, based on a protocol.
I reused the parallel processing idea from the Synchronised Conveyor Belts. Each sub-system is going to have its own process, and the processes are going to exchange information about their respective state.
Actually, the modelisation wasn't very difficult to establish. The map below gives the 7 processes the New Magasin relies on.
However, there's a minor difference between the way the Synchronised Conveyor Belts works and the New Magasin does: