Question

  • Quels types d'applications avez-vous utilisés vérification du modèle pour?
  • Quel outil de vérification de modèle avez-vous utilisé ?
  • Comment résumeriez-vous votre expérience avec cette technique, en particulier pour évaluer son efficacité à fournir des logiciels de meilleure qualité ?

Au cours de mes études, j'ai eu la chance d'utiliser Rotation, et cela a éveillé ma curiosité quant à l'ampleur de la vérification réelle des modèles et à la valeur que les organisations en retirent.Au cours de mon expérience professionnelle, j'ai travaillé sur des applications métiers, pour lesquelles il n'est (naturellement) aucune considération d'appliquer une vérification formelle à la logique.J'aimerais vraiment en savoir plus sur l'expérience et les réflexions de SO folks en matière de vérification de modèles sur le sujet.La vérification de modèle deviendra-t-elle un jour une pratique de développement plus largement utilisée que nous devrions avoir dans notre boîte à outils ?

Était-ce utile?

La solution

Je viens de terminer un cours sur la vérification de modèles et les gros outils que nous avons utilisés étaient Rotation et SMV.Nous avons fini par les utiliser pour vérifier les propriétés des problèmes de synchronisation courants, et j'ai trouvé SMV un peu plus facile à utiliser.

Bien que ces outils soient amusants à utiliser, je pense qu'ils brillent vraiment lorsque vous les combinez avec quelque chose qui applique dynamiquement des contraintes sur votre programme (de sorte qu'il soit un peu plus facile de vérifier les éléments « utiles » de votre programme).Nous avons fini par prendre le Cadre WebFlow de printemps, qui utilise XML pour écrire un fichier de type machine à états qui spécifie quelles pages Web peuvent passer à quelles autres, et utilise SMV pour pouvoir effectuer une vérification sur lesdites applications (fiche sans vergogne ici).

Pour répondre à votre dernière question, je pense que la vérification de modèle est certainement utile, mais je penche davantage pour l'utilisation des tests unitaires comme technique qui me permet de me sentir à l'aise pour livrer mon produit final.

Autres conseils

Nous avons utilisé plusieurs vérificateurs de modèles dans l'enseignement, la conception de systèmes et le développement de systèmes.Notre boîte à outils comprend SPIN, UPPAL, Java Pathfinder, PVS et Bogor.Chacun a ses forces et ses faiblesses.Tous rencontrent des problèmes avec des modèles qui sont tout simplement impossibles à découvrir pour les êtres humains.Leur convivialité varie, bien que la plupart soient automatisées par bouton-poussoir.

Quand utiliser un vérificateur de modèles ?Je dirais que chaque fois que vous décrivez un modèle qui doit avoir (ou non) des propriétés particulières et qu'il est plus grand qu'une poignée de concepts.Quiconque pense pouvoir décrire et comprendre quelque chose de plus grand ou de plus complexe se trompe.

Pour quels types d’applications avez-vous utilisé la vérification de modèle ?

Nous avons utilisé le vérificateur de modèle Java Path Finder pour vérifier certaines propriétés de sécurité (blocage, condition de concurrence critique) et temporelles (en utilisant la logique temporelle linéaire pour les spécifier).Il prend en charge les assertions classiques (comme NotNull) sur Java (bytecode) - c'est pour la vérification du modèle de programme.

Quel outil de vérification de modèle avez-vous utilisé ?

Nous avons utilisé Recherche de chemin Java (à des fins académiques).Il s'agit d'un logiciel open source développé initialement par la NASA.

Comment résumeriez-vous votre expérience avec cette technique, en particulier pour évaluer son efficacité à fournir des logiciels de meilleure qualité ?

La vérification du modèle de programme présente un problème majeur avec l'explosion de l'espace d'état (utilisation de la mémoire et du disque).Mais il existe une grande variété de techniques pour réduire les problèmes, pour gérer les gros artefacts, telles que la réduction d'ordre partiel, l'abstraction, la réduction de symétrie, etc.

J'ai utilisé SPIN pour trouver un problème de concurrence dans le logiciel PLC.Il a découvert une condition de course insoupçonnée qui aurait été très difficile à détecter par inspection ou test.

Au fait, existe-t-il un livre « SPIN pour les nuls » ?J'ai dû l'apprendre grâce au livre "The SPIN Model Checker" et à divers didacticiels en ligne.

J'ai fait quelques recherches sur ce sujet pendant mes années à l'université, élargissant ainsi le Vérificateur de modèle d'assemblage d'exploration d'état.

Nous avons utilisé une machine virtuelle pour parcourir chaque chemin/état possible du programme, en utilisant A* et une heuristique, en fonction du type d'erreur (blocage, erreurs d'E/S, ...)

Il a été inspiré par Explorateur Java et cela a fonctionné avec du code C++.(Tout ce que GCC pourrait compiler)

Mais d'après nos expériences, ce type de technologie ne sera pas utilisé de sitôt dans les applications métiers, en raison de problèmes liés à l'interface graphique, du travail nécessaire à la création d'un environnement de test initial et des énormes exigences matérielles.(Vous avez besoin de beaucoup de RAM et d'espace disque, en raison de l'espace d'état gigantesque)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top