Формальные методы программы verfication имеют место в промышленности?

Инструкции действительно там как просто это. Это "не установлено в камне", вот почему у Вас есть опция способности проигнорировать их.

я сказал бы, что это более логически интуитивно для имения pluralized имен таблиц. Таблица является набором объекта, в конце концов. В дополнение к другим альтернативам, упомянутым, я обычно вижу префиксы на именах таблиц...

  • tblUser
  • tblThis
  • tblThat
  • tblTheOther

я не предполагаю, что это - способ пойти, я также вижу, что пробелы использовали МНОГО в именах таблиц, которые я ненавижу. Я даже столкнулся с именами полей с идиотичными символами как? как будто сказать, что это поле отвечает на вопрос.

12
задан Svante 28 July 2009 в 22:14
поделиться

9 ответов

Это вопрос, который мне очень близок (я занимаюсь проверкой программного обеспечения с использованием формальной логики), поэтому вы, вероятно, не удивитесь, когда я скажу, что эти методы имеют полезную место, и пока еще недостаточно используются в отрасли.

Существует много уровней «формальных методов», поэтому я предполагаю, что вы имеете в виду те, которые основаны на строгой математической основе (в отличие от, скажем, следующих 6- Процесс в стиле сигма). Некоторые типы формальных методов имели большой успех - например, системы типов. Инструменты статического анализа, основанные на анализе потока данных, также популярны, проверка моделей почти повсеместно используется при проектировании оборудования, а вычислительные модели, такие как Pi-Calculus и CCS, похоже, вдохновляют на некоторые реальные изменения в практическом проектировании языков для параллелизма. Завершающий анализ - это тот, который ' В последнее время об этом много говорилось в прессе - проект SDV в Microsoft и работа Байрона Кука - недавние примеры пересечения исследований и практики в формальных методах.

Hoare Reasoning пока не добился больших успехов в отрасли - это так. по большему количеству причин, чем я могу перечислить, но я подозреваю, что в основном они связаны со сложностью написания, а затем доказательства спецификаций для реальных программ (они, как правило, становятся большими и не могут выражать свойства многих реальных сред). Различные подполи в этом типе рассуждений в настоящее время делают большие вторжения в эти проблемы - логика разделения является одной из них.

Частично это является характером продолжающихся (напряженных) исследований. Но я должен признаться, что мы, теоретики, совершенно не смогли разъяснить отрасли, почему наши методы полезны, чтобы они соответствовали потребностям отрасли. и сделать их доступными для разработчиков программного обеспечения. На каком-то уровне это не наша проблема - мы исследователи, часто математики, и в нашем сознании не главное практическое применение. Кроме того, разрабатываемые методы часто слишком зарождаются для использования в крупномасштабных системах - мы работаем над небольшими программами, над упрощенными системами, заставляем математику работать и идем дальше. Я не очень верю этим оправданиям - мы должны быть более активными в продвижении наших идей и наладить обратную связь между отраслью и нашей работой (одна из основных причин, по которой я вернулся к исследованиям).

хорошая идея для меня воскресить мой блог и сделать еще несколько сообщений об этом ...

разрабатываемые методы часто слишком зарождаются для использования в крупномасштабных системах - мы работаем над небольшими программами, над упрощенными системами, заставляем математику работать и идем дальше. Я не очень верю в эти оправдания - мы должны быть более активными в продвижении наших идей и обеспечении обратной связи между отраслью и нашей работой (одна из основных причин, по которой я вернулся к исследованиям).

Это, вероятно, хорошая идея для меня воскресить мой блог и сделать еще несколько сообщений об этом ...

разрабатываемые методы часто слишком зарождаются для использования в крупномасштабных системах - мы работаем над небольшими программами, над упрощенными системами, заставляем математику работать и идем дальше. Я не очень верю в эти оправдания - мы должны быть более активными в продвижении наших идей и обеспечении обратной связи между отраслью и нашей работой (одна из основных причин, по которой я вернулся к исследованиям).

Это, вероятно, хорошая идея для меня воскресить мой блог и сделать еще несколько сообщений об этом ...

12
ответ дан 2 December 2019 в 03:18
поделиться

Ну, сэр Тони Хоар присоединился к Microsoft Исследования около 10 лет назад, и одна из вещей, которые он начал, была формальная проверка ядра Windows NT. Действительно, это было одной из причин долгой задержки Windows Vista: начиная с Vista, большие части ядра фактически формально проверены относительно. к определенным свойствам, таким как отсутствие взаимоблокировок, отсутствие утечек информации и т. д.

Это, конечно, нетипично, но, вероятно, это единственное наиболее важное применение формальной верификации программы с точки зрения ее воздействия (в конце концов, почти каждый человек каким-либо образом, форма или форма зависят от компьютера под управлением Windows).

14
ответ дан 2 December 2019 в 03:18
поделиться

Я не могу много комментировать критически важное программное обеспечение, хотя знаю, что индустрия авионики использует широкий спектр методов для проверки программного обеспечения, включая методы Хоара.

Формальные методы пострадали, потому что ранние защитники, такие как Эдсгер Дейкстра, настаивали на том, что их следует использовать везде. Ни формализмы, ни поддержка программного обеспечения не подходили для работы. Более здравомыслящие сторонники считают, что эти методы следует использовать для решения сложных проблем. Они не получили широкого распространения в промышленности, но их количество растет. Вероятно, наибольшее распространение получили формальные методы проверки свойств безопасности программного обеспечения. Некоторые из моих любимых примеров - проверка модели SPIN и код Джорджа Некулы, несущий доказательства.

Отойдя от практики к исследованиям, Проект операционной системы Microsoft Singularity направлен на использование формальных методов для обеспечения гарантий безопасности, которые обычно требуют аппаратной поддержки. Это, в свою очередь, приводит к более высокой производительности и более надежным гарантиям. Например, в сингулярности они доказали, что если сторонний драйвер устройства разрешен в системе (что означает, что основные условия проверки были доказаны), то он не может вывести из строя всю ОС - худшее, что он может сделать, это облить ее собственное устройство.

Формальные методы еще не получили широкого распространения в промышленности, но они используются более широко, чем 20 лет назад, и через 20 лет они будут еще более широко использоваться. Так что вы готовы к будущему: -)

s Проект операционной системы Singularity основан на использовании формальных методов для обеспечения гарантий безопасности, которые обычно требуют аппаратной поддержки. Это, в свою очередь, приводит к более высокой производительности и более надежным гарантиям. Например, в сингулярности они доказали, что если сторонний драйвер устройства разрешен в системе (что означает, что основные условия проверки были доказаны), то он не может вывести из строя всю ОС - худшее, что он может сделать, это облить ее собственное устройство.

Формальные методы еще не получили широкого распространения в промышленности, но они используются более широко, чем 20 лет назад, и через 20 лет они будут еще более широко использоваться. Так что вы готовы к будущему: -)

s Проект операционной системы Singularity основан на использовании формальных методов для обеспечения гарантий безопасности, которые обычно требуют аппаратной поддержки. Это, в свою очередь, приводит к более высокой производительности и более надежным гарантиям. Например, в сингулярности они доказали, что если сторонний драйвер устройства разрешен в системе (что означает, что основные условия проверки были доказаны), то он не может вывести из строя всю ОС - худшее, что он может сделать, это облить ее собственное устройство.

Формальные методы еще не получили широкого распространения в промышленности, но они используются более широко, чем 20 лет назад, а через 20 лет они будут еще более широко использоваться. Так что вы готовы к будущему: -)

в частности, они доказали, что если сторонний драйвер устройства разрешен в системе (что означает, что основные условия проверки были доказаны), то он не может вывести из строя всю ОС - худшее, что он может сделать, это опустить собственное устройство.

Формальные методы еще не получили широкого распространения в промышленности, но они используются более широко, чем 20 лет назад, и через 20 лет они будут еще более широко использоваться. Так что вы готовы к будущему: -)

в частности, они доказали, что если сторонний драйвер устройства разрешен в системе (что означает, что основные условия проверки были доказаны), то он не может вывести из строя всю ОС - худшее, что он может сделать, это опустить собственное устройство.

Формальные методы еще не получили широкого распространения в промышленности, но они используются более широко, чем 20 лет назад, и через 20 лет они будут еще более широко использоваться. Так что вы готовы к будущему: -)

6
ответ дан 2 December 2019 в 03:18
поделиться

Да, они используются, но не во всех областях. Существует больше методов, чем просто хоровая логика, некоторые используются больше, некоторые меньше, в зависимости от пригодности для данной задачи. Распространенная проблема заключается в том, что программное обеспечение является biiiiiiig, и проверка его правильности по-прежнему является слишком сложной задачей.

Например, средство доказательства теорем (программное обеспечение, которое помогает людям доказывать правильность программы) ACL2 использовалось для доказательства того, что определенный блок обработки с плавающей запятой не имеет определенного типа ошибки. Это была сложная задача, поэтому этот метод не слишком распространен.

Проверка модели, еще один вид формальной проверки, довольно широко используется в настоящее время, например, Microsoft предоставляет тип проверки модели в комплекте разработки драйверов, и это может быть используется для проверки драйвера на наличие набора типичных ошибок.

5
ответ дан 2 December 2019 в 03:18
поделиться

«Используются ли формальные методы в промышленности?»

Да.

Оператор assert во многих языках программирования относится к формальным методам проверки программы.

«Широко ли используются формальные методы в промышленности?»

Нет.

«Используются ли эти методы для проверки критически важного программного обеспечения?»

Иногда. Чаще их используют для доказательства безопасности программного обеспечения. Говоря более формально, они используются для подтверждения определенных утверждений, связанных с безопасностью программного обеспечения.

3
ответ дан 2 December 2019 в 03:18
поделиться

Чтобы добавить к ответу Йорга, вот интервью с Тони Хоаром. Я думаю, что инструменты, о которых говорит Йорг, - это PREfast и PREfix. См. здесь для получения дополнительной информации.

1
ответ дан 2 December 2019 в 03:18
поделиться

Polyspace - это (ужасно дорогой, но очень хороший) коммерческий продукт, основанный на проверке программ. Это довольно прагматично, поскольку масштабируется от «расширенного модульного тестирования, которое, вероятно, обнаружит некоторые ошибки», до «следующие три года вашей жизни будут потрачены на то, чтобы показать, что эти 10 файлов не имеют никаких дефектов»

. отрицательная проверка («эта программа не повредит ваш стек») вместо положительной проверки («эта программа будет делать именно то, что говорят эти 50 страниц уравнений»).

1
ответ дан 2 December 2019 в 03:18
поделиться

There are two different approaches to formal methods in the industry.

One approach is to change the development process completely. The Z notation and the B method that were mentioned are in this first category. B was applied to the development of the driverless subway line 14 in Paris (if you get a chance, climb in the front wagon. It's not often that you get a chance to see the rails in front of you).

Another, more incremental, approach is to preserve the existing development and verification processes and to replace only one of the verification tasks at a time by a new method. This is very attractive but it means developing static analysis tools for exiting, used languages that are often not easy to analyse (because they were not designed to be). If you go to (for instance)

http://dblp.uni-trier.de/db/indices/a-tree/d/Delmas:David.html

(sorry, only one hyperlink allowed for new users :( )

you will find instances of practical applications of formal methods to the verification of C programs (with static analyzers Astrée, Caveat, Fluctuat, Frama-C) and binary code (with tools from AbsInt GmbH).

By the way, since you mentioned Hoare Logic, in the above list of tools, only Caveat is based on Hoare logic (and Frama-C has a Hoare logic plug-in). The others rely on abstract interpretation, a different technique with a more automatic approach.

2
ответ дан 2 December 2019 в 03:18
поделиться

Помимо других процедурных подходов, логика Хоара лежала в основе Design by Contract , представленной как объектно-ориентированная техника Бертраном Мейером в книге Eiffel ( см. Статья Мейера 1992 г. , стр. 4). Хотя проектирование по контракту - это не то же самое, что формальные методы проверки (с одной стороны, DbC ничего не доказывает , пока программное обеспечение не будет запущено), на мой взгляд, он обеспечивает более практическое использование.

0
ответ дан 2 December 2019 в 03:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: