SoftCraft
разноликое программирование

Top.Mail.Ru

FloraWare – ускорить разработку приложений

  1. Введение
  2. Зачем нужна FloraWare?
  3. FloraWare: основы понимания
  4. Архитектура объектной машины
  5. Основные характеристики среды разработки
  6. Инструментальные средства
  7. FloraWare: история становления
  8. Особенности реализации
  9. FloraWare и .NET: перспективы объединения
  10. Заключение
  11. Литература
  12. Ссылки на FloraWare

© Ваганов Сергей Александрович

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

1 Введение

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

Поначалу большинство задач, решаемых компьютерной техникой, носили вычислительный характер, поэтому первыми были созданы языки программирования, позволяющие переводить математические формулы на язык команд машины. Впоследствии компьютеры все шире стали использоваться для автоматизации различных видов производственной и творческой деятельности. Для разработки ПО таких компьютеров активно применяется подход, основанный на создании так называемых объектных моделей, которые имитируют объекты реального мира из автоматизируемой области. Такой прием, получивший название объектного метода [1], существенно упростил разработку программ на начальном этапе, когда конкретизируется поставленная задача и определяется архитектура программы. Для написания программ с использованием объектного метода были созданы языки, объединенные в группу объектно-ориентированных.

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

2 Зачем нужна FloraWare?

Попытки создания полноценной объектной машины и замены текстового представления программы предпринимались неоднократно, однако все они ограничивались полумерами. Это можно объяснить несколькими причинами. Технология, меняющая что-то кардинально, требует отбрасывания существующих программных компонентов, созданных по другим технологиям. Поэтому она обязана предложить весь спектр инструментальных средств, либо как запасной вариант, предоставить инструменты поддержки других технологий, и то и другое требует больших усилий. С другой стороны ОО языки программирования [3, 4, 5, 6] создавались с учетом универсальности объектов и полного контроля над ними со стороны пользовательской программы. Даже если технология предполагает наличие некой виртуальной машины [3, 6], назвать ее объектной можно только с большой натяжкой, на откуп ей в лучшем случае отдается сборка мусора. Тогда как наибольшие преимущества объектной машины сказываются при максимальном ее контроле над объектами. Попытки заменить текстовое представление алгоритма, в большинстве случаев, сводятся к генерации текста части программы на основе ее графического представления с последующей трансляцией, интересным же является полное исключение теста программы. Избавиться от перечисленных недостатков можно, отказавшись от архитектуры машины с потоком команд и линейной памятью, и перейдя к архитектуре с древовидной объектной памятью, с управлением объектами собственно объектной машиной.

На примере технологии программирования FloraWare сделана попытка реализации полноценной объектной машины как основы реализации объектного метода. С практической точки зрения, целью создания FloraWare было построение простой и удобной объектно-ориентированной среды разработки и исполнения приложений для больших программных систем со средствами коллективной разработки и удаленной отладки приложений. Помимо этого предъявлялись требования по обеспечению общепринятых свойств технологии программирования как-то:

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

Для достижения поставленных целей были выдвинуты некие базовые принципы, которых придерживались с самого начала:

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

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

3 FloraWare: основы понимания

Некоторые трудности восприятия технологии FloraWare могут возникать от неправильного понимания основ объектно-ориентированного проектирования, роли программы в объектном методе. Объектный метод не постулирует необходимость программы, его основная парадигма предполагает только необходимость построения объектной модели. Большинство реализаций объектного метода используют программный способ построения объектной модели. То есть создают программы, создающие объектную модель. Работу таких программ можно разбить на пять частей:

  • создание простых объектов;
  • организация взаимосвязей и построение составных объектов;
  • работа модели посредством обмена сообщениями между объектами и вызова соответствующих методов этих объектов;
  • азрушение связей между объектами;
  • уничтожение объектов.

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

Рисунок 1 - Сложность ОО программирования

Мы так привыкли, и думаем что иначе нельзя

Для большинства статических моделей, не изменяющих свою структуру, этапы создания и уничтожения модели могут быть выполнены без участия программ пользователя. Для этого на этапе проектирования объектная модель может быть собрана из готовых объектов с указание взаимосвязей между ними. Именно такую технологию создания объектной модели из готовых объектов и исполнении ее на виртуальной объектной машине предлагает FloraWare.

Рисунок 2 - Простота проектирования на FloraWare

Сборка – основа построения модели, проще некуда. Почувствуйте разницу

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

Правильная оценка FloraWare не возможна без понимания преимуществ, которые дает использование древовидной памяти объектной машины. На уровне объектной модели - это основа для иерархии и полной навигации, в которой адресуемой единицей является свойство объекта, позволяющей организовывать связи между объектами. На инструментальном уровне - это полный доступ ко всем свойствам всех объектов в любое время, голубая мечта разработчиков и тестеров. На уровне архитектуры – сведение к минимуму семантического разрыва [2] между объектной моделью и архитектурой объектной машины, на которой реализуется модель.

4 Архитектура объектной машины

Основой объектной методологии является понятие объектной модели, поэтому качество технологии определяется формой представления этой модели в процессе проектирования, принципами реализации этой модели на целевой машине. Объектная модель может быть представлена декларативной и императивной составляющей, что соответствует состоянию и поведению объекта в объектной методологии. Существуют предметные области, в которых объектная модель может в основном иметь статическую декларативную составляющую, что позволяет при проектировании программного обеспечения для таких областей использовать технологию, в которой статическую составляющую декларативной части модели можно создавать непосредственно на этапе проектирования. В этом случае структура объектной модели, связи между объектами и значение большинства свойств будет задаваться с помощью соответствующих редакторов. В виде программы следует оформлять только императивную часть модели, то есть методы объектов. Причем языковая компонента при определении таких методов может иметь только императивную составляющую, что существенно упрощает сам процесс программирования. Следует заметить, что методы объектов, относящиеся к конструированию модели в части взаимосвязи объектов, также могут быть заменены заданием соответствующих свойств. Это ни коим образом не исключает наличие в объектной модели динамической составляющей декларативной части, и создается такая составляющая программным способом, при реализации соответствующих методов.

Рисунок 3 - Архитектура FloraWare

Объектная машина – основа реализации объектного метода.

Объектная машина - основа реализации объектного метода, должна иметь инструменты поддержки неотъемлемых составляющих объекта: состояния, поведения и идентичности, а также инструменты реализации отношений между объектами: связей и агрегации [1]. В объектной машине FloraWare в качестве форматов данных выступают объекты, а алгоритм реализуется передачей сообщений между объектами и их реакцией на эти сообщения. Архитектурно объектная машина FloraWare может быть представлена в виде нескольких уровней.

На самом нижнем уровне реализован аппарат работы со свойствами объектов, которые относятся к четырем базовым типам: целое, действительное, строка и указатель на объект, эти свойства могут отличаться набором индексов базовых типов. Свойства объекта это инструмент поддержки его состояния.

Наличие объектов- контейнеров, способных содержать внутри себя другие объекты, позволяет строить сколь угодно сложные объекты. Обязательный объект - корневой контейнер, в который по мере необходимости добавляются другие объекты, реализует память объектной машины представляющую собой дерево, в котором находятся все объекты, существующие в данный момент времени. Добавление всем объектам выделенного строкового свойства Имя позволяет идентифицировать объекты и осуществлять навигацию по дереву объектов. Составное свойство Ссылка на объект, состоящее из относительного пути до объекта и указателя на объект, дает возможность организовывать сколь угодно сложные связи между объектами. Таким образом, древовидная структура данных является основой реализации отношения агрегация между объектами, а с помощью ссылок на объекты устанавливаются отношения типа связь.

Второй уровень объектной машины обеспечивает работу объектов встроенных базовых классов, которые освобождают пользователя от проектирования самих этих классов, в его обязанности входит только определение использования их экземпляров. Встроенные классы реализованы в ядре FloraWare как обычные классы, созданные с использованием объектно-ориентированного языка программирования [5], со своими свойствами и методами. Для FloraWare набор таких встроенных классов достаточно обширен, в него входят:

  • универсальные объекты: число, целое, строка, указатель;
  • объекты контейнеры: директория, массив, набор констант;
  • графические объекты: фигура, альбом, окно, меню;
  • программные объекты: программа, функция, задача;
  • объекты управления: диалоговые элементы, редакторы;
  • объекты работы с базами данных: база данных, таблица, курсор;
  • объекты графического программирования;
  • объекты автоматного программирования;
  • объекты ввода-вывода: файл, порт, сетевой порт.

Согласно объектному методу для реализации алгоритма в целом необходимо, чтобы объекты обменивались друг с другом сообщениями. Инициаторами обмена сообщениями являются активные объекты, которые, кроме того, служат основой для параллелизма. Пути передачи сообщений определяются с помощью понятий источник изменений и приемник изменений. В источнике есть список приемников, подписавшихся на сообщения об изменениях, а в объекте приемнике есть свойство путь до источника, по которому на этапе установления связей происходит связывание источника и приемника. При изменении источника он информирует об этом приемник, цепочка может быть произвольной длины и разветвляться. Таким образом, формируется паутина, за нити которой «дергают» активные внешние источники и она передает события всем заинтересованным объектам. Причем все это делается без программирования, а только настройкой взаимосвязей, а сам обмен сообщениями достигается чтением и изменением значений свойств объектов. Использование связей между объектами для передачи изменений дает возможность реализовать модель систем с «мгновенным» взаимодействием объектов, для которого не важна последовательность действий.

Рисунок 4 - Паутина связей между объектами

Связь источник/приемник – основа реализации алгоритма модели.

Наличие встроенных классов позволяет создавать сколь угодно сложную объектную модель, используя экземпляры этих классов. В качестве пользовательских объектов в этом случае выступают экземпляры класса Контейнер, значения полей пользовательских объектов задаются экземплярами объектов число, целое и строка. Связи задаются значениями свойств Ссылка на объект, а поведение таких объектов задается экземплярами класса Программа, исходный текст которых записывается на специальном С-подобном языке.

Это можно считать третьим уровнем объектной машины, уровнем пользовательских объектов, которые создаются методом сборки из экземпляров базовых классов. Для таких объектов нет аппарата описания классов и нет понятия инстанцирования, реализованы только инкапсуляция и монтирование (чтение из хранилища объектов). Как объекты третьего уровня могут быть представлены диалоговые окна, объекты работы с базами данных, объекты-диаграммы UML.

Полный аппарат пользовательских классов реализован на четвертом уровне объектной машины с помощью базового класса Шаблон. Причем и описатель класса, и объекты-экземпляры класса являются обычными экземплярами базового класса Контейнер и отличаются только значением одного свойства. В пользовательских классах реализованы множественное наследование, виртуальные методы, методы класса и методы экземпляров, статические методы, то есть практически все, что подразумевается, когда речь идет об объектно-ориентированном программировании. Наличие в дереве объектов, наряду с экземплярами класса, его описателя, наделяет такие классы многими полезными свойствами, но это тема отдельной статьи.

5 Основные характеристики среды разработки

Кроме основных требований, определяющих концепции технологии, при проектировании FloraWare ставилась цель создать среду разработки больших программных комплексов, соответствующую последним достижениям компьютерной науки и практики, с набором следующих свойств:

  • мультизадачность;
  • универсальность;
  • наличие аппарата автоматного программирования;
  • поддержка нотации UML;
  • поддержка XML документов;
  • интеграция с технологией .NET;
  • масштабируемость и поддержка распределенных приложений;
  • поддержка многоязыковых приложений;
  • интерактивность;
  • переносимость и самодостаточность.

5.1 Мультизадачность

Одним из основополагающих свойств FloraWare является её мультизадачность, реализующая концепцию активных объектов. Теоретически любой элемент или группа элементов объектного дерева может быть отдельной задачей. Возникающие проблемы и коллизии, связанные с обработкой данных в мультизадачной среде, решаются автоматически с помощью специальных встроенных средств объектной машины. Наличие мультизадачности позволяет в полной мере проектировать реакции на события в системе независимо друг от друга, если конечно иное не предусмотрено алгоритмом.

Во FloraWare различают два уровня мультизадачности. Внешний уровень, реализован на нитях ОС, используется при работе с внешними объектами: порты ввода/вывода, базы данных, объекты сетевого взаимодействия, файлы, процессы ОС. Внутренний уровень, реализован на одной нити ОС, с использованием собственного менеджера задач с невытесняющей мультизадачностью, служит для работы с деревом объектов.

5.2 Универсальность

Может показаться, что использование объектов заранее определенных классов резко сужает область применения FloraWare. Но это далеко не так. Среди предопределенных классов FloraWare есть практически все используемые в настоящее время диалоговые элементы, инструменты работы с базой данных, переходники к драйверам устройств, а также такие универсальные классы, как Контейнер, Число, Целое, Строка, Массив и Программа, с помощью которых можно создать практически любое приложение. Базовые классы, реализованные в ядре объектной машины, являются основой создания собственных прикладных классов с использованием множественного наследования, полиморфизма и инкапсуляции. При необходимости расширить набор базовых классов можно, используя типы .NET, что существенно расширяет универсальность.

5.3 Поддержка нотации UML и автоматное программирование

Использование объектной методологии порождает желание, как можно дольше работать в терминах объектной модели и переходить к тексту программы либо, в крайнем случае, либо в самом конце процесса проектирования. Это желание породило UML [7]с его графическим представлением модели объекта, оформлением его в виде соответствующих диаграмм и генерацией программы, реализующей эту модель. Этот процесс принято называть прямым проектированием, в противовес ему процесс создания модели по программе называют обратным проектированием. Другими словами прямое проектирование это процесс трансляции диаграмм модели в программу для целевой машины. Технология FloraWare в качестве целевой предполагает объектную машину, поэтому процесс проектирования кардинально отличается от общепринятых, приближаясь к идеальному с точки зрения UML. Достигается это наличием во FloraWare объектов, аналогичных диаграммам UML, в качестве примера можно привести само дерево объектов FloraWare, которое соответствует в UML диаграмме объектов и объект Конечный автомат, реализующий диаграмму состояний UML. Отсутствие этапа генерации программы позволяет сделать вывод, что в FloraWare прямое и обратное проектирование слились в единый процесс разработки и исполнения приложений. В любой момент, вызвав редактор, можно изменить приложение, что соответствует прямому проектированию, в тоже время сам вызов редактора объекта является частью обратного проектирования

Рисунок 5 - Подражание UML: всевозможные диаграммы (в натуральную величину)

Можно сказать, что проектирование во FloraWare если не по содержанию, то по духу полностью соответствует методологии UML. В качестве примера можно привести использование автоматного программирования [8].

Рисунок 6 - Объект Конечный автомат. Запись алгоритма в виде диаграммы состояний (в натуральную величину)

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

5.4 Поддержка XML

Под поддержкой XML [9] во FloraWare понимается нечто большее, чем просто работа с сообщениями известного формата и известными методами. Определяющей является древовидная структура данных объектной машины, позволяющая работать по правилам DOM не только с данными межпрограммного обмена, но и со всеми внутренними данными.

FloraWare поддерживает импорт и экспорт данных в XML формате, что позволяет легко интегрировать ее в современную информационную инфраструктуру. Но, пожалуй, гораздо более важно то, что FloraWare позволяет естественным образом отобразить XML документ на свое дерево и предоставляет свои универсальные и специализированные средства для обработки этого документа. Для этой цели имеются базовые классы Документ, Входной XML курсор и Выходной XML курсор, с помощью которых на объектном уровне, то есть не программно, реализована обработка XML документов. Эти же объекты являются и основой реализации SOAP и WSDL.

5.5 Масштабируемость и поддержка распределенных приложений

Программное обеспечение системы программирования FloraWare существует в виде инстанций, которые могут исполняться на разных процессорах, серверах или узлах кластерной платформы. Организация взаимодействия элементов дерева, объектов одной инстанции с элементами другой инстанции осуществляется с помощью специальных сетевых средств, поддерживаемых объектной машиной. Объекты разных инстанций взаимодействуют через порты ввода/вывода, используемые для поточной передачи данных; и через общее дерево объектов, элементы которого доступны с помощью прямого обращения, как если бы эти элементы были частью дерева объектов инстанции.

Таким образом, FloraWare позволяет естественным образом создавать распределенные масштабируемые приложения. Механизмы, обеспечивающие взаимодействие распределенных приложений, поддерживают как слабо связанные объекты (взаимодействие только в режиме передачи данных) так и сильно связанные объекты (взаимодействие в режиме прямого обращения).

Масштабируемость и распределенность приложений может быть достигнута использованием средств .NET, что также позволяет пользователям расширять список встроенных в ядро FloraWare классов и подключать к приложениям FloraWare внешние коды.

5.6 Переносимость и самодостаточность

Требование переносимости технологии вытекает из нежелания ограничивать пользователя, какой либо операционной системой, или какой либо платформой. Когда речь идет о переносимости FloraWare, можно говорить о переносимости среды разработки и о переносимости приложений созданных с ее помощью. Среда разработки состоит из ядра, представляющего собой виртуальную объектную машину, и приложений для этой машины, реализующих утилиты среды разработки. Архитектура ядра FloraWare разработана так, что системно-зависимые коды составляют не более трех процентов. Это достигается тем, что все графические примитивы реализованы самостоятельно, а само ядро запрограммировано с использованием С++ [5] по объектной технологии по правилам POSIX. Приложения, работающие под управлением ядра, обладают полной переносимостью, нет необходимости не только переписывать, но и перетранслировать их. Переносимы и данные созданные с помощью этих приложений, визуально приложения FloraWare переносимы с точностью до пикселя. Исключение составляют приложения использующие объекты с явной системной зависимостью, например использующие Microsoft Windows DDE.

В настоящее время FloraWare портирована на платформы Windows 9x/NT/2000/XP, Linux, UnixWare, SUN Solaris SPARC, SUN Solaris Intel и QNX RtP[10,11]. Проходит тестирование реализация ядра FloraWare на AMD64, ведутся работы по переносу ядра на процессоры Itanium II и PowerPC и на платформы Mac OS X и AIX.

Если суммировать, то сейчас ядро FloraWare работает на процессорах трех архитектур (x86, UltraSPARC и x86-64), под управлением ОС трех семейств (Windows, Unix и QNX) и транслируется с помощь трех трансляторов (C-Builder, VC и GCC).

5.7 Интерактивность

Интерактивность – важнейшее требование, которое относится и к среде разработки приложения, и к самому приложению. Для обеспечения полноценной интерактивности приложения, то есть способности адекватно реагировать на многочисленные внешние и внутренние события и действия пользователей, необходимо обеспечить полноценную поддержку мультизадачности и параллелизма. FloraWare предоставляет такие возможности проектировщику, избавляя его при этом от необходимости явно программировать взаимные блокировки и синхронизацию потоков вычислений.

Интерактивность разработки означает возможность вносить изменения в проект и быстро видеть результат. В традиционных системах программирования интерактивность принципиально ограничена этапом трансляции, который отделяет внесение изменений от их тестирования. Во FloraWare отдельного этапа трансляции нет совсем, приложение состоит из одних и тех же объектов и во время разработки, и во время исполнения. Мало того, отсутствие разбиения на инструментальную и исполнительную среды, позволяет использовать одни и те же средства и во время разработки, и во время исполнения, поэтому можно изменять работающее приложение и немедленно видеть результат этого изменения.

6 Инструментальные средства

В состав инструментальных средств входит ряд приложений, обеспечивающих автоматизацию и удобство разработки, отладки, проектирования, документирования, сборки и поддержки приложений FloraWare. Инструментальные средства можно отнести к нескольким группам по типам объектов, с которыми они работают:

  • приложения по работе с объектами в памяти объектной машины;
  • приложения по отладке и мониторингу;
  • приложения по разработке больших проектов;
  • приложения по разработке проектов, использующие базы данных;
  • приложения по разработке серверных приложений.

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

6.1 Дизайнер - работа с объектами в памяти объектной машины

Дизайнер является основным приложением FloraWare, обеспечивающим необходимые функции для создания приложений. С помощью Дизайнера можно выполнять навигацию по узлам дерева, фокусироваться на отдельных объектах дерева, а также создавать, удалять, показывать или редактировать объекты и их свойства. Редактирование выполняется с помощью специально разработанных для каждого типа объекта редакторов, являющихся часть Дизайнера.

Рисунок 7 - Дизайнер FloraWare (в натуральную величину).

Любой элемент дерева объектов может быть отредактирован с помощью Дизайнера.

Дизайнер способен выгружать фрагменты дерева объектов в файлы специального формата (OTS-файлы). В его состав также входит несколько сервисных приложений.

Редактор графических объектов упрощает разработку диалоговых графических приложений и обеспечивает естественный способ выполнения этой работы, используя альбом встроенных графических элементов, мышь, приемы «drag-and-drop» и т.п. С помощью средств Редактора графических объектов можно также создавать, удалять, редактировать графические объекты и их свойства, в частности – цвета, формы фигур, их месторасположение на экране относительно друг друга и в дереве объектов.

Входящий в состав Дизайнера Менеджер приложений выполняет групповые операции с объектами древовидной структуры. Он производит поиск по дереву объектов, генерирует сводные таблицы свойств и состояний объектов, таблицы перекрестных ссылок и связей, статистические справки и таблицы состояния дерева объектов, его фрагментов и частей.

Транслятор кодов функций, входящих в объекты типа Программа и написанных на встроенном языке F++, является частью Дизайнера и выполняет перевод исходных кодов этих функций в исполнимое представление в виде команд стековой машины.

Дополнительную информацию об объектах, их взаимосвязях, свойствах, методах, системных функциях разработчику предоставляет Инспектор классов.

Рисунок 8 - Диаграммы классов (в натуральную величину)

Несколько вариантов Инспектора работают с классами разных уровней объектной машины.

6.2 Отладка и мониторинг

Несмотря на то, что во FloraWare нет разбиения на инструментальную и исполнительную системы, и на то, что с помощью Дизайнера можно в любой момент проанализировать состояние практически всех объектов, для объектов типа Программа, с учетом их специфических свойств, создано отдельное приложение Отладчик.

Отладчик предоставляет широкий набор средств, обеспечивающих эффективную символьную отладку приложений: останов выполнения в указанной точке отлаживаемого приложения, останов по событию или исключительной ситуации, выполнение программного кода объектов по шагам, наблюдение за состоянием объектов в динамике, всплывающие подсказки с информацией о текущих значениях объектов, просмотр исходного кода объектов и их внутреннего представления и т.д. и т.п. Для объектов относящихся к категории графического программирования имеется набор собственных отладчиков, которые позволяют вести отладку в терминах исходных объектов.

Информация о целом ряде системных событий, возникающих в ядре FloraWare (в частности – сведения об ошибках и прерываниях в объектах приложения), помещается в специальный Журнал событий, доступный разработчику. В этот же Журнал событий помещается информация о событиях, генерируемых многими библиотечными объектами. Записи Журнала событий доступны для поиска и просмотра. Помещение информации о том или ином событии в Журнал событий может быть заблокировано пользователем, если в приложении указан соответствующий обработчик этого события.

6.3 Разработка больших проектов

Приложение Менеджер проектов создано для поддержки реализации сложных и больших проектов, включающих множество подсистем и компонент, реализуемых несколькими разработчиками или группами разработчиков. Менеджер проектов поддерживает файлы специального формата (PRJ-файлы), в которых хранятся описания реализуемых проектов, компонент, из которых они состоят, в том числе – OTS-файлов (созданных Дизайнером), отдельных секций OTS-файлов (частей дерева объектов), объектов дерева объектов, агрегатов, связей, контактов, версий и т.п. С помощью Менеджера проектов можно создавать, удалять и редактировать элементы, входящие в проект, вести версии проекта и его элементов, хранить данные об авторах, аннотации и комментарии разработчиков.

Средствами Менеджера проектов на основании специальных описателей генерируются различные дистрибутивы разработанного приложения. Кроме того, имеется возможность создания пакетов Upgrade и соответствующих скриптов к ним, необходимых для обновления уже установленного у пользователей приложения, включая необходимые процедуры корректировки структуры базы данных используемой в приложении СУБД.

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

Менеджер секций обеспечивает необходимые средства по работе с OTS-файлами, содержащими информацию о дереве объектов приложения, созданного с помощью Дизайнера. OTS-файл может содержать несколько секций, в каждой из которых находится дерево объектов приложения или его фрагменты. С помощью Менеджера секций можно исключить секцию из OTS-файла, скопировать или перенести какую-либо секцию в другой OTS-файл, вести несколько версий секций и также манипулировать этими версиями (исключать, сравнивать, освобождать место в OTS-файле, занятое удаленными секциями и т.п.).

Приложение Центр разработки организует интегрированную среду разработки приложений, использующую возможности и средства Дизайнера (Designer), Менеджера проектов (Project Manager) и Менеджера секций (Section Manager).

Рисунок 9 - Центр разработки (в натуральную величину)

Интегрированная среда Центра разработки позволяет пользователю работать с различными объектами приложения – деревом объектов, файлами приложений (OTS-файлами), секциями OTS-файлов (фрагментами дерева объектов), файлами проектов (PRJ-файлами) и т.д. – в едином контексте без прямого обращения к другим инструментам разработки приложений

6.4 Разработка проектов, использующих базы данных

Современные приложения не мыслимы без интенсивной работы с базами данных. Специфика таких приложений позволяет организовать для их разработки специальный инструментарий. Кроме доступа к базам данных, с использованием различных провайдеров: OCI, ODBC, BDE, PostgreSQL и MySQL, в этот инструментарий входят несколько приложений, таких как:

  • Навигатор баз данных, предназначенный для работы с SQL базами данных, позволяющий создавать, сохранять и исполнять SQL запросы и процедуры;
  • Дизайнер проекта баз данных, с помощью которого проектируется физическая и логическая структура базы данных, представление данных, границы действия прав доступа и создаются соответствующие описатели;
  • Навигатор проекта баз данных, представляющий диалоговый интерфейс для просмотра и редактирования базы данных в технологии клиент – сервер, служащий основой для создания рабочих мест пользователей, выполняющих сложные настройки и нуждающихся в мощных диалоговых возможностях с контролем доступа на уровне сущностей и инстанций базы данных;
  • Генератор отчетов - инструмент по созданию отчетов, как разработчиком проекта, так и пользователями.

6.5 Разработка серверных приложений

Следуя велению времени, в среде FloraWare разработан инструментарий по созданию Web-сервисов с использованием SOAP протокола. В этот инструментарий входит набор модулей доступа к базе данных и организации визуального представления данных.

7 FloraWare: история становления

Разработка концепции, архитектуры и реализация в виде виртуальной машины FloraWare-VM были выполнены в 1996–1998 годы группой аналитиков и системных программистов компании «Компас Плюс».

В период с 1998 по 1999 годы FloraWare прошла апробацию в проекте по реализации программных продуктов для процессинговой системы электронных платежей (TranzWare Online) , принятой на вооружение рядом российских и зарубежных банков (Кредит Урал Банк, Банк Балтийский, Bank24.ru, Банк Северная Казна, Латеко Банк, Латвийский Ипотечный Земельный Банк, MinskComplexBank, Mongolian Saving Bank, Paritate, УралТрансБанк, СОБИН, Приват Банк , Номос Банк и другие) и в системах контроля и управления промышленными агрегатами.

В 2002 году вышла вторая версия FloraWare, которая, в частности, была дополнена средствами автоматного программирования, динамической поддержки классов, поддержки методов проектирования UML, поддержки XML, поддержки Unicode, совместимости с технологией .NET [6] и многими другими возможностями. Свойства микроядра объектной машины позволили портировать FloraWare на Windows 9x/NT/2000/XP, Linux, UnixWare, Solaris и QNX RtP [11]. Ведутся работы по переносу FloraWare на Mac OS X и AIX, 64-разрядные [10] процессоры Itanium II, AMD64 и PowerPC.

К настоящему времени с помощью FloraWare разработаны десятки приложений, в том числе – серверных, объемом более 300 тысяч программных объектов, работающих в реальном масштабе времени на распределенных кластерных отказоустойчивых серверных системах. Опыт промышленного использования этих приложений в десятках банковских организаций в России, странах ближнего и дальнего зарубежья показал высокие характеристики качества, производительности и надежности, простоту внесения изменений, низкую себестоимость разработки и поддержки приложений, простоту и высокую скорость обучения разработчиков. Достигается это полным контролем разработчика над программным продуктом в течение всего периода жизни продукта, возможностью отладки продукта с момента создания первого объекта, и всем процессом проектирования в рамках уникальной технологии.

Сравнительный анализ трудозатрат на реализацию TranzWare Online и ближайшего конкурентного продукта показал, что использование FloraWare позволило сократить трудоемкость программирования в несколько раз. За десять человеко-лет был создан аналог, хоть и не полный, продукта на разработку которого, было потрачено четыре тысячи человеко-лет.

Другое существенное преимущество системы программирования FloraWare из разряда концептуальных заключается в оригинальной архитектуре вычислительного процесса объектной машины (FloraWare Object Engine), совместившей принципы организации цифровых и аналоговых вычислительных устройств, нелинейной организации памяти, массовой («естественной») мультизадачности. Построенная на базе этих принципов, архитектура FloraWare позволила полностью отказаться от методов традиционного «языкового» программирования (в этом смысле FloraWare – это технология, заменяющая языки программирования), свести процесс разработки приложений к процессу создания объектной модели методом «выращивания» «живого» дерева объектов, обеспечить наиболее полное соответствие инструмента разработки приложений современным теоретическим представлениям об объектно-ориентированных системах программирования.

8 Особенности реализации

8.1 Реализация графического интерфейса

В целях переносимости FloraWare по минимуму использует из соответствующего GUI только отрисовку BMP и курсора мыши, все графические элементы реализуются самостоятельно. Есть реализации такой архитектуры на GUI-Windows, SVGA, GUI Xphoton, GUI Photon, GUI X, GUI-Frame Buffer.

В целях оптимизации FloraWare есть отрисовки графических элементов непосредственно соответствующим GUI.

В таблице приведены используемые GUI и имена исполняемых модулей в зависимости от операционной системы.

* - Для Linux, из-за работы SVGA только с правами пользователя Root, реализована архитектура Экранного Менеджера, при которой отрисовку осуществляет демон, запущенный под Root, а инстанции Флоры запускаются с правами пользователей. Инстанции могут одновременно запускаться с нескольких терминалов.

8.2 Реализация технологии "хост-терминал"

В общем случае приложение FloraWare имеет визуальные объекты и реагирует на клавиатуру и мышь. Если FloraWare запущенна в среде Windows , Photon или X, то работа производится стандартными способами.

FloraWare имеет собственные средства для реализации архитектуры хост-терминал. В качестве хоста может выступать любая инстанция FloraWare. В качестве терминала также инстанция FloraWare или терминальное приложение. В инстанциях FloraWare с одной стороны запускается приложение “Сервер Удаленного Доступа” с другой “Терминальный Клиент”. Могут взаимодействовать хост и терминал, запущенные на различных платформах. Если у хоста есть собственный экран, клавиатура и мышь, можно одновременно управлять инстанцией и с хоста, и с терминала. Реализован соответствующий сервис, запускающий FloraWare по запросу от терминала.

8.3 Реализация интерфейса работы с базами данных

Для организации работы с базами данных пользователю предоставляется группа объектов. Сами эти объекты реализованы с использованием интерфейсов BDE, OCI, ODBC и PostgreSQL. Возможность работы с конкретной базой определяется наличием драйвера в соответствующем интерфейсе.

В таблице показаны интерфейсы работы с СУБД в зависимости от операционной системы.

В таблице перечислены СУБД, работа с которыми была проверена.

8.4 Реализация межмашинного взаимодействия

Деревья объектов Флоры на разных инстанциях могут иметь общие ветви. Реализуется это с помощью Флора-сети. В этих ветвях могут быть “Целые”, “Действительные”, “Строки” и “Функции”, причем управлять состоянием таких объектов по сети нельзя, доступны только значения и вызовы. Есть соответствующее API для реализации узла Флора-сети в приложениях на C++.

Наличие прекрасно реализованных объектов “Сетевой порт” и “СОМ порт” позволяют пользователю самому программировать сетевое взаимодействие.

9 FloraWare и .NET: перспективы объединения

Между технологией FloraWare и .NET много общего. Обе базируются на использовании метаданных, предполагают наличие предопределенных базовых классов, ставят своей целью быстрое и легкое создание переносимых распределенных приложений. Но есть и существенные различия.

Платформа .NET Framework являет собой прекрасный пример многоязыковой среды (CLR) с помощь, которой можно создавать объектно-ориентированный программы. Можно предположить, что виртуальная машина CLR и библиотека классов (FCL) это ответ на требование многоязычности, а доступ к метаданным и архитектура сборок требование распределенности. С точки зрения реализации объектного метода это классическая система, базирующаяся на языке, в данном случае на нескольких, трансляторе и библиотеке объектов. Особо следует отметить, что объекты из FCL используются программным способом, то есть пишутся программы по их созданию и вызову методов. Справедливости ради скажем, что виртуальная машина CLR выполняет большую работу по сбору мусора и удаленному использованию объектов. Обобщая можно сказать, что между архитектурой платформы .NET Framework и объектным методом сохраняется семантический разрыв [2].

В свою очередь FloraWare реализует объектный метод на более высоком уровне. Кроме библиотеки встроенных классов FloraWare предоставляет пользователю дерево объектов - место, где строится объектная модель.

Представляется интересным создание на основе .NET объектной машины, аналогичной ядру FloraWare. Результатом этого может быть среда разработки приложений для платформы .NET Framework по технологии FloraWare. Применение технологии FloraWare позволит разбить создание приложений для платформы .NET на два независимых этапа. На первом этапе, с помощью традиционных средств разработки .NET, можно будет создавать стандартные объекты, львиная часть которых уже создана, включая мх в ядро объектной машины FloraWare. Затем по правилам технологии FloraWare на основе этих объектов можно будет создаваться приложения пользователя.

Существующий на данный момент набор типов .NET более чем достаточен для реализации объектной машины FloraWare, а язык C# прекрасно подойдет для записи кода объекта Программа.

Реализованное в настоящее время взаимодействие приложений FloraWare и .NET, основано на обмене метаинформацией и совместной работе приложений, созданных в разных технологиях, и предполагает дублирование объектов, сред исполнения и трансляторов, что требует больших ресурсов. Кроме того, оно не позволяет в полной мере воспользоваться преимуществами технологии FloraWare.

Интересным было бы развитие такого проекта по модели open source.

10 Заключение

В случае с FloraWare мы имеем дело с технологией, поддерживающей объектную парадигму и основанной на концепции объектной машины. Ее главная отличительная особенность – реализация объектной модели непосредственно на объектной машине, без создания промежуточной программы. Объектная модель собирается из экземпляров базовых классов, а связи определяются заданием соответствующих свойств объектов.

Во FloraWare реализована виртуальная объектная машина, в полной мере соответствующая требованиям к структуре и связям объектов, предъявляемым объектным методом. Данными объектной машины служат объекты, для хранения которых используется единая древовидная структура.

Кроме того, создана интерактивная, переносимая среда разработки и исполнения приложений, поддерживающая данную технологию. Среда и спроектированные с ее помощью приложения работают на большинстве популярных платформ. Имеется поддержка нотаций UML, есть средства работы с XML и реализован интерфейс с .NET.

Все это, а также многолетняя промышленная проверка системы говорит в пользу применения FloraWare. Основное практическое преимущество FloraWare перед аналогами (известными на рынке объектно-ориентированными системами программирования – JDK Sun, Visual Basic, Delphi, Visual Studio, C++Builder , Power Builder и другими) заключается в повышении качества и скорости разработки больших программных систем при одновременном резком снижении трудозатрат.

Литература

  1. Гради Буч, Объектно-ориентированный анализ и проектирование с примерами приложений на C++, Издательство «Невский диалект»,1998.

  2. Майерс Гленфорд, Архитектура современных ЭВМ, «Мир», Москва, 1982.

  3. Дж. Вебер, Технология JAVA в подлиннике, Издательство «BHV-Санкт-Петербург»,1997

  4. А.Г. Иванов, Ю.Е. Кремер, Smalltalk: Концепция объектно-ориентированного программирования, Компьютер Пресс, N 4, 1992 г.

  5. Страуструп Бьерн, Язык программирования C++, 3 издание, Издательство «Невский диалект», 2000.

  6. Джеффри Рихтер, Программирование на платформе .NET FRAMEWORK, Издательство «Microsoft Press», Москва 2002.

  7. Грейди Буч, Джеймс Рамбо, Айвар Джекобсон, UML. Руководство пользователя, Издательство «ДМК», Москва,2000.

  8. Шалыто А.А. SWITCH-технология. Алгоритмизация и программирование задач логического управления. СПб., Наука, 1998.

  9. Кирк Ч, Питц-Моултис Н., XML в подлиннике, Издательство «BHV-Санкт-Петербург», 2000.

  10. Э. Таненбаум, Архитектура компьютера, Издательство «Питер», 2002.

  11. Роб Кёртен, Введение в QNX/Neutrino 2, Издательство «Петрополис», 2002.

Ссылки на FloraWare


http://www.inno.ru/projects/show/?id=46



Беллетристика с юмором:
Полушутливая статья в Компьютерре. http://old.computerra.ru/online/influence/6953/
Статья оппонента. http://old.computerra.ru/online/influence/6990/for_print.html
Ответ на критику. http://old.computerra.ru/online/influence/7083/



http://agora.guru.ru/display.php?conf=autoprog&page=item001


SoftCraft
разноликое программирование

http://www.softcraft.ru/design/cold/
http://www.softcraft.ru/auto/other/resus/


http://is.ifmo.ru/projects/cold/



http://flora.qnx.org.ru/



http://www.citforum.ru/cgi-bin/yandmarkup?HndlQuery=1062342751&HndlDoc=9790&PageNum=0



http://www.download.ru/search.ehtml?p=1&q=Flora&l=0&t=3&c=0



http://www.altlinux.ru/index.php?module=press&action=showfull&newsid=65


    Сергей Ваганов, инженер,
    s.vaganov@compassplus.ru, flora@compassplus.ru,
    заведующий отделом, ООО «Компас Плюс», Магнитогорск