Table of Contents

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

Понимание формальных методов в проверке требований

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

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

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

Роль формальной проверки в современной программной инженерии

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

Инженерия требований играет ключевую роль в разработке систем, критически важных для безопасности. Однако процесс обычно ручной и может привести к ошибкам и несоответствиям в требованиях, которые нелегко обнаружить. Руководящий характер традиционных требований инженерия вводит человеческую ошибку, субъективную интерпретацию и непоследовательное применение стандартов. Формальные методы обеспечивают автоматизированную поддержку, которая снижает эти риски при сохранении математической строгости.

В последние годы интеграция формальных методов в практику разработки программного обеспечения получила значительный импульс. Формальная проверка непосредственно поддерживает соблюдение стандартов безопасности и функциональных стандартов (например, ISO 26262, IEC 61511/61508, DO-178C). Использование формализованных требований, композиционных доказательств и спецификаций прослеживаемых свойств лежит в основе сертификации в таких областях, как автомобильная электроника, промышленная автоматизация, авионика и космические системы. Это нормативное согласование сделало формальные методы не только полезными, но часто обязательными для определенных классов систем.

Преимущества формальной проверки в инженерных требованиях

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

Раннее обнаружение и предотвращение ошибок

Важно проверить качества требований на ранних этапах разработки. Формальная проверка выявляет несоответствия, противоречия и логические ошибки до того, как какой-либо код написан или изготовлено оборудование. Это раннее обнаружение предотвращает распространение ошибок на последующих этапах разработки, где они становятся экспоненциально дороже для исправления. Исследования показали, что исправление ошибки требований, обнаруженной во время реализации или тестирования, может стоить в 10-100 раз дороже, чем ее устранение на этапе требований.

Математическая природа формальных методов позволяет обнаруживать тонкие ошибки, которые могут избежать человеческого обзора. К ним относятся расовые условия, тупики, нарушения граничных условий и сложные взаимодействия между компонентами системы, которые проявляются только в конкретных обстоятельствах. Исчерпывая пространство состояний или математически доказывая свойства, формальные методы могут идентифицировать эти крайние случаи, которые традиционное тестирование может пропустить.

Улучшенная точность и полнота спецификаций

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

Требования более высокого качества могут уменьшить ошибки на протяжении всего процесса разработки. Когда требования выражены формально, они становятся однозначными и проверяемыми. Эта точность устраняет проблемы интерпретации, которые преследуют спецификации естественного языка, где разные заинтересованные стороны могут понимать одно и то же требование по-разному. Формальная спецификация служит единым источником истины, на который могут ссылаться все стороны.

Значительное снижение затрат

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

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

Улучшенная надежность и уверенность системы

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

Преимущества формальных методов в плане надежности были продемонстрированы в многочисленных промышленных приложениях. Airbus с 2001 года интегрирует формальные методы проверки в процесс разработки программного обеспечения для авионики. Эти методы включают абстрактную интерпретацию, доказательство теорем и проверку моделей. Такое долгосрочное промышленное внедрение демонстрирует практическую ценность и повышение надежности, которые обеспечивают формальные методы.

Регуляторное соблюдение и поддержка сертификации

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

Формальные методы проверки, используемые Airbus, соответствуют строгим требованиям стандарта DO-178B, который регулирует разработку программного обеспечения для авионики.Это соответствие демонстрирует, как формальные методы могут быть интегрированы в существующие нормативные рамки, обеспечивая путь к сертификации при одновременном повышении качества системы.

Улучшение коммуникации и документации

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

Формальные спецификации также обеспечивают основу для автоматизированной поддержки инструмента на протяжении всего жизненного цикла разработки. Требования могут быть прослежены из спецификации через проектирование, внедрение и тестирование. Изменения требований могут быть проанализированы для их воздействия на другие части системы. Эта прослеживаемость и поддержка инструмента улучшает управление проектом и снижает риск дрейфа требований с течением времени.

Общие формальные методы для проверки требований

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

Проверка модели

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

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

Одной из наиболее мощных особенностей проверки модели является её способность генерировать контрпримеры при нарушении свойства. Эти контрпримеры показывают определённую последовательность состояний и переходов, которые приводят к нарушению, предоставляя ценную информацию отладки. Инженеры могут использовать эти контрпримеры, чтобы понять, почему требование не удовлетворено, и направлять исправления к проектированию системы или требованиям.

Спецификация системы выражается в виде набора формул временной логики, и система проверки различных моделей может поддерживать различные временные логики, такие как CTL (Computation Tree Logic), LTL (Linear Temporal Logic) и BTTL (Branching Time Temporal Logic). Система проверки модели проверяет, удовлетворяет ли структура Крипке временной логической формуле или нет, и типичные инструменты проверки модели включают SPIN, UPPAAL, PHAVer и т. Д.

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

Для решения проблемы взрыва состояния исследователи разработали несколько методов, включая символическую проверку модели с использованием бинарных диаграмм принятия решений (BDD), ограниченную проверку модели с использованием решателей SAT / SMT и методы абстракции, которые уменьшают пространство состояния при сохранении соответствующих свойств. Контрпримерная уточнение абстракции (CEGAR) начинает проверку с грубой (то есть неточной) абстракцией и итеративно уточняет ее. Когда обнаруживается нарушение, инструмент анализирует его для осуществимости. Если это не так, доказательство невозможности используется для уточнения абстракции и проверка начинается снова.

Теорема, доказывающая

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

Доказательство теорем стало доминировать в доказательных подходах к формальной верификации. Здесь рассматриваемая система моделируется как набор математических определений в некоторой формальной математической логике. Желаемые свойства системы затем выводятся в виде теорем, вытекающих из этих определений. Процесс доказательства включает применение правил логического вывода для получения желаемого свойства из модели системы и аксиом.

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

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

Популярные системы доказательства теоремы включают Coq, Isabelle/HOL, PVS и ACL2. Эти системы обеспечивают богатые математические библиотеки, тактику автоматизации доказательств и интерактивные среды разработки доказательств. Помощник доказательства помогает в генерации обязательств доказательства, которые по существу являются условиями, которые должны быть доказаны истинными для свойств, чтобы держать для данной формальной спецификации. Впоследствии происходит проверка обязательств доказательства, в которой каждое сформированное обязательство должно быть проверено. Если все обязательства доказательства успешно проверены, система считается проверенной и, таким образом, отвечает определенным спецификациям и свойствам.

Официальные языки спецификации

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

Временные логики, такие как линейная временная логика (LTL) и вычислительная древо логики (CTL), широко используются для определения свойств реактивных и параллельных систем.Эти логики расширяют пропозициональную логику с операторами, которые выражают временные отношения, позволяя инженерам определять свойства, такие как «в конечном итоге система достигнет безопасного состояния» или «система всегда будет реагировать на запрос в течение ограниченного времени».

Алгебраические языки спецификации, такие как Z, VDM и B, используют теорию множеств и логику предикатов для определения состояния системы и операций. Эти языки особенно хорошо подходят для определения систем с интенсивной передачей данных и могут выражать сложные инварианты и пред-/пост-условия. Метод B, например, поддерживает разработку на основе уточнения, где абстрактные спецификации постепенно совершенствуются в реализуемый код при сохранении математического доказательства правильности на каждом этапе.

Алгебры процессов, такие как CSP (Communicating Sequential Processes) и CCS (Calculus of Communicating Systems), предоставляют формальные обозначения для указания параллельных и распределенных систем.Эти языки моделируют системы как наборы процессов, которые взаимодействуют и синхронизируются, что делает их идеальными для проверки протоколов связи и параллельных алгоритмов.

Языки спецификаций домена были разработаны для конкретных областей применения. Например, AADL (Architecture Analysis & Design Language) используется для встроенных систем, ACSL (ANSI/ISO C Specification Language) для программ C и различные языки описания аппаратного обеспечения для цифровых схем. Эти языки описания домена обеспечивают абстракции и обозначения, которые соответствуют проблемному домену, что делает спецификацию более естественной и проверку более эффективной.

Комбинирование проверки модели и доказательства теоремы

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

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

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

Программа схемы: i) Преобразовать UML-машину модели проектирования программного обеспечения в MOCHA-интерфейс REACTIVE MODULES и проверить удовлетворяемость ожидаемых свойств в MOCHA; ii) Преобразовать уже проверенную UML-модель в абстрактные спецификации языка B и доработать ее в модель реализации, описанную языком B0 шаг за шагом; iii) Генерировать исходный код C по средствам Atelier-B. Этот рабочий процесс демонстрирует, как различные формальные методы могут быть интегрированы в согласованную стратегию проверки.

Статический анализ и абстрактная интерпретация

Методы статического анализа анализируют программный код без его выполнения, выявляя потенциальные ошибки, уязвимости безопасности и нарушения стандартов кодирования. Абстрактная интерпретация — теоретическая основа статического анализа, вычисляющая приблизительную, но здравую информацию о поведении программы. Эти методы можно рассматривать как легкие формальные методы, обеспечивающие автоматическую проверку с пониженной точностью по сравнению с проверкой модели или доказательством теоремы.

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

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

Проверка и мониторинг времени выполнения

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

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

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

Практическое применение формальных методов

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

Выбор подходящих формальных методов

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

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

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

Выбор и интеграция инструментов

Доступны многочисленные формальные инструменты проверки, каждый с различными возможностями, кривыми обучения и требованиями интеграции. FDR2: модельный чекер для проверки систем реального времени, смоделированных и заданных как CSP Processes. SPIN: общий инструмент для проверки правильности распределенных моделей программного обеспечения строгим и в основном автоматизированным способом. UPPAAL: интегрированная среда инструментов для моделирования, проверки и проверки систем реального времени, смоделированных как сети синхронизированных автоматов. Эти инструменты представляют собой лишь небольшую выборку доступных опций.

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

Интеграция с существующими рабочими процессами разработки имеет решающее значение для принятия. Формальные инструменты проверки должны интегрироваться с системами контроля версий, трубопроводами непрерывной интеграции и системами отслеживания выпуска. Автоматизированная проверка должна выполняться как часть регулярных сборок, при этом результаты сообщаются наряду с другими показателями качества. Эта интеграция делает формальную проверку естественной частью процесса разработки, а не отдельной деятельностью.

Стратегия постепенного усыновления

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

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

Измерять и сообщать о преимуществах формальных методов в терминах, которые резонируют с заинтересованными сторонами. Отслеживать такие показатели, как дефекты, обнаруженные во время проверки, дефекты, предотвращенные на более поздних этапах, время, сэкономленное на отладке, и затраты на сертификацию. Эти конкретные преимущества помогают оправдать продолжающиеся инвестиции и расширение использования формальных методов.

Управление сложностью и масштабируемостью

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

Абстракция — это мощный метод управления сложностью. Скрывая нерелевантные детали и фокусируясь на существенных свойствах, абстракция уменьшает пространство состояний, которое необходимо исследовать. Однако абстракция должна быть сделана тщательно, чтобы упрощенная модель точно представляла исходную систему для верифицируемых свойств.

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

Новые тенденции и будущие направления

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

Интеграция с искусственным интеллектом и машинным обучением

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

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

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

Формальные методы для киберфизических систем

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

Киберфизические системы объединяют вычислительные элементы с физическими процессами, вводя такие задачи, как непрерывная динамика, ограничения в реальном времени и взаимодействие с неопределенными средами.Формальные методы для этих систем должны обрабатывать гибридное дискретно-непрерывное поведение, вероятностные свойства и устойчивость к изменениям окружающей среды.

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

Улучшение удобства использования и усыновление разработчиков

Для преодоления разрыва в юзабилити необходимо тесное согласование с привычными процессами разработки. Для широкого внедрения предлагаются такие инициативы, как интеграция формальных бэкэндов проверки с системами тестирования на основе свойств (например, Rust proptest, KLEE, Crux) и фокусирование на положительных еженедельных соотношениях затрат и выгод. Для широкого внедрения крайне важно сделать формальные методы более доступными для основных разработчиков.

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

Образовательные инициативы также важны для более широкого внедрения. Университеты внедряют формальные методы в учебные программы по разработке программного обеспечения, а онлайн-ресурсы делают учебные материалы более доступными. Промышленные семинары и учебные программы помогают практикующим инженерам приобретать навыки формальных методов.

Непрерывная проверка и интеграция DevOps

Движение DevOps подчеркивает непрерывную интеграцию, непрерывную доставку и быструю итерацию. Интеграция формальной проверки в эту быстро развивающуюся модель разработки требует автоматизированных, поэтапных методов проверки, которые обеспечивают быструю обратную связь. Непрерывная проверка выполняет формальные проверки автоматически, когда код изменяется, улавливая ошибки сразу, а не в периодических проверках.

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

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

Тематические исследования и промышленные применения

Изучение реальных применений формальных методов дает ценную информацию об их практических преимуществах и проблемах.

Аэрокосмическая и авионика

Аэрокосмическая промышленность была пионером в принятии формальных методов для критически важных систем безопасности. Airbus интегрирует формальные методы проверки в процесс разработки программного обеспечения авионики с 2001 года. Эти методы включают абстрактную интерпретацию, доказательство теоремы и проверку моделей. Это долгосрочное обязательство демонстрирует зрелость и ценность формальных методов в этой области.

Формальные методы использовались для проверки систем управления полетом, автопилотов и протоколов связи в самолётах. Эти проверки выявили тонкие ошибки, которые могли привести к катастрофическим сбоям. Математические доказательства, полученные формальной верификацией, дают убедительные доказательства для органов по сертификации, оптимизируя процесс сертификации.

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

Медицинские устройства и системы здравоохранения

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

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

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

Автомобили и автономные транспортные средства

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

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

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

Финансовые системы и блокчейн

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

Блокчейн и платформы смарт-контрактов вызвали новый интерес к формальной проверке. Смарт-контракты — это программы, которые автоматически выполняются на блокчейн-платформах, часто контролируя значительные финансовые активы. Ошибки в смарт-контрактах могут привести к существенным финансовым потерям и не могут быть легко исправлены после развертывания.

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

Проблемы и ограничения

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

Требования к экспертизе и обучению

Формальные методы требуют специализированных знаний математической логики, формальных языков спецификаций и инструментов проверки. Кривая обучения может быть крутой, особенно для инженеров без сильных математических фонов. Организации должны инвестировать в обучение и, возможно, потребуется нанять специалистов с опытом формальных методов.

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

Масштабируемость и производительность

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

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

Специфические проблемы

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

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

Инструмент зрелости и интеграции

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

Формальный ландшафт инструментов методов фрагментирован, с множеством специализированных инструментов для различных методов и областей. Эта фрагментация может затруднить выбор соответствующих инструментов и объединение нескольких методов. Усилия по разработке совместимых цепочек инструментов и стандартных форматов для обмена артефактами проверки помогают решить эту проблему.

Лучшие практики для внедрения формальных методов

Организации могут максимизировать преимущества формальных методов, следуя устоявшейся передовой практике, основанной на успешном промышленном применении.

Начните с четких целей

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

Инвестируйте в качество спецификации

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

Установите соответствующие уровни абстракции

Выберите уровни абстракции, подходящие для проверяемых свойств. Слишком подробные модели делают проверку вычислительно дорогостоящей без предоставления дополнительной ценности. Сверхабстрактные модели могут не точно представлять систему для интересующих свойств. Поиск правильного уровня абстракции требует понимания как системы, так и применяемых методов проверки.

Использование модульности и состава

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

Совместите несколько методов

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

Сохраняйте прослеживаемость

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

Построение организационного потенциала

Развивать экспертизу формальных методов как организационную способность, а не в зависимости от отдельных экспертов. Создавать сообщества практики, где практикующие делятся знаниями и опытом. Разрабатывать библиотеки спецификаций многоразового использования, моделей доказательств и стратегий проверки. Извлеченные уроки и передовой опыт. Это организационное обучение усиливает ценность формальных методов с течением времени.

Заключение

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

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

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

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

Для дальнейшего изучения формальных методов и проверки требований рассмотрите посещение ресурсов, таких как серия конференций FLT:0 FormaliSE, которая объединяет исследователей и практиков, работающих на пересечении формальных методов и разработки программного обеспечения, или организация FLT:2 Formal Methods Europe, которая способствует использованию формальных методов в промышленности и предоставляет образовательные ресурсы и сетевые возможности для практиков.