У этого термина существуют и другие значения, см.
SDL.
Specification and Description Language (SDL) — это язык спецификаций с формальной семантикой. Предназначен для получения недвусмысленного описания поведения реактивных и распределенных систем. Разработан и стандартизован МККТТ. Основывается на моделях расширенных конечных автоматов (ESFM (англ.)) для описания поведения системы и абстрактных типов данных. Является смешанным языком спецификаций, так как позволяет определять как динамическую часть системы (коммуникацию процессов), так и статическую (типы данных)[1].
Обзор
Стандарт языка определен МККТТ (рекомендации с Z.100 по Z.106). Исходно язык был ориентирован на телекоммуникационные системы, но сейчас в его область применения входят управление процессами и, вообще, приложения реального времени.
SDL предоставляет как графическое представление Graphic Representation (SDL/GR), так и текстовое Phrase Representation (SDL/PR), являющиеся полностью эквивалентными представлениями семантики[1]. Модели обычно отображаются в графической форме SDL/GR, а SDL/PR используется преимущественно для обмена моделями между утилитами. Система определена как множество взаимосвязанных абстрактных автоматов, являющихся расширениями конечных автоматов.
SDL охватывает пять основных аспектов: структуру, коммуникацию, поведение, данные и наследование. Поведение компонентов объясняется разделением системы на уровни иерархии. Связь между компонентами происходит при помощи портов (gates), соединенных каналами (channels). Эти каналы имеют некоторую задержку, поэтому связь обычно асинхронна; при установке задержки в ноль она превращается в синхронную.
Первая версия языка была опубликована в 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 являются Telelogic Tau, PragmaDev RTDS, Cinderella, Safire-SDL и ObjectGeode (более не выпускается)[2]. PragmaDev RTDS поддерживает как SDL, так и SDL-RT, который используется для разработки приложений реального времени и встраиваемых систем. Также существуют свободные приложения, поддерживающие SDL, например JADE — Java-среда для разработки спецификаций.
См. также
Примечания
Литература
Ссылки