| 
                                    Рубрика: 
                                    
									Разработка / 
									Инструменты
                                     | 
									
									
	Facebook 
	
	Мой мир 
	Вконтакте 
	Одноклассники 
	Google+ 
 
									 | 
                                 
                             
							
							
							  АЛЕКСЕЙ КОСТАРЕВ, ООО «Новая Платформа», г. Пермь 
  ИГОРЬ БРАТЧИКОВ, ООО «Новая Платформа», г. Пермь 
Платформа Flexberry с открытым кодом  для профессиональной разработки ПО
 В статье рассматривается разрабатываемая на принципах свободного программного обеспечения платформа Flexberry – платформа для проектирования, разработки и поддержки сложных информационных систем 
Платформа включает в себя UML-редактор и визуальный конструктор форм приложений, фреймворк для создания мобильных и веб-приложений, подсистему для хранения, создания, редактирования, анализа и отображения географической информации, сервисную шину и другие компоненты, позволяющие ИТ-подразделениям предприятий и компаниям-разработчикам оптимизировать процесс проектирования, разработки и поддержки информационных систем. 
Введение
Процесс проектирования, разработки и поддержки информационных систем напрямую влияет на качество и стоимость конечного продукта – просчеты в организации процесса ведут к проблемам в продукте. Процесс обычно включает в себя как организационно-административные, так и технические аспекты, соответственно, для наилучшего результата требуется наличие качественной методики работы и технических средств, поддерживающих данную методику. 
Программная платформа Flexberry вобрала в себя богатый опыт создания информационных систем на протяжении многих лет развития. Платформа предоставляет методику работы проектной команды и технические инструменты для ее реализации. 
Основная часть
Типы информационных систем
Информационные системы классифицируются по различным параметрам [1]. Обобщение опыта компаний-партнеров позволило выделить виды информационных систем, которые чаще других создаются компаниями на заказ, именно этивиды информационных систем поддерживаются платформой Flexberry: 
- комплексные учетные системы;
 
- автоматизация бизнес-процессов и документооборота;
 
- веб-приложения;
 
- мобильные приложения;
 
- интеграционные информационные системы;
 
- аналитические системы;
 
- геоинформационные системы.
 
 
Дополнительно следует отметить, что платформа базируется на свободном ПО и открытых технологиях. Компоненты платформы также разрабатываются в открытых репозиториях под свободной лицензией. Это позволяет создавать открытые решения с использованием платформы. 
Задачи платформы
На основе анализа выполненных проектов был составлен список задач, направленных на оптимизацию процесса проектирования, разработки и сопровождения информационных систем: 
- быстрое создание прототипов программного решения;
 
- повышение эффективности взаимодействия с заказчиками за счет применения визуальных моделей систем и процессов;
 
- снижение общей трудоемкости процесса разработки и сопровождения информационных систем;
 
- возможность применения готовых программных компонент и готовой архитектуры;
 
- быстрое разворачивание в гетерогенных сетях, включая облачные платформы.
 
 
Основа методики проектирования и разработки
Одним из наиболее значимых аспектов в процессе проектирования информационных систем является определение центрального звена, которое будет являться источником правильной информации о системе. Именно это центральное звено является первоначальной целью проектирования, а все остальные аспекты уже согласуются с ним. В качестве этого центрального звена может выступать: 
- исходный код программы (подход Code First [2]);
 
- структура данных приложения (подход Database First [3]);
 
- пользовательский интерфейс (подход UI-First [4]);
 
- формализованная каким-либо образом модель приложения (подход Model First [5]).
 
 
Подход Code First наиболее понятен программистам-разработчикам, поскольку код становится основным источником информации о разрабатываемой информационной системе, что в свою очередь повышает значимость людей, владеющих этим кодом. 
К минусам этого подхода можно отнести сложность восприятия информации другими участниками проектной команды, а также заказчиком и экспертами в предметной области. В этом случае возникает некоторое противоречие между бизнес-аналитиками и программистами, поскольку они находятся в неравных условиях по отношению к источнику информации о системе. 
Подход Database First позволяет наиболее оптимальным образом приготовить структуру данных под бизнес-процессы. Также в этом случае бизнес-аналитикам, способным понимать SQL или пользоваться инструментами работы с СУБД, становится доступной информация о проектируемой информационной системе. 
К минусам можно отнести опять же сложности в общении с заказчиками и экспертами в предметной области, поскольку представить, как та или иная таблица в базе данных будет использована, на формах сложно. 
Подход UI First является самым наглядным, поскольку основным источником информации будут пользовательские интерфейсы, в большинстве своем ориентированы на удобное визуальное восприятие информации конечными пользователями. При таком подходе довольно удобно выстроить общение с заказчиками и экспертами в предметной области. 
К минусам можно отнести сложности в формализации поведенческой составляющей пользовательских интерфейсов, возможный недостаток информации о структуре данных информационной системы и скрытой от глаз пользователя бизнес-логики. 
| В основе технологии создания систем на платформе Flexberry лежат подход Model First и архитектура, управляемая моделью | 
 
 
Подход Model First позволяет абстрагироваться от конкретных элементов архитектуры информационной системы (код, база данных, пользовательский интерфейс) и оперировать некоторой абстракцией, предоставляющей необходимый уровень детализации информации по элементам архитектуры. Основное достоинство заключается в том, что модель понятна всем участникам проектной команды, является некоторым универсальным языком общения. 
К минусам можно отнести необходимость дополнительных работ по созданию этой модели, но при наличии качественного инструментария формализованная машиночитаемая модель позволяет автоматизировать реализацию отдельных элементов архитектуры приложения (код, база данных, пользовательский интерфейс). 
В основе технологии создания систем на платформе Flexberry лежат подход Model First и архитектура, управляемая моделью (Model Driven Architecture) [6]. В рамках этой архитектуры сначала с помощью редактора в формате UML или визуального конструктора форм создается модель предметной области проектируемого приложения. По модели создается прототип работающего приложения методом кодогенерации. Данный прототип дорабатывается программистами. Затем эта модель уточняется в ходе развития и поддержки проекта, эти изменения прозрачным образом автоматически переносятся в реализованное приложение. 
Процесс разработки с использованием Flexberry включает в себя следующие этапы (см. рис. 1): 
- Анализ и проектирование с построением различных UML-моделей.
 
- Генерация на основе созданных моделей базы данных и кода.
 
- Подключение готовых функциональных подсистем.
 
- Ручная доработка кода.
 
- Демонстрация Заказчику прототипа приложения.
 
- Детализация требований, постановок.
 
- Модификация UML-моделей, перегенерация кода.
 
- Выпуск версии продукта, переход к поддержке и сопровождению.
 
 
  
Рисунок 1. Упрощенная схема процесса проектирования и программирования 
Архитектура платформы
Архитектура системы включает в себя (см. рис. 2): 
- инструментарий по проектированию и программированию системы (этап проектирования – Design-Time);
 
- набор компонентов для создания информационной системы (этап исполнения программы – Run-Time).
 
 
  
Рисунок 2. Основные архитектурные компоненты платформы 
Генераторы кода (см. рис. 3) позволяют на основе модели приложения получать исходный код приложения. Сгенерированное приложение является работоспособным приложением и может быть запущено без необходимых доработок [7]. 
  
Рисунок 3. Архитектура инструментария проектирования Flexberry Designer 
Платформа включает в себя следующие программные компоненты: 
- Flexberry Designer – CASE-инструмент, реализующий стандартную нотацию UML и визуальный (WYSIWYG) конструктор форм приложения;
 
- Flexberry Ember – фреймворк для создания веб- и гибридных мобильных приложений;
 
- Flexberry GIS – функциональная подсистема хранения, создания, редактирования, анализа и отображения географической информации;
 
- Flexberry Service Bus – сервисная шина – средство интеграции систем посредством обмена сообщениями (docker-образ);
 
- Flexberry Analytics – функциональная подсистема отчётности и бизнес-аналитики (docker-образ);
 
- Flexberry BPM – технология для быстрой автоматизации рабочих процессов в компании (набор docker-образов)
 
- и другие компоненты.
 
 
Разработка и координация распределенной группы разработчиков платформы производится в git-репозитории https://github.com/Flexberry. Платформа открыта для подключения новых участников к процессу ее разработки. 
Поддержка процесса разворачивания и сопровождения
Разработанный продукт разворачивается в виде стека docker-сервисов, включающего в себя следующие сервисы: 
- Ember-приложение с Odata backend;
 
- сервис базы данных Postgres.
 
 
EmberJS обеспечивает возможность быстро и качественно создавать универсальный мобильный и веб-интерфейс. 
REST-интерфейс OData позволяет построить микросервисную архитектуру вокруг единой точки предоставления данных. 
База данных Postgres является «стандартом de-facto» при создании систем на основе открытого программного обеспечения. 
Docker-технология позволяет нам интегрировать данные сервисы в конечное кластерное решение нашей платформы [8, 9]. 
При необходимости в стек, функционирующий в составе кластера, могут быть включены дополнительные функциональные подсистемы платформы Flexberry в виде docker-сервисов: 
- Flexberry GIS,
 
- Flexberry Service Bus,
 
- Flexberry Analytics,
 
- Flexberry BPM,
 
- и другие.
 
 
Заключение
Оптимизация процесса проектирования, разработки и сопровождения информационных систем реализуется при помощи программной платформы Flexberry за счет следующих возможностей: 
- подхода Model First и архитектуры управляемой моделью;
 
- инструментария визуальной разработки модели приложения, включающего метаданные для хранилища, бизнес-логики и пользовательского интерфейса приложения;
 
- инструментария быстрого создания прототипов необходимого программного решения за счет кодогенерации;
 
- реализованных готовых программных компонент и готовой архитектуры;
 
- поддержка Docker для быстрого разворачивания информационных систем.
 
 
- Информационная система: [Электронный ресурс] // Википедия. URL: https://ru.wikipedia.org/wiki/Информационная_система (дата обращения: 01.09.2018).
 
- Code First в новой базе данных: [Электронный ресурс] URL: https://docs.microsoft.com/ru-ru/ef/ef6/modeling/code-first/workflows/new-database (дата обращения: 01.09.2018).
 
- Database-First Approach: [Электронный ресурс] URL: https://www.devart.com/entitydeveloper/database-first.html (дата обращения: 01.09.2018).
 
- UI-First Software Development: [Электронный ресурс] URL: https://blog.codinghorror.com/ui-first-software-development/ (дата обращения: 01.09.2018).
 
- Bennedsen, Jens & Caspersen, Michael. (2018). A Model-First Approach to Teaching Object-Orientation.
 
- Архитектура, управляемая моделью: [Электронный ресурс] // Википедия. URL: https://ru.wikipedia.org/wiki/Архитектура,_управляемая_моделью (дата обращения: 01.09.2018).
 
- Шмидт И.А., Архитектура платформы для разработки бизнес-приложений.// «Современные проблемы науки и образования», № 6, 2014 г. – С. 348.
 
- Docker as Platform for Assignments Evaluation, 25th DAAAM International Symposium on Intelligent Manufacturing and Automation, DAAAM 2014
 
- Docker: [Электронный ресурс] URL: https://www.docker.com/ (дата обращения: 01.09.2018).
 
- Технологическая программная платформа Flexberry – http://flexberry.ru, https://github.com/Flexberry.
 
 
Ключевые слова: проектирование, процесс разработки, программная платформа, Model Driven Architecture, кодогенерация, UML-инструментарий.  
	Facebook 
	
	Мой мир 
	Вконтакте 
	Одноклассники 
	Google+ 
 
                             |