Термины пользовательская разработка (End-User Developement — EUD) или пользовательское программирование (End-User Programming — EUP) обозначают набор методик и инструментов, которые позволяют программировать конечным пользователям — людям, не являющимся профессиональными разработчиками ПО. Люди, не являющиеся профессиональными разработчиками, могут использовать инструменты EUD для создания или модификации программных артефактов (описаний автоматических действий) и сложных объектов данных без знания языков программирования.
Существуют различные подходы к проблеме пользовательского программирования — это тема активно исследуется в информатике и науке о взаимодействии человека и компьютера. Среди примеров можно отметить системы Грэг Литл и Роберт Си (Миллер Little, Greg, and Robert C. Miller.) Трансляция команд с ключевыми словами в исполняемый код (Translating keyword commands into executable code) / Материалы 19-го ежегодного симпозиума ACM по технологиям пользовательских интерфейсов. ACM, 2006.Эми Брюкман и Элизабэт Эдардс (Bruckman, Amy, and Elizabeth Edwards). "Поощрять ли естественные языки? Анализ ошибок в языках программирования основанных на естественном языке (Should we leverage natural-language knowledge? An analysis of user errors in a natural-language-style programming language) " / Материалы конференции по человеческому фактору в вычислительных системах. ACM, 1999. APA, электронные таблицы , скриптовые языки (особенно в офисных пакетах или приложениях для художников), визуальное программирование, программирование триггерных действий и .
Самый популярный инструмент пользовательского программирования — это электронные таблицы в "Энциклопедии взаимодействия человека и компьютера". В силу своей неограничивающей природы они позволяют довольно неискушенным пользователям писать программы, представляющие сложные модели данных, в то же время защищая их от необходимости изучать языки программирования более низкого уровня. Навыки работы с электронными таблицами считаются одними из самых полезных для выпускников ВУЗов из-за широкой распространённости электронных таблиц для решения задач в бизнесеС. Крюк и С. Шитц (Kruck, S. & Sheetz, S.), 2001. Теория точности в электронных таблицах (Spreadsheet accuracy theory) . Журнал по педагогике в информационных системах (Journal of Information Systems Education). По состоянию на 2005 год в США количество пользователей, использующих электронные таблицы оценивалось в 13 млн. чел.К. Скаффиди, М. Шоу и Б. Майерс (Scaffidi, C., Shaw, M. & Myers, B.), 2005. Оценка количества конечных пользователей и пользователей-программистов (Estimating the Numbers of End Users and End User Programmers) . 2005 Симпозиум IEEE по визуальным языкам и ориентированным на пользователя вычислительным системам (IEEE Symposium on Visual Languages and Human-Centric Computing) (VL/HCC’05), стр.207–214.
Использование снижает необходимость изучения пользователем абстракций классических языков программирования. Вместо этого пользователь указывает примеры желаемых результатов или операций, которые должны быть выполнены с данными, а система сама выводит из этого абстракции, соответствующие программе, генерирующей нужные выходные данные. В автоматически созданную таким образом программу могут быть введены новые данные, а пользователь может исправлять ошибки на выходе, для коррекции программы. Платформы для разработки с минимумом кода также являются вариантом пользовательского программирования.
Одним из направлений развития в этой области является использование мобильных устройств для поддержки пользовательской разработки ПО. Специфика мобильных устройств не позволяет применять те же самые подходы, которые работали для настольных приложений. Настольные среды EUD лишены преимуществ, позволяющих конечным пользователям создавать приложения при любой возможности.
В последнее время также возрос интерес к тому, как использовать техники EUD для разработки приложений Интернета вещей. В этой области перспективным подходом считается программирование триггерных действий.Г. Джиани, М. Манка, Ф. Патерно, С. Санторо (Ghiani, G., Manca, M., Paternò, F., Santoro, C.): Персонализация зависящих от контекста программ при помощи триггерных действий (Personalization of Context-dependent Applications through Trigger-Action Rules). ACM Transactions on Computer-Human Interaction, том.24, Выпуск 2, Статья N.14, Апрель 2017.
Решения EUD, могут существенно повлиять на такие сферы, как жизненный цикл программного обеспечения для коммерческих программных продуктов, домашние разработки по сети и развёртывание корпоративных приложений.
Платформы для разработки с минимумом кода В настоящее время существует примерно 40 производителей, предлагающих конечным пользователям решения для сокращения усилий по программированию. Создание программ в них не требует знаний традиционного программирования, однако предназначены для создания достаточно специализированных систем, таких как системы управления контрактами, системы управления взаимоотношений с клиентами, системы отслеживания багов и ошибок. Подобные системы разработки часто называют платформами разработки с минимумом кода. Как правило они представляют собой интерактивный гид, позволяющий пользователю разработать приложение всего за 40—80 часов (1,7—3,3 дня).
Определение Либерман и др. предлагают следующее определение:Lieberman, H., Paternò, F., Klann, M., and Wulf, V. (2006). Пользовательская разработка: новая парадигма. В: Пользовательская разработка ПО, Lieberman, H., Paternò, F., and Wulf, V. (eds.), Springer Нидерланды, 2006, сер. Взаимодействие человека и компьютера, том 9, Глава 1, стр. 1-7,
Пользовательская разработка может быть определена как набор методов, техник и инструментов, позволяющих пользователям ПО, не являющимся профессиональными разработчиками ПО, в какой-то степени создавать, модифицировать или расширять программные артефакты. Ко и др. предлагают следующее определение: Пользовательское программирование — это программирование для достижения результата программы в первую очередь для личного, а не для общественного использования.
Программные артефакты, создаваемые конечными пользователями, могут представлять собой описания автоматизированного поведения или управляющие последовательности, такие как запросы в базу данных или правила грамматикиH. Lieberman, B. A. Nardi, and D. Wright. Grammex: Определение грамматик по примеру (Grammex: Defining grammars by example). Конференция ACM по человеческому фактору в компьютерных системах (Сводка и демонстрации) (CHI ’98), Лос-Анджелес, Калифорния, США, стр. 11–12. ACM Press, апрель 1998. (ACM conference on Human Factors in Computing Systems) которые могут быть созданы с помощью таких парадигм программирования как , , визуальное программирование или создание макрокоманд.Maria Francesca Costabile, Daniela Fogli, Piero Mussio, Antonio Piccinno. Пользовательское программирование: подход к разработке при помощи инструментария формовки ПО (End-user development: the software shaping workshop approach) . In Lieberman, H., Paternò, F., Wulf, V. (Eds) (2004) Пользовательское программирование — Предоставление людям возможности гибко использовать передовые информационные и коммуникационные технологии (End User Development — Empowering People to Flexibly Employ Advanced Information and Communication Technology), © 2004 Kluwer Academic Publishers, Dordrecht, The Netherlands. Они (артефакты) также могут представлять собой набор параметров, указывающих на один из предопределённых способов действия программы.Costabile, M.F., Fogli, D., Letondal, C., Mussio, P., Piccinno, A., Пользователи — эксперты в предметной области и их потребности в разработке ПО (Domain-Expert Users and their Needs of Software Development) ", Конференция UAHCI, Крит, 22–27 июня, 2003, 232-236. Иные артефакты, созданные конечным пользователем могут являться формами пользовательского контента, к примеру аннотации, которые могут быть или не быть программно интерпретируемыми (т. е. могут быть обработаны соответствующими автоматизированными функциями).Gerhard Fischer Пользователская разработка и мета-дизайн: основы для культуры участия (End-User Development and Meta-Design: Foundations for Cultures of Participation) . Лекционные записи по пользовательскому программрованию в информатике, 2009, том 5435/2009, 3-14,
Примеры Среди примеров пользовательских разработок можно выделить следующие:
Анимационные скрипты, используемые художниками-мультипликаторами для описания движения персонажей или изменений окружающей среды в системах компьютерной анимации Конфигурационные файлы, которые размывают границу между программами и данными (к примеру фильтры электронной почты являются наборами условий и действий, которые необходимо предпринять программе) Инструменты для Модификации игр, предназначенные для создания пользовательских персонажей пользователей, окружения и т.д. — многие современные игры предоставляют такие возможности Интерактивные автоматические скрипты, используемые в колл-центрах Инструменты разработки мобильных приложений, такие как App Inventor Модели процессов, используемые в Прототипы и предметно-ориентированные программы, написанные бизнесменами, инженерами и учёными для демонстрации или проверки конкретных теорий Программы роботов Научные модели, используемые в компьютерном моделировании Скрипты и макрокоманды, используемые для расширения возможностей офисных пакетов и графических приложений. Симуляции, созданные приложениями для описания программ. данных с использованием заданой пользователем пакетной обработки либо же , такой как в текстовых редакторах или multi-edit. Модели данных в электронных таблицах, которые используются для финансовых расчётов, анализа рисков, интерактивного машинного обучения и проектирования электронных схем Визуальное программирование в виде визуальных языков, таких как , LabVIEW, Скретч или Mindstorms (серия LEGO). Веб-страницы — HTML и скрипты Вики — результат совместных разработок конечными пользователями. Веб-мэшапы (Веб-смеси) — как форма визуальных языков программирования. 3D-модели, созданные при помощи предназначенного конечным пользователям ПО, такого как Sketchup
Моделирование затрат и выгод По мнению , EUD является по сути аутсорсингом разработки конечному пользователю. Для изучения инструментов EUD всегда необходимы некоторые усилия, поэтому мотивация пользователей зависит от их уверенности в том, что они помогут облегчить работу, сэкономить время или повысят производительность. В этой модели преимущества для пользователей основаны на маркетинге, демонстрациях и сарафанном радио. Как только технология начинает активно использоваться, ключевым мотиватором становится реальный опыт и выгоды.
Вышеприведённое исследование определяет затраты как сумму нижеследующих:
Технические затраты: цена технологии и усилия по её установке Стоимость обучения: время, необходимое для понимания технологии Затраты на разработку: усилия по разработке приложений с использованием данной технологии Стоимость тестирования и отладки: время, затраченное на проверку системы
Затраты из первого и второго пункта являются одноразовыми, а затраты из третьего и четвёртого возникают каждый раз при разработке. Выгоды (реальные либо ощущаемые) в данном случае следующие:
Функционал, обеспечиваемый технологией Возможность гибко реагировать на новые требования Удобство использования создаваемых приложений Общее качество создаваемых приложений
Сотрудничество при пользовательской разработке Большинство деятельности по пользовательской разработке по своей природе требует сотрудничества либо среди самих пользователей-разработчиков, либо между пользовательскими и профессиональными разработчиками.