Mémoire qui traite du sujet suivant : Réparation automatique de code et son application dans les langages déclaratifs
[...] Une autre tactique, plus coûteuse, qui s'appelle n-version programming, est aussi utilisée dans certains cas de figure. Elle fonctionne en réalisant plusieurs implémentations et en changeant d'implémentation si le code échoue. Carzaniga et al par exemple réparent les applications web en changeant à la volée les fonctions API utilisées. Par exemple, si une API ne fonctionne pas, le programme passe directement à une autre fonction qui peut potentiellement résoudre le même problème. Il faut par conséquent que toutes ces fonctions soient implémentées. [...]
[...] GenProg propose des permutations et des opérations basiques sur l'AST (Ajout, suppression . ) de manière aléatoire. En utilisant des suites de tests, le programme est par la suite capable de faire le tri entre les solutions qui sont proches de résoudre la plus grande partie des cas de tests et les solutions qui augmentent le nombre de cas de tests en échec. A chaque itération, le programme de réparation met de côté certaines modifications intéressantes afin de faire des modifications supplémentaires aux itérations futures. C'est ici qu'apparaît l'aspect génétique. [...]
[...] Les deux genres de langages déclaratifs les plus communs sont les langages logiques et fonctionnels. Les langages de programmation logique, dont PROLOG (PROgrammation en LOGique) est le plus connu, définissent un programme comme un ensemble de relations logiques (par exemple, un grand-parent est le parent d'un parent de quelqu'un). De tels langages sont similaires au langage de base de données SQL (Dans les faits, il est souvent couplé à une extension procédurale ce qui rend le langage impur). Un programme est exécuté par un "moteur d'inférence" qui répond à une requête en recherchant systématiquement ces relations qui existent entre les faits (ou données dans le cas de SQL, nous y reviendrons). [...]
[...] Ces limitations ne servent pas forcément les langages déclaratifs. Comme explication, il nous a fallu attendre la partie III pour comprendre l'esprit qu'il y a derrière les langages déclaratifs. Un langage déclaratif cherche à s'abstraire de la technicité des langages procéduraux. On ne veut plus écrire comment faire pour résoudre un problème, on préfère simplement écrire quel problème on cherche à résoudre. Il n'y a donc généralement pas de notion d'état. Un code source HTML est censé s'afficher de la même manière sur tous les navigateurs (Si on fait l'hypothèse que les navigateurs utilisés respectent tous les même standard, ce qui, dans les fait, n'est pas le cas). [...]
[...] A ce jour, il n'existe aucun programme de réparation complet qui qui vise les langages déclaratifs. Les opportunités de recherche sont encore très largement ouverte. Si le formalisme mathématique autour de toutes ces techniques semble mature, la littérature manque encore de recherches empiriques qui analysent les performances des logiciels de RAL appliqués aux langages déclaratifs. Ce manque peut également constituer un axe de recherche intéressant. Les langages déclaratifs tendent à être de plus en plus utilisés de part le compacité, leur robustesse et la simplicité d'apprentissage qui en découle. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture