Jump to content

Расширенная статическая проверка

Расширенная статическая проверка ( ESC ) — это собирательное название в информатике для ряда методов статической проверки правильности различных ограничений программы. [1] ESC можно рассматривать как расширенную форму проверки типов . Как и проверка типов, ESC выполняется автоматически во время компиляции (т.е. без вмешательства человека). Это отличает его от более общих подходов к формальной проверке программного обеспечения, которые обычно полагаются на доказательства, созданные человеком. Кроме того, он отдает предпочтение практичности, а не надежности, поскольку направлен на резкое сокращение количества ложных срабатываний (переоцененных ошибок, которые не являются реальными ошибками, то есть превышения строгости ESC) за счет введения некоторых ложноотрицательных результатов (реальная ошибка недооценки ESC, но это не требует внимания программиста или не является целью ESC). [2] [3] ESC может идентифицировать ряд ошибок, которые в настоящее время находятся за пределами проверки типов, включая деление на ноль , выход массива за пределы , переполнение целых чисел и разыменование null .

Методы, используемые в расширенной статической проверке, взяты из различных областей информатики, включая статический анализ программ , символическое моделирование , проверку моделей , абстрактную интерпретацию , решение SAT и автоматическое доказательство теорем и проверку типов . Расширенная статическая проверка обычно выполняется только на внутрипроцедурном, а не на межпроцедурном уровне для масштабирования до больших программ. [2] Кроме того, расширенная статическая проверка направлена ​​на сообщение об ошибках, используя предоставленные пользователем спецификации в форме пред- и постусловий , инвариантов цикла и инвариантов классов .

Расширенные статические средства проверки обычно работают путем распространения сильнейших постусловий (соответственно самых слабых предусловий ) внутри процедур через метод, начинающийся с предусловия (соответственно постусловия). На каждом этапе этого процесса генерируется промежуточное условие, которое фиксирует то, что известно на этом этапе программы. Это объединяется с необходимыми условиями оператора программы в этот момент, чтобы сформировать условие проверки . Примером этого является оператор деления, необходимым условием которого является то, что делитель не равен нулю. Вытекающее из этого условие проверки фактически гласит: учитывая промежуточное условие в этой точке, должно следовать, что делитель не равен нулю . Все условия проверки должны быть ложными (следовательно, правильными посредством исключенного третьего ), чтобы метод прошел расширенную статическую проверку (или «не смог найти больше ошибок»). Обычно для выполнения условий проверки используется та или иная форма автоматического средства доказательства теорем.

Расширенная статическая проверка была впервые реализована в ESC/Modula-3. [4] и, позже, ESC/Java . Его корни берут начало в более упрощенных методах статической проверки, таких как статическая отладка. [5] или lint и FindBugs . ESC принят в ряде других языков, включая Spec#, SPARKada и VHDL VSPEC. Однако в настоящее время не существует широко используемого языка программирования, обеспечивающего расширенную статическую проверку в базовой среде разработки.

См. также

[ редактировать ]
  1. ^ К. Фланаган, К.РМ. Лейно, М. Лиллибридж, Г. Нельсон, Дж. Б. Сакс и Р. Стата. «Расширенная статическая проверка Java». В материалах конференции по проектированию и реализации языков программирования , страницы 234-245, 2002 г. doi: http://doi.acm.org/10.1145/512529.512558 .
  2. ^ Jump up to: а б «Расширенная статическая проверка» . УВТВ . Проверено 1 февраля 2012 г. [ постоянная мертвая ссылка ]
  3. ^ Бабич, Домагой; Ху, Алан Дж. (2008). Calysto: масштабируемая и точная расширенная статическая проверка . Материалы Международной конференции по программной инженерии (ICSE). АКМ Пресс. дои : 10.1145/1368088.1368118 .
  4. ^ Рустан, К.; Лейно, М.; Нельсон, Грег (1998). «Расширенная статическая проверка для модуля-3». Конспекты лекций по информатике — Международная конференция по построению компиляторов . Спрингер. стр. 302–305. дои : 10.1007/bfb0026441 . ISBN  978-3-540-64304-3 . ISSN   0302-9743 .
  5. ^ Фланаган, Кормак; Флэтт, Мэтью; Кришнамурти, Шрирам; Вейрих, Стефани; Феллейзен, Матиас (1996). «Отлов ошибок в сети инвариантов программ» (PDF) . Уведомления ACM SIGPLAN . 31 (5). Ассоциация вычислительной техники (ACM): 23–32. дои : 10.1145/249069.231387 . ISSN   0362-1340 .

Дальнейшее чтение

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 39d3a581379500eda701ed85b0fd70ab__1695986940
URL1:https://arc.ask3.ru/arc/aa/39/ab/39d3a581379500eda701ed85b0fd70ab.html
Заголовок, (Title) документа по адресу, URL1:
Extended static checking - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)