Construction and Analysis of Distributed Processes

Construction and Analysis of Distributed Processes (CADP) — набор инструментов для проектирования коммуникационных протоколов и распределённых систем. Разрабатывается командой CONVECS (ранее VASY) в INRIA Rhône-Alpes и связан с рядом дополнительных инструментов. CADP поддерживается, регулярно обновляется и используется во многих промышленных проектах.

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

Общие сведения
Construction and Analysis of Distributed Processes
Тип набор инструментов для проектирования коммуникационных протоколов и распределённых систем
Разработчики INRIA, команда CONVECS (ранее команда VASY)
Операционные системы Windows, macOS, Linux, Solaris, OpenIndiana
Первый выпуск 1989
Последняя версия 2023 (13 декабря 2024)
Сайт cadp.inria.fr

Возможности

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

В состав CADP входят инструменты, поддерживающие два подхода, необходимых для проектирования надёжных систем:

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

История

Работы над CADP начались в 1986 году с разработки первых двух инструментов — CAESAR и ALDEBARAN. В 1989 году был введён акроним CADP, означавший «CAESAR/ALDEBARAN Distribution Package». Позже были добавлены новые инструменты и программные интерфейсы, что позволило интегрировать сторонние компоненты; название стало трактоваться как «CAESAR/ALDEBARAN Development Package». Сейчас CADP включает более 50 инструментов. Несмотря на сохранение акронима, полное название было изменено в соответствии с назначением: «Construction and Analysis of Distributed Processes».

Основные релизы

Выпуски CADP получали имена сначала по буквам латинского алфавита («A»—"Z"), затем — именами городов, где работают академические группы, внёсшие крупный вклад в развитие языка LOTOS и теории параллелизма.

Кодовое имя Дата
«A» … «Z» январь 1990 — декабрь 1996
Twente июнь 1997
Liege январь 1999
Ottawa июль 2001
Edinburgh декабрь 2006
Zurich декабрь 2013
Amsterdam декабрь 2014
Stony Brook декабрь 2015
Oxford декабрь 2016
Sophia Antipolis декабрь 2017
Uppsala декабрь 2018
Pisa декабрь 2019
Aalborg декабрь 2020
Saarbruecken декабрь 2021
Kista декабрь 2022
Aachen декабрь 2023
Eindhoven декабрь 2024

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

Возможности CADP

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

  • Компиляторы для различных формализмов:
    • Описания протоколов высокого уровня на стандарте LOTOS[1]. В комплект входят два компилятора (CAESAR и CAESAR.ADT), переводящих LOTOS-описания в C-код для моделирования, тестирования и верификации.
    • Описания протоколов низкого уровня в виде конечных автоматов.
    • Сети коммуницирующих автоматов — конечные автоматы, работающие параллельно (синхронизация операторами алгебры процессов или через векторы синхронизации).
  • Инструменты проверки эквивалентности (минимизация, сравнение по бимуляции и др.) — BCG_MIN, BISIMULATOR.
  • Модель-чекеры для различных логик времени и μ-исчисления: EVALUATOR, XTL.
  • Различные алгоритмы верификации: перечислительная, по ходу построения (on-the-fly), символическая (по решающим диаграммам), композиционная минимизация, частичные порядки, распределённая модельная проверка и другие подходы.
  • Дополнительные инструменты: визуальная проверка, оценка производительности и др.

CADP построен по модульному принципу, акцентировано использование промежуточных форматов и открытых интерфейсов (например, среды BCG и OPEN/CAESAR), что позволяет интегрировать инструменты CADP с другими программами и адаптировать под разные языки спецификаций.

Модели и методы верификации

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

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

  • Поведенческие свойства задаются в виде автоматов (или описаний, переводимых в автоматы). В таком случае применяют проверку эквивалентности: сравнивают модель системы и свойство (оба в виде автоматов) с учётом заданных эквивалентностей или отношений предшествования. Некоторые средства CADP позволяют проверять также вероятностные (например, марковские) и стохастические модели, выполнять визуальную проверку.
  • Логические свойства задаются формулами логики времени. Их проверяют методом модельной проверки, определяя, выполняется ли формула на данной модели. Пример — поддержка расширенного модального μ-исчисления с типизированными переменными, что позволяет выразить свойства, невозможные в стандартной логике (например, возрастающую вдоль траектории величину переменной).

Эти методы автоматизированы и эффективны, но ограничены проблемой взрыва состояний (state explosion), когда модель слишком велика для размещения в памяти. Для борьбы с этим CADP поддерживает два подхода:

  • Малые модели размещаются полностью в памяти (полная переборная верификация);
  • Крупные модели проверяются путём динамического построения только нужных частей (on-the-fly verification).

Языки описания и методы компиляции

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

CADP работает с описаниями системы на языке LOTOS, международном стандарте для протоколов (ISO/IEC 8807:1989), который совмещает подход алгебр процессов (CCS, CSP) и абстрактных типов данных. LOTOS допускает описание как асинхронных параллельных процессов, так и сложных структур данных.

В 2001 году LOTOS существенно переработан: появился стандарт E-LOTOS (ISO/IEC 15437:2001), обладающий большей выразительностью (например, введено описание времени/реального времени) и улучшенной удобством пользователя.

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

Платформы и совместимость

Поддерживаются основные операционные системы: Windows, macOS, Linux, Solaris, OpenIndiana.

Лицензирование и установка

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

Краткий обзор инструментов

В состав CADP входят многочисленные инструменты, среди которых:

  • CAESAR.ADT[3] — компилятор, переводящий абстрактные типы данных LOTOS в типы и функции на языке C (реализует техники сопоставления с образцом и автоматическое определение стандартных типов).
  • CAESAR[4] — компилятор LOTOS-процессов в код на языке C (для быстрого прототипирования и тестирования) или в конечные графы (для верификации); строит, в частности, сеть Петри с типизированными переменными.
  • OPEN/CAESAR[5] — программная среда для разработки инструментов исследования графов по ходу построения (симуляция, тестирование, верификация и др.), не зависящих от конкретного языка описания; состоит из 16 библиотек и интерфейсов, включая:
    • Caesar_Hash (хэш-функции), Caesar_Solve (решение булевых уравнений), Caesar_Stack (реализация стека для обхода в глубину), Caesar_Table (таблицы состояний, переходов и меток).

На базе OPEN/CAESAR построен ряд инструментов:

    • BISIMULATOR (проверка бимуляций), CUNCTATOR (имитация стационарного состояния), DETERMINATOR (устранение стохастического недетерминизма), DISTRIBUTOR (распределённое построение графа достижимости), EVALUATOR (проверка формул μ-исчисления без перемежений), EXECUTOR (случайное исполнение кода), EXHIBITOR (поиск последовательностей по регулярному выражению), GENERATOR (построение графа достижимости), PREDICTOR (прогноз выполнимости анализа достижимости), PROJECTOR (вычисление абстрактных моделей), REDUCTOR (минимизация графа достижимости), SIMULATOR / X-SIMULATOR / OCIS (интерактивное моделирование), TERMINATOR (поиск тупиковых состояний).
  • BCG (Binary Coded Graphs) — формат файлов для хранения больших графов с сжатием и программная среда для их обработки (поддержка распределённой работы). Окружение BCG включает библиотеки и набор инструментов:
    • BCG_DRAW (двумерное визуальное представление графа), BCG_EDIT (интерактивное редактирование), BCG_GRAPH (генерация полезных графов), BCG_INFO (статистическая информация), BCG_IO (конвертация между форматами), BCG_LABELS (скрытие и переименование меток переходов), BCG_MERGE (слияние фрагментов графа), BCG_MIN (минимизация по сильной/ветвящейся эквивалентности, поддержка вероятностных и стохастических моделей), BCG_STEADY и BCG_TRANSIENT (статистическая и переходная анализа марковских моделей), PBG_CP / INFO / MV / RM (работа с партиционированными графами).
    • XTL (eXecutable Temporal Language) — язык высокого уровня для программирования алгоритмов исследования графов BCG (определение функций на множествах состояний, реализация фиксированных точек для логик типа HML[6], CTL[7], ACTL[8] и др.).

Связь между явными моделями (графы BCG) и неявными моделями (исследуемыми on-the-fly) обеспечивается совместимыми с OPEN/CAESAR компиляторами (CAESAR.OPEN, BCG.OPEN, EXP.OPEN, FSP.OPEN, LNT.OPEN, SEQ.OPEN).

В состав CADP также входят инструменты ALDEBARAN и TGV (Test Generation based on Verification), разработанные лабораторией Verimag (Гренобль) и проектной группой Vertecs INRIA Rennes.

Интеграция инструментов реализована с помощью графического интерфейса EUCALYPTUS и скриптового языка SVL[9]. Оба средства объединяют доступ к инструментам CADP, автоматизируя преобразование форматов файлов и выбор нужных опций командной строки.

Выпуски

История версий
Версия Дата
«A» … «Z» январь 1990 — декабрь 1996
Twente июнь 1997
Liege январь 1999
Ottawa июль 2001
Edinburgh декабрь 2006
Zurich декабрь 2013
Amsterdam декабрь 2014
Stony Brook декабрь 2015
Oxford декабрь 2016
Sophia Antipolis декабрь 2017
Uppsala декабрь 2018
Pisa декабрь 2019
Aalborg декабрь 2020
Saarbruecken декабрь 2021
Kista декабрь 2022
Aachen декабрь 2023
Eindhoven декабрь 2024

Награды

  • В 2002 году Раду Мэческу, автор и разработчик модель-чекера EVALUATOR для CADP, был награждён премией Information Technology Award за вклад в симпозиуме Foundation Rhône-Alpes Futur[10].
  • В 2011 году Юбер Гаравель, архитектор и разработчик ПО CADP, получил премию Гей-Люссака — Гумбольдта[11].
  • В 2019 году Фредерик Ланг и Франко Маццанти заняли первые места во всех параллельных задачах конкурса RERS, используя CADP для правильной проверки 360 формул CTL и LTL на различных моделях коммуницирующих автоматов[12].[13]
  • В 2020 году Фредерик Ланг, Франко Маццанти и Венделин Серве выиграли три золотые медали на конкурсе RERS’2020, правильно решив 88 % параллельных CTL-задач[14].[15][16]
  • В 2021 году Юбер Гаравель, Фредерик Ланг, Раду Мэческу и Венделин Серве получили совместно приз «Инновация» от Inria — Академии наук — Dassault Systèmes за научный труд, приведший к созданию CADP[17].
  • В 2023 году Юбер Гаравель, Фредерик Ланг, Раду Мэческу и Венделин Серве получили за CADP первую премию Test-of-Time Tool Award от ETAPS, ведущего европейского форума по науке о программном обеспечении[18].

Примечания

Ссылки