
- •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 с.
Генераторы
Кодогенерационная часть REAL-IT/VB состоит из двух генераторов: генератора компонент API и ApiEx (APIGcn) и генератора экранных форм (FormGcn). При этом APIGcn реализован как отдельное приложение, a FormGcn - как надстройка к среде Visual Basic. Такая разница в реализации генераторов была вызвана двумя причинами:
Разницей в процессе использования генераторов. API и ApiEx генерируются автоматически после изменения модели данных, причем компонента генерируется целиком и не требует внесения в нее изменений (а значит, и работу с ней из среды программирования). Формы обычно генерируются по одной, и сразу после генерации разработчик хотел бы увидеть ее результаты, поэтому генерацию удобнее проводить непосредственно из среды программирования (хотя иногда возникает необходимость в массовой перегенерации большого количества экранных форм).
Использованием в Visual Basic собственного закрытого формата для хранения информации о свойствах и расположении элементов управления на экранных формах. Таким образом, доступ к свойствам экранных форм и элементов управления возможен только из надстройки над средой протраммироваиия.
Кроме генераторов кода, в REAL-IT/VB есть еще мастер создания нового приложения, который на основе шаблона и введенных пользователем данных создает репозиторий проекта и пустые компоненты (проекты Visual Basic). Необходимость в таком мастере вызвана двумя основными факторами:
Сложностью разработки ActiveX компонент с использованном Visual Basic (управление бинарной совместимостью компонент и ссылками их друг на друга).
Наличием существенного количества исходных текстов, похожих друг на друга, которые в силу особенностей языка Visual Basic невозможно вынести в общую компоненту (главным образом, это относится к запускающему приложению).
Поддержка итеративного процесса
Использование методов поддержки итеративного процесса разработки, описанных в главе 5, в данной версии REAL-ГГ осложняется ограничениями языка Visual Basic: отсутствием в нем наследования реализации и хранение информации об экранных формах в закрытом формате.
Для поддержки внесения изменений в программный код экранных форм в REAL-IT/VB применяется механизм эмуляции наследования: для каждого типа формы в библиотеке UniGen существует отдельный класс, реализующий функциональность формы. Все методы такого класса вынесены в интерфейс, который этот класс реализует. При этом любой объект этого класса содержит переменную This, котпрая имеет тип интерфейса (обычно она содержит ссылку на этот же объект), и все вызовы одного метода класса из другого осуществляются через This. Таким образом, This играет роль таблицы виртуальных функций. Наличие такой переменной позволяет создавать классы- «наследннки», которые реализуют тот же интерфейс, при этом большую часть вызовов ею методов переадресуют на «базовый» класс из UniGen.
Поддержка ручных изменений в наборе и свойствах элементов управления осуществляется собственно генератором форм - перед повторной генерацией уже имеющейся в проекте формы се содержимое сохраняется, а после генерации сравнивается со сгенерированным. При этом разработчику предлагается восстановить удаленные элементы управления (если они есть), а также расположение и визуальные свойства существующих элементов. Недостатком такого подхода является то, что невозможно автоматически распознать, какие из изменений на форме связаны с изменениями в модели, д какие - относятся к ручным изменениям.
REAL-IT/Java
При переносе REAL-IT на платформу Java использовались подходы к организации архитектуры системы, оптимизации ее производительности и поддержке ручных изменений, уже апробированные в версии для Visual Basic. Стоит отметить, что языковые средства Java гораздо полисе реализуют концепции объектно-ориентированного подхода - поддержка полноценного наследования и наличие интерфейсов позволили лучше структурировать код и избавиться от ряда проблем, присущих предыдущей версии (например, эмуляцию наследования для поддержки ручных изменений).
Новой чертой данной версии является возможность организации приложения как в двухуровневой (весь код работает на клиенте), так и в трехуровневой модели (разделение клиентской и серверной части). В последнем случае на сервер выносится работа с данными и, возможно, написанный вручную код для реализации бизнес-логики системы.
Для построения крупных информационных систем уровня предприятия на Java широко применяется технология EJB (Enterprise Java Beans), являющаяся частью платформы J2EE. Технология EJB содержит широкий набор сервисов, необходимых дли построения распределенных приложений, в частности: развитую модель безопасности и защиты информации, работу с транзакциями, масштабируемость и т.д. К сожалению, необходимость поддержки такой универсальности делает ее слишком тяжелой для применения в системах малого масштаба, к которым относились реальные производственные задачи, в которых требоиал1к:ь использовать REAL-ГТ. Поэтому в данной версии REAL-ГГ были использованы только средства, входящие в J2SE, в частности, протокол RMI для клиенч-серверного взаимодействия. Серверная компонента включает в себя средства управления правами доступа и блокировками, ведения журналов, уведомления клиентов о событиях на стороне сервера и т.д. Главное отличие от
EJB - это отсутствие поддержки масштабируемости системы, поскольку она потребовала бы больших накладных расходов. Кроме того, остаоси возможность масштабирования на уровне базы данных средствами СУБД, что является достаточным для приложений, на которые ориентировано RF.AL-1T, поскольку именно база данных является для таких приложений основным серверным ресурсом.
REAL-IT/WEB
В эру развития срсды Интернет всс большую актуальность приобретают приложения, ориентированные на Web, доступ к которым может бьпъ осуществлен с любого компьютера, на котором установлен Wcb-браузер.
На данный момент существует две конкурирующие платформы разработки Web-приложсний - это Sun Java 2 Enterprise Edition и Microsoft .Net. Для реализации REAL-IT/WEB предпочтение было отдано платформе J2EE, главными преимуществами которой являются поддержка большого количества платформ (аппаратуры и операционных систем), а также наличие большого количества решений с открытым исходным кодом, принятых программистским сообществом.
Для разработки Wcb-приложениП на платформе J2EE существует множество технологий, для решения тех или иных задач, связанных с различными аспектами создания Web-приложений. В REAL-1T/WEB используегся технология Hibernate [68] для доступа к данным и Jakarta Struts [43] для реализации пользовательского интерфейса.
При разработке пользовательского интерфейса Web-приложений приходится учитывать ряд особенностей и ограничений данной платформы, а именно:
«Дороговизна» операций клиент-серверного взаимодействия. При работе через глобальную сеть каждый запрос к серверу может занимать заметный для пользователя промежуток времени. Пересылка большого объема данных также может замедлить работу системы.
Пассивность сервера. Сервер не может инициировать событие, приводящее к изменению в пользовательском интерфейсе.
«Бсдность» языка описания интерфейса HTML. Этот язык содержит только небольшой набор элементов управления для создания экранных форм. Разработка интерфейсов с более сложными элементами управления возможна с использованием апплетов (applets), обьекгоп ActiveX (только для Microsoft Internet Explorer) или библио!ек java- скриптов, однако считается нежелательным использовать все эти подходы в связи с возможными проблемами в совместимости.
Поддержка только странично-ориентированного интерфейса пользователя. Интерфейс, состоящий из набора связанных окон, не поддерживается (в частности, многодокументный интерфейс (MDI)).
Возможность пользователя изменять сценарии поведения программы с помощью средств, предоставляемых браузером - закладки, кнопка «назад», явные указания на открытие ссылки в новом окне и т.д.
Перечисленные выше ограничения не только усложняют процесс разработки, но и диктуют использование определенного стиля пользовательского интерфейса. В связи с этим, генерируемый пользовательский интерфейс приобретает ряд свойств, присущих именно Wcb-интсрфсйсам. Данные особенности отсутствуют в «базовой» модели интерфейса REAL-ГГ, но должны быть в REAL-ITAVEB:
Разбиение списка ка страницы. Причем, возможно разбиение на страницы не только по порядку (по номеру), но и по какому-либо другому признаку (например, по имени ключевого атрибута) или с указанием диапазона.
Система павшации по структуре сайта. Дело в том, что меню в обычном понимании настольных приложений в Web-интерфейсе практически не
используется.
Видоизменение понятия «локатор». В классическом REAL-ГГ под элементом пользовательского интерфейса «локатор» понимается элемент (текстовое поле), обеспечивающий быстрый переход на нужную запись в списке. В Web-интерфейсе в связи с разбиением списка на страницы такой элемент становиться бессмысленным. В данном случае «локатор» частично заменяется поиском и разбиением списка на страницы с указанием диапазона значимого атрибута.
Кроме того, используемые технологии (Hibernate, Struts, JSP) требуют соответствующей адаптации методики поддержки ручных изменений. Использование шаблона «Generation Gap», как это сделано в REAL-IT.'Java, не всегда возможно, поскольку не все применяемые технологии позволяют использовать наследование в полном обьеме. В частности, язык разметки JSP вообще не является объектно-ориентированным языком программирования, поэтому для внесения изменений в JSP-страницы било принято решение использовать технику внешнего препроцессирования с использованием XSLT- преобразований.
В настоящий момент REAL-ITAVEB существуег в виде прототипа, состоящего из генератора API на основе Hibernate и примера приложения, содержащего несколько экранных форм всех трех типов (при этом библиотеки поддержки содержат некоторые ограничения на типы данных и микромодель экранных форм).