Технология программирования FloraWare реализует объектный метод и содержит объектно-ориентированную среду разработки и исполнения приложений больших программных систем. Главная отличительная особенность FloraWare — реализация объектной модели непосредственно на объектной машине, без создания промежуточной программы.
С момента своего возникновения программирование воспринимается как трудоемкий процесс. Поэтому всегда вызывали живой интерес технологии, делающие его управляемым, позволяющим создавать надежные и качественные программы. Поначалу большинство задач, решаемых компьютерной техникой, носили вычислительный характер; естественно, что первыми были созданы языки программирования, переводящие математические формулы на язык команд машины. Со временем, для разработки программного обеспечения все активнее начал применяться подход, основанный на создании объектных моделей, имитирующих объекты реального мира из автоматизируемой области. Объектный метод существенно упростил разработку программ на начальном этапе, когда конкретизируется поставленная задача и определяется архитектура программы [1]. Для написания программ с использованием объектного метода были созданы объектно-ориентированные языки.
Однако написание, отладка и сопровождение объектно-ориентированных программ до сих пор остается трудоемким делом: компьютеры по своей структуре хуже приспособлены реализовывать объектную модель, чем вести математические расчеты. Сохраняется большой семантический разрыв между объектной моделью и архитектурой компьютеров, на которой эта модель реализуется [2]. Упростить работу с использованием объектного метода и одновременно улучшить создаваемые программы можно путем реализации объектной модели не на обычном компьютере, а на объектной машине. В этом случае собственно написание программы можно исключить из цикла создания модели, которая будет собираться из стандартных готовых объектов.
Зачем нужна FloraWare
Попытки создания полноценной объектной машины и замены текстового представления программы предпринимались неоднократно, однако все они ограничивались полумерами. Объяснить это можно несколькими причинами.
Кардинальная инновация отказывается от существующих программных компонентов, созданных по другим технологиям. Поэтому она обязана либо предложить весь спектр инструментальных средств, либо — как запасной вариант — предоставить средства поддержки других технологий. И то, и другое требует значительных усилий. С другой стороны, объектно-ориентированные языки создавались с учетом универсальности объектов и полного контроля над ними со стороны пользовательской программы [3-5]. Даже если технология предполагает наличие некой виртуальной машины, назвать ее объектной можно только с большой натяжкой (на откуп ей в лучшем случае отдается сборка мусора). Между тем, в полной мере преимущества объектной машины проявляются при ее полном контроле над объектами.
Попытки заменить текстовое представление алгоритма в большинстве случаев сводятся к генерации текста части программы на основе ее графического представления с последующей трансляцией. Существенно облегчить процесс проектирования приложений можно, отказавшись от архитектуры машины с потоком команд и линейной памятью и перейдя к архитектуре с древовидной объектной памятью, с управлением объектами собственно объектной машиной.
В технологии программирования FloraWare сделана попытка создания полноценной объектной машины как основы реализации объектного метода. С практической точки зрения целью ее создания было построение простой и удобной объектно-ориентированной среды разработки и исполнения для больших программных систем со средствами коллективной разработки и удаленной отладки. Помимо этого, предъявлялись требования по обеспечению общепринятых свойств технологии программирования — универсальности, поддержки полного цикла проектирования, интерактивности среды разработки и исполнения, свободы от архитектурных ограничений и переносимости среды и разрабатываемых приложений.
Был сформулирован ряд базовых принципов:
- замена машины фон Неймана объектной машиной;
- непосредственная сборка объектной модели в процессе проектирования;
- исключение программы создания объектной модели из процесса проектирования;
- применение дерева для хранения объектов;
- управление объектами в течение всего их жизненного цикла;
- выделение стандартных действий по управлению объектами и реализация этих действий в ядре объектной машины;
- выделения базовых типов объектов, их свойств и реализация их в объектной машине;
- использование в полной мере свойства сохранности объектов;
- использование для описания класса и определения экземпляра класса одних и тех же изобразительных средств;
- применение к классам и их экземплярам одних и тех же правил по их управлению.
Описанные принципы самоценны. Некоторые из них применяются по отдельности и в других технологиях и средах разработки, но максимальная эффективность достигается при их совместном использовании.
Архитектура объектной машины
Качество технологии, реализующей объектный метод, определяется формой представления объектной модели и принципами реализации этой модели на целевой машине. Объектную модель можно представить декларативной и императивной составляющей, что соответствует состоянию и поведению объекта в объектной методологии. Существуют предметные области, в которых объектная модель может иметь статическую декларативную составляющую, создаваемую непосредственно на этапе проектирования. В этом случае структура объектной модели, связи между объектами и значение большинства свойств могут задаваться с помощью соответствующих редакторов. В виде программы следует оформлять только императивную часть модели, то есть методы объектов. Языковой компонент при определении таких методов может иметь только императивную составляющую, что существенно упрощает сам процесс программирования. Следует заметить, что методы объектов, относящиеся к конструированию модели в части взаимосвязи объектов, также можно заменить заданием соответствующих свойств. Это никоим образом не исключает наличия в объектной модели динамической составляющей декларативной части, и создается такая составляющая программным способом.
Объектная машина образует фундамент для реализации объектного метода [1]. Она должна иметь инструменты поддержки неотъемлемых составляющих объекта (состояние, поведение и идентичность) и инструменты реализации отношений между объектами (связи и агрегирование). В объектной машине FloraWare в качестве форматов данных выступают объекты, а алгоритм реализуется передачей сообщений между ними и реакцией на эти сообщения.
Рис. 1. Архитектура FloraWare |
Архитектурно объектную машину FloraWare можно представить в виде нескольких уровней (рис. 1). На самом нижнем уровне реализован аппарат работы со свойствами объектов, которые относятся к четырем базовым типам: целое, действительное, строка и указатель на объект. Свойства объекта — это инструмент поддержки его состояния. Наличие объектов-контейнеров, способных содержать внутри себя другие объекты, позволяет строить сколь угодно сложные конструкции. Обязательный компонент — корневой контейнер, в который по мере необходимости добавляются другие объекты, реализует память объектной машины, представляющую собой дерево со всеми существующими объектами. Добавление всем объектам выделенного строкового свойства Имя позволяет идентифицировать их и осуществлять навигацию по дереву. Свойство Ссылка на объект, состоящее из относительного пути до объекта и указателя, дает возможность организовывать сколь угодно сложные связи между объектами. Таким образом, древовидная структура данных является основой реализации отношения агрегирования между объектами, а с помощью ссылок на объекты устанавливаются отношения связи.
Второй уровень обеспечивает работу объектов встроенных базовых классов. Пользователю не нужно проектировать сами классы, достаточно определить использование их экземпляров. В FloraWare набор таких встроенных классов достаточно обширен. В него входят универсальные объекты (число, целое, строка, указатель), объекты-контейнеры (каталог, массив, набор констант), графические объекты (фигура, альбом, окно, меню), программные объекты (программа, функция, задача), объекты управления (диалоговые элементы, редакторы), объекты работы с базами данных (база данных, таблица, курсор), объекты графического программирования, объекты автоматного программирования, объекты ввода/вывода (файл, порт, сетевой порт).
Согласно объектному методу, для реализации алгоритма необходимо, чтобы объекты обменивались друг с другом сообщениями. Инициаторами обмена сообщениями являются активные объекты, которые одновременно служат основой для параллелизма. Пути передачи сообщений определяются с помощью понятий источник изменений и приемник изменений. В источнике есть список приемников, подписавшихся на сообщения об изменениях, а в объекте-приемнике есть свойство Путь до источника, по которому на этапе установления связей происходит связывание источника и приемника. При изменении источника он информирует об этом приемник; цепочка может быть произвольной длины и ветвящейся. Так формируется паутина, за нити которой «дергают» активные внешние источники, передавая события всем заинтересованным объектам. Подчеркнем, что все это делается без программирования, а лишь настройкой взаимосвязей, а сам обмен сообщениями достигается чтением и изменением значений свойств объектов.
Использование связей между объектами для передачи изменений дает возможность реализовать модель систем с «мгновенным» взаимодействием объектов, для которого не важна последовательность действий (рис. 2).
Наличие встроенных классов позволяет создавать сколь угодно сложную объектную модель, используя экземпляры этих классов. В качестве пользовательских объектов в этом случае выступают экземпляры класса Контейнер. Значения полей пользовательских объектов задаются числами, целыми и строками. Связи задаются значениями свойств Ссылка на объект, а поведение таких объектов определяется экземплярами класса Программа, исходный текст которых записывается на особом языке, подобном Си. Это можно считать третьим уровнем объектной машины, уровнем пользовательских объектов, которые создаются методом сборки из экземпляров базовых классов. Как объекты третьего уровня можно представить диалоговые окна, объекты работы с базами данных, объекты-диаграммы UML.
Полный аппарат пользовательских классов реализован на четвертом уровне объектной машины с помощью базового класса Шаблон. При этом и описатель класса, и объекты-экземпляры класса являются обычными экземплярами базового класса Контейнер и отличаются только значением одного свойства. В пользовательских классах реализованы множественное наследование, виртуальные методы, методы класса и методы экземпляров, статические методы.
Основные характеристики среды разработки
Помимо основных требований, определяющих концепции технологии, при проектировании FloraWare ставилась цель создать среду разработки больших программных комплексов, обладающую свойствами многозадачности, универсальности, имеющую аппарат автоматного программирования, поддерживающую нотации UML, XML, интегрированную с .NET. Кроме того, среда задумывалась как масштабируемая, способная поддерживать распределенные многоязыковые приложения, не говоря уже об интерактивности, переносимости и самодостаточности.
Многозадачность
Одно из основополагающих свойств FloraWare — многозадачность, реализующая концепцию активных объектов. Теоретически, любой элемент или группа элементов объектного дерева может быть отдельной задачей. Возникающие проблемы и коллизии, связанные с обработкой данных в многозадачной среде, решаются автоматически с помощью специальных встроенных средств объектной машины. Наличие многозадачности позволяет в полной мере проектировать реакции на события в системе независимо друг от друга. Различают два уровня многозадачности. Внешний уровень реализован на нитях операционной системы и используется при работе с внешними объектами (порты ввода/вывода, базы данных, объекты сетевого взаимодействия, файлы, процессы), а внутренний — на одной нити с использованием собственного менеджера задач с невытесняющей многозадачностью и служит для работы с деревом объектов.
Универсальность
Может показаться, что использование объектов заранее определенных классов резко сужает область применения FloraWare. Однако это не так. Среди предопределенных классов FloraWare есть практически все используемые в настоящее время диалоговые элементы, инструменты работы с базами данных, переходники к драйверам устройств, а также универсальные классы (такие как Контейнер, Число, Целое, Строка, Массив и Программа), с помощью которых можно создать практически любое приложение. Базовые классы, реализованные в ядре объектной машины, служат основой создания собственных прикладных классов с использованием множественного наследования, полиморфизма и инкапсуляции. При необходимости набор базовых классов можно расширить, используя типы .NET.
Поддержка нотации UML и автоматное программирование
Использование объектной методологии позволяет обращаться к тексту программы только по необходимости. Это обеспечивается поддержкой нотации UML [6] с ее графическим представлением модели объекта, оформлением его в виде соответствующих диаграмм и генерацией реализующей эту модель программы. Этот процесс принято называть прямым проектированием, в противовес ему процесс создания модели по программе называют обратным проектированием.
Другими словами, прямое проектирование — это процесс трансляции диаграмм модели в программу для целевой машины. FloraWare в качестве целевой предполагает объектную машину, поэтому процесс проектирования кардинально отличается от общепринятых подходов, приближаясь к идеалу с точки зрения UML. Достигается это наличием во FloraWare объектов, аналогичных диаграммам UML. В качестве примера можно привести само дерево объектов FloraWare, которое соответствует в UML диаграмме объектов и объект Конечный автомат, реализующий диаграмму состояний UML.
Благодаря отсутствию этапа генерации программы в FloraWare, прямое и обратное проектирование слились в единый процесс разработки и исполнения приложений. В любой момент, вызвав редактор, можно изменить приложение, что соответствует прямому проектированию. В то же время, сам вызов редактора объекта является частью обратного проектирования. Проектирование во FloraWare если не по содержанию, то по духу полностью соответствует методологии UML.
Использование автоматного программирования [7] органично вписалось во FloraWare. Это обусловлено тем, что в отличие от известных реализаций, где конечный автомат представляется текстом на языке программирования, во FloraWare конечный автомат представляет собой объект, реализованный на уровне ядра объектной машины.
Поддержка XML
Под поддержкой XML во FloraWare понимается нечто большее, чем просто работа с сообщениями известного формата. Определяющей является древовидная структура данных объектной машины, позволяющая работать по правилам DOM не только с данными межпрограммного обмена, но и со всеми внутренними данными.
FloraWare отображает XML-документ на свое дерево и предоставляет свои универсальные и специализированные средства для обработки этого документа. Для этой цели служат базовые классы Документ, Входной XML-курсор и Выходной XML-курсор, с помощью которых на объектном уровне — а не программно — реализована обработка XML-документов. Эти же объекты являются и основой реализации SOAP и WSDL.
Масштабируемость и поддержка распределенных приложений
Программное обеспечение системы FloraWare существует в виде экземпляров, которые могут исполняться на разных процессорах, серверах или узлах кластеров. Организация взаимодействия элементов дерева, объектов одного экземпляра FloraWare с элементами другого осуществляется с помощью специальных сетевых средств, поддерживаемых объектной машиной. Объекты разных экземпляров FloraWare взаимодействуют через порты ввода/вывода, используемые для поточной передачи данных, и через прямое обращение к объектам древовидной структуры. Таким образом, FloraWare позволяет создавать распределенные масштабируемые приложения. Механизмы, обеспечивающие взаимодействие распределенных приложений, поддерживают как слабо связанные объекты (взаимодействие в режиме передачи данных), так и сильно связанные (взаимодействие в режиме прямого обращения). Масштабируемость и распределенность приложений может быть достигнута средствами .NET, что также позволяет расширять список встроенных в ядро FloraWare классов и подключать к приложениям FloraWare внешний код.
Переносимость и самодостаточность
В случае с FloraWare можно говорить о переносимости среды разработки и о переносимости приложений, созданных с ее помощью. Среда разработки состоит из ядра, представляющего собой виртуальную объектную машину, и приложений для этой машины, реализующих утилиты среды разработки. Архитектура ядра FloraWare разработана так, чтобы системно-зависимые коды составляли не более 3%. Это достигается тем, что все графические примитивы реализованы самостоятельно, а само ядро запрограммировано на языке С++ по объектной технологии в соответствии с требованиями POSIX. Приложения, работающие под управлением ядра, обладают полной переносимостью; нет необходимости не только переписывать, но и перетранслировать их. Переносимы и данные, созданные с помощью этих приложений. Визуально приложения FloraWare переносимы с точностью до пикселя. Исключение составляют приложения, использующие объекты с явной системной зависимостью (например, Windows DDE).
Интерактивность
Для обеспечения полноценной интерактивности приложения необходимо обеспечить полноценную поддержку многозадачности и параллелизма. FloraWare предоставляет такие возможности проектировщику, избавляя его при этом от необходимости явно программировать взаимные блокировки и синхронизацию потоков вычислений. В традиционных системах программирования интерактивность принципиально ограничена этапом трансляции, который отделяет внесение изменений от их тестирования. Во FloraWare отдельного этапа трансляции нет; приложение состоит из одних и тех же объектов и во время разработки, и во время исполнения. Мало того, отсутствие разбиения на инструментальную и исполнительную среды позволяет использовать одни и те же средства и во время разработки, и во время исполнения, поэтому можно изменять работающее приложение и немедленно видеть результат этого изменения.
Инструментальные средства
В состав инструментария входит ряд приложений, обеспечивающих автоматизацию и удобство разработки, отладки, проектирования, документирования, сборки и поддержки приложений FloraWare. Инструментальные средства можно отнести к нескольким группам по типам объектов, с которыми они работают:
- приложения по работе с объектами в памяти объектной машины;
- приложения по отладке и мониторингу;
- приложения по разработке больших проектов;
- приложения по разработке проектов, использующие базы данных;
- приложения по разработке серверных приложений.
Следует отметить, что все инструменты представляют собой обычные приложения, выполняющиеся под управлением объектной машины, и могут легко дорабатываться пользователем.
Работа с объектами в памяти объектной машины
Дизайнер — основной инструмент, обеспечивающий необходимые функции для создания приложений. С его помощью можно выполнять навигацию по узлам дерева, фокусироваться на отдельных объектах дерева, а также создавать, удалять, показывать или редактировать объекты и их свойства. Редактирование выполняется с помощью специально разработанных для каждого типа объекта редакторов.
Дизайнер способен выгружать фрагменты дерева объектов в файлы специального формата, OTS-файлы. В его состав также входит несколько сервисных приложений. Редактор графических объектов упрощает разработку диалоговых графических приложений и обеспечивает естественный способ выполнения этой работы, используя альбом встроенных графических элементов, мышь, приемы буксировки и т.п.; с его помощью можно также создавать, удалять, редактировать графические объекты и их свойства (в частности, цвета, формы фигур, их расположение на экране относительно друг друга и в дереве объектов). Менеджер приложений выполняет групповые операции с объектами древовидной структуры, производит поиск по дереву объектов, генерирует сводные таблицы свойств и состояний объектов, таблицы перекрестных ссылок и связей, статистические справки и таблицы состояния дерева объектов, его фрагментов и частей. Транслятор кодов функций, написанных на встроенном языке F++, выполняет перевод исходных кодов этих функций в исполнимое представление в виде команд стековой машины.
Дополнительную информацию об объектах, их взаимосвязях, свойствах, методах, системных функциях разработчику предоставляет Инспектор классов. Несколько его вариантов работают с классами разных уровней объектной машины.
Отладка и мониторинг
Несмотря на то, что во FloraWare нет разбиения на инструментальную и исполнительную системы, и с помощью Дизайнера можно в любой момент проанализировать состояние практически всех объектов. Для объектов типа Программа создан отдельный инструмент.
Отладчик предоставляет набор средств символьной отладки приложений, а для объектов, относящихся к категории графического программирования, имеется набор собственных отладчиков. Информация о системных событиях, возникающих в ядре FloraWare (в частности, сведения об ошибках и прерываниях в объектах приложения), помещается в специальный журнал событий, доступный разработчику. Туда же помещается информация о событиях, генерируемых библиотечными объектами. Записи журнала событий доступны для поиска и просмотра. Помещение информации о том или ином событии в журнал может быть заблокировано пользователем, если в приложении указан соответствующий обработчик этого события.
Большие проекты
Менеджер проектов служит для поддержки реализации сложных и больших проектов с множеством подсистем, реализуемых разными разработчиками. Данный инструмент поддерживает файлы специального формата, в которых хранятся описания реализуемых проектов (в том числе, описания OTS-файлов, объектов дерева объектов, агрегатов, связей, контактов, версий и т.п.). С его помощью проектов можно создавать, удалять и редактировать элементы проекта, вести учет версий, хранить данные об авторах, аннотации и комментарии разработчиков.
Средствами Менеджера проектов на основании специальных описателей генерируются различные дистрибутивы разработанного приложения. Кроме того, можно создавать пакеты обновлений и соответствующие скрипты к ним, включая процедуры корректировки структуры базы данных.
Мастер приложений предназначен для генерации типового приложения, реализующего общепринятые функции прикладных оконных интерфейсов, а также для включения в разрабатываемое приложение типовых возможностей, например, редактирование и просмотр файлов и элементов базы данных, работа с каталогами и файлами операционной системы и т.п.
Менеджер секций обеспечивает необходимые средства по работе с OTS-файлами, содержащими информацию о дереве объектов приложения, созданного с помощью Дизайнера. OTS-файл может содержать несколько секций, в каждой из которых находится дерево объектов приложения или его фрагменты. С помощью данного инструмента можно исключить секцию из OTS-файла, скопировать или перенести секцию в другой OTS-файл, вести несколько версий секций и также манипулировать этими версиями (исключать, сравнивать, освобождать место в OTS-файле, занятое удаленными секциями и т.п.).
Центр разработки организует интегрированную среду разработки приложений, позволяя работать с различными объектами приложения (деревья объектов, OTS-файлы, их секции, содержащие фрагменты дерева объектов, файлы проектов и т.д.) в едином контексте без прямого обращения к другим инструментам разработки приложений.
Проекты с базами данных
Современные приложения немыслимы без интенсивной работы с базами данных, что требует специального инструментария. Помимо доступа к базам данных с использованием различных провайдеров (OCI, ODBC, BDE, PostgreSQL и MySQL), в этот инструментарий входят несколько приложений.
Навигатор баз данных предназначен для работы с SQL-базами данных и помогает создавать, сохранять и исполнять SQL-запросы и процедуры.
С помощью Дизайнера проекта баз данных проектируется физическая и логическая структура баз данных, представление данных, границы действия прав доступа и создаются соответствующие описатели.
Навигатор проекта баз данных представляет диалоговый интерфейс для просмотра и редактирования базы данных в технологии «клиент-сервер». Он служит основой для создания рабочих мест, требующих выполнения сложных настроек с контролем доступа на уровне сущностей и инстанций базы данных.
Генератор отчетов — это инструмент по созданию отчетов, используемый как разработчиками проекта, так и пользователями.
Следуя велению времени, в FloraWare включен инструментарий по созданию Web-сервисов с использованием протокола SOAP. В него входит набор модулей доступа к базе данных и организации визуального представления данных.
Объектная модель без объектной программы
Главная отличительная особенность технологии FloraWare — реализация объектной модели непосредственно на объектной машине, без создания промежуточной программы. Модель собирается из экземпляров базовых классов, а связи определяются заданием свойств объектов. Для хранения объектов используется единая древовидная структура.
Во FloraWare создана интерактивная, переносимая среда разработки и исполнения приложений, которая работает на большинстве популярных платформ. Имеется поддержка нотаций UML, есть средства работы с XML, реализован интерфейс с .NET.
Основное практическое преимущество FloraWare перед более традиционными интегрированными средами разработки (Sun JDK, Visual Basic, Delphi, Visual Studio, C++Builder и Power Builder) состоит в повышении качества и скорости создания больших программных систем при снижении трудозатрат. Достигается это за счет контроля разработчика над программным продуктом в течение всего периода жизни продукта и возможности отладки с момента создания первого объекта.
Литература
- Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на C++. СПб.: Невский диалект, 1998.
- Майерс Гленфорд. Архитектура современных ЭВМ, М.: Мир, 1982.
- Вебер. Технология Java в подлиннике. СПб.: BHV-Санкт-Петербург, 1997.
- А.Г. Иванов, Ю.Е. Кремер. Smalltalk: Концепция объектно-ориентированного программирования. "Компьютер Пресс", 1992, № 4.
- Джеффри Рихтер. Программирование на платформе .NET Framework, М.: Microsoft Press, 2002.
- Гради Буч, Джеймс Рамбо, Айвар Джекобсон. UML. Руководство пользователя. М.: ДМК, 2000.
- Шалыто А.А. SWITCH-технология. Алгоритмизация и программирование задач логического управления. СПб.: Наука, 1998.
Сергей Ваганов (s.vaganov@compassplus.ru) — заведующий отделом компании «Компас Плюс» (Магнитогорск).
FloraWare: история становления
Разработка концепции, архитектуры и реализация среды разработки FloraWare были выполнены в 1996-1998 годы группой аналитиков и системных программистов компании «Компас Плюс». В период с 1998-го по 1999 годы FloraWare прошла апробацию в проекте по реализации программных продуктов для процессинговой системы электронных платежей TranzWare Online, принятой на вооружение целым рядом отечественных и зарубежных банков, а также в системах контроля и управления промышленными агрегатами.
В 2002 году вышла вторая версия FloraWare, которая была дополнена средствами автоматного программирования, динамической поддержки классов, поддержки методов проектирования UML, XML, UNICODE, совместимости с технологией .NET.
Свойства микроядра объектной машины позволили перенести FloraWare в операционные системы Windows, Linux, UnixWare, Sun Solaris и QNX. Ведутся работы по переносу FloraWare в Mac OS X и IBM AIX, а также на 64-разрядные платформы Itanium II, AMD64 и PowerPC.
Архитектура виртуальной машины FloraWare совмещает принципы организации цифровых и аналоговых вычислительных устройств, нелинейной организации памяти, массовой («естественной») многозадачности. FloraWare позволила отказаться от методов традиционного «языкового» программирования и свести разработку приложений к процессу создания объектной модели методом «выращивания» дерева объектов.
FloraWare: основы понимания
Некоторые трудности восприятия технологии FloraWare могут возникнуть из-за неправильного понимания основ объектно-ориентированного программирования. Объектный метод не постулирует необходимость программы: его основная парадигма предполагает только обязательность построения объектной модели. Конечно, большинство реализаций объектного метода используют программный способ построения объектной модели. Работу программ, создающих объектную модель, можно разбить на пять частей:
- создание простых объектов;
- организация взаимосвязей и построение составных объектов;
- работа модели посредством обмена сообщениями между объектами и вызова соответствующих методов этих объектов;
- разрушение связей между объектами;
- уничтожение объектов.
При этом необходимой является только третья часть: она выполняет основные функции. Остальные части носят вспомогательный характер.
Наличие в технологическом процессе программы существенно его усложняет, поскольку при этом несколько раз происходит смена субъекта и объекта разработки. Так, на фазе разработки субъект-проектант создает объект-программу. На стадии исполнения программа становится субъектом и создает объект — объектную модель, которая, в свою очередь, превращается в субъект и реализует поставленную задачу. Нет нужды говорить, что такие преобразования делают саму программу и весь процесс проектирования громоздкими и мало управляемыми.
Для большинства статических моделей, не изменяющих свою структуру, создание и уничтожение модели можно выполнить без участия программ пользователя. Для этого, на этапе проектирования модель может быть собрана из готовых объектов с указанием взаимосвязей между ними. Именно такую технологию создания объектной модели из готовых объектов и исполнение ее на виртуальной объектной машине предлагает FloraWare. Подобный порядок проектирования не только исключает из процесса программу, но и позволяет реализовать функционирование модели, основываясь на методах базовых классов.
Достоинства FloraWare во многом обеспечиваются использованием древовидной памяти объектной машины. На уровне объектной модели — это основа для иерархии и полной навигации, на инструментальном уровне — такая память обеспечивает полный доступ ко всем свойствам всех объектов в любое время, а на уровне архитектуры — сводит к минимуму семантический разрыв между объектной моделью и архитектурой объектной машины, на которой модель реализуется.
FloraWare и .NET
Обе технологии базируются на использовании метаданных, предполагая наличие предопределенных базовых классов и ставя целью быстрое и легкое создание переносимых распределенных приложений. Представляется интересным создание на основе .NET объектной машины, аналогичной ядру FloraWare.
Применение FloraWare позволит разбить создание приложений для платформы .NET на два независимых этапа. На первом, с помощью традиционных средств разработки .NET, можно будет создавать стандартные объекты, которые включаются в ядро объектной машины FloraWare. Затем, на основе этих объектов можно будет проектировать пользовательские приложения. Существующий на данный момент набор типов .NET более чем достаточен для реализации объектной машины FloraWare, а язык C# подойдет для записи кода объекта Программа.
Реализованное взаимодействие приложений FloraWare и .NET основано на обмене метаинформацией и совместной работе приложений, созданных в разных технологиях, и предполагает дублирование объектов, сред исполнения и трансляторов, что требует больших ресурсов. Кроме того, оно не позволяет в полной мере воспользоваться преимуществами технологии FloraWare.