В крупных проектах код модели предметной области содержит много метаинформации, например, об объектно-реляционном отображении (ORM), которую можно также использовать для построения интерфейса. Однако объективные сложности, связанные с реализацией генератора интерфейса на основе метамодели, сформировали мнение о том, что генерация кода пригодна в лучшем случае для прототипирования, но никак не для построения качественного интерфейса. В то же время реализация сложных интерфейсов традиционным способом — на основе отдельных компонентов из стандартной библиотеки или библиотек сторонних разработчиков — остаётся трудоёмкой и технически сложной задачей. Нам удалось обойти ограничения генерации интерфейсов форм и предоставить разработчику такую же гибкость, как и в традиционном подходе, благодаря следующим принципам:
- Вместо генерации кода интерфейса — построение его модели во время выполнения программы. Компоненты и события интерфейса являются отражением его модели.
- Метамодель — лишь отправная точка для построения интерфейса. К окончательному виду разработчик быстро приводит его с помощью предметно-ориентированного языка (DSL).
- Технологическая нейтральность — отсутствие зависимостей от сторонних библиотек и фреймворков, работа с внешними источниками метаданных через подключаемые модули.
Этот подход реализован в библиотеке CUSTIS Rich Forms, которая в настоящее время используется в нескольких промышленных проектах. В докладе будет показано на конкретных примерах, как выбранная архитектура позволяет решать задачу быстрого построения интерфейсов форм, снижая трудозатраты и уменьшая сложность прикладного кода.
Иван Гаммель
Ведущий разработчик, CUSTIS
С начальных классов школы увлекался программированием, самостоятельно освоив сначала Бейсик на ZX Spectrum, а затем Turbo Pascal. Карьеру в IT начал в 1996 году лаборантом в школьном вычислительном центре, где занимался обслуживанием нескольких компьютерных классов и научился программировать на C и Java. В 2002 году закончил Московский физико-технический институт и в дальнейшем занимался разработкой систем распознавания изображений, САПР, data mining и автоматической классификации в частных компаниях России и США на позициях ведущего разработчика, архитектора и тимлида. В настоящее время Иван занимается созданием банковского ПО в компании CUSTIS, где является ведущим разработчиком корпоративной платформы и одним из участников сообщества управления знаниями.