SIGNAL — это язык программирования , основанный на синхронизированном потоке данных (потоки + синхронизация): процесс — это набор уравнений элементарных потоков, описывающих как данные, так и управление. [1]
Формальная модель SIGNAL обеспечивает возможность описания систем с несколькими часами [2] [3] (полихронные системы) в качестве реляционных спецификаций . Отношения полезны в качестве частичных спецификаций и спецификаций недетерминированных устройств (например, недетерминированного автобуса ) или внешних процессов (например, небезопасного водителя автомобиля).
Использование SIGNAL позволяет указать [ 4] приложение, спроектировать архитектуру , уточнить подробные компоненты вплоть до RTOS [ необходимо разъяснение ] или описания оборудования. Модель SIGNAL поддерживает методологию проектирования , которая идет от спецификации к реализации , от абстракции к конкретизации , от синхронности к асинхронности .
SIGNAL в основном разрабатывался командой INRIAEspresso с 1980-х годов, одновременно с похожими языками программирования Esterel и Lustre .
Язык SIGNAL был впервые разработан для приложений обработки сигналов в начале 1980-х годов. Он был предложен для удовлетворения спроса на новый предметно-ориентированный язык для проектирования приложений обработки сигналов , приняв стиль потока данных и блок-схемы с операторами массива и скользящего окна . P. Le Guernic, A. Benveniste и T. Gautier отвечали за определение языка. Первая статья о SIGNAL была опубликована в 1982 году, а первое полное описание SIGNAL появилось в докторской диссертации T. Gautier. Символическое представление СИГНАЛА через z/3z (над [-1,0,1]) было введено в 1986 году. Полный компилятор СИГНАЛА, основанный на исчислении часов на иерархии булевых часов, был описан Л. Беснаром в его докторской диссертации в 1992 году. Исчисление часов было позже улучшено Т. Амагбеньоном с предложением древовидных канонических форм.
В 1990-х годах область применения языка SIGNAL была расширена на общие встроенные системы и системы реального времени. Стиль спецификации, ориентированный на отношения, позволил увеличить построение систем, а также привел к проектированию, учитывающему многотактовые системы, по сравнению с первоначальной реализацией Esterel и Lustre на основе одного такта. Более того, проектирование и реализация распределенных встроенных систем также были приняты во внимание в SIGNAL. Соответствующие исследования включают методы оптимизации, предложенные Б. Шероном, модели кластеризации, определенные Б. Ле Гоффом, абстракцию и раздельную компиляцию, формализованные О. Маффеисом, и реализацию распределенных программ, разработанных П. Обри.
Набор инструментов Polychrony — это среда разработки с открытым исходным кодом для критических/встроенных систем на основе SIGNAL, языка полихронных потоков данных в реальном времени . Он предоставляет унифицированную среду на основе моделей для выполнения проектных исследований с использованием методологий проектирования сверху вниз и снизу вверх, формально поддерживаемых преобразованиями моделей проектирования от спецификации к реализации и от синхронности к асинхронности. Его можно включать в гетерогенные системы проектирования с различными формализмами ввода и языками вывода.
Полихрония — это набор инструментов, состоящий из:
Среда SME (SIGNAL Meta в Eclipse) является интерфейсом Polychrony в среде Eclipse , основанной на технологиях Model-Driven Engineering (MDE). Она состоит из набора подключаемых модулей Eclipse, которые опираются на Eclipse Modeling Framework (EMF). Среда построена вокруг SME, метамодели [7] языка SIGNAL, расширенной концепциями режимных автоматов [8] .
Среда МСП состоит из нескольких плагинов, которые соответствуют: