Skip to content
Snippets Groups Projects
Commit 84b3a9cf authored by Jaime Arias's avatar Jaime Arias
Browse files

remove object files

parent 17dd727e
No related branches found
No related tags found
No related merge requests found
<<<<<<< README.md # Symbolic Observation Graph-Based Generation of Test Paths
# Tool for Symbolic Observation Graph-Based Generation of Test Paths
From the description of Petri net, this code is able to generate the observable paths then the abstract paths.
--- REQUIREMENTS ---------------------------------------------------- `sog-test-paths` generates the observable paths from a Petri net model. It also
--------------------------------------------------------------------- generates the abstract paths.
* A C++ compiler (gcc version 9.3.0). ## Requirements
--- USE ----------------------------------------------------------- - A C++ compiler (`gcc >= 9.3.0`).
---------------------------------------------------------------------
To compile this collection of code you have to: ## Use
-First,run the "make" command inside of the directory "buddy22". This will create/update the library libbdd.a this directory includes the library of Binary Decision Diagrams. To compile the tool you have to:
-Second, run "make" in the "parser" directory, this directory is responsible for the creation of the Petri net from its description file "file.net". - First, run the `make` command inside the directory `buddy22`. This will
create/update the library libbdd.a this directory includes the library of Binary
Decision Diagrams.
-Then, you run the "make" command in the main directory to generate the executable file "StructAnalysis". -Second, run "make" in the "parser" directory, this directory is responsible for the creation of the Petri net from its description file "file.net".
-To run this executable on any example, we have to access the main directory and execute the command "./StructAnalysis ./Samples/file.net" for the paper we used the example file Samples/exemple.net. -Then, you run the "make" command in the main directory to generate the executable file "StructAnalysis".
-To run this executable on any example, we have to access the main directory and execute the command "./StructAnalysis ./Samples/file.net" for the paper we used the example file Samples/exemple.net.
--- Exemple ------------------------------------------ ## --- Exemple ------------------------------------------
------------------------------------------------------
We treat the exemple of 2 dining philosophers. We treat the exemple of 2 dining philosophers.
The figure bellow represents the Petri Net corresponding to 2 philosophers. The figure bellow represents the Petri Net corresponding to 2 philosophers.
<p align="center"> <p align="center">
<img src="philo2.png" width="350" alt="petri net"> <img src="philo2.png" width="350" alt="petri net">
</p> </p>
*Step1: Extract the set of unobservable transitions using the pattern. For this exemple Unobs={GoEat0, GoLeft0, GoRight0, GoEat1, GoLeft1, GoRight1}.<br />
*Step1: Extract the set of unobservable transitions using the pattern. For this exemple Unobs={GoEat0, GoLeft0, GoRight0, GoEat1, GoLeft1, GoRight1}.<br /> *Step2: Deduce the set of observable transitions. Obs={Release0, Release1}.<br />
*Step2: Deduce the set of observable transitions. Obs={Release0, Release1}.<br /> *Step3: Build the SOG (Symbolic Observation Graph) starting from the Petri Net and the set of observable transitions and build the observable paths on the fly. We get the set of observed paths {\<Release0\>,\<Release1\>}. <br />
*Step3: Build the SOG (Symbolic Observation Graph) starting from the Petri Net and the set of observable transitions and build the observable paths on the fly. We get the set of observed paths {\<Release0\>,\<Release1\>}. <br /> *Step4: Complete the Observable paths by unobservable transitions by making backtracking in each aggregate.
*Step4: Complete the Observable paths by unobservable transitions by making backtracking in each aggregate. The final result for this example is the set of abstract paths (complete paths): {\<GoEat0 GoRight0 GoLeft0 Release0\>,\<GoEat1 GoRight1 GoLeft1 GoEat0 Release1\>}
The final result for this example is the set of abstract paths (complete paths): {\<GoEat0 GoRight0 GoLeft0 Release0\>,\<GoEat1 GoRight1 GoLeft1 GoEat0 Release1\>}
## ----Experimental result ----------------------------
----Experimental result ----------------------------
----------------------------------------------------
We have applied our approach to the Dining philosophers problem by varying the number of philosophers each time (2,3...100 philosophers). We have applied our approach to the Dining philosophers problem by varying the number of philosophers each time (2,3...100 philosophers).
We evaluate the size of the reachability graph, the number of observed transitions , the number of aggregates found by applying our tool and calculate the execution time for each example. We evaluate the size of the reachability graph, the number of observed transitions , the number of aggregates found by applying our tool and calculate the execution time for each example.
We notice that the size of the reachability graph is increasing exponentially. The results are summarised in the attached table. We notice that the size of the reachability graph is increasing exponentially. The results are summarised in the attached table.
<p align="center"> <p align="center">
<img src="comparatif.png" width="600" alt="comparative table"> <img src="comparatif.png" width="600" alt="comparative table">
</p> </p>
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment