Термін користувацька розробка (End-User Developement — EUD) або користувацьке програмування (End-User Programming — EUP) позначають набір методик та інструментів, які дозволяють програмувати кінцевим користувачам — людям, які не є професійними розробниками ПЗ. Вони можуть використовувати такі інструменти для створення або модифікації програмних артефактів (описів автоматичних дій) і складних об'єктів даних без знання мов програмування.
Існують різні підходи до проблеми користувацького програмування — ця тема активно досліджується в інформатиці й науці про взаємодію людини та комп'ютера. Серед прикладів можна відзначити системи Емі Брюкман і Елізабет Едардс (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..
Використання знижує необхідність вивчення користувачем абстракцій класичних мов програмування. Замість цього користувач вказує приклади бажаних результатів або операцій, які слід виконати над даними, а система програмування за прикладом сама виводить з цього абстракції, відповідні програмі, що генерує потрібні вихідні дані. В автоматично створену таким способом програму можна вводити нові дані, а користувач, для корекції програми, може виправляти помилки на виході. також є варіантом засобів користувацького програмування.
Одним із напрямків розвитку в цій галузі є використання мобільних пристроїв для підтримки користувацької розробки ПЗ. Специфіка мобільних пристроїв не дозволяє застосовувати ті ж самі підходи, які працювали для настільних застосунків. Настільні середовища користувацької розробки позбавлені переваг, які дозволяють кінцевим користувачам створювати застосунки «на ходу».
Останнім часом також зріс інтерес до використання цієї техніки для розробки застосунків інтернету речей. У цій галузі перспективним підходом вважають програмування тригерних дійГ. Джиані, М. Манка, Ф. Патерно, С. Санторо (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..
Рішення користувацької розробки можуть істотно вплинути на такі сфери, як життєвий цикл програмного забезпечення для комерційних програмних продуктів, домашні розробки через мережу і розгортання корпоративних застосунків.
Платформи для розробки з мінімумом коду Нині існує приблизно 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.
Моделювання витрат і вигод На думку , користувацьке програмування є, по суті, аутсорсингом розробки кінцевому користувачу. Для вивчення інструментів користувацької розробки завжди потрібні деякі зусилля, тому мотивація користувачів залежить від їх упевненості в тому, що це допоможе полегшити роботу, заощадити час або підвищать продуктивність. У цій моделі переваги для користувачів засновані на маркетингу, демонстраціях і «маркетингу із уст в уста». Як тільки технологія починає активно використовуватися, ключовим мотиватором стає реальний досвід і вигоди.
Згадане вище дослідження визначає витрати як суму таких:
технічні витрати: ціна технології і зусилля з її встановлення; вартість навчання: час, необхідний для розуміння технології; витрати на розробку: зусилля з розробки застосунків з використанням цієї технології; вартість тестування та налагодження: час, витрачений на перевірку системи.
Витрати з першого і другого пункту є одноразовими, а витрати з третього і четвертого виникають щоразу під час розробки. Вигоди (реальні або відчутні) в цьому разі такі:
функціональність, забезпечувана технологією; можливість гнучко реагувати на нові вимоги; зручність використання створюваних застосунків; загальна якість створюваних застосунків.
Співпраця під час користувацької розробки Більшість діяльності з користувацької розробки за своєю природою вимагає співпраці або серед самих користувачів-розробників, або між ними і розробниками-фахівцями.
Взаємна розробка — це методика, за якої розробники-фахівці й користувачі спільно намагаються створити програмний продукт. Професійні розробники як правило створюють основу системи і надають інструменти, якими, за необхідності, «власники завдань» можуть користуватися для створення відповідних рішень, які враховують цілі та контексти конкретного завдання. Внаслідок комунікації між розробниками-фахівцями й розробниками-користувачами специфічні модифікації останніх можуть перетворитися на програмні артефакти і стати повноцінним комерційним функціоналом, який глобально впливає на продукт.
Для подолання комунікаційного розриву між розробниками-фахівцями й розробниками-користувачами пропонуються різні підходи, наприклад семінари з формування ПЗ. Ці підходи намагаються забезпечити прозорість (за моделлю соціальної прозорості), щоб кожен учасник процесу був інформованим про зміни, внесені іншими учасниками, і міг нести відповідальність за свої дії в силу цієї обізнаності.