Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диссертация_Иванов.docx
Скачиваний:
9
Добавлен:
23.09.2019
Размер:
1.18 Mб
Скачать

Федеральное государственное образовательное учреждение высшего профессионального образования САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

На праяих рукописи

Иванов Александр Николаевич

АВТОМАТИЗИРОВАННАЯ ГЕНЕРАЦИЯ ИНФОРМАЦИОННЫХ СИСТЕМ, ОРИЕНТИРОВАННЫХ 1IA ДАННЫЕ

05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

Диссертация на соискание ученой степени кандидата физико-математических наук

Научный руководитель: доктор физ.-мат. наук, профессор Терехов А.Н.

Санкт-Петербург

2005

АВТОМАТИЗИРОВАННАЯ ГЕНЕРАЦИЯ ИНФОРМАЦИОННЫХ СИСТЕМ, ОРИЕНТИРОВАННЫХ 1IA ДАННЫЕ 1

Глава 1. Определение и виды информационных систем 8

1.2 Функциональность информационных систем, ориентированных на данные 11

Глава 2. Технология REAL-IT 13

2.1 Моделирование схемы данных 16

2.2 Описание ограничений целостности 17

2.3 Описание экземпляров 17

2.4 Создание представлений 18

2.5 Создание экранов 21

2.6 Генерация 22

2.7 Заключение 23

Глава 3. Язык описания расширенных ограничений ссылочной целостности 24

3.1 Пример диаграммы классов с ограничениями 24

3.2 Альтернативные подходы 26

3.3 Контекстные ограничения 33

3.5 Семантика 37

Vm ft I: (v/,r (№(">)), V'r, (/e(/n)) ) e p* (}i(m)). 54

3.6 Заключение 59

Глава 4. Разработка пользовательского интерфейса 61

Глава 5. Поддержка итеративной разработки 100

Глава 6. Реализация 115

Глава 7. Направления дальнейших исследований 132

Заключение 135

Литература 136

ВВЕДЕНИЕ

Несмотря на то, что первые работы по использованию диаграмм для спецификации программ появились еще в начале 60х годов прошлого века, вопрос о роли и месте визуальных спецификаций и их соотнесении с кодом до сих пор остается огкрьггмм и вызывает полемику.

Мартин Фаулер (Martin Fowler) и, независимо от него, Стив Меллор (Steve Mcllor) определяют следующие способы использования языка визуального моделирования UML [90], которые, однако, можно отнести и к визуальному моделированию в целом [56]:

  1. Набросок. Использование диаграмм в процессе обсуждения или изложения проблем и концепций. Такие наброски носят неформальный характер, простота и выразительность для них важнее, чем полнота описания. При этом следование определенным нотациям может быть полезно для повышения скорости восприятия, если предполагается, что все, для кого предназначена диаграмма, хорошо знакомы с нотацией. Но следование правилам определенного языка не является обязательным требованием и часто нарушайся. Чаще всего такие наброски делаются от руки на бумаге или на доске непосредственно во время обсуждения, если же требуется электронный вариант, то обычно используются средства рисования произвольных схем, например, Microsoft Visio.

  2. Чсргеж. При этом подходе набор диа1рамм представляет собой полное (с определенной ючки зрения) формальное описание системы, на основе которого создастся программный код. Хотя для получения первой версии кода часто используются генераторы, диаграммное описание является проектом, а не собственно программой, т.е. не включает в себя все детали функционирования системы.

  3. Язык программирования. В этом случае семантика программы полностью выражается средствами языка моделирования, и CASE-пакет представляет собой законченную среду разработки. Обычно, однако, подобный язык содержит не только диаграммную составляющую, но текстовую, которая не может быть выражена средствами диаграмм

(например, система типов или элементарные операции над данными). Примером такого языка может служить SDL [1,97], ведущиеся в настоящее время работы консорциума OMG по подготовке стандарта UML 2.0 во многом направлены на возможность использования UML в этом качестве.

Подход «Чертеж» подразумевает использование диаграмм по аналогии с чертежами в промышленности - т.е. в качестве формальных и полных спецификаций продукта. Долгое время именно этот подход считался основным, и на него ориентировались разработчики CASE-пакетон 70х-90х годов XX века, таких как IEF1, ADW2 и т.д. Эги пакеты предназначались для разработки произвольных информационных систем, в этом смысле их можно назвать универсальными. Их создатели пытались представить процесс разработки системы как последовательное построение взаимосвязанных моделей, на основе которых осуществляется генерация программного кода. Характерными чертами данного подхода являются необходимость детального моделирования системы с разных точек зрения, внутренняя согласованность и взаимосвязь моделей, а также однозначно определенная семантика каждого элемента модели. Практика показала, что такой подход требует очень больших накладных расходов, а отсутствие поддержки итеративного процесса (что характерно для большинства его реализаций) разработки делает его плохо применимым в большинстве реальных проектов. Несмотря на го неоднократные попытки воплотить этот подход в жизнь не увенчались успехом, он до сих пор представляется идеалом для многих исследоиа гелей.

Подход «Набросок» в настоящее время пропагандируется сторонниками «гибких методологий» как альтернатива подходу «Чертеж». Этот подход ограничивает использование диаграмм исключительно коммуникативными функциями, их место оказывается среди пояснительных документов, описывающих мысли проектировщиков системы по поводу отдельных аспектов разрабатываемой системы, но не саму эту систему. Естественно, никакой генерации кода при этом не предполагается.

В рамках подхода «Язык программирования» создано нескопько специализированных пакетов {99], интегрирующих в ссбс возможности CASE- средств и среды разработки. Каждый такой пахет предназначен для достаточно узкого класса систем, главным образом, в сфере телекоммуникаций и управления оборудован нем. В области создания информационных систем jaKofi подход не нашел широкого применения.

Предлагаемый в данной рабоге подход огносится к направлению «Чергсж» и предусматривает генерацию кода по диаграммам, однако, в отличие от классических подходов [77], здесь не предпола] аегся полное и всеобъемлющее описание системы с помощью диаграмм, а использование последних для описания отдельных подсистем, хорошо поддающихся такому декларативному описанию. Особое внимание при этом уделено инте»рации сгенерированного кода и кода, написанного вручную, а также поддержке итеративного процесса разработки.

При выборе подсистем, описываемых с помощью диаграмм, мы исходили из следующих предпосылок:

  1. То, какой из способов представления информации - текстовый или графический, является наиболее удобным, зависит от структуры этой информации.

  2. При описании статической структуры системы диаграммы позволяют наглядно представ it 1Ь взаимосвязи между се элементами.

  3. Для описания алгоритмов текстовые языки обычно оказываются более удобными, чем 'рафичсские.

Исходя из представленных принципов (в особенности, последнего), невозможно создать универсальное решение, пригодное для разработки любых видов ПО, в котором основная часть кода генерировалась бы по диаграммам.

Выход здссь мы видим в отказе от универсальности и ориентации на отдельные классы программных систем (или отдельных подсистем), в которых статическая структура информации превалирует над алгоритмами. В качестве такого класса в данной работе рассматриваются информационные системы, ориентированные на данные. Отметим основные свойства таких систем:

  1. Основными компонентами системы являются база данных и интерфейс пользователя. ^

  2. Наиболее важным архитектурным элементом является модель данных и ее реализация - схема БД.

При разработке баз данных общепринятым подходом являйся использование визуального моделирования - диаграмм сущность-связь |25| и их разновидностей - IDEFlx [28], диаграмм классов и т.д. Однако, не вся существенная информация о данных может бьпь выражена на этих диаграммах. Различного рода зависимости между данными и вытекающие из этих зависимостей ограничения приходится описывать в текстовом виде - в лучшем случае, они указываются в модели в виде формапизованных или неформальных комментариев, чаше же всего появляются уже непосредственно в коде. Таким образом, актуальным является вопрос наглядного моделирования функциональных зависимостей, невыразимых средствами модели сущность- связь.

Вторая существенная компонента рассма!риваемого класса систем - интерфейс пользователя, во многом оиреде:«ется моделью данных, что создает предпосылки для создания модели интерфейса на основе модели данных и последующей генерации кода по этой модели. Сциллой и Харибдой являются, с одной стороны, слитком сложная и богатая модель, в пределе позволяющая описывать произвольный интерфейс - при этом затраты на разработку модели окажутся сопоставимыми с непосредственным созданием интерфейса в WYDIWYS3 среде разработки (но без наглядности последней), а с другой - чрезмерное ее упрощение (пределом чего является генерация интерфейса непосредственно по схеме БД), приводящее к необходимости существенной доводки полученного результата (а то и полного его переписывания) для повышения его эргономичности.

Решение этих задач - моделирования ограничений и интерфейса пользователя, а также поддержка итеративной разработки при использовании генераторов кола, представляются нам ключевыми моментами в создании эффективной тех нолот и разработки рассматриваемого класса систем, основанной ка генерации кода по диаграммам.

В данной работе представлена оригинальная технология разработки этого класса ИС, основанная на использовании универсального обьскгно- ориентированного CASE-пакста REAL [22] и включающая в себя набор генераторов программного кола и дисциплину их использования. Основу предлагаемого подхода составляет набор методик, каждая из которых накрывает тот или иной вид деятельности или предназначена для решения определенного класса проблем, возникающих при разработке ИС. Некоторые из методик заимствованы из других подходов (например, использование модели «сущность-связь»), другие являются оригинальными разработками (их описание и составляет основную часть работы). Все эти мстодики, взятые вместе, составляют единый процесс разработки, для поадержки которого разработаны соответствующие инструментальные средства. Весь набор предлагаемых методик и инструментальных средств мы называем технологией REAL-IT.

Традиционно в процессе создания программных систем выделяют фазы анализа, проектирования и реализации [19]. Использование визуального моделирования при анализе требоианий и проектировании программных систем является в настоящее нремн широко распространенной практикой, существует большое количество методолошй создания визуальных спецификаций (2,31], в частности, методология REAL [23]. В фокусе внимания технологии REAL-IT находятся этапы детального проектирования и реализации ИС, при этом использование обз.сктно-ориентированного CASE-пакста как среды моделирования и диаграмм UML в качестве основы для генерации исполняемого кода позволяет уменьшить разрыв между этапами проектирования и реализации, поскольку именно UML является, в настоящее время, нзнболее часто используемым языком для описания результатов проектирования.

В настоящее время реализовано несколько версий REAL-1T для различных технологических платформ:

  • REAL-IT/VB - для создания приложений на языке Visual Basic, работающих под управлением ОС семейства Microsoft Windows, как на одном компьютере, так и в архитектуре клиснт-ссрвср. Это вариант предназначен, главным образом, для создания приложений для автоматизации офисной деятельности.

  • REAL-IT/Java - для создания переносимых приложений в трехзвенной архитектуре на платформе J2SE.

  • REAI^ITAVEB - для создания интернег/иктранет приложений. Эта версия технологии еше только разрабатывается.

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

Основные инструментальные средства REAL-ГГ создавали:

  • А.Иванов - основные идеи и общее руководство проектом, генераторы кода, библиотеки поддержки REAL-IT/VB и REAL-IT/Java;

  • С.Стригун - библиотеки поддержки REAL-IT/VB;

  • Н.Васильева - библиотека UniWord (REAL-IT/VB), система разграничения прав доступа;

  • Т.Хаиров - библиотека UniMigrator (REAL-IT/VB);

  • Ю.Худякова - система разграничения прав доступа;

  • Т.Сорокина - мастер создания приложения (REAL-IT/VB);

  • А.Болотова библиотеки поддержки и генераторы кода REAL-IT/Java для форм типов список и отношение;

  • Е.Чулкова - библиотеки поддержки и генераторы кода REAL-IT/Java для форм типа карточка, библиотеки поддержки для REAL-ITAVEB;

  • Т. Васильева - библиотеки поддержки и генераторы кода REAL-IT/Java для форм типа отношение.

Автор выражает признательность всем участникам этого проекта, а также благодарит Д.Коэнова и И.Соболсва за обсуждение и конструктивную критику диссертационной работы.