- •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 с.
Поддержка «ручных» изменений кода
Модель, которая полается на вход модельно-ориентированным генераторам кода, не является исчерпывающим описанием системы (ь отличие от текста на языке программирования, который подается на вход компилятора). Следовательно, «ручные» изменения сгенерированною кода или его дополнения неизбежны. С другой стороны, «ручное» сопровождение всего сгенерированного кода, оторванное от визуального моделирования, требует больших трудозатрат. Сгенерированный код является композицией двух элементов - модели приложения, созданной разработчиком приложения, и архитектурного решения, созданного автором генератора. Оба эти элемента со временем могут изменяться: модель - вследствие уточнения знаний о предметной области, а также изменений в ней, а архитектурное решение - вследствие изменений в целевой архитектуре и среде программирования, выходе новых версий ПО, изменения требований ко всему классу разрабатываемых систем (например, переход на Intranet-технологию). Кроме того, и модель, и генерагоры могут содержать ошибки, которые необходимо исправлять. Таким образом, даже те фрагменты порожденного кода, которые не требуют «ручных» изменений, придется неоднократно приводить в соответствие с моделью и архитектурным решением.
Самым простым и надежным способом поддерживать это соответствие является повторная генерация. При этом возникает противоречие между необходимостью внесения «ручных» изменений в порожденную программу и необходимостью периодически производить перегенерацню.
Возможные решения
Сформулируем возможные способы разрешения описанного выше противоречия.
Разделение сгенерированного кола на компоненты, одни из которых не требуют модификации, а другие подвергаются модификации в процессе доработки и сопровождения программного кода. Псрсгснерапия используется только для компонент первого вида, компоненты второю вида сопровождаются «вручную». В качестве компоненты при этом используется структурная единица кода, которую можно целиком заменить на другую (обычно, файл).
Ведение учета «ручных» изменений сгенерированного кода и их повгорное внесение после каждой перегенерации.
Выделение модификаций кода в отдельные компоненты с автоматическим добавлением их в итоговую программу. Основные способы осуществления такого добавления — это использование препроцессора целевого языка, директив сборни»ка (linker), специально написанных для этой цели программ (обычно, скриптов) или препроцессоров (например, фреймовых [35] или аспектных [71]), а при объектно-ориентированном подходе - использование полиморфизма (шаблон проектирования «Generation Gap»).
Расширение источников информации для кодогенерации — использование дополнительных моделей, расширение набора свойств элементов модели. При этом количество «ручных» изменений уменьшается за счет того, что специфичную семантику, которая вынуждает вносить эти изменения, удастся внести в модель, используемую для генерации.
Выделение «'ручных» изменений из кода системы путем автоматического анализа измененного текста программы и автоматическое внесение их
при перегенерации.