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

набір методик та інструментів, які дозволяють програмувати кінцевим користувачам

Термін користувацька розробка (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].

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

Див. також

Посилання

Література

Посилання