81 lines
No EOL
5.3 KiB
TeX
81 lines
No EOL
5.3 KiB
TeX
\project thesis
|
|
\startcomponent summary
|
|
|
|
\language[nl]
|
|
\startchapter
|
|
[title={Samenvatting},
|
|
reference=chap:summary-nl]
|
|
|
|
Het {\it leren van automaten} speelt een steeds grotere rol bij de verificatie van software.
|
|
Tijdens het leren, verkent een leeralgoritme het gedrag van software.
|
|
Dit gaat in principe volledig automatisch, en het algoritme pakt vanzelf interessante eigenschappen op van de software.
|
|
Het is hiermee mogelijk een redelijk precies model te maken van de werking van het stukje software dat we onder de loep nemen.
|
|
Fouten en onverwacht gedrag van software kunnen hiermee worden blootgelegd.
|
|
|
|
In dit proefschrift kijken we in eerste instantie naar technieken voor {\it testgeneratie}.
|
|
Deze zijn nodig om het leeralgoritme een handje te helpen.
|
|
Na het automatisch verkennen van gedrag, formuleert het leeralgoritme namelijk een hypothese die de software nog niet goed genoeg modelleert.
|
|
Om de hypothese te verfijnen en verder te leren, hebben we tests nodig.
|
|
{\it Effici\"entie} staat hierbij centraal: we willen zo min mogelijk testen, want dat kost tijd.
|
|
Aan de andere kant moeten we wel {\it volledig testen:}
|
|
als er een discrepantie is tussen het geleerde model en de software, dan willen we die met een test kunnen aanwijzen.
|
|
|
|
In de eerste paar hoofdstukken laten we zien hoe testen van automaten te werk gaat.
|
|
We geven een theoretisch kader om verschillende, bestaande {\it $n$-volledige testgeneratiemethodes} te vergelijken.
|
|
Op grond hiervan beschrijven we een nieuw, effici\"ent algoritme.
|
|
Dit nieuwe algoritme staat centraal bij een industri\"ele casus waarin we een model van complexe printer-software van Oc\'e leren.
|
|
We laten ook zien hoe een van de deelproblemen -- het {\it onderscheiden van toestanden} met zo kort mogelijke invoer -- effici\"ent kan worden opgelost.
|
|
|
|
Het tweede thema in dit proefschrift is de theorie van formele talen en automaten met {\it oneindige alfabetten}.
|
|
Ook dit is zinnig voor het leren van automaten.
|
|
Software, en in het bijzonder internet-communicatie-protocollen, maken namelijk vaak gebruik van \quotation{identifiers} om bijvoorbeeld verschillende gebruikers te onderscheiden.
|
|
Het liefst nemen we oneindig veel van zulke identifiers aan, aangezien we niet weten hoeveel er nodig zijn voor het leren van de automaat.
|
|
|
|
We laten zien hoe we de leeralgoritmes gemakkelijk kunnen veralgemeniseren naar oneindige alfabetten door gebruik te maken van {\it nominale verzamelingen}.
|
|
In het bijzonder kunnen we hiermee registerautomaten leren.
|
|
Vervolgens werken we de theorie van nominale automaten verder uit.
|
|
We laten zien hoe je deze structuren effici\"ent kan implementeren.
|
|
En we geven een speciale klasse van nominale automaten die een veel kleinere representatie hebben.
|
|
Dit zou gebruikt kunnen worden om zulke automaten sneller te leren.
|
|
|
|
|
|
\stopchapter
|
|
\language[en]
|
|
\startchapter
|
|
[title={Summary},
|
|
reference=chap:summary-en]
|
|
|
|
{\it Automata learning} plays a more and more prominent role in the field of software verification.
|
|
Learning algorithms are able to automatically explore the behaviour of software.
|
|
By revealing interesting properties of the software, these algorithms can create models the, otherwise unknown, software.
|
|
These learned models can, in turn, be inspected and analysed, which often leads to finding bugs and inconsistencies in the software.
|
|
|
|
An important tool which we need when learning software is {\it test generation.}
|
|
This is the topic of the first part of this thesis.
|
|
After the learning algorithm has learned a model and constructed a hypothesis, test generation methods are used to validate this hypothesis.
|
|
{\it Efficiency} is key: we want to test as little as possible, as testing may take valuable time.
|
|
However, our tests have to be {\it complete:} if the hypothesis fails to model the software well, we better have a test which shows this discrepancy.
|
|
|
|
The first few chapters explain black box testing of automata.
|
|
We present a theoretical framework in which we can compare existing {\it $n$-complete test generation methods.}
|
|
From this comparison, we are able to define a new, efficient algorithm.
|
|
In an industrial case study on embedded printer software, we show that this new algorithm works well for finding counterexamples in the hypothesis.
|
|
Besides the test generation, we show that one of the subproblems -- finding the shortest sequences to separate states -- can be solved very efficiently.
|
|
|
|
The second part of this thesis is on the theory of formal languages and automata with {\it infinite alphabets}.
|
|
This, too, is discussed in the context of automata learning.
|
|
Many pieces of software make use of identifiers or sequence numbers.
|
|
These are used, for example, in order to distinguish differen users or messages.
|
|
Ideally, we would like to model such systems with infinitely many identifiers, as we do not know beforehand how many of them will be used.
|
|
|
|
Using the theory of {\it nominal sets}, we show that learning algorithms can easily be generalised to automata with infinite alphabets.
|
|
In particular, this shows that we can learn register automata.
|
|
Furthermore, we deepen the theory of nominal sets.
|
|
First, we show that, in a special case, these sets can be implemented in an efficient way.
|
|
Second, we give a subclass of nominal automata which allow for a much smaller representation.
|
|
This could be useful for learning such automata more quickly.
|
|
|
|
\stopchapter
|
|
|
|
|
|
\stopcomponent |