Specification and Description Language

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Specification and Description Language (SDL) — это язык спецификаций, предназначенный для получения недвусмысленных спецификаций и описаний поведения реактивных и распределенных систем.

Обзор[править | править вики-текст]

Стандарт языка определен МККТТ (Рекомендации с Z.100 по Z.106). Исходно язык был ориентирован на телекоммуникационные системы, но сейчас в его область применения входят управление процессами и, вообще, приложения реального времени.

SDL предоставляет как графическое представление Graphic Representation (SDL/GR), так и текстовое Phrase Representation (SDL/PR), являющиеся полностью эквивалентными представлениями низлежащей семантики. Модели обычно отображаются в графической форме SDL/GR, а SDL/PR используется преимущественно для обмена моделями между утилитами. Система определена как множество взаимосвязанных абстрактных автоматов, являющихся расширениями конечных автоматов.

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

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

Первая версия языка была опубликована в 1976, он использовал графический синтаксис (SDL-76). В 1980 он был дополнен элементарной семантикой (SDL-80). В 1984 была улучшена семантика (SDL-84), а также была введена текстовая форма для машинной обработки. В 1988 был опубликован SDL-88, включавший формальные основания языка: абстрактную и реальную грамматики, а также полное формальное определение. Версия, выпущенная в 1992 (SDL-92) вводила объектно-ориентированные концепции, такие как наследование, абстрактные базовые типы и т. д., причем для объектно-ориентированных возможностей были описаны преобразования, приводящие их к стандартным. SDL-2000 (исходно опубликованный в 1999) — последняя на данный момент (июнь 2012) версия, полностью основанная на идеях объектно-ориентированного программирования и больше не включает в себя их сведение к базовым возможностям. Для этой версии с 1999 года выпускались служебные обновления, также для неё был разработана Рекомендация МККТТ Z.109 (06/07), где SDL-2000 объединен с UML.

Уровни иерархии[править | править вики-текст]

SDL включает в себя следующие уровни иерархии:

  • Пакет-библиотека
  • Системный агент
  • Блочный агент
  • Агент процесса
  • Процедурный тип
  • Удаленная процедура

Системный агент обычно состоит из нескольких блочных агентов. Блочные агенты общаются друг с другом посредством каналов связи. Блочный агент состоит из агентов процесса (обязательная структура в SDL-92; SDL-2000 более гибок). Каждый агент процесса — это конечный автомат, дающий вклад в действие, производимое системой. Воздействия с помощью сообщений от среды выполнения или от одного агента к другому называются сигналами. Сигналы, полученные агентом процесса сначала помещаются в очередь (входной порт). Когда конечный автомат переходит в состояние ожидания то, если первый сигнал во входном порте разрешен для этого состояния, происходит переход в другое состояние. При переходе также могут испускаться сигналы для других агентов или для среды выполнения. Агенту процесса разрешено содержать процедурные типы, так что одинаковые действия могут быть вызваны из разных мест. Также разрешен вызов удаленного процедурного типа для того, чтобы вызвать процедуру в другом агенте (или даже другой системе) и дождаться ответа.

SDL tools[править | править вики-текст]

Наиболее известными инструментами моделирования с поддержкой SDL являются Telelogic Tau, PragmaDev RTDS, Cinderella, Safire-SDL и ObjectGeode (более не выпускается). PragmaDev RTDS поддерживает как SDL, так и SDL-RT, который используется для разработки приложений реального времени и встраиваемых систем. Также существуют свободные приложения, поддерживающие SDL, например JADE — Java-среда для разработки спецификаций.

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]