- •2. Ядра и операционные системы реального времени
- •2.1. Задачи, процессы, потоки
- •2.2. Основные свойства задач
- •2.3. Планирование задач
- •2.4. Синхронизация задач
- •2.5. Тестирование
- •2.6. Можно ли обойтись без ОС РВ?
- •3. Обзор некоторых операционных систем реального времени
- •3.1. Linux реального времени
- •3.2. Операционные системы реального времени и Windows
- •3.3. Операционная система QNX
- •3.4. Проект Neutrino
- •4.1. Организация промышленных систем
- •4.2. Аппаратная архитектура
- •4.3. Стандарты шин
- •4.4. Технологии VME и PCI
- •4.5. Мезонинные технологии
- •4.6. Полевые системы
- •4.7. Программное обеспечение промышленных систем
- •4.8. Управление производством
- •Часть 2. ПРОЕКТИРОВАНИЕ СРВ
- •5. UML проектирование систем реального времени
- •5.1. Объектно-ориентированные методы и UML
- •5.2. Метод и нотация
- •5.3. Системы и приложения реального времени
- •6. Обзор нотации UML
- •6.1. Диаграммы UML
- •6.2. Диаграммы прецедентов
- •6.3. Нотация UML для классов и объектов
- •6.4. Диаграммы классов
- •6.5. Диаграммы взаимодействия
- •6.6. Диаграммы состояний
- •6.7. Пакеты
- •6.8. Диаграммы параллельной кооперации
- •6.9. Диаграммы развертывания
- •6.10. Механизмы расширения UML
- •7.1. Среды для параллельной обработки
- •7.2. Поддержка исполнения в мультипрограммной и мультипроцессорной средах
- •7.3. Планирование задач
- •7.4. Вопросы ввода/вывода в операционной системе
- •7.6. Технология World Wide Web
- •7.7. Сервисы распределенных операционных систем
- •7.8. ПО промежуточного слоя
- •7.9. Стандарт CORBA
- •7.10. Другие компонентные технологии
- •7.11. Системы обработки транзакций
- •8. Разбиение на задачи
- •8.1. Вопросы разбиения на параллельные задачи
- •8.2. Категории критериев разбиения на задачи
- •8.3. Критерии выделения задач ввода/вывода
- •8.4. Критерии выделения внутренних задач
- •8.5. Критерии назначения приоритетов задачам
- •8.6. Критерии группировки задач
- •8.7. Пересмотр проекта путем инверсии задач
- •8.8. Разработка архитектуры задач
- •8.9. Коммуникации между задачами и синхронизация
- •8.10. Спецификация поведения задачи
- •9. Проектирование классов
- •9.1. Проектирование классов, скрывающих информацию
- •9.2. Проектирование операций классов
- •9.3. Классы абстрагирования данных
- •9.4. Классы интерфейса устройства
- •9.5. Классы, зависящие от состояния
- •9.6. Классы, скрывающие алгоритмы
- •9.7. Классы интерфейса пользователя
- •9.10. Внутренние программные классы
- •9.11. Применение наследования при проектировании
- •9.12. Примеры наследования
- •9.13. Спецификация интерфейса класса
- •10. Детальное проектирование ПО
- •10.1. Проектирование составных задач
- •10.2. Синхронизация доступа к классам
- •10.4. Логика упорядочения событий
- •11.1. Теория планирования в реальном времени
- •11.2. Развитие теории планирования в реальном времени
- •11.5. Пример анализа производительности с помощью анализа последовательности событий
- •11.6. Пример анализа производительности с применением теории планирования в реальном времени
- •11.8. Пересмотр проекта
- •11.9. Оценка и измерение параметров производительности
- •12. ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
214 |
Рис.9.6. Пример класса-алгоритма: а – аналитическая модель (диаграмма коо- перации); б – проектная модель (диаграмма кооперации); в –проектная модель (диаграмма классов)
9.7. Классы интерфейса пользователя
Класс интерфейса пользователя скрывает от других классов де-
тали человеко-машинного интерфейса. В зависимости от приложения
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
215 |
интерфейс пользователя может быть очень простым (например, в ви- де командной строки) или весьма сложным (графический интерфейс пользователя – ГИП). Чтобы реализовать интерфейс командной стро- ки, достаточно одного класса, а для графического интерфейса требу- ется, как правило, несколько. Низкоуровневые классы интерфейса пользователя – это элементы управления, находящиеся в библиотеках компонентов: окна, меню, кнопки и диалоги. Высокоуровневые клас- сы пользовательского интерфейса часто составляются из таких клас- сов.
В аналитической модели акцент делается на идентификации со-
ставных классов пользовательского интерфейса и сборе информации о том, какие данные пользователь должен вводить, а какие ему надо показать. На этой же стадии можно проектировать выводимые фор- мы. В проектной модели приложения с графическим интерфейсом
нужно определить классы для каждой экранной формы В качестве примера рассмотрим класс Интерфейс Клиента (рис.9.7а). Это ос- новной интерфейс клиента банкомата. В классе Интерфейс Клиента есть операции для каждого окна, используемого для диалога с поль-
зователем: вывести ОкноПИН-кода, вывестиОкноСнятияДенёг, вы- вестиОкноПеревода Денег и вывестиОкноСправки – а также для вы-
вода меню: вывестиМеню. Имеется операция для работы с малень- ким окном, предназначенным для вывода приглашений и сообщений пользователю, но не для ввода данных. Параметром такой операции служит идентификатор выводимого сообщения. Каждое окно показы- вает некоторую информацию, а затем, возможно, ожидает ввода дан- ных, которые возвращаются в виде выходного параметра.
Класс Интерфейс Клиента – это составной класс, включающий несколько низкоуровневых классов, как показано на рис.9.76. В него входят классы для каждого окна, необходимого при организации ин-
терфейса с клиентом: окно Главного Меню, Окно ПИН-кода, Окно Снятия Денег, Окно Перевода Денег, Окно Справки и Окно Пригла- шения.
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
216 |
Рис.9.7. Пример класса интерфейса пользователя:
а– класс интерфейса пользователя с операциями;
б– структура составного класса пользовательского интерфейса
9.8.Классы бизнес-логики
Класс бизнес-логики определяет логику принятия решения при обработке запроса клиента, специфичную для данного приложения. Он предназначен для инкапсуляции бизнес-правил, которые способ- ны изменяться независимо друг от друга. Обычно во время выполне- ния объект бизнес-логики обращается к различным сущностным объ- ектам.
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
217 |
Примером такого класса может служить класс Менеджер Тран- закций Снятия (рис.9.8), где инкапсулированы правила обработки за- проса на снятие денег.
Рис.9.8. Пример класса бизнес-логики: а – аналитическая модель (диаграмма кооперации); б – проектная модель (диаграмма кооперации); в – проектная мо- дель (диаграмма классов)
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
218 |
Внем есть операции инициализировать, снять, подтвердить, и
отменить. Операция инициализировать вызывается на этапе ини- циализации, операция снять – для снятия денег со счета клиента, операция подтвердить – для подтверждения факта успешного прове- дения транзакции, а операция отменить – в случае, когда транзакция закончилась неудачно, в частности если банкомат не выдал наличные.
При определении операций необходимо тщательно проанализировать диаграмму кооперации Банковский Сервер из аналитической модели (рис.9.8а) и описание последовательности сообщений, где приведены детальные сведения о каждом сообщении. По результатам такого
анализа строится диаграмма кооперации для проектной модели (рис.9.86) и диаграмма классов (рис.9.8в).
9.9.Классы-обертки базы данных
Ваналитической модели представлены сущностные классы, ко- торые инкапсулируют данные. В ходе проектирования нужно решить,
должна ли информация храниться в самом сущностном классе или же в базе данных. В первом случае применяются классы абстрагирова- ния данных, которые инкапсулируют структуры данных, а во втором
– классы-обертки базы данных, скрывающие детали реализации дос- тупа к базе.
На сегодняшний день наиболее широко распространены реляци- онные базы данных, так что класс-обертка предоставляет объектно- ориентированный интерфейс к такой базе. При этом необходимо ото- бразить сущностные классы из статической модели на структуры ба- зы данных.
Атрибуты сущностного класса становятся отношениями в базе, а операции доступа к атрибутам встраиваются в класс-обертку. Для отображения сущностных классов на отношения требуется система- тический подход, поскольку отношения – это плоские структуры, а сущностные классы необязательно являются таковыми. Необходимо определить первичные ключи, а ассоциации, явно представленные в диаграмме классов, следует отобразить на внешние ключи.
Класс-обертка скрывает детали доступа к данным, хранящимся в таблицах базы, а значит, и все операторы языка SQL. Обычно один класс соотносится с одной таблицей, но возможны также классы-
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
219 |
обертки и для представлений, то есть соединения двух или более таб- лиц.
Рис.9.9. Пример класса-обертки базы данных: а – аналитическая модель; б – проектная модель
www.pdffactory.com