Source: https://www.reseaucerta.org/sites/default/files/Exolab-Exercice-SyntheseSISR2-01.pdf