Разработка систем реального временис использованием UML и каркасов приложений

Содержание

Слайд 2

Исходные предпосылки

Распространение языка моделирования UML
Развитие инструментов разработки на основе визуального моделирования
Применение инструментов

Исходные предпосылки Распространение языка моделирования UML Развитие инструментов разработки на основе визуального
на всех стадиях процесса разработки
Специализация инструментов
Инструменты для разработки встраиваемых систем и приложений реального времени
Автоматическая генерация кода, тестирование, временной анализ и верификация

Слайд 3

Пример разработки секундомера

Пример разработки секундомера

Слайд 4

Требования к секундомеру

Секундомер имеет одну кнопку для запуска и остановки и дисплей

Требования к секундомеру Секундомер имеет одну кнопку для запуска и остановки и
для отображения. Дисплей отображает минуты и секунды
При нажатии и отпускании кнопки в течении 2 секунд секундомер запускается либо останавливается
Если кнопка удерживается нажатой более чем 2 секунды, то секундомер сбрасывается в 0 и останавливается

Слайд 5

Определение классов и связей между ними

Определение классов и связей между ними

Слайд 6

Создание объектов и инициализация связей

Создание объектов и инициализация связей

Слайд 7

Определение сценариев для запуска и сброса секундомера

Определение сценариев для запуска и сброса секундомера

Слайд 8

Определение реакции на события на диаграммах состояний

Определение реакции на события на диаграммах состояний

Слайд 9

Установка для таймера свойства Concurrency=guarded
В коде появляется макрос GUARD_OPERATION
Обработка асинхронных событий становится

Установка для таймера свойства Concurrency=guarded В коде появляется макрос GUARD_OPERATION Обработка асинхронных
защищенной (eventGuard != 0)

Зашита синхронных операций

Слайд 10

Определение компонента и сборка приложения

Определение компонента и сборка приложения

Слайд 11

Отладка и тестирование приложения на уровне модели

Отладка и тестирование приложения на уровне модели

Слайд 12

Каркас приложения в Telelogic Rhapsody

Каркас приложения в Telelogic Rhapsody

Слайд 13

Каркасы приложений

Набор предопределённых взаимодействующих классов
Предоставляют сервисы при разработке приложений определённого типа
Разработка приложений

Каркасы приложений Набор предопределённых взаимодействующих классов Предоставляют сервисы при разработке приложений определённого
путём наследования и переопределения

Слайд 14

Преимущества использования каркасов

Отсутствие необходимости создания приложений с нуля
Определяют архитектуру целевых систем
Представляют открытые

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

Слайд 15

Генерация кода приложений реального времени на основе каркаса

В сгенерированном коде используется API

Генерация кода приложений реального времени на основе каркаса В сгенерированном коде используется
каркаса
Каркас реализует основные абстракции приложений реального времени
Значительная часть функциональности содержится в классах каркаса
Классы каркаса могут быть адаптированы под конкретные нужды
Каркас – это библиотека, независимая от генератора кода
Каркас не ограничивает приложения от использования других библиотек и сервисов ОС

Слайд 16

Компоненты каркаса Telelogic Rhapsody

Object Execution Framework (OXF)
OS adapter level
Сервисные классы
Animation framework

CPU

Существующий код

ОСРВ

Каркас приложения

Сгенерированный

Компоненты каркаса Telelogic Rhapsody Object Execution Framework (OXF) OS adapter level Сервисные
код

Слайд 17

Виды событий

Асинхронные события
События времени
События вызова (синхронные)

Виды событий Асинхронные события События времени События вызова (синхронные)

Слайд 18

Наследование от классов каркаса

Наследование от классов каркаса

Слайд 19

Активный класс

Наследуется от класса OMThread каркаса
Запускает в отдельном потоке функцию Execute
Содержит очередь

Активный класс Наследуется от класса OMThread каркаса Запускает в отдельном потоке функцию
событий
Предоставляет функцию queue для помещения событий в очередь
В Execute разгребает очередь, передавая события адресатам на обработку в функцию handleEvent
Позволяет перекрыть Execute для реализации другого поведения

Слайд 20

Реактивный класс

Наследуется от класса OMReactive каркаса
Предоставляет функцию send для передачи классу асинхронных

Реактивный класс Наследуется от класса OMReactive каркаса Предоставляет функцию send для передачи
событий
Помещает полученные асинхронные события в связанный с ним активный класс для диспетчеризации
Получает события от активного класса на обработку, вызывающего его функцию handleEvent
Вызывает виртуальную функцию rootState_processEvent для обработки событий
По умолчанию код для функции rootState_processEvent генерируется на основании диаграммы состояний

Слайд 21

Посылка асинхронного события

Посылка асинхронного события

Слайд 22

Диспетчеризация асинхронных событий

Диспетчеризация асинхронных событий

Слайд 23

Классы каркаса для управления таймаутами

Классы каркаса для управления таймаутами

Слайд 24

Таймауты

Таймауты – это особый вид событий на которые можно определять реакции на

Таймауты Таймауты – это особый вид событий на которые можно определять реакции
диаграмме состояний
Таймауты создаются в сгенерированном коде при входе в состояние и уничтожаются при выходе
Всеми таймаутами управляет объект TimeoutsManager
При истечении таймаута TimeoutsManager помещает его в очередь активного объекта для диспетчеризации
Таймауты диспетчеризуются активными объектами наравне с другими событиями в очереди

Слайд 25

Планирование таймаутов

Планирование таймаутов

Слайд 26

Синхронные события вызова

События вызова генерируются при вызове тригерных операций класса
В операции создаётся

Синхронные события вызова События вызова генерируются при вызове тригерных операций класса В
одноимённое событие и сразу же передаётся на обработку в handleEvent
На диаграмме состояний можно определять переходы и реакции на такие события
Реализация для тригерных операций генерируется автоматически

Слайд 27

Объекты создаваемые каркасом

Объекты создаваемые каркасом

Слайд 28

Связывание реактивных объектов с активными

По умолчанию связывается с активным объектом MainThread
Связывается с

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

Слайд 29

Разновидности каркасов

Object Execution Framework (использует ОС)
Interrupt Driven Framework (не использует ОС)
Synchronous Framework

Разновидности каркасов Object Execution Framework (использует ОС) Interrupt Driven Framework (не использует
(не использует ОС)
Имя файла: Разработка-систем-реального-временис-использованием-UML-и-каркасов-приложений.pptx
Количество просмотров: 135
Количество скачиваний: 1