Я использовал сплав по нескольким проектам и нашел его полезным; на некоторых, но не на всех этих проектах я смог убедить других вовлечься в использование сплава, или, по крайней мере, для работы с моделями сплавов, которые я написал. Эти проекты могут быть или не быть тем, что вы имеете в виду при запросе проектов «реального мира», но они, безусловно, имели место в той части реального мира, в которой я работаю.
В 2006 и 2007 годах я создал частичный Модель сплава для тогдашнего проекта спецификации W3C XProc; насколько я мог судить, большинство членов рабочей группы никогда не читали написанную мной статью (по адресу http://www.w3.org/XML/XProc/2006/12/alloy-models/models.html); они сказали: «О, мы изменили эту часть спецификации на прошлой неделе, так что модель говорит, что больше не актуальна». Но бумаге удалось убедить редактора спецификации, что абстрактный «компонентный» уровень, описанный в первом черновике спецификации, был явно недоказан и должен быть полностью указан или отброшен. Он бросил его, с (я думаю) хорошие результаты для удобочитаемости и удобства использования спецификации.
В 2010 году я сделал Alloy model of the XPath 1.0 data model, в котором были обнаружены некоторые сбои в спецификации. Реакция большинства заинтересованных сторон (включая рабочую группу W3C, ответственную за поддержание спецификации XPath 1.0), к сожалению, не обнадеживает.
Исследовательский проект, в котором я участвую, использовал сплав для моделирования MLLC Overlap Corpus, коллекции образцов документов и связанной с ними информации, которую мы создаем (гиперссылки, подавленные по настоянию SO); модель сплава обнаружила пару ошибок в нашем первоначальном дизайне для каталога корпусов, поэтому это стоило усилий.
И мы также использовали сплав для формализации некоторых работ по моделированию, которые мы сделали в отношении характера транскрипции и расширения разметки типа/токена для структуры документа (для нашей статьи, смотрите результаты работы Balisage за 2010 год: Markup Conference). Это немного отличается от обычной области применения Alloy, поскольку это не имеет никакого отношения к разработке программного обеспечения, но способность Alloy проверять модели на согласованность и генерировать экземпляры была неоценима, когда мы показывали нам некоторые из логических последствий этой или той возможной аксиомы для нашей модели.
Чтобы ответить на ваши конкретные вопросы: да, сплав помог мне определить более чистые модели домена, и да, он обнаружил ошибки и сбои.Они часто были маленькими по причинам, которые Даниэль Джексон объясняет в своей книге Программные абстракции: во-первых, если вы используете модели во время проектирования, вы ломаете ошибки раньше, когда все все еще мало. И, во-вторых (по словам Джексона): «Оглядываясь назад, большинство проблем с дизайном программного обеспечения тривиальны».
Он продолжает: «Но если вы не обращаетесь к ним с головоломкой, тривиальные проблемы имеют неприятную привычку становиться нетривиальными». Мой опыт подтверждает это. Гораздо лучше рано решать такие проблемы. Так что да, я снова использую Сплав.
Не могли бы вы предоставить ссылки на другие инструменты, которые вы упомянули? Их нелегко искать. – Andre
Я думаю, что, возможно, этот ответ относится к проекту Афины [здесь] (http://www.cs.cmu.edu/~skyxd/research.html) (вероятно, больше не поддерживается [Профессором Рассвет в Беркли] (https: //people.eecs.berkeley.edu/~dawnsong/)) и [CPSA здесь] (https://hackage.haskell.org/package/cpsa). – 6005