# Hoofdstuk 2 terugblik

In grote lijnen zijn er 3 functies bij het gebruik van modellen zoals automaten tijdens systeemontwikkeling.

1. Inzicht in een probleem
Een eindige automaat bedenken helpt de ontwikkelaar (jou dus) om een complex probleem helder en overzichtelijk te maken.
Bij de Roomba en de verkerslichten kun je vooraf bepalen welke toestanden nodig zijn, wat de software moet doen en welke sensoren en actuatoren daarbij nodig zijn. Bij de verkeerslichten zag je ook dat het model eenvoudiger kon dan op het eerste gezicht leek.

2. Compleet en veilig ontwerpen
Eindige automaten zijn ook een handig hulpmiddel te kijken of een apparaat doet wat het moet doen en of het veilig is. Er wordt daarbij onderscheidt gemaakt in liveness (wat moet wel voorkomen) en safety (wat mag juist niet voorkomen) eigenschappen.

Bij de Roomba kwam je vragen tegen als "Kan alle vuil worden opgezogen (anders gezegd is de hele kamer op één of andere manier bereikbaar en gebeurd dat ook?) en ook bivoorbeeld "zal de Roomba nooit blijven staan zonder stroom?".

3. Theoretische informatica
Ten slotte spelen eindige automaten ook een belangrijke rol in de theoretische informatica. Bijvoorbeeld het bepalen of een bepaald algoritme correct, effectief en efficiënt is.

Bij de Roomba zou je kunnen denken of de route van de Roomba wel slim wordt gekozen zodat alle plaatsen ongeveer even vaak worden bereikt.
Of zelfs dat vuile plaatsen vaker dan minder vuile plaatsen wordn bezocht. In dit laatse geval kom je al op het grensvlak van kunstmatige intelligentie.

Inmiddels heb je weer 3 lessen (een weektaak) afgerond. Aan het begin van de volgende les maak je eerst weer een testje over de leerdoelen van les 4 les 5 en les 6, bekijk deze nog eens!

In de test gaan we er vanuit dat je zelf een eenvoudige automaat kunt satrten en aanvullen met behulp van de Automaton Simulator.