Question

Je suis intéressé par les méthodes formelles pour un certain temps. Je l'ai utilisé des méthodes formelles pour raisonner sur des sous-domaines très spécifiques de quelques projets que j'ai travaillé. Je n'ai jamais pu convaincre les autres membres de l'équipe d'essayer le même encore moins spécifier un domaine entier avec une méthode formelle.

Une méthode que j'ai trouvé particulièrement intéressant est alliage . Je pense qu'il peut mieux « échelle » en tant que fondement d'un projet dans son ensemble, car il est sur le plan conceptuel et notationally très proche des langages de programmation réels. De plus, les outils sont assez solides pour que les avantages de la vérification des modèles sont facilement disponibles.

Je serais très intéressé d'entendre parler de tout le monde réel vous expériences des gens rencontriez avec l'aide d'alliage dans vos projets. Pensez-vous que cela vous a aidé à la conception d'un meilleur modèle de domaine? Vous ne trouvez des erreurs dans votre modèle de domaine lors de la vérification? Voulez-vous l'utiliser à nouveau?

Était-ce utile?

La solution

Oui, je l'ai utilisé en alliage et il est industriellement des cousins. Alliage a été très utile à me convaincre que mes modèles ne sont pas follement mal --- ou plutôt, me montrer où ils ont eu tort et ont donné lieu à des résultats ridicules. D'autres outils plus spécifiques, comme Athéna et Guttman et CPSA de Ramsdell Song ont été plus utiles dans leurs domaines plus étroits. Que voulez-vous entendre parler?

Autres conseils

Je l'ai utilisé en alliage sur quelques projets et nous avons trouvé utile; sur certains mais pas tous les projets que j'ai été en mesure de convaincre les autres personnes impliquées à utiliser en alliage ainsi, ou tout au moins pour travailler avec les modèles en alliage j'ai écrit. Ces projets peuvent ou peuvent ne pas être ce que vous avez à l'esprit pour demander des projets « monde réel », mais ils ont certainement eu lieu dans la partie du monde réel que je travaille.

En 2006 et 2007, je crée un modèle en alliage partiel pour le projet alors en vigueur de la spécification W3C XProc; pour autant que je sache, la plupart des membres du groupe de travail n'a jamais lu le papier que j'ai écrit (à http://www.w3.org/XML/XProc/2006/12/alloy-models/models.html ); ils ont dit: « Oh, donc ce que le modèle dit n'est plus pertinent, nous avons changé cette partie de la spécification la semaine dernière ». Mais le journal a réussi à convaincre l'éditeur de la spécification que le niveau « composant » abstrait décrit dans le premier projet de la spécification était lamentablement underspecified et devait être entièrement spécifié ou abandonné. Il a laissé tomber, avec (je crois) de bons résultats pour la lisibilité et la facilité d'utilisation de la spécification.

En 2010, je fait un modèle en alliage du modèle de données XPath 1.0 , qui a révélé quelques problèmes dans la spécification. La réaction de la plupart des parties intéressées (y compris le groupe de travail du W3C responsable du maintien de la spécification XPath 1.0) a, malheureusement, ne sont pas encourageants.

Un projet de recherche que je suis impliqué a utilisé en alliage pour modéliser le MLCD Overlap Corpus, une collection de documents d'échantillons et des informations connexes que nous créons (hyperliens supprimés sur l'insistance de SO); le modèle en alliage trouvé quelques erreurs dans notre conception initiale du catalogue de corpus, donc il valait bien l'effort.

Et nous avons également utilisé en alliage pour formaliser un travail de modélisation que nous avons fait sur la nature de la transcription et sur l'extension du type / distinction symbolique à la structure du document (pour notre papier, utilisez 2010 une procédure de Balisage: Le balisage Conférence). Cela se trouve un peu en dehors de la zone habituelle en alliage d'application, car il n'a rien à voir avec la conception de logiciels, mais la capacité en alliage de vérifier les modèles de cohérence et de générer des cas a été inestimable en nous montrant quelques-unes des conséquences logiques de tel ou tel axiome possible pour notre modèle.

Pour répondre à vos questions: oui, Alloy m'a aidé à préciser les modèles de domaine propres, et oui, il a trouvé des erreurs et défauts. Ils ont souvent été faibles, pour les raisons Daniel Jackson explique dans son livre Software Abstractions : d'abord, si vous utilisez des modèles lors de la conception, vous attraper des erreurs au début, quand tout est encore petit. Et, d'autre part (dans les paroles de Jackson), « Avec le recul, la plupart des problèmes de conception de logiciels sont insignifiants. »

Il poursuit: « Mais si vous ne répondez pas leur front, des questions triviales ont une mauvaise habitude de devenir non négligeable. » Mon expérience confirme amplement. Beaucoup mieux à la tête tôt ces problèmes. Alors oui, je vais utiliser en alliage à nouveau.

Tardivement ajouter à ce fil ... Eunsuk Kang a récemment appliqué en alliage pour effectuer des analyses de sécurité des API web pour certaines start-ups (suite à de nombreuses applications d'alliage dans la sécurité tels que de Apurva analyse des OAuth et Barth et al analyse des mécanismes de sécurité basés sur un navigateur pour CSRF, etc.); Pamela Zave travaille sur un analyse impressionnante de Chord , un peer to peer système de stockage, et a récemment écrit un correctif pour l'algorithme original.

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