Мансуров Н. Н., Майлингова О. Л. - Методы формальной спецификации программ - языки MSC и SDL (1185161), страница 9
Текст из файла (страница 9)
Пример тернарного отношения5.3. ОбъектыОбъектная модель состоит не только из классов, но также из объектови отношений между объектами. Отношения между объектамиотображаются с помощью связей, аналогично отображению отношениймежду классами с помощью ассоциаций. Объект изображается в видепрямоугольника с полем, содержащим имя объекта и ссылку на класс, иполем, содержащим имя атрибута и соответствующее ему константноезначение или значение, заданное по умолчанию. См. Рис. 10.Рис.
10 Объекты и связи между ними465.4. МодулиКак правило, полная объектная модель состоит из большого количестваобъектов. Для более наглядного представления объектной модели можноиспользовать список диаграмм. Необходимо заметить, что для описанияодного класса можно использовать несколько диаграммСсылки на классы, определенные в других модулях, префиксируютсяименем модуля, в котором данный класс определен: ExternalModule::Class.5.5.
ЗаключениеВ данной главе рассмотрена графическая нотация, используемая дляописания классов, отношений между классами и отношений междуобъектами классов. Внимание уделяется рассмотрению кардинальностиотношений.47Глава 6. Язык SDL6.1. Теоретическая модельSDL система представляет собой набор конечных автоматов, выполняющихсяпараллельно.
Все автоматы независимы и взаимодействуют при помощи посылкидискретных сигналов.SDL-система состоит из следующих компонентов:1. Структура - иерархическая декомпозиция, включающая в себя следующиеуровни: система, блок, процесс и процедура;2. Взаимодействие: асинхронные сигналы (возможно с параметрами);3. Поведение. «Носителями» поведения являются процессы. Поведение процессаописывается как набор состояний, для каждого из которых определеныразнообразные реакции на сигналы. Реакция на сигнал (т.н. переход)описывается в виде блок-схемы, в которой имеются различные действия,проверки условий и переходы на метки.4. Данные: алгебраические спецификации абстрактных типов данных;Абстрактный тип данных определяется как сигнатура (т.е.
набор литералов инабор операторов), а также набор алгебраических аксиом, которым должныудовлетворять операторы. Помимо алгебраических аксиом, имеетсявозможность определять т.н. процедурные операторы. Дополнительно, имеетсянабор предопределенных типов данных. Для работы с данными имеетсявозможность определять локальные переменные в процессах и процедурах;5.
Структурные типы – обобщение структурных единицв виде типов,определение объектов на основе типов, описание иерархий типов снаследованием и специализацией;6.2. Графические грамматикиЯзык SDL, как и некоторые другие современные языки спецификаций,использует графическое представление. Графический синтаксис особенно удобен идает интуитивное и прозрачное описание поведения системы.При описании графического синтаксиса возникает проблема формализацииописания пространственных отношений между символами. Для описанияструктуры линейного текста, порожденного операцией конкатенации, используетсяаппарат (контекстно-свободных) грамматик.
В отличие от линейного текста,диаграмма имеет пространственную структуру. Структура диаграммы порождаетсяоперацией размещения графических символов на плоскости. Аналогом операции48конкатенации является связывание графических символов, т.е. соприкосновениедвух графических символов своими границами на плоскости.Для описания графического синтаксиса будем использовать аппаратграфических грамматик. Графическая грамматика состоит из следующих семичастей:1) набор примитивных графических символов;2) описание текстовой лексики для атрибутов примитивных графическихсимволов;3) набор составных графических символов;4) описание атрибутов примитивных графических символов;5) описание составных графических символов;6) описание пространственных связей между графическими символами;7) начальный символ графической грамматики;Части 1) и 2) соответствуют алфавиту терминальных символов в текстовыхграмматиках.
Часть 2) описывает правила построения надписей на диаграмме.Часть 3) соответствует алфавиту нетерминальных символов в текстовыхграмматиках. Условимся заключать нетерминальные символы в угловые скобки< >. Части 4), 5) и 6) графической грамматики соответствуют правилам текстовыхграмматик. Часть 4) описание атрибутов примитивных графических символовиспользуется для привязки текстовых надписей к графическим символам надиаграмме. По определению, атрибут представляет собой обязательный элементнекоторого нетерминального символа. Обычно, атрибут лишен собственнойвнутренней структуры, т.е. является терминальным символом.
Заметим, чторазделение структуры нетерминальных символов на атрибуты и прочие(необязательные) элементы приближает аппарат грамматик к аппарату описанияклассов в объектно-ориентированном подходе. Часть 6) описаниепространственных связей отсутствует в текстовых грамматиках. Часть 7)начальный графический символ соответствует начальному нетерминальномусимволу в текстовых грамматиках.Для описания правил построения составных графических символов будемиспользовать расширенные формы Бэкуса-Наура.Для описания атрибутов графических символов и пространственных связеймежду графическими символами дополнительно расширим формы Бэкуса-Наураследующими ключевыми словами:X is associated with YX contains YX is connected to Yсимвол Y является атрибутом символа XX содержит YX соединен с Y49X is followed by Yсимволы X и Y соприкасаются (обычно боковымиграницами)X предшествует Yспециальный случай соединения символов;X и Y - символы, находящиеся на однойвертикальной оси, причем верхняя граница символаY соприкасается с нижней границей символа X6.3.
Структура SDL системыНа Рис. 11 показаны четыре основные уровня иерархии в языке SDL: система,блок, процесс и процедура.50Рис. 11. Средства описания структуры51SDL диаграмма содержит следующие вспомогательные символы:Рис. 12. Вспомогательные символы на диаграмме системыСимвол импорта пакетовСимвол импорта пакетов (Package Reference Symbol)подключения определений из импортируемых пакетов.используетсядляОсновной заголовокОсновной заголовок (Kernel Heading Symbol) автоматически создается редакторомSDL диаграмм. В этом символе содержится информация о типе и имениредактируемой диаграммы. Основной заголовок можно редактировать.Дополнительный заголовокДополнительный заголовок (Additional Heading Symbol) используется для заданиянаследования и специализации, а также для задания формальных параметровпроцессов и процедур.РамкаРамка (Frame Symbol) автоматически добавляется редактором.
Размер рамкиможно изменять, потянув мышью за один из углов.Номер страницыНомер страницы (Page Number Symbol) автоматически обновляется редактором.Номер страницы состоит из имени текущей страницы и общего числа страниц.Данный символ нельзя редактировать.526.3.1. СистемаСистема представляет собой основной контейнер для всех остальныхобъектов. Система определяет границу программного комплекса.
Все, чтонаходится вне этой границы, называется окружением системы. Внутри системынаходится набор блоков. Взаимодействие между системой и ее окружением, атакже между блоками внутри системы осуществляется только с помощью сигналов.Внутри системы, сигналы передаются по каналам. Каналы соединяют блоки друг сдругом или с окружением системы.Графический синтаксис:<system diagram> ::=[ <package reference area> ] is associated with<frame symbol> contains{ <system heading>{ <system text area> }*<block interaction area>{ <procedure area>}* }<frame symbol> ::=<system heading> ::= system <name><system text area> ::= <text symbol> contains{ <signal definition>| <data definition> }*<block interaction area> ::= {<graphical block reference>| <channel definition area> }*<graphical block reference> ::= <block symbol> contains <name><block symbol> ::=6.3.2.
БлокБлок является контейнером для одного или более процессов или содержитвложенные блоки (сгруппированные в <block substructure area>). Блок определяетструктуру коммуникации для процессов в виде межпроцессных каналов междуотдельными процессами, а также между процессами и окружением блока.Графический синтаксис:53<block diagram> ::= <frame symbol>contains {<block heading>{<block text area> }* <procedure area> }*{<process interaction area>|<block substructure area>}}is associated with { <channel identifiers> }*<channel identifiers> ::= <channel identifier>{,<channel identifier>}*Примечание:<channel identifiers> определяют соединения межпроцессных каналов смежблочными каналами в окружении блока.
Графически, соединениярасполагаются снаружи рамки блока вблизи конца межпроцессного канала нарамке блока.<block heading> ::= block <name><block text area> ::= <system text area><process interaction area> ::= { <process area>| <create line area>| <signal route definition area> }+<process area> ::= <graphical process reference><graphical process reference> ::= <process symbol>contains{<process name>[<number of process instances>]}<process symbol> ::=<create line area> ::= <create line symbol>is connected to { <process area> <process area> }<create line symbol> ::=6.3.3.
ПроцессПроцесс является основным «носителем» поведения. Несколько экземпляроводного процесса могут работать асинхронно и параллельно друг с другом иэкземплярами других процессов.Каждый экземпляр процесса – это расширенный конечный автомат,взаимодействующий с другими такими же автоматами и с окружением системы.Процесс выполняет последовательности действий (переходы) в качестве реакции наполучение сигнала. После выполнения цепочки действий процесс ожидаетполучения нового сигнала в некотором состоянии.
Каждый процесс имеет54единственный входной порт (очередь сигналов), в которую попадают сигналы отвсех остальных процессов в порядке поступления.При порождении системы статически создаются некоторые экземплярыпроцессов. Обмен сигналами начинается только после того момента, когдасозданы все статические экземпляры процессов. Остальные экземпляры процессовмогут порождаться динамически другими процессами (в качестве одного издействий на некотором переходе).
При этом на диаграмме блока нужно указыватьсвязь по порождению между процессами (от «процесса-отца» к «процессу-сыну»).Графический синтаксис:<process diagram> ::= <frame symbol>contains { <process heading>{ <process text area> }*{ <procedure area> }*<process graph area> }<process text area> ::= <text symbol> contains {[ <valid input signal set> ]{ <signal definition>| <signal list definition>| <variable definition>| <data definition>| <timer definition> }*<process heading> ::= process <name>[ <number of process instances> ; ][<formal parameters>]<process graph area> ::=<start area> { <state area> | <in-connector area> }*<number of process instances> ::=(<initial number>,<maximum number>)<initial number> ::= <natural expression><maximum number> ::= <natural expression><valid input signal set> ::= signalset [<signal list> ] ;<formal parameters> ::= fpar <parameter of sort>{ , <parameter of sort> }*<parameter of sort> ::= <variable name> <sort>Примечание:<initial number> задает число экземпляров процесса, порождаемых статически присоздании системы.