Термін користувацька розробка (End-User Developement — EUD) або користувацьке програмування (End-User Programming — EUP) позначають набір методик та інструментів, які дозволяють програмуватикінцевим користувачам — людям, які не є професійними розробниками ПЗ. Вони можуть використовувати такі інструменти для створення або модифікації програмних артефактів (описів автоматичних дій) і складних об'єктів даних без знання мов програмування.
Найпопулярніший інструмент для користувацького програмування — це електронні таблиці[2][3]. В силу своєї необмежувальної природи вони дозволяють недосвідченим користувачам писати програми, що реалізують складні моделі даних, разом з тим, захищаючи їх від потреби вивчати мови програмування нижчого рівня[4]. Навички роботи з електронними таблицями відносять до найкорисніших для випускників зво через широке використання електронних таблиць для розв'язування задач у бізнесі[5]. Станом на 2005 рік у США кількість користувачів, що використовують електронні таблиці оцінювалася в 13 млн осіб[6].
Використання програмування за прикладом[en] знижує необхідність вивчення користувачем абстракцій класичних мов програмування. Замість цього користувач вказує приклади бажаних результатів або операцій, які слід виконати над даними, а система програмування за прикладом сама виводить з цього абстракції, відповідні програмі, що генерує потрібні вихідні дані. В автоматично створену таким способом програму можна вводити нові дані, а користувач, для корекції програми, може виправляти помилки на виході. Платформи розробки з мінімумом коду[en] також є варіантом засобів користувацького програмування.
Одним із напрямків розвитку в цій галузі є використання мобільних пристроїв для підтримки користувацької розробки ПЗ. Специфіка мобільних пристроїв не дозволяє застосовувати ті ж самі підходи, які працювали для настільних застосунків. Настільні середовища користувацької розробки позбавлені переваг, які дозволяють кінцевим користувачам створювати застосунки «на ходу»[7].
Останнім часом також зріс інтерес до використання цієї техніки для розробки застосунків інтернету речей. У цій галузі перспективним підходом вважають програмування тригерних дій[8].
Нині існує приблизно 40 виробників, які пропонують кінцевим користувачам рішення для скорочення зусиль із програмування. Створення програм у них не вимагає знань традиційного програмування, проте вони призначені для створення досить спеціалізованих систем, таких як системи керування контрактами, системи керування відносинами з клієнтами, системи відстеження багів і помилок. Подібні системи розробки часто називають платформами для розробки з мінімумом коду[en]. Як правило така платформа являє собою інтерактивний гід, що дозволяє користувачу розробити застосунок всього за 40—80 годин (1,7—3,3 доби).
Користувацьку розробку можна визначити як набір методів, технік та інструментів, що дозволяють користувачам ПЗ, які не є професійними розробниками ПЗ, якоюсь мірою створювати, модифікувати або розширювати програмні артефакти.
Оригінальний текст (англ.)
EUD can be defined as a set of methods, techniques, and tools that allow users
of software systems, who are acting as non-professional software developers, at some
point to create, modify, or extend a software artifact.
Користувацьке програмування — це програмування для досягнення результату програми перш за все для особистого, а не для громадського користування.
Програмні артефакти, створені кінцевими користувачами, можуть являти собою описи автоматизованої поведінки або керувальні послідовності, такі як запити до бази даних або правила граматики[11], які можуть створюватися за допомогою таких парадигм програмування як програмування демонстрацією[en], програмування прикладами[en], візуальне програмування або створення макрокоманд[12]. Вони (артефакти) також можуть являти собою набір параметрів, що вказують на один із зумовлених способів дії програми[13]. Інші артефакти, створені кінцевим користувачем, є формами користувацького контенту, наприклад анотації, які можуть бути або не бути програмно інтерпретованими (т. е. можуть бути оброблені відповідними автоматизованими функціями).[14]
Приклади
Серед прикладів призначених для користувацьких розробок можна виділити такі:
Анімаційні скрипти, які використовують художники-мультиплікатори для опису руху персонажів або змін навколишнього середовища в системах комп'ютерної анімації.
3D-моделі, створені за допомогою призначеного для кінцевих користувачів ПЗ, такого як Sketchup.
Моделювання витрат і вигод
На думку Саткліффа[en],[20] користувацьке програмування є, по суті, аутсорсингом розробки кінцевому користувачу. Для вивчення інструментів користувацької розробки завжди потрібні деякі зусилля, тому мотивація користувачів залежить від їх упевненості в тому, що це допоможе полегшити роботу, заощадити час або підвищать продуктивність. У цій моделі переваги для користувачів засновані на маркетингу, демонстраціях і «маркетингу із уст в уста». Як тільки технологія починає активно використовуватися, ключовим мотиватором стає реальний досвід і вигоди.
Згадане вище дослідження визначає витрати як суму таких:
технічні витрати: ціна технології і зусилля з її встановлення;
вартість навчання: час, необхідний для розуміння технології;
витрати на розробку: зусилля з розробки застосунків з використанням цієї технології;
вартість тестування та налагодження: час, витрачений на перевірку системи.
Витрати з першого і другого пункту є одноразовими, а витрати з третього і четвертого виникають щоразу під час розробки. Вигоди (реальні або відчутні) в цьому разі такі:
функціональність, забезпечувана технологією;
можливість гнучко реагувати на нові вимоги;
зручність використання створюваних застосунків;
загальна якість створюваних застосунків.
Співпраця під час користувацької розробки
Більшість діяльності з користувацької розробки за своєю природою вимагає співпраці або серед самих користувачів-розробників, або між ними і розробниками-фахівцями.
Взаємна розробка[21] — це методика, за якої розробники-фахівці й користувачі спільно намагаються створити програмний продукт. Професійні розробники як правило створюють основу системи і надають інструменти, якими, за необхідності, «власники завдань»[22] можуть користуватися для створення відповідних рішень, які враховують цілі та контексти конкретного завдання[23]. Внаслідок комунікації між розробниками-фахівцями й розробниками-користувачами специфічні модифікації останніх можуть перетворитися на програмні артефакти і стати повноцінним комерційним функціоналом, який глобально впливає на продукт.
Для подолання комунікаційного розриву між розробниками-фахівцями й розробниками-користувачами пропонуються різні підходи, наприклад семінари з формування ПЗ[24]. Ці підходи намагаються забезпечити прозорість (за моделлю соціальної прозорості[25]), щоб кожен учасник процесу був інформованим про зміни, внесені іншими учасниками, і міг нести відповідальність за свої дії в силу цієї обізнаності.
У той час, як професійні розробники використовують для спільної роботи спеціалізовані платформи (такі як GitHub), розробники-користувачі воліють використовувати вікі-системи, де діляться між собою створеними програмними артефактами. Користувацьку розробку також часто застосовують для створення скриптів автоматизації або інтерактивних посібників для обміну практичними знаннями. Прикладами є програми CoScripter[26] і HILC[27]. У таких застосунках користувач може створювати скрипти за допомогою напівприродної мови або ж програмуючи демонстрацією. При цьому користувачі можуть поділитися створеним скриптом, завантаживши його в спеціальне онлайн-сховище, організоване в стилі вікі. На цій вікісторінці користувачі можуть не тільки шукати доступні скрипти, але й покращувати їх, додаючи параметри, щоб пристосувати їх до інших умов або до роботи з іншими об'єктами.
Крім того, існують онлайн і офлайн-спільноти розробників-користувачів, де вони можуть на взаємовигідній основі спільно вирішувати завдання розробки. У таких спільнотах місцеві експерти поширюють свої знання і дають поради. Члени спільноти часто соціально підтримують один одного, що допомагає суспільній розробці програмного забезпечення[28].
Критика
Дослідники стурбовані тим, що кінцеві користувачі часто не розуміють, як тестувати або захищати свої програми. Воррен Гаррісон, професор інформатики Портлендського університету, писав[29]:
Не вкладається в голові, що ми намагаємося очікувати якоїсь безпеки… від переважної більшості застосунків, написаних із мінімальними або ніякими знаннями про загальноприйняті хороші практики (такі як чітка постановка задачі перед написанням коду, систематичне тестування тощо)… Скільки існує книг "X для чайників "(де «X» — ваша улюблена мова програмування)? Спочатку мене бавила ця тенденція, але останнім часом мені стає моторошно думати про те, де ці дилетанти можуть застосовувати свої новонабуті знання.
З цієї точки зору вважається, що всі кінцеві користувачі однаково погано розбираються в питаннях розробки ПЗ, але Пліскін і Шовал стверджують, що це не так, що просунуті користувачі здатні до якісної розробки[30]. Однак, на відміну від фахівців, у програмістів-користувачів рідко є час або мотивація до систематичного і дисциплінованого освоєння майстерності розробки[31], що дуже ускладнює завдання забезпечення якості програмних продуктів користувачів.
Реакцією на це стали систематичні дослідження користувацької розробки ПЗ. Вони стосуються питань, що виходять за рамки власне розробки, зокрема розглядається мотивація користувачів-розробників до того, щоб їхні продукти були безпечними, перевірними або повторно використовуваними[32].
Альтернативне рішення полягає в тому, щоб кінцеві користувачі або їхні консультанти використовували декларативні інструменти, які забезпечують безпеку і суторгі бізнес-правила на шкоду продуктивності і масштабованості; як правило продукти розробників-користувацької, мають меншу ефективність, ніж створені за допомогою фахових середовищ програмування.
↑Abraham, R.; Burnett, M; Erwig, M (2009). Программирование электронных таблиц (Spreadsheet programming). Энциклопедия Wiley по информатике и компьютерной инженерии (Wiley Encyclopedia of Computer Science and Engineering). с. 1—10.
↑Lieberman, H., Paternò, F., Klann, M., and Wulf, V. (2006). Користувацька розробка: нова парадигма. П: Користувацька розробка ПЗ, Lieberman, H., Paternò, F., and Wulf, V. (eds.), Springer Нідерланди, 2006, сер. Взаємодія людини та комп'ютера, том 9, Глава 1, стр. 1-7, doi:10.1007/1-4020-5386-X_1
↑Ko, Andrew J.; Abraham, Robin; Beckwith, Laura; Blackwell, Alan; Burnett, Margaret; Erwig, Martin; Scaffidi, Chris; Lawrance, Joseph; Lieberman, Henry (1 квітня 2011). Современный уровень развития в пользовательском программироваии ПО (The State of the Art in End-user Software Engineering). ACM Comput. Surv. 43 (3): 21:1–21:44. CiteSeerX10.1.1.159.8597. doi:10.1145/1922649.1922658. ISSN0360-0300.
↑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)
↑Scaffidi, Christopher; Brandt, Joel; Burnett, Margaret; Dove, Andrew; Myers, Brad (2012). SIG: користувацьке програмування. Chi Ea '12. с. 1193—1996. doi:10.1145/2212776.2212421. ISBN9781450310161.
↑Leonardi, Nicola; Manca, Marco; Paternò, Fabio; Santoro, Carmen (2019). Програмування дій за тригером для персоналізації поведінки гуманоїдних роботів. doi:10.1145/3290605.3300675. ISBN978-145035970-2.
↑Sarkar, Advait; Blackwell, Alan; Jamnik, Mateja; Spott, Martin (липень 2014). Навчай і пробуй: Проста інтерактивна методика для довільного моделювання даних кінцевими користувачами. с. 53—56. doi:10.1109/VLHCC.2014.6883022. ISBN978-1-4799-4035-6.
↑Алистэр Сатклифф[en] (July 2005). Оценка потерь и выгод при разработке пользователем. ACM SIGSOFT заметки о проектировании ПО. 30 (4): 1—4. doi:10.1145/1082983.1083241. {{cite journal}}: Перевірте значення |last= (довідка)
↑Andersen, Renate; Mørch, Anders I. (2 березня 2009). Взаємна розробка: тематичне дослідження розробки ПЗ, ініційованої клієнтом. Заметки из лекций по информатике (англ.). Т. 5435. с. 31—49. doi:10.1007/978-3-642-00427-8_3. ISBN978-3-642-00425-4.
↑Fischer, Gerhard (1 січня 1994). Передача контроля владельцам задач в тематически ориентированных средах разработки. Требования к ориентированным на пользователей средам разработки(англ.). Springer, Берлин, Heidelberg. с. 297—306. doi:10.1007/978-3-662-03035-6_23. ISBN978-3-642-08189-7.
↑Erickson, Thomas; Kellogg, Wendy A. (1 березня 2000). Социальная прозрачность: Подход к разработке систем, поддерживающий социальные процессы. ACM Trans. Comput.-Hum. Interact. 7 (1): 59—83. doi:10.1145/344949.345004. ISSN1073-0516.
↑Intharah, Thanapong; Turmukhambetov, Daniyar; Brostow, Gabriel J. (1 січня 2017). Помогите, не могу разобраться: Автоматизация задач в GUI при помощи демонстраций и дополнительных вопросов. IUI '17. Нью-Йорк, NY, США: ACM. с. 233—243. doi:10.1145/3025171.3025176. ISBN9781450343480.
↑Fischer, G.; Giaccardi, E.; Ye, Y.; Sutcliffe, A. G.; Mehandjiev, N. (1 вересня 2004). Мета-дизайн: Манифест пользовательской разработки. Commun. ACM. 47 (9): 33—37. doi:10.1145/1015864.1015884. ISSN0001-0782.
↑Pliskin, Nava; Shoval, Peretz (1987). Пользовательское прототипирование: участие продвинутых пользователей в развитии систем. База данных ACM SIGMIS. 18 (4): 7—17. doi:10.1145/1017816.1017817.
↑Brandt, Joel; Guo, Philip J.; Lewenstein, Joel; Klemmer, Scott R. (1 січня 2008). Оппортунистическое программирование: Как на практике осуществляется быстрое прототипирование идей. WEUSE '08. Нью-Йорк, NY, США: ACM. с. 1—5. doi:10.1145/1370847.1370848. ISBN9781605580340.
Б. Гуо, Д. Жанг, М. Імай (B. Guo, D. Zhang, M. Imai). Орієнтоване на користувача управлінь для повсюдних обчислень: підхід заснований на мета-проектуванні (Enabling User-Oriented Management for Ubiquitous Computing: The Meta-Design Approach), Computer Networks, Elsevier, том. 54, нр. 16, 2010.
Маргарет М. Бюрнетт і Крістофер Скаффіді (Burnett, Margaret M. and Scaffidi, Christopher, 2011): Користувальницька розробка [Архівовано 3 липня 2015 у Wayback Machine.]. В: Soegaard, Mads and Dam, Rikke Friis (eds.). «Енциклопедія взаємодії людини і комп'ютера».
Патрік Кіркегаард (Patrick Kierkegaard, 2011) Kierkegaard, Patrick (2011). Улучшение пользовательской разработки: правовая защита и соблюдение нормативных требований (Beefing Up End User Development: Legal Protection and Regulatory Compliance). Лекционные заметки по информатике. Т. 6654/2011. с. 203—217. doi:10.1007/978-3-642-21530-8_16. ISBN978-3-642-21529-2.