Опыт использования Alloy в реальных проектах

Некоторое время я интересовался формальными методами. Я использовал формальные методы, чтобы рассуждать о некоторых очень специфических подобластях нескольких проектов, над которыми я работал. Мне так и не удалось убедить других членов команды попробовать то же самое, не говоря уже о том, чтобы указать всю область с помощью формального метода.

Один метод, который показался мне особенно интересным, — Alloy. Я думаю, что он может лучше «масштабироваться» в качестве основы для всего проекта, потому что он концептуально и нотно очень близок к реальным языкам программирования. Кроме того, инструменты достаточно надежны, так что преимущества проверки модели легко доступны.

Мне было бы очень интересно узнать о каком-либо реальном опыте использования Alloy в ваших проектах. Считаете ли вы, что это помогло вам разработать лучшую модель предметной области? Нашли ошибки в вашей модели домена во время проверки? Вы бы использовали его снова?


person VoidPointer    schedule 25.02.2010    source источник


Ответы (3)


Да, я использовал Alloy и его родственников в промышленных масштабах. Alloy очень помог мне убедить меня в том, что мои модели не были сильно ошибочными — или, скорее, показал мне, где они были неверны и приводили к глупым результатам. Другие более специфические инструменты, такие как Athena и Guttman Сонга и CPSA Рамсделла, оказались более полезными в своих более узких областях. О чем еще вы хотели бы услышать?

person Brian Sniffen    schedule 16.08.2010
comment
Не могли бы вы предоставить ссылки на другие инструменты, которые вы упомянули? Искать их непросто. - person Andre; 15.11.2011
comment
Я думаю, возможно, этот ответ относится к проекту Athena здесь (вероятно, уже не поддерживается профессором Доун Сонг из Беркли) и CPSA здесь. - person 6005; 06.04.2017

Я использовал Alloy в нескольких проектах и ​​нашел его полезным; в некоторых, но не во всех этих проектах мне удалось убедить других участников использовать Alloy или, по крайней мере, работать с моделями Alloy, которые я написал. Эти проекты могут быть или не быть тем, что вы имеете в виду, когда просите о «реальных» проектах, но они определенно имели место в той части реального мира, в которой я работаю.

В 2006 и 2007 годах я создал частичную модель Alloy для актуального на тот момент проекта спецификации W3C XProc; насколько я мог судить, большинство членов рабочей группы никогда не читали статью, которую я написал (по адресу http://www.w3.org/XML/XProc/2006/12/alloy-models/models.html); они сказали: «О, мы изменили эту часть спецификации на прошлой неделе, поэтому то, что говорит модель, больше не актуально». Но газете удалось убедить редактора спецификации в том, что уровень абстрактного «компонента», описанный в первом черновике спецификации, был крайне недоопределен и должен быть либо полностью определен, либо исключен. Он отказался от него, с (я думаю) хорошими результатами для удобочитаемости и удобства использования спецификации.

В 2010 году я сделал модель сплава модели данных XPath 1.0, которая выявила некоторые сбои в спецификации. Реакция большинства заинтересованных сторон (включая рабочую группу W3C, ответственную за поддержку спецификации XPath 1.0), к сожалению, не была обнадеживающей.

В исследовательском проекте, в котором я участвую, Alloy использовался для моделирования MLCD Overlap Corpus, набора образцов документов и сопутствующей информации, которую мы создаем (гиперссылки скрыты по настоянию SO); Модель Alloy обнаружила пару ошибок в нашем первоначальном дизайне каталога корпуса, так что усилия того стоили.

И мы также использовали Alloy для формализации некоторой работы по моделированию, которую мы проделали в отношении природы транскрипции и расширения различий между типами и токенами в структуре документа (для нашей статьи ищите материалы Balisage: The Markup Conference 2010 года). Это немного выходит за рамки обычной области применения Alloy, так как не имеет ничего общего с проектированием программного обеспечения, но способность Alloy проверять модели на непротиворечивость и генерировать экземпляры оказалась неоценимой для демонстрации нам некоторых логических следствий той или иной возможной аксиомы. для нашей модели.

Чтобы ответить на ваши конкретные вопросы: да, Alloy помог мне указать более чистые модели доменов, и да, он нашел ошибки и сбои. Они часто были небольшими по причинам, которые Дэниел Джексон объясняет в своей книге Software Abstractions: во-первых, если вы используете модели во время проектирования, вы обнаруживаете ошибки на ранней стадии, когда все неподвижно. небольшой. И, во-вторых (по словам Джексона), «оглядываясь назад, большинство проблем проектирования программного обеспечения тривиальны».

Он продолжает: «Но если вы не решаете их прямо, тривиальные проблемы имеют неприятную привычку становиться нетривиальными». Мой опыт убедительно подтверждает это. Гораздо лучше предотвратить такие проблемы заранее. Так что да, я снова буду использовать Alloy.

person C. M. Sperberg-McQueen    schedule 16.08.2012
comment
Спасибо за хорошее объяснение. У вас есть больше ресурсов, которые показывают больше метамоделей. Я больше хочу найти некоторые схемы моделей (графические схемы) и хотел бы понять иерархический дизайн с помощью Alloy. - person dashesy; 01.02.2013
comment
Привет, Майкл, это абсолютно круто. Я нашел этот вопрос случайно; вы пробовали моделировать XDM 3.1? - person Dimitre Novatchev; 21.01.2015
comment
@DimitreNovatchev, спасибо. Однажды я приступил к этой задаче (для XDM 1.0, а не 3.1), но далеко не продвинулся. XDM позволяет избежать большинства проблем, которые я обнаружил в спецификации XPath 1.0, но сталкивается с другими. Неожиданно возникли проблемы с понятием tree (см. ошибки 12534 и 12535) и ответственные рабочие группы не пожелали исправлять неудачную формулировку. Так что я отказался, на данный момент. - person C. M. Sperberg-McQueen; 21.01.2015

С опозданием добавляю в эту ветку... Ынсук Канг недавно применил Alloy для анализа безопасности веб-API для некоторых стартапов (вслед за многими приложениями Alloy в области безопасности, такими как анализ OAuth и анализ механизмов безопасности на основе браузера для CSRF и т. д.); Памела Зейв работала над впечатляющим анализом Chord, равноправного системы хранения и недавно написал исправление к исходному алгоритму.

person Daniel Jackson    schedule 25.11.2014