The first step that needs to be performed when defining a metamodel is to accurately study the domain in order to understand the elements and the artifacts that need to be modeled. This study helps to understand the right abstraction level, according to the use of the models that we will have. For the purposes of EVOSS, FOSS distributions have been investigated and in particular the maintainer scripts that are the most critical part for our modeling needs. Maintainer scripts are executed at various points during the upgrade process to finalize component configuration. The adopted scripting languages are mainly POSIX shell. For instance, in the Debian Lenny distribution on a universe of 25’440 maintainer scripts, only 131 are written in Perl, 481 are given in Bash and the remaining 24’822 are implemented in POSIX-compliant Bourne shell.
Scripting languages have rarely been formally investigated and with no exciting results, thus posing additional difficulties in understanding their side-effects which can spread throughout the whole system. To this end, models can be used to drive roll-back operations to recover previous configurations according to user decisions or after upgrade failures. The analysis phase is then extremely important in order to find the right trade-off among expressiveness and abstraction.
Due to the large amount of scripts, we developed a script analyzer able to collect maintainer scripts in clusters and to concentrate the analysis on representative of the equivalence classes identified. The analyzer is available at this link