Користувацьке програмування

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Термін користувацька розробка (End-User Developement — EUD) або користувацьке програмування (End-User Programming — EUP) позначають набір методик та інструментів, які дозволяють програмувати кінцевим користувачам — людям, які не є професійними розробниками ПЗ. Вони можуть використовувати такі інструменти для створення або модифікації програмних артефактів (описів автоматичних дій) і складних об'єктів даних без знання мов програмування.

Існують різні підходи до проблеми користувацького програмування — ця тема активно досліджується в інформатиці й науці про взаємодію людини та комп'ютера. Серед прикладів можна відзначити системи програмування природною мовою[en][1], електронні таблиці[2], скриптові мови (особливо в офісних пакунках або застосунках для художників), візуальне програмування, програмування тригерних дій і программирование по примеру[en].

Найпопулярніший інструмент для користувацького програмування — це електронні таблиці[2][3]. В силу своєї необмежувальної природи вони дозволяють недосвідченим користувачам писати програми, що реалізують складні моделі даних, разом з тим, захищаючи їх від потреби вивчати мови програмування нижчого рівня[4]. Навички роботи з електронними таблицями відносять до найкорисніших для випускників зво через широке використання електронних таблиць для розв'язування задач у бізнесі[5]. Станом на 2005 рік у США кількість користувачів, що використовують електронні таблиці оцінювалася в 13 млн осіб[6].

Використання програмування за прикладом[en] знижує необхідність вивчення користувачем абстракцій класичних мов програмування. Замість цього користувач вказує приклади бажаних результатів або операцій, які слід виконати над даними, а система програмування за прикладом сама виводить з цього абстракції, відповідні програмі, що генерує потрібні вихідні дані. В автоматично створену таким способом програму можна вводити нові дані, а користувач, для корекції програми, може виправляти помилки на виході. Платформи розробки з мінімумом коду[en] також є варіантом засобів користувацького програмування.

Одним із напрямків розвитку в цій галузі є використання мобільних пристроїв для підтримки користувацької розробки ПЗ. Специфіка мобільних пристроїв не дозволяє застосовувати ті ж самі підходи, які працювали для настільних застосунків. Настільні середовища користувацької розробки позбавлені переваг, які дозволяють кінцевим користувачам створювати застосунки «на ходу»[7].

Останнім часом також зріс інтерес до використання цієї техніки для розробки застосунків інтернету речей. У цій галузі перспективним підходом вважають програмування тригерних дій[8].

Рішення користувацької розробки можуть істотно вплинути на такі сфери, як життєвий цикл програмного забезпечення для комерційних програмних продуктів, домашні розробки через мережу і розгортання корпоративних застосунків.

Платформи для розробки з мінімумом коду[ред. | ред. код]

Нині існує приблизно 40 виробників, які пропонують кінцевим користувачам рішення для скорочення зусиль із програмування. Створення програм у них не вимагає знань традиційного програмування, проте вони призначені для створення досить спеціалізованих систем, таких як системи керування контрактами, системи керування відносинами з клієнтами, системи відстеження багів і помилок. Подібні системи розробки часто називають платформами для розробки з мінімумом коду[en]. Як правило така платформа являє собою інтерактивний гід, що дозволяє користувачу розробити застосунок всього за 40—80 годин (1,7—3,3 доби).

Визначення[ред. | ред. код]

Ліберман та інші пропонують таке визначення:[9]

Користувацьку розробку можна визначити як набір методів, технік та інструментів, що дозволяють користувачам ПЗ, які не є професійними розробниками ПЗ, якоюсь мірою створювати, модифікувати або розширювати програмні артефакти.

Оригінальний текст (англ.)
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.

Ко та інші пропонують таке визначення:[10]

Користувацьке програмування — це програмування для досягнення результату програми перш за все для особистого, а не для громадського користування.

Програмні артефакти, створені кінцевими користувачами, можуть являти собою описи автоматизованої поведінки або керувальні послідовності, такі як запити до бази даних або правила граматики[11], які можуть створюватися за допомогою таких парадигм програмування як програмування демонстрацією[en], програмування прикладами[en], візуальне програмування або створення макрокоманд[12]. Вони (артефакти) також можуть являти собою набір параметрів, що вказують на один із зумовлених способів дії програми[13]. Інші артефакти, створені кінцевим користувачем, є формами користувацького контенту, наприклад анотації, які можуть бути або не бути програмно інтерпретованими (т. е. можуть бути оброблені відповідними автоматизованими функціями).[14]

Приклади[ред. | ред. код]

Серед прикладів призначених для користувацьких розробок можна виділити такі:

Моделювання витрат і вигод[ред. | ред. код]

На думку Саткліффа[en],[20] користувацьке програмування є, по суті, аутсорсингом розробки кінцевому користувачу. Для вивчення інструментів користувацької розробки завжди потрібні деякі зусилля, тому мотивація користувачів залежить від їх упевненості в тому, що це допоможе полегшити роботу, заощадити час або підвищать продуктивність. У цій моделі переваги для користувачів засновані на маркетингу, демонстраціях і «маркетингу із уст в уста». Як тільки технологія починає активно використовуватися, ключовим мотиватором стає реальний досвід і вигоди.

Згадане вище дослідження визначає витрати як суму таких:

  • технічні витрати: ціна технології і зусилля з її встановлення;
  • вартість навчання: час, необхідний для розуміння технології;
  • витрати на розробку: зусилля з розробки застосунків з використанням цієї технології;
  • вартість тестування та налагодження: час, витрачений на перевірку системи.

Витрати з першого і другого пункту є одноразовими, а витрати з третього і четвертого виникають щоразу під час розробки. Вигоди (реальні або відчутні) в цьому разі такі:

  • функціональність, забезпечувана технологією;
  • можливість гнучко реагувати на нові вимоги;
  • зручність використання створюваних застосунків;
  • загальна якість створюваних застосунків.

Співпраця під час користувацької розробки[ред. | ред. код]

Більшість діяльності з користувацької розробки за своєю природою вимагає співпраці або серед самих користувачів-розробників, або між ними і розробниками-фахівцями.

Взаємна розробка[21] — це методика, за якої розробники-фахівці й користувачі спільно намагаються створити програмний продукт. Професійні розробники як правило створюють основу системи і надають інструменти, якими, за необхідності, «власники завдань»[22] можуть користуватися для створення відповідних рішень, які враховують цілі та контексти конкретного завдання[23]. Внаслідок комунікації між розробниками-фахівцями й розробниками-користувачами специфічні модифікації останніх можуть перетворитися на програмні артефакти і стати повноцінним комерційним функціоналом, який глобально впливає на продукт.

Для подолання комунікаційного розриву між розробниками-фахівцями й розробниками-користувачами пропонуються різні підходи, наприклад семінари з формування ПЗ[24]. Ці підходи намагаються забезпечити прозорість (за моделлю соціальної прозорості[25]), щоб кожен учасник процесу був інформованим про зміни, внесені іншими учасниками, і міг нести відповідальність за свої дії в силу цієї обізнаності.

У той час, як професійні розробники використовують для спільної роботи спеціалізовані платформи (такі як GitHub), розробники-користувачі воліють використовувати вікі-системи, де діляться між собою створеними програмними артефактами. Користувацьку розробку також часто застосовують для створення скриптів автоматизації або інтерактивних посібників для обміну практичними знаннями. Прикладами є програми CoScripter[26] і HILC[27]. У таких застосунках користувач може створювати скрипти за допомогою напівприродної мови або ж програмуючи демонстрацією. При цьому користувачі можуть поділитися створеним скриптом, завантаживши його в спеціальне онлайн-сховище, організоване в стилі вікі. На цій вікісторінці користувачі можуть не тільки шукати доступні скрипти, але й покращувати їх, додаючи параметри, щоб пристосувати їх до інших умов або до роботи з іншими об'єктами.

Крім того, існують онлайн і офлайн-спільноти розробників-користувачів, де вони можуть на взаємовигідній основі спільно вирішувати завдання розробки. У таких спільнотах місцеві експерти поширюють свої знання і дають поради. Члени спільноти часто соціально підтримують один одного, що допомагає суспільній розробці програмного забезпечення[28].

Критика[ред. | ред. код]

Дослідники стурбовані тим, що кінцеві користувачі часто не розуміють, як тестувати або захищати свої програми. Воррен Гаррісон, професор інформатики Портлендського університету, писав[29]:

Не вкладається в голові, що ми намагаємося очікувати якоїсь безпеки… від переважної більшості застосунків, написаних із мінімальними або ніякими знаннями про загальноприйняті хороші практики (такі як чітка постановка задачі перед написанням коду, систематичне тестування тощо)… Скільки існує книг "X для чайників "(де «X» — ваша улюблена мова програмування)? Спочатку мене бавила ця тенденція, але останнім часом мені стає моторошно думати про те, де ці дилетанти можуть застосовувати свої новонабуті знання.

З цієї точки зору вважається, що всі кінцеві користувачі однаково погано розбираються в питаннях розробки ПЗ, але Пліскін і Шовал стверджують, що це не так, що просунуті користувачі здатні до якісної розробки[30]. Однак, на відміну від фахівців, у програмістів-користувачів рідко є час або мотивація до систематичного і дисциплінованого освоєння майстерності розробки[31], що дуже ускладнює завдання забезпечення якості програмних продуктів користувачів.

Реакцією на це стали систематичні дослідження користувацької розробки ПЗ. Вони стосуються питань, що виходять за рамки власне розробки, зокрема розглядається мотивація користувачів-розробників до того, щоб їхні продукти були безпечними, перевірними або повторно використовуваними[32].

Альтернативне рішення полягає в тому, щоб кінцеві користувачі або їхні консультанти використовували декларативні інструменти, які забезпечують безпеку і суторгі бізнес-правила на шкоду продуктивності і масштабованості; як правило продукти розробників-користувацької, мають меншу ефективність, ніж створені за допомогою фахових середовищ програмування.

Див. також[ред. | ред. код]

Посилання[ред. | ред. код]

  1. Емі Брюкман і Елізабет Едардс (Bruckman, Amy, and Elizabeth Edwards). «Поощрять ли естественные языки? Анализ ошибок в языках программирования основанных на естественном языке (Should we leverage natural-language knowledge? An analysis of user errors in a natural-language-style programming language) [Архівовано 29 серпня 2017 у Wayback Machine.]» / Матеріали конференції SIGCHI[en] з людського фактору в обчислювальних системах. ACM, 1999. APA
  2. а б Burnett, Margaret M.; Scaffidi, Christopher. Пользовательская разработка (End-User Development). Interaction-Design.org. Архів оригіналу за 3 липня 2015. Процитовано 31 січня 2022.  в «Енциклопедії взаємодії людини й комп'ютера».
  3. Hornsby, Peter (3 серпня 2009). Наделение пользователей возможностью создавать их собственное ПО (Empowering Users to Create Their Own Software). UXmatters. Архів оригіналу за 26 січня 2022. Процитовано 31 січня 2014. 
  4. Abraham, R.; Burnett, M; Erwig, M (2009). Программирование электронных таблиц (Spreadsheet programming). Энциклопедия Wiley по информатике и компьютерной инженерии (Wiley Encyclopedia of Computer Science and Engineering). с. 1–10. 
  5. С. Крюк і С. Шитц (Kruck, S. & Sheetz, S.), 2001. Теорія точності в електронних таблицях (Spreadsheet accuracy theory) [Архівовано 18 серпня 2018 у Wayback Machine.]. Журнал з педагогіки в інформаційних системах (Journal of Information Systems Education).
  6. К. Скаффіді, М. Шоу і Б. Маєрс (Scaffidi, C., Shaw, M. & Myers, B.), 2005. Оцінка кількості кінцевих користувачів та користувачів-програмістів (Estimating the Numbers of End Users and End User Programmers) [Архівовано 12 вересня 2011 у Wayback Machine.]. 2005 Симпозіум IEEE і візуальних мов і орієнтованих на користувача обчислювальних систем (IEEE Symposium on Visual Languages and Human-Centric Computing) (VL/HCC'05), стр.207–214.
  7. Ф. Патерно (Paternò F.), 2013, ISRN Software Engineering, Користувацька розробка ПЗ: огляд технології наділення користувачів новими можливостями (End User Development: Survey of an Emerging Field for Empowering People). Архів оригіналу за 31 січня 2022. Процитовано 31 січня 2022. 
  8. Г. Джиані, М. Манка, Ф. Патерно, С. Санторо (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.
  9. 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
  10. Ko, Andrew J.; Abraham, Robin; Beckwith, Laura; Blackwell, Alan; Burnett, Margaret; Erwig, Martin; Scaffidi, Chris; Lawrance, Joseph та ін. (1 квітня 2011). Современный уровень развития в пользовательском программироваии ПО (The State of the Art in End-user Software Engineering). ACM Comput. Surv. 43 (3): 21:1–21:44. ISSN 0360-0300. doi:10.1145/1922649.1922658.  Проігноровано невідомий параметр |citeseerx= (довідка);
  11. 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)
  12. Maria Francesca Costabile, Daniela Fogli, Piero Mussio, Antonio Piccinno. Користувацьке програмування: підхід до розробки за допомогою інструментарію формування ПЗ (End-user development: the software shaping workshop approach) [Архівовано 18 серпня 2018 у Wayback Machine.]. 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.
  13. Costabile, M.F., Fogli, D., Letondal, C., Mussio, P., Piccinno, A., Користувачі — експерти в предметній галузі та їх потреби в розробці ПЗ (Domain-Expert Users and their Needs of Software Development) [Архівовано 31 січня 2022 у Wayback Machine.]", Конференція UAHCI, Крит, 22–27 червня, 2003, 232—236.
  14. Gerhard Fischer Користувацька розробка та мета-дизайн: основи для культури участі (End-User Development and Meta-Design: Foundations for Cultures of Participation) [Архівовано 18 серпня 2018 у Wayback Machine.]. Лекційні записи з користувацького програмування в інформатиці, 2009, том 5435/2009, 3-14,
  15. Scaffidi, Christopher; Brandt, Joel; Burnett, Margaret; Dove, Andrew; Myers, Brad (2012). SIG: користувацьке програмування. Chi Ea '12. с. 1193–1996. ISBN 9781450310161. doi:10.1145/2212776.2212421. 
  16. Leonardi, Nicola; Manca, Marco; Paternò, Fabio; Santoro, Carmen (2019). Програмування дій за тригером для персоналізації поведінки гуманоїдних роботів. ISBN 978-145035970-2. doi:10.1145/3290605.3300675. 
  17. Sarkar, Advait; Blackwell, Alan; Jamnik, Mateja; Spott, Martin (липень 2014). Навчай і пробуй: Проста інтерактивна методика для довільного моделювання даних кінцевими користувачами. с. 53–56. ISBN 978-1-4799-4035-6. doi:10.1109/VLHCC.2014.6883022. 
  18. Haynes, John L. (Fall 1985). Проектирование схем при помощи Lotus 1-2-3. BYTE. с. 143–156. Процитовано 19 березня 2016. 
  19. Roy Chowdhury, Soudip; Rodriguez, Carlos; Daniel, Florian; Casati, Fabio (2010). Компьютерные вычисления с учётом мудрости: об интерактивных рекомендациях на основе композиции данных. Icsoc'10. с. 144–155. ISBN 9783642193934. 
  20. Алистэр Сатклифф[en] (July 2005). Оценка потерь и выгод при разработке пользователем. ACM SIGSOFT заметки о проектировании ПО 30 (4): 1–4. doi:10.1145/1082983.1083241. 
  21. Andersen, Renate; Mørch, Anders I. (2 березня 2009). Взаємна розробка: тематичне дослідження розробки ПЗ, ініційованої клієнтом. Заметки из лекций по информатике (англ.) 5435. с. 31–49. ISBN 978-3-642-00425-4. doi:10.1007/978-3-642-00427-8_3. 
  22. Fischer, Gerhard (1 січня 1994). Передача контроля владельцам задач в тематически ориентированных средах разработки. Требования к ориентированным на пользователей средам разработки (англ.). Springer, Берлин, Heidelberg. с. 297–306. ISBN 978-3-642-08189-7. doi:10.1007/978-3-662-03035-6_23. 
  23. Fischer, Gerhard; Giaccardi, Elisa (1 січня 2006). У Lieberman, Henry. Пользовательская разработка. Взаимодейстие человека и компьютера (англ.). Springer Нидерланды. с. 427–457. ISBN 9781402042201. doi:10.1007/1-4020-5386-x_19. 
  24. Lieberman, Henry; Paternò, Fabio; Klann, Markus; Wulf, Volker (1 січня 2006). У Lieberman, Henry. Пользоваельская разработка. Взаимодействие человека и компьютера (англ.). Springer Нидерланды. с. 1–8. ISBN 9781402042201. doi:10.1007/1-4020-5386-x_1. 
  25. Erickson, Thomas; Kellogg, Wendy A. (1 березня 2000). Социальная прозрачность: Подход к разработке систем, поддерживающий социальные процессы. ACM Trans. Comput.-Hum. Interact. 7 (1): 59–83. ISSN 1073-0516. doi:10.1145/344949.345004. 
  26. Leshed, Gilly; Haber, Eben M.; Matthews, Tara; Lau, Tessa (1 січня 2008). CoScripter: Автоматизация и передача практических знаний в корпоративной среде. CHI '08. Нью-Йорк, NY, США: ACM. с. 1719–1728. ISBN 9781605580111. doi:10.1145/1357054.1357323. 
  27. Intharah, Thanapong; Turmukhambetov, Daniyar; Brostow, Gabriel J. (1 січня 2017). Помогите, не могу разобраться: Автоматизация задач в GUI при помощи демонстраций и дополнительных вопросов. IUI '17. Нью-Йорк, NY, США: ACM. с. 233–243. ISBN 9781450343480. doi:10.1145/3025171.3025176. 
  28. Fischer, G.; Giaccardi, E.; Ye, Y.; Sutcliffe, A. G.; Mehandjiev, N. (1 вересня 2004). Мета-дизайн: Манифест пользовательской разработки. Commun. ACM 47 (9): 33–37. ISSN 0001-0782. doi:10.1145/1015864.1015884. 
  29. Harrison, Warren (July–August 2004). Опасности пользовательского программирования. IEEE программное обеспечение 21 (4): 5. doi:10.1109/MS.2004.13. 
  30. Pliskin, Nava; Shoval, Peretz (1987). Пользовательское прототипирование: участие продвинутых пользователей в развитии систем. База данных ACM SIGMIS 18 (4): 7–17. doi:10.1145/1017816.1017817. 
  31. Brandt, Joel; Guo, Philip J.; Lewenstein, Joel; Klemmer, Scott R. (1 січня 2008). Оппортунистическое программирование: Как на практике осуществляется быстрое прототипирование идей. WEUSE '08. Нью-Йорк, NY, США: ACM. с. 1–5. ISBN 9781605580340. doi:10.1145/1370847.1370848. 
  32. Пользовательская разработка: результаты эмпирических исследований (End-User Software Engineering: Empirical Findings). Консорциум эффективной формовки ПО конечными пользователями (End Users Shaping Effective Software Consortium). Архів оригіналу за 31 березня 2022. Процитовано 28 травня 2008. 

Література[ред. | ред. код]

Посилання[ред. | ред. код]