- •3.6 Заключение 59
- •Глава 1. Определение и виды информационных систем
- •Виды ис
- •Функциональность информационных систем, ориентированных на данные
- •Глава 2. Технология real-it
- •Моделирование схемы данных
- •Описание ограничений целостности
- •Описание экземпляров
- •Создание представлений
- •Расширение uml для моделирования представлений
- •Создание экранов
- •Генерация
- •База данных
- •Программный интерфейс базы данных
- •Экранные формы
- •Заключение
- •Глава 3. Язык описания расширенных ограничений ссылочной целостности
- •Пример диаграммы классов с ограничениями
- •Альтернативные подходы
- •Контекстные ограничения
- •Нотация
- •Семантика
- •Базовая модель Определение 1
- •Модель с отрицаниями Определение 7
- •Модель с ограничениями на отдельные объекты Определение 11
- •3.6 Заключение
- •Глава 4. Разработка пользовательского интерфейса
- •Модельно-ориентированные подходы к разработке пользовательского интерфейса
- •Визуальное моделирование при разработке web-приложений
- •Моделирование интерфейса в real-гг
- •Порядок использования модели интерфейса
- •Диаграммы классов uml
- •Шаблоны экранных форм
- •Разработка отдельных типов экранных форм
- •4.3.1 Список
- •Определение набора столбцов
- •Моделирование фильтров
- •Карточка
- •Форма - отношение
- •Заключение
- •Глава 5. Поддержка итеративной разработки
- •Альтернативные подходы
- •Поддержка «ручных» изменений кода
- •Возможные решения
- •Анализ возможных решений
- •Предлагаемое решение
- •Программный интерфейс базы данных
- •Изменение расположения и размеров элементов управления
- •Изменение поведении элементов интерфейса
- •Изменение визуального представления (замена и добавление элементов управления)
- •Составление сложной формы из нескольких сгенерированных
- •Сохранение содержимого базы данных при обновлении ее схемы
- •Заключение
- •Глава 6. Реализация
- •База данных
- •Архитектура приложения
- •Оптимизация выборки данных
- •Учет зависимостей между полями
- •Отложенная инициализация закладок
- •Передача дополнительной информации между формами
- •Генераторы
- •Заключение
- •Глава 7. Направления дальнейших исследований
- •Моделирование расширенных ограничений ссылочной целостности
- •Моделирование пользовательского интерфейса
- •Распределение прав доступа в терминах модели системы
- •Разработка семейств информационных систем
- •Использование модели бизнес-процессов для реализации системы
- •0. Для профессионалов: Пер. С англ. — сПб: Питер, 2000. — 864 с.
Пример диаграммы классов с ограничениями
На рис.3.1 приведена диаграмма классов UML, описывающая модель адреса. Данная диаграмма взята из реального проекта с незначительными упрощениями.
Рисунок3.1
Диш рячмя классом UML для
ялрсса
Адрес, в рамках данной модели, может ссылаться на страну, область, насспснный пункт, район и улицу. При этом населенные пункты (города) могут как входить в состав областей, так и принадлежать непосредственно стране (например, в России городами федерального подчинения являются Москва и Санкт-Петербург). Крупные города могут быть разделены на районы, при этом улицы связаны с районами отношением «многие ко многим» - на диаграмме это отношение представлено отдельным классом «Связь городских районов и улиц».
Очевидно, что между этими связями имеются некоторые зависимости — например, адрес не может ссылаться на страну «Россия» и город «Вашингтон». Перечислим ограничения на связи с другими объектами, которым должен удовлетворять адрес:
Область, если она указана, должна принадлежать гой же стране, что и адрес.
Если у адреса указана область, то населенный пункт должен принадлежать ей, в противном случае он должен принадлежат ь стране.
Городской район, если он указан, должен принадлежать населенному пункту адреса.
Если у адреса указаны улица и район, то они должны быть связанны отношением «Связь городских районов и улиц».
Если указана улица, то она должна принадлежать населенному пункту адреса.
Опишем перечисленные выше ограничения на языке ОСЬ [103]:
context Адрес inv: Адрес.Область-^notErnptyO implies
Адрес.Страна->по1Ешр1уО AND
Адрес.Страна.Обласгь ->includes(AApcc.06.3acTb)
context Адрес inv: Адрес.Населенный nyHKr-»notEmpty() implies
(Адрес.Об.ч;к:ть->по1Птр1уО AND
Адрес.Облдсть.Насслснный nyHKT-Hncludes(Адрес.Населенный пункт))
OR
(Лдрсс.Область-HsEmptyOAND
Адрес. Страна. Населенный пункт->includes^pec.Населенный пункт) )
context Адрес inv: Адрес.Городской pafioH->notEmpty() implies
Адрес.Населенный nyHKT->notEmptyO AND
Адрсс.Населенный пуикт.Городской pafloH->includes( Адрес.Городской район)
contcxt Адрес inv:
Адрес. Городской paiioti->nolF.mply() AND
Адрес.Улица-^notEmptyO implies
Адрес.Городской район.Связь городских районов и улиц.
Exists<p | р.Улица ■ Адрес.Улица)
contcxt Адрес inv: Адрес.Улица-^notEmptyO implies
Адрсс.Город—»notEmptyO AND
Ад pec.Город.Улнца-мпс1ис1с$( Адрсс.Улица)
В следующих разделах будет показано, как эти ограничения можно описать в рамках предлагаемого подхода.
Альтернативные подходы
Вопросы поддержания целостности и непротиворечивости данных в информационных системах давно и устойчиво интересуют исследователей в области создания ИС [75,102]. Ограничения уникальности по ключу, ограничения ссылочной целостности и запрет на использование неопределенных значений включены в стандарт SQL [52] и поддерживаются всеми современными промышленными СУБД. Однако для описания более сложных ограничений до сих пор нет общепринятого подхода. Большинство исследователей предлагают использовать дня этой пели различные текстовые языки, основанные на логике предикатов [41,72]. Авторы объектно- ориентированного языка моделирования UML [90] ввели в его состав формальный текстовый язык ограничений OCL [ЮЗ]. Существуют исследования, посвященные его применению, в частности, для спецификации ограничений в 6а tan данных [53]. Однако, если разрабатываемая система моделируется с помощью диаграмм, представляется предпочтительным иметь диафаммный язык для описания ограничений, которые являются составной частью разрабатываемой модели.
Visual OCL
Я зык Visual OCL [40] был предложен как способ визуализации выражений OCL с помощью диаграмм кооперации UML. Любое OCL-выраженис представляется в виде прямоугольника с указанием типа выражения в верхнем левом углу. Объекты также изображаются в виде прямоугольника, с названием объекта и, при необходимости, списком атрибутов. Условия, которые должны быть выполнены, выписываются под пунктирной чертой.
Операция навигация между объектами различных типов изображается с помощью ассоциаций; если результат ассоциации коллекция, то используются специальные символы, изображенные на рис.3.2.
Визуализацию логических операций предлагается делать с помощью сплошной горизонтальной линии, разделяющей ее операнды.
Па рис.3.4 приведено первое ограничение из рассмотренного в предыдущем разделе примера, записанное с помощью этой нотации.
Visual ОСЬ основан на диаграммах кооперации, но синтаксис этих диаграмм расширяется, что не позволяет специфицировать его как профиль UML. Графическое изображение логических связок между условиями приводит к созданию громоздких и сложных в понимании диаграмм.
Constraint Diagrams
Диаграммы ограничений (Constraint Diagrams) (70] и созданные на их основе звездообразные диа1раммы (Spider Diagrams) [64] позволяют специфицировать ограничения на связи между объектами и на состояния связанных объектов. Ограничения описываются с помощью специального графического языка, основанного на диа)раммах Венна для отображения множеств и отношений между ними, а также дополнительно введенных элементах - стрелок, изображающих ассоциации, точек, изображающих элементы множества и т.д.
Рассмотрим основные синтаксические конструкции языка:
Множества и элементы:
ф - множество из одного элемента;
О - множество из одного элемента или пустое множество;
- множество и » любого количества элементов;
множество и » п элементов;
-
пустос множество.
Типы и состояния:
Тип
множество обьектов заданного мша.
множество обьсктпи п 1аданиом состоянии.
Ассоциация
На рис.ЗЛ приведено первое ограничение из рассмотренного в предыдущем раздею примера, записанное с помощью диаграмм ограничений:
Рисунок
3-5 0|рамич1‘ние 5 (стр. 32), спецмфими^шаииое
с помощью диаграмм ограничений
К достоинствам данного подхода можно отнести его простоту, позволяющую, однако, описывать ограничения как на структуру классов, так и на поведение объектов этих классов, к недостаткам - отсутствие поддержки логических операций (кроме операции конъюнкции и импликации), а также свойственную диаграммам Вснна трудность восприятия пересечения более чем трех множеств [70]. Кроме того, в предлагаемой нотации важную роль играют пересечения графических объектов, что существенно отличает ее от графовых нотаций и, в частности, не позволяет использовать диаграммы UML для изображения ограничений.