Сравнительная оценка стандартных С++ библиотек под Palm OS
Автор: Владимир Ледников, 02 Апрель 2001 Кол-во прочтений/просмотров: 34790 Кол-во слов в этом тексте: 4020 Версия для печати:
В статье выполнен высокоуровневый сравнительный анализ существующих на рынке объектно-ориентированных библиотек для Palm OS. Результаты оценки должны позволить профессионалу и начинающему С++ разработчику определить свою стратегию в использовании существующего библиотечного инструментария.
Методологическая основа
С прикладной точки зрения, основная проблема объектно-ориентированного подхода к разработке приложений состоит в отсутствии очевидных и легко доступных способов предоставления преимуществ данной технологии широкому кругу неискушённых в тонкостях С++ программирования разработчиков. Использование стандартных библиотек классов может послужить одним из способов решения указанной проблемы. Попытаемся ответить на вопросы - какими свойствами должны обладать библиотеки и как они должны предоставляться разработчику?
Зачастую, за понятиями "простоты" и "качества" кроются совершенно неисследованные глубины. Существует масса теоретических монографий и практических руководств в области разработки С++ приложений, но отыскать теоретический материал, посвящённый проектированию и разработке "стандартных" объектно-ориентированных библиотек классов, исключительно непросто. Проблема кроется в отсутствии строгойметодологической основы, которая должна определять место и свойства библиотеки классов в цикле разработки программного обеспечения (ПО) вообще и под Palm в частности.
Ключ к решению упомянутой задачи лежит в области обоснования архитектуры библиотеки для тех или иных прикладных задач (т.е. областей использования). На практике, программы часто разбивают на отдельные, по возможности малосвязанные, слои:
интерфейс с пользователем (GUI);
обработка данных (Data processing);
обмен с внешними источниками данных (Data exchange or external interfaces).
Такой подход позволяет разработчику создавать прикладную программу с четко выраженной архитектурой, которой свойственны независимость частей и хорошо специфицированные интерфейсы между ними. В долговременной перспективе "стоимость сопровождения" разработчиком ПО с такой архитектурой оказывается существенно ниже, чем при сквозном программировании приложения. Однако, данный подход, требует значительных стартовых усилий от разработчика, что не всегда оправдано в рамках конкретного проекта. Разрешение этого противоречия связано с использованием профессиональных стандартных библиотек классов. Сразу отметим, что не следует ориентироваться на использование универсальной библиотеки классов. С позиций разработчика ПО объектная модель такой библиотеки может оказаться достаточно сложной или негибкой. На практике, разработчик будет вынужден полностью адаптировать свой код под объектную модель библиотеки и безусловно станет "заложником" чужих архитектурных решений. Таким образом, средства разработки часто приходят в противоречие с реальными требованиями конкретной задачи. Разработка же "удачной" и "открытой" объектной модели, нетривиальная профессиональная задача. Например, библиотеки фирмы Microsoft: MFC, ATL, WTL могут служить примерами различных объектных моделей библиотек, которые, в принципе, предназначены для решения одних и тех же типовых задач, но различными и не всегда совместимыми способами, что требует от разработчика дополнительных трудозатрат при их совместном использовании.
Введём понятия и критерии оценки значимые для целей высокоуровневого анализа.
Предметная область - это перечень понятий и их взаимные зависимости. Разработчик манипулирует ими при создании ПО. Другими словами, предметная область отражает ваше понимание бизнеса, для которого вы создаёте своё приложение или ваше понимание операционной системы, если вы ставите задачу разработки стандартной библиотеки классов.
Абстрактный тип данных (АТД) - это любая структура данных и набор методов, занимающихся их обработкой. Эта абстракция означает, что мы можем каждому понятию предметной области поставить в соответствие свою структуру данных и свой набор методов. Другими словами, в модели предметной области каждому понятию (типу элемента) можно поставить в соответствие абстрактный тип данных.
Базовая (низкоуровневая) модель предметной области - это представление предметной области в виде элементарных АТД (первокирпичиков), на основе которых строятся более сложные АТД и их зависимости. Эта абстракция может использоваться для представления элементарных типов данных и операций над ними в границах данной аппаратной и программной платформ.
Пакетная (высокоуровневая) модель предметной области - в нашем случае, это представление предметной области в виде составных объектов, которым могут быть поставлены в соответствие физические модули программного кода или функции прикладного программного интерфейса (API), входящего в состав OS. Эту абстракцию будем использовать для определения действий, выполняемых системой в целом. В UML (Унифицированный Язык Моделирования) такой механизм группировки носит название пакетов (package) и послужит нам для цели построения архитектур OS и библиотек. Например, форма отвечает за размещение элементов управления (controls) и за обработку событий. Понятие "форма" является составным объектом, поскольку в форме могут находиться элементы управления, которые можно отнести к неделимым объектам.
Один из старейших вопросов методологии создания ПО: как разбить большую систему на небольшие подсистемы?
Очевидно, что каждая библиотека должна базироваться на предметной области решаемой задачи. В идеальном случае предметная область стандартной библиотеки классов должна полностью покрывать и даже расширять пакетную и базовую модели операционной системы. Это означает, что её объектная модель должна соответствовать пакетной и базовой моделям конкретной операционной системы. Как правило, объектная модель библиотеки формирует свою собственную подобласть, в чём-то сужая, а в чём-то расширяя базис. На практике библиотека обеспечивает решение каких-то ограниченных типовых задач и поэтому её предметная область уже, чем предметная область операционной системы. В свою очередь для прикладного программиста важна связь между предметной областью библиотеки и понятиями решаемой задачи. Отсутствие такой связи означает, что разработчик будет использовать классы библиотеки только в ограниченном объёме. Другими словами, объектная модель библиотеки должна являться также пространством, которое эквивалентно или включает в себя предметную область конкретной решаемой задачи. Только в этом случае работа программиста будет лёгкой и эффективной, лишённой существенных архитектурных переделок кода приложения при изменении требований к нему.
Объектную модель библиотеки также можно условно разделить на высокоуровневую и низкоуровневую. Высокоуровневая объектная модель состоит из составных объектов, которые содержат совокупность элементарных АТД. Низкоуровневую объектную модель библиотеки должны составлять элементарные (неделимые) АТД.
Такое условное деление позволяет лучше оценить архитектуру библиотеки, так как к высокоуровневым и низкоуровневым моделям должны быть применены различные критерии оценки их полноты и практической ценности.
В качестве критериев оценки библиотек будем использовать следующие объективные характеристики значимые с точки зрения разработчика приложений:
поддержка библиотекой структурированной архитектуры для разработки ПО под Palm OS (т.н. концепции "framework");
соответствие высокоуровневой объектной модели библиотеки пакетной архитектуре Palm OS API (т.е. области применения библиотеки);
наличие и соответствие низкоуровневой объектной модели библиотеки базовой модели Palm OS (атомарным АТД Palm OS);
наличие в библиотеке абстрактных классов, скрывающих от разработчика ограничения и специфику реализации функций на платформе Palm OS, но предоставляющих программисту простой и доступный интерфейс для решения задачи (например: редактор или таблица с прокруткой);
наличие и степень расширения стандартных функций Palm API дополнительными библиотечными функциями;
поддержка принципа "открытости" низко- и высокоуровневыми моделями библиотеки;
поддержка библиотекой средств отладки приложений и наличие дополнительного сервиса разработчика (additional accessories);
простота использования библиотеки.
Резюмируя вышеуказанный перечень критериев можем сказать, что сравнительный анализ библиотек можно свести к оценке архитектур представленных на рынке библиотечных продуктов. С практической точки зрения, мы считаем такую оценку наиболее комплексной и значимой. Основу оценки составляют критерии качества трёх категорий АТД, которые должны поддерживаться библиотекой:
объектная модель приложения;
пакетная модель Palm OS API;
базовая модель Palm OS (типы элементов, данных и процедуры их обработки в Palm OS).
Инструментальные средства
Все инструментальные средства на рынке Palm OS можно поделить на две основных группы:
инструментарий для системного программирования на языке С, такие как Metrowerks CodeWarrior и PRC-Tools;
инструментарий для высокоуровневого программирования на Бэйсик-подобных языках, таких как NS Basic/Palm, CASL Tools, Satellite Forms, Pendragon Forms и т.д.
Компактность, эффективный доступ к системным функциям, высочайшая степень гибкости и скорость выполнения являются преимуществами первой группы. Однако данные продукты предполагают высокий уровень владения C/C++, знание функций API и множества нюансов, связанных с данной технологией.
Простота и высокая скорость разработки являются преимуществами второй группы. Такой инструментарий может быть легко интегрирован с соответствующим компонентом ConduitÒ , который используется для синхронизации данных между PalmR устройством и персональным компьютером. Однако, эти инструменты не могут обеспечить достаточную гибкость при написании сложных приложений. Более того, PalmR устройства не могут обеспечить необходимую скорость выполнения программ разработанных таким способом.
Большинство серьезных программных продуктов разрабатываются при помощи первой группы. Это мощные компиляторы языков программирования C и C++, которые формируют эффективный код программы. На сегодняшний день, под Palm OS доступны следующие компиляторы:
Metrowerks CodeWarrior, который является платным продуктом, дающим в распоряжение программиста мощную среду разработки (IDE) и интегрированный отладчик. CodeWarrior является стандартом де-факто при программировании под Palm OS;
PRC-Tools - множество свободно распространяемых продуктов на основе известного свободно распространяемого компилятора GNU CC.
Указанные C++ компиляторы позволяют использовать все преимущества объектно-ориентированной технологии для быстрого создания качественных программ, но не включают в себя стандартной объектно-ориентированной библиотеки для разработки приложений под Palm OS. По причине отсутствия библиотеки код становится более объёмным, требует больше времени на разработку и отладку, теряет гибкость и способность к масштабируемости. Поэтому большинство программ пишется по старинке, с использованием C и ограниченного набора API. Однако, такой подход также не оправдан по следующим причинам:
Причина 1 - oтсутствие повторно используемого кода
Программисту ежедневно приходится решать множество стандартных задач, которые могут и должны быть решены один раз в какой-нибудь библиотеке. Насколько это серьезно? По нашим оценкам, типичное приложения под Palm OS, которое просто отображает форму на экране и производит минимальную обработку событий, занимает около 160 строк кода. Неужели стартовая программы должна быть столь велика и так сложна? Программа типа "Hello World" не должна занимать больше 10 строк кода!
Причина 2 - oграниченные возможности Palm OS API
Palm OS имеет очень ограниченный набор функций. Например, менеджер строк позволяет производить только несколько базовых операций над строками. Это значит, что программист должен решать много низкоуровневых и второстепенных задач, отклоняясь от цели проекта.
Причина 3 - квалификация программистов
Большинство стандартных задач решаются не самым лучшим образом, в зависимости от уровня квалификации конкретного программиста.
Очевидно, что в случае использования профессиональной C++ библиотеки, можно получить более высокую скорость и качество написания программ за счёт использования апробированных типовых решений стандартных задач (образцов решений). С целью выявления стандартных задач рассмотрим предметную область, с которой имеет дело каждый разработчик программ для Palm.
Предметная область
Решение любой задачи в области разработки программного обеспечения начинается с постановки задачи, которая включает разработку модели предметной области. Абстрагируясь от деталей, можно сказать, что любое Palm OS-приложение может состоять из следующих слоёв, входящих в состав предметной области:
графический интерфейс с пользователем (GUI), включая обработку событий;
набор операций по обработке данных, включая обработку коллекций и строк;
работа с базами данных и с менеджером файлов Palm;
ввод-вывод, включая связь с PC через COM-порт или инфракрасный порт.
Каждый из слоёв может быть представлен базовой и пакетной моделями. С целью иллюстрации выполним простейшую объектную декомпозицию слоя GUI в Palm OS.
GUI базируется на двух ключевых понятиях (см.Рис.1):
форма (form);
элемент(control).
Рис.1: UML модель фрагмента предметной области
Формам в Palm OS соответствует своя структура данных и своё API, которое работает с этой структурой. В формы помещаются элементы управления, посредством которых пользователь взаимодействует с приложением. Элементы пользовательского интерфейса могут быть следующих типов:
control;
field;
gadget;
label;
list;
scroll bar;
table.
Каждый из указанных типов можно рассматривать как специфический АТД. Например, Gadget позволяет программисту расширять набор стандартных элементов Palm OS путём создания своих собственных элементов управления. В свою очередь, Controls бывают следующих типов:
button;
push button;
check-box;
popup trigger;
selector trigger;
repeating button;
slider;
feedback slider.
Подобная детализация может быть продолжена для других типов элементов. Главный же вывод состоит в том, что ATД форм являются составными и включают базовые АТД различных типов. Любая претендующая на удобство использования библиотека должна покрывать приведенную выше предметную область своей собственной. Эта область должна предоставлять в распоряжение программиста как минимум набор классов эмулирующих поведение формы и стандартных элементов управления. Поскольку слой GUI основан на событийном программировании, класс формы в библиотеке должен также предоставлять средства обработки и маршрутизации событий. Это означает, что объектная модель библиотеки должна содержать развитые механизмы наследования и использования, фильтрации и обработки различных событий связанных с GUI.
Всё множество функций API в Palm OS закреплены за соответствующими менеджерами, в зависимости от того, какие задачи эти функции решают. Например, есть API менеджера форм, есть API менеджера баз данных, есть API у Exchange manager и т.д. Пакетная структура Palm OS API представлена на Рис.2 и также является структурным элементом рассматриваемой предметной области.
Даже предварительное рассмотрение модели предметной области, с которой имеет дело программист позволяет сформулировать ключевую проблему: не вооружённый высокоуровневым интерфейсом в лице стандартной С++ библиотеки, разработчик обречён на поиск непротиворечивых решений во всём многообразии существующих менеджеров Palm API и возможных АТД. С другой стороны наличие такой библиотеки, содержащей объектную модель максимально соответствующую модели предметной области в целом (а значит, содержащей образцы решений типовых задач), должно максимально упростить задачу программиста по разработке конкретных приложений.
Новые возможности
Итак, использование С++ библиотеки содержащей классы, реализующие типовые решения стандартных задач является объективной необходимостью. Такие библиотеки появились на рынке программного обеспечения, что, несомненно, предоставляет возможность выбора (см. Табл. 1: Сводная таблица оценок ):
Библиотека Teenee 1.2.0. самая первая C++ библиотека под Palm OS. Эта библиотека не дублирует своими объектами API операционной системы, она основана на таких объектах как форма, приложение, модальный диалог. Фактически библиотека базируется на двух основных классах:
класс приложения;
класс формы.
Класс приложения, занимается маршрутизацией поступающих событий в класс формы. Программист наследует свой класс формы от представленного в библиотеке базового класса GeneralForm и включает в него один или несколько дочерних классов по обработке событий. Эти классы могут образовывать цепочки, передавая события от одного класса к другому. Это интересная и гибкая архитектура, но она не направлена на решение типовых задач, скорее она использовалась как среда поддержки конкретного прикладного проекта. Проблема запуска приложения, когда область глобальных переменных (и в том числе vtables) недоступна, решается путём включения в код программы собственной реализации метода SysAppLaunchCmdFind, который объявлен, но не реализован в классе библиотеки AbstractApplication. Такое решение нельзя назвать удачным, потому что оно противоречит принципам полиморфизма и сокрытия данных.
При обработке исключительных ситуаций (exceptions) Teenee базируется на стандартных классах STL, таких, как exception, bad_alloc.
Низкоуровневая объектная модель библиотеки не полна: в распоряжении разработчика нет ни классов строк, ни классов коллекций, ни классов для работы с элементами управления Palm OS. Не полна и высокоуровневая модель библиотеки: отсутствуют классы для работы с базами данных Palm, классы для работы с сетью.
Вывод: объектная модель Teenee слабо отражает модель предметной области, неполна, архитектура не ориентирована на типовые задачи и несёт в себе черты реального проекта(ов) ранее реализованного(х) посредством этой библиотеки. В связи с этим пользоваться библиотекой непросто.
PAF Library
Bear River's Palm Application Framework, или PAF, обеспечивает разработчиков широким набором С++ классов, которые включают общие элементы необходимые для создания различных приложений. PAF обеспечивает поддержку библиотек Palm OS, которые обеспечивают интерфейсы с системными сервисами Palm OS и наборами системных утилит. Сервисы и утилиты предоставляют разработчику решения типовых задач и их использование разработчиком приводит к уменьшению риска появления ошибок программирования и трудоёмкости разработки.
PAF проектировался для решения разнородных задач. Во-первых, чтобы обеспечить удобную для программиста объектную структуру разработки приложений. Во-вторых, чтобы уменьшить нагрузку на Palm OS, разработчики библиотеки позаботились об опциональности её функций. В-третьих, PAF предоставляет прикладному программисту широкие возможности для расширения своего кода.
PAF включает в себя:
классы поддержки форм, элементов управления, старых gadgets, баз данных Palm, связи и сканера;
классы-шаблоны (templates) для обработки коллекций и класс строк;
класс поддержки исключительных ситуаций (exceptions);
класс автоматически синхронизирующий многострочный редактор с полосой прокрутки.
Классы поддержки форм, таблиц и gadgets делятся на две группы - на классы, непосредственно представляющие сам объект и на классы-менеджеры. Например, класс PForm представляет собой объект формы, а класс PFormManager является менеджером форм. Классы менеджеры хранят в себе коллекции классов-объектов. Такое поведение позволяет классам-менеджерам автоматически вызывать обработчики соответствующих классов-объектов.
PAF содержит классы реализующие обмен данными с внешними источниками и классы, которые можно отнести к слою обработки данных.
Проблема запуска приложения, когда область глобальных переменных (и в том числе vtables) недоступна, решается путём включения в код программы собственной реализации глобальной функции Find. Такое решение также нельзя назвать удачным, потому что оно тоже противоречит принципам полиморфизма и сокрытия данных.
Вывод: PAF безусловно претендует на роль универсальной, но с недостаточно проработанной архитектурой. В целом, библиотека представляет собой обширные наработки С++ кода, безусловно интересные профессиональным программистам, как примеры готовых решений. Она полно отражает Palm OS API. Однако, классы библиотеки слабо связаны с предметной областью операционной системы. Поэтому она сложна в освоении и в использовании. В результате код, написанный с использованием PAF, выглядит громоздким и сложным.
POL Library
TeT Co. Ltd. Object Library for Palm OS R (POL) является самым молодым продуктом. В настоящее время на рынке присутствует уже вторая версия библиотеки. Эта C++ библиотека под Palm имеет архитектуру, схожую с такими известными библиотеками под Windows как MFC и WTL.
Библиотека базируется на следующих основных классах:
класс приложения;
класс формы:
классы элементов управления.
Класс приложения обеспечивает автоматическую загрузку требуемого класса формы по её идентификатору. Обработчики событий формы автоматически получают управление по картам обработки события. Для этого достаточно связать идентификатор события с именем его обработчика. Карты обработки событий позволяют маршрутизировать события по иерархии классов форм. Ещё одна отличительная черта данной библиотеки это механизм фильтрации событий. Благодаря этому механизму, библиотека может быть легко расширена собственными элементами управления (controls) разработчика. Механизмы маршрутизации и фильтрации событий выгодно отличают POL от конкурентов.
Библиотека позволяет создавать старые и новые gadgets, имеет развитой класс обработки строк, внешне совместимый с классом CString из MFC, обеспечена поддержка исключительных ситуаций (exceptions), есть поддержка баз данных Palm. В библиотеку входят классы-шаблоны (templates) для хранения коллекций и специально оптимизированные по скорости обработки и минимизации числа попыток распределения памяти.
Класс CGrid обеспечивает автоматическую прокрутку таблицы и её синхронизацию с вертикальной полосой прокрутки, что отсутствует в Palm OS и других библиотеках. Этот класс реализует таблицы и позволяет полностью выделять всю строку или несколько строк. При этом поддерживаются устройства с цветным экраном. Есть возможность автоматически синхронизировать таблицу с базой данных на Palm.
Проблема запусков приложения, когда область глобальных переменных (и в том числе vtables) недоступна, удачно решается посредством специализированного класса-шаблона.
Ещё одна интересная особенность: POL интегрирована с Metrowerks CodeWarrior 6 IDE.
К сожалению, во второй версии библиотеки не представлены классы ориентированные на слои обработки данных и работу со связью (data processing and data exchange).
Вывод: основное отличие данной библиотеки - соответствие низко- и высокоуровневой объектной модели POL объектной модели Palm OS для слоя GUI. Реализацию библиотеки отличает ярко выраженная строгая и открытая архитектура, что позволяет рассматривать библиотеку как универсальный продукт лишённый какой-либо проектной специфики. Эта библиотека наиболее проста в использовании.
Оценки и стратегия использования
Сводная таблица оценок библиотек и краткая справка о их дополнительных характеристиках приведена в Табл.1. и Табл.2. соответственно. Суммарная оценка вышеперечисленных продуктов выполнена по пятибалльной системе с учётом весового множителя, отражающего степень важности показателя с точки зрения разработчика.
№
Основные Критерии
Teenee
PAF
POL
Вес
1.
Поддержка структурированной архитектуры для разработки ПО (framework)
3
4
5
3
2.
Соответствие низкоуровневой объектной модели библиотеки атомарным АТД Palm OS, описывающей GUI для Palm
3
5
5
2
3.
Соответствие высокоуровневой объектной модели библиотеки пакетной архитектуре Palm OS API, описывающей GUI для Palm
3
4
5
2
4.
Соответствие низкоуровневой объектной модели библиотеки для обработки данныхмодели предметной области Palm OS, описывающей обработку данных на Palm
2
2
2
2
5.
Соответствие высокоуровневой объектной модели библиотеки для обработки данных пакетной архитектуре Palm API, описывающей обработку данных на Palm
2
3
4
2
6.
Соответствие низкоуровневой объектной модели библиотеки модели предметной области Palm OS, описывающей обмен данными между Palm и внешними источниками данных.
0
4
0
2
7.
Соответствие высокоуровневой объектной модели библиотеки пакетной архитектуре Palm API, описывающей обмен данными между Palm и внешними источниками
0
4
0
2
8.
Наличие абстрактных классов, скрывающих специфику Palm OS
3
4
5
3
9.
Наличие расширений стандартных функций Palm API
3
4
5
2
10.
Поддержка принципа "открытости" архитектуры библиотеки
3
4
5
3
11.
Поддержка средств отладки приложений
3
3
4
2
12.
Простота использования
3
4
5
3
Итого балов:
68
106
110
-
Табл. 1: Сводная таблица оценок
№
Дополнительные характеристики
Teenee
PAF
POL
1.
Год выпуска
Июнь, 1998.
Декабрь,2000
Январь,2001
2.
Выпуск новых версий
Апрель,1999.
Декабрь,2000
Февраль,2001
3.
Текущая версия
1.2.0.
1.0
2.0.2
4.
Объём кода
80K
479K
296K
5.
Количество классов
41
69
43
6.
Способ распространения
Freeware
Freeware
Платно
7.
Наличие дополнительных возможностей (additional accessories)
Нет
Да
Да
8.
Поддержка интеграции со средствами разработки приложений
Нет
Нет
Только CodeWarrior
9.
Наличие документации
Нет
Частично
Полностью
10.
Комментирование исходного текста
Хорошо
Отлично
Плохо
11.
Наличие службы поддержки
E-mail
E-mail
Форум, FAQ, Examples, E-mail
Табл. 2: Сводная таблица дополнительных характеристик
Диаграмма приведенная на Рис.3 показывает условную качественную сравнительную характеристику предметных областей Palm OS API и рассмотренных библиотек.
Не всякая операционная система, и Palm OS в частности, предоставляет в распоряжение программиста средства для своего расширения. Например, чтобы обеспечить отображение на Palm элементов списков, стандартный Palm OS API необходимо расширить специальным АТД, который должен включать методы, использующие механизм виртуальных функций С++. Поэтому предметные области библиотек пересекают предметную область Palm OS. Средства расширения стандартных возможностей Palm OS и наличие АТД, скрывающих специфику Palm OS, повышают практическую ценность этих библиотек для разработчика.
Рис.3
Ни одна из существующих на рынке стандартных С++ библиотек в их текущем состоянии не может претендовать на роль безусловного лидера. АТД рассмотренных библиотек не полны и в основном покрывают слои GUI или Data exchange. С системной точки зрения, наиболее предпочтительной выглядит библиотека POL, как продукт лишённый проектной специфики и поддерживающий удобную объектную модель разработки приложений. Если разработчики библиотеки приложат усилия и расширят поддержку недостающих слоёв, как ATД единой базовой и пакетной моделей, то данная библиотека сможет претендовать на роль стандарта "де-факто" для Palm OS. Данный вывод основан на наличии у библиотеки продуманной и открытой объектной архитектуры, которая не накладывает реальных ограничений на возможность реализации недостающих слоёв ATД и не потребует изменений уже разработанных АТД.
При разработке приложений интенсивно использующих обмен данными через COM порт рекомендуем использовать библиотеку PAF. За основу разработки приложений интенсивно использующих GUI и базы данных лучше брать модель разработки предлагаемую POL.