Date of this Version
Lampe, B. E. 2020. EvoAlloy in the Jenetics Framework. Undergraduate Honors Thesis. University of Nebraska-Lincoln.
We can describe a software system and its specifications through the use of formal methods such as mathematical and logical notation. With these formal methods, a new system fitting the specifications can be generated, or a pre-existing system can be verified. That said, the innumerable automated tools which perform this functionality are underutilized in practice. The issue lies in the inability of existing tools to scale to the size and scope of real-world problems. The popular lightweight analysis tool, Alloy, had been extended into a new tool, dubbed EvoAlloy, whose solver implemented a genetic algorithm. The genetic algorithm used the relations generated by Alloy’s Kodkod engine to evolve chromosomes based upon a set of constraints. In feasibility studies, EvoAlloy was shown capable of finding solutions to a set of specifications that exceeded the scope in which the original Alloy solver tended to fail, although smaller specifications took longer to solve with EvoAlloy than with Alloy. The vision of the project was to maintain soundness and completeness for smaller specifications by leveraging the original Alloy, but the original Alloy solver fails, the EvoAlloy would switch to its genetic algorithm. The EvoAlloy project, while a considerable improvement over the conventional Alloy solver in terms of the specifications it could solve, did not yield the gains that were expected by the researchers. To increase the gains by the EvoAlloy project, it is again being extended. This time, rather than depending on a new implementation of a genetic algorithm, we leverage a pre-existing algorithm supplied by a framework, which has undergone testing and optimization by its many developers and maintainers. The Jenetics Framework is an evolutionary algorithm framework implements the main concepts of genetic algorithms: Genes, chromosomes, populations, and generations.