Uživatelské programování

Pojmy uživatelský vývoj ( End-User Developement - EUD ) nebo uživatelské programování ( End-User Programming - EUP ) označují soubor technik a nástrojů, které umožňují programování koncovým uživatelům – lidem, kteří nejsou profesionálními vývojáři softwaru . Lidé, kteří nejsou profesionálními vývojáři, mohou pomocí nástrojů EUD vytvářet nebo upravovat softwarové artefakty (popisy automatických akcí) a složité datové objekty bez znalosti programovacích jazyků .

Existují různé přístupy k problému uživatelského programování - toto téma je aktivně zkoumáno v informatice a vědě o interakci člověk-počítač . Příklady zahrnují programovací systémy v přirozeném jazyce [1] [2] , tabulkové procesory [3] , skriptovací jazyky ​​ (zejména v kancelářských sadách nebo aplikacích pro umělce), vizuální programování , programování spouštěcích akcí a ukázkové programování .

Nejoblíbenějším uživatelským programovacím nástrojem jsou tabulky [3] [4] Vzhledem k jejich neomezující povaze umožňují poměrně nezkušeným uživatelům psát programy, které představují složité datové modely, a zároveň je chrání před nutností učit se programovací jazyky nižší úrovně. [5] Dovednosti tabulkového procesoru jsou považovány za jedny z nejužitečnějších pro absolventy vysokých škol kvůli rozšířenému používání tabulkových procesorů pro řešení obchodních problémů [6] V roce 2005 se počet uživatelů používajících tabulky ve Spojených státech odhadoval na 13 milionů lidí. [7]

Použití příkladového programování potřebu uživatele učit se abstrakce klasických programovacích jazyků. Místo toho uživatel specifikuje příklady požadovaných výsledků nebo operací, které mají být s daty provedeny, a samotný programovací systém příkladu z toho odvozuje abstrakce odpovídající programu, který generuje požadovaný výstup. Do takto automaticky vytvořeného programu lze zadávat nová data a uživatel může opravovat chyby ve výstupu pro opravu programu. Možností pro uživatelské programování jsou také vývojové platformy s minimem kódu

Jednou z oblastí vývoje v této oblasti je využití mobilních zařízení pro podporu vývoje softwaru na zakázku. Specifičnost mobilních zařízení neumožňuje aplikovat stejné přístupy, které fungovaly pro desktopové aplikace. Desktopová prostředí EUD postrádají výhody umožňující koncovým uživatelům vytvářet aplikace, kdykoli je to možné. [osm]

V poslední době se také zvýšil zájem o to, jak využít techniky EUD k vývoji aplikací internetu věcí . V této oblasti je programování spouštěcích akcí považováno za slibný přístup. [9]

Rozhodnutí EUD mohou mít významný dopad na oblasti, jako je životní cyklus softwaru pro komerční softwarové produkty, vývoj domácích webových stránek a zavádění podnikových aplikací .

Vývojové platformy s minimálním kódem

V současné době existuje přibližně 40 prodejců, kteří koncovým uživatelům nabízejí řešení pro snížení programátorské náročnosti. Vytváření programů v nich nevyžaduje znalost tradičního programování, jsou však navrženy tak, aby vytvářely zcela specializované systémy, jako jsou systémy řízení smluv, systémy řízení vztahů se zákazníky , systémy sledování chyb a chyb . Takové vývojové systémy jsou často označovány jako vývojové platformy s minimem kódu . Zpravidla se jedná o interaktivního průvodce, který umožňuje uživateli vyvinout aplikaci za pouhých 40-80 hodin (1,7-3,3 dne).

Definice

Lieberman a kol., nabízejí následující definici: [10]

Uživatelský vývoj lze definovat jako soubor metod, technik a nástrojů, které umožňují uživatelům softwaru, kteří nejsou profesionálními vývojáři softwaru, do určité míry vytvářet, upravovat nebo rozšiřovat softwarové artefakty.

Ko et al. nabízejí následující definici: [11]

Uživatelské programování je programování za účelem dosažení výsledku programu primárně pro osobní, nikoli veřejné použití.

Softwarové artefakty vytvořené koncovými uživateli mohou být popisy automatizovaného chování nebo řídicích sekvencí, jako jsou databázové dotazy nebo gramatická pravidla [12] , které lze vytvořit pomocí programovacích paradigmat, jako je programování pomocí demonstrace , programování pomocí příkladů , vizuální programování nebo vytváření maker . [13] Oni (artefakty) mohou být také souborem parametrů, které ukazují na jeden z předdefinovaných způsobů fungování programu. [14] Dalšími artefakty generovanými koncovými uživateli mohou být formy obsahu vytvářeného uživateli, jako jsou anotace, které mohou, ale nemusí být programově interpretovatelné (tj. mohou být zpracovány vhodnými automatizovanými funkcemi). [patnáct]

Příklady

Příklady zakázkového vývoje zahrnují:

Modelování nákladů a přínosů

Podle Sutcliffa [ 21] EUD v podstatě outsourcuje vývoj koncovému uživateli. Naučit se nástroje EUD vždy vyžaduje určité úsilí, takže motivace uživatelů závisí na jejich přesvědčení, že jim pomohou usnadnit práci, ušetřit čas nebo zvýšit produktivitu. V tomto modelu jsou uživatelské výhody založeny na marketingu, ukázkách a ústním podání. Jakmile je technologie aktivně využívána, stávají se skutečné zkušenosti a přínosy klíčovým motivátorem.

Výše uvedená studie definuje náklady jako součet následujících:

Náklady z prvního a druhého bodu jsou jednorázové a náklady ze třetího a čtvrtého vznikají pokaždé během vývoje. Výhody (skutečné nebo domnělé) jsou v tomto případě následující:

Spolupráce na zakázkovém vývoji

Většina činností vývoje uživatelů ze své podstaty vyžaduje spolupráci, a to buď mezi samotnými vývojáři uživatelů, nebo mezi uživateli a profesionálními vývojáři.

Vzájemný vývoj [22] je technika, při které se profesionální a uživatelští vývojáři společně pokoušejí vytvořit softwarový produkt. Profesionální vývojáři obvykle vytvářejí páteř systému a poskytují nástroje, které mohou "vlastníci úloh [23] " použít v případě potřeby k vytvoření vhodných řešení, která berou v úvahu cíle a souvislosti konkrétního problému [24] . V důsledku komunikace mezi profesionálními a uživatelskými vývojáři se jejich konkrétní modifikace mohou proměnit v softwarové artefakty a stát se plnohodnotnou komerční funkcionalitou, která globálně ovlivňuje produkt.

Byly navrženy různé přístupy k překlenutí komunikační propasti mezi profesionálními a uživatelskými vývojáři, jako jsou workshopy pro formování softwaru [25] . Tyto přístupy se snaží zajistit transparentnost (v souladu s modelem sociální transparentnosti [26] ), aby si každý účastník procesu byl vědom změn provedených ostatními účastníky a díky tomuto vědomí mohl nést odpovědnost za své jednání.

Zatímco profesionální vývojáři používají specializované platformy pro spolupráci (jako je GitHub), uživatelští vývojáři raději používají wiki systémy, kde sdílejí své vytvořené softwarové artefakty. Vlastní vývoj se také často používá k vytváření automatizačních skriptů nebo interaktivních výukových programů pro sdílení praktických znalostí. Příklady zahrnují programy CoScripter [27] a HILC [28] . V takových aplikacích může uživatel vytvářet skripty pomocí polopřirozeného jazyka nebo programováním prostřednictvím demonstrace. Zároveň mohou uživatelé sdílet vytvořený skript nahráním do speciálního online úložiště organizovaného ve stylu wiki. Na této wiki stránce mohou uživatelé dostupné skripty nejen vyhledávat, ale také je vylepšovat přidáním dalších parametrů pro jejich přizpůsobení různým podmínkám nebo práci s jinými objekty.

Kromě toho existují online a offline komunity uživatelských vývojářů, kde mohou společně řešit vývojové problémy na oboustranně výhodném základě. V takových komunitách místní odborníci sdílejí své znalosti a poskytují rady. Členové komunity se často vzájemně společensky podporují, což napomáhá veřejnému vývoji softwaru [29] .

Kritika

Výzkumníci se obávají, že koncoví uživatelé často nechápou, jak testovat nebo zabezpečit jejich aplikace. Warren Harrison, profesor počítačových věd na Portland State University, napsal [30] :

Je zarážející, že se snažíme očekávat jakýkoli druh zabezpečení... od naprosté většiny aplikací, pokud jsou napsány s malou nebo žádnou znalostí obecně uznávaných osvědčených postupů (jako je jasná definice problému před kódováním, systematické testování , atd.) ... Kolik knih "X for Dummies" existuje (kde "X" je váš oblíbený programovací jazyk)? Zpočátku mě tento trend bavil, ale v poslední době mě zneklidňuje myšlenka, kde mohou tito diletanti uplatnit své nově nabyté znalosti.

Z tohoto pohledu se předpokládá, že všichni koncoví uživatelé jsou ve vývoji softwaru stejně špatní, ale Pliskin a Shoval tvrdí, že není pravda, že pokročilí uživatelé jsou schopni kvalitního vývoje. [31] . Na rozdíl od profesionálů však uživatelští programátoři málokdy mají čas nebo motivaci systematicky a disciplinovaně ovládat umění vývoje [32] , což velmi ztěžuje zajištění kvality uživatelských softwarových produktů.

Odpovědí na to byl systematický výzkum vývoje uživatelského softwaru. Zabývají se otázkami, které přesahují samotný vývoj, zejména motivací uživatelů-vývojářů zajistit, aby jejich produkty byly bezpečné, ověřitelné nebo opakovaně použitelné [33] .

Alternativním řešením je pro koncové uživatele nebo jejich poradce použití deklarativních nástrojů, které poskytují bezpečnost a silná obchodní pravidla na úkor výkonu a škálovatelnosti; produkty vytvořené pomocí EUD jsou zpravidla méně efektivní než produkty vytvořené pomocí profesionálních programovacích prostředí. Oddělení funkčnosti a efektivity je však přijatelným principem – může vést k situaci, kdy vývojáři provádějí analýzu požadavků a prototypování nástrojů bez účasti business analytiků . Uživatelé si tak sami určí požadovanou funkcionalitu ještě předtím, než tito experti vyhodnotí omezení, která jim daný určitý z nich ukládá, budou mít příležitost zvážit omezení konkrétní aplikace nebo softwarové platformy . Takové uživatelské iniciativy mohou být podporovány vedením v závislosti na existujících nebo potenciálních přidruženích k dodavatelům softwaru.

Viz také

Odkazy

  1. Greg Little a Robert C (Miller Little, Greg a Robert C. Miller.) Překlad příkazů klíčových slov do spustitelného kódu Archivováno 10. prosince 2017 na Wayback Machine / 19th Annual Proceedings ACM Symposium on User Interface Technologies. ACM, 2006.
  2. Bruckman, Amy a Elizabeth Edwardsovi. " Měli bychom využít znalosti přirozeného jazyka? Analýza uživatelských chyb v programovacím jazyce ve stylu přirozeného jazyka" Archivováno 29. srpna 2017 na Wayback Machine " / Sborník z konference SIGCHI o lidských faktorech ve výpočetních systémech. ACM, 1999. A.P.A.
  3. 1 2 Burnett, Margaret M. Vývoj koncových uživatelů  / Margaret M. Burnett, Christopher Scaffidi. — Interaction-Design.org. Archivováno 3. července 2015 na Wayback Machine v Encyclopedia of Human-Computer Interaction.
  4. Hornsby, Peter Zmocnění uživatelů k vytváření jejich vlastního softwaru . Na UX záleží (3. srpna 2009). Získáno 31. ledna 2014. Archivováno z originálu 26. ledna 2022.
  5. Abraham, R. Spreadsheet programming // Wiley Encyclopedia of Computer Science and Engineering / R. Abraham, M Burnett, M ​​​​Erwig. - 2009. - S. 1–10.
  6. Kruck, S. & Sheetz, S., 2001. Teorie přesnosti tabulky Archivováno 18. srpna 2018 na Wayback Machine . Journal of Pedagogy in Information Systems (Journal of Information Systems Education).
  7. Scaffidi, C., Shaw, M. & Myers, B., 2005. Odhad počtu koncových uživatelů a programátorů koncových uživatelů ) Archivováno 12. září 2011 na Wayback Machine . 2005 IEEE Symposium on Visual Languages ​​and Human-Centric Computing (VL/HCC'05), s. 207–214.
  8. Paternò F., 2013, ISRN Software Engineering, End User Development: Survey of a Emerging Field for Empowering People . Získáno 17. listopadu 2020. Archivováno z originálu dne 31. ledna 2022.
  9. G. Giani, M. Manca, F. Paterno, S. Santoro (Ghiani, G., Manca, M., Paternò, F., Santoro, C.): Personalizace kontextově závislých programů pomocí spouštěcích akcí (Personalization of Kontextově závislé aplikace prostřednictvím pravidel Trigger-Action Rules). ACM Transactions on Computer-Human Interaction, Vol.24, Issue 2, Article N.14, April 2017.
  10. Lieberman, H., Paternò, F., Klann, M. a Wulf, V. (2006). Vlastní vývoj: nové paradigma. In: Custom Software Development, Lieberman, H., Paternò, F., and Wulf, V. (eds.), Springer The Netherlands, 2006, ser. Interakce mezi člověkem a počítačem, svazek 9, kapitola 1, str. 1-7, doi : 10.1007/1-4020-5386-X_1
  11. Ko, ​​​​Andrew J.; Abraham, Robin; Beckwith, Laura; Blackwell, Alan; Burnett, Margaret; Erwig, Martin; Scaffidi, Chris; Lawrance, Josef; Lieberman, Henry (2011-04-01). „Nejmodernější softwarové inženýrství pro koncové uživatele“ Výpočet ACM. Přežít . 43 (3): 21:1–21:44. CiteSeerX  10.1.1.159.8597 . DOI : 10.1145/1922649.1922658 . ISSN  0360-0300 .
  12. H. Lieberman, B. A. Nardi a D. Wright. Grammex: Definování gramatik příkladem (Grammex: Defining gramatik by example). ACM Conference on Human Factors in Computer Systems (Summary and Demos) (CHI '98), Los Angeles, CA, USA, s. 11–12. ACM Press, duben 1998. (Konference ACM o lidských faktorech v počítačových systémech)
  13. Maria Francesca Costabile, Daniela Fogli, Piero Mussio, Antonio Piccinno. Vývoj pro koncového uživatele: přístup k workshopu o formování softwaru Archivováno 18. srpna 2018 na Wayback Machine . In Lieberman, H., Paternò, F., Wulf, V. (eds.) (2004) Vývoj koncových uživatelů — Umožnění lidem flexibilně využívat pokročilé informační a komunikační technologie, © 2004 Kluwer Academic Publishers, Dordrecht, Nizozemsko.
  14. Costabile, MF, Fogli, D., Letondal, C., Mussio, P., Piccinno, A., Domain-Expert Users and their Needs of Software Development Archivovaná kopie ze dne 31. ledna 2022 na Wayback Machine “, konference UAHCI , Kréta, 22.-27. června 2003, 232-236.
  15. Gerhard Fischer End-User Development and Meta-Design: Foundations for Cultures of Participation Archived 18. srpna 2018 na Wayback Machine . Poznámky z přednášek o uživatelském programování v informatice, 2009, ročník 5435/2009, 3-14,
  16. Scaffidi, Christopher. SIG: Uživatelské programování / Christopher Scaffidi, Joel Brandt, Margaret Burnett … [ a další ] . - 2012. - S. 1193-1996. — ISBN 9781450310161 . - doi : 10.1145/2212776.2212421 .
  17. Leonardi, Nicola. Programování akcí na spouštěči pro personalizaci chování humanoidních robotů / Nicola Leonardi, Marco Manca, Fabio Paternò … [ et al. ] . - 2019. - ISBN 978-145035970-2 . - doi : 10.1145/3290605.3300675 .
  18. Sarkar, Advait. Učte se a vyzkoušejte: Jednoduchá interaktivní technika pro modelování libovolných dat koncového uživatele / Advait Sarkar, Alan Blackwell, Mateja Jamnik … [ et al. ] . - červenec 2014. - S. 53–56. — ISBN 978-1-4799-4035-6 . - doi : 10.1109/VLHCC.2014.6883022 .
  19. Haynes, John L. . Circuit Design with Lotus 1-2-3 , BYTE  (podzim 1985), s. 143–156. Staženo 19. března 2016.
  20. Roy Chowdhury, Soudip. Computing with Wisdom: On Interactive Recommendations Based on Data Composition  / Sodip Roy Chowdhury, Carlos Rodriguez, Florian Daniel … [ a další ] . - 2010. - S.  144–155 . — ISBN 9783642193934 .
  21. Alistair Sutcliff (červenec 2005). „Posouzení ztrát a přínosů při vývoji uživatelů“. Poznámky k návrhu softwaru ACM SIGSOFT . 30 (4): 1-4. DOI : 10.1145/1082983.1083241 .
  22. Andersen, Renate. Vzájemný vývoj: Případová studie vývoje softwaru iniciovaného zákazníkem: [ eng. ]  / Renate Andersen, Anders I. Mørch. — 2009-03-02. — Sv. 5435.—S. 31–49. - ISBN 978-3-642-00425-4 . - doi : 10.1007/978-3-642-00427-8_3 .
  23. Fischer, Gerhard. Přenos řízení na vlastníky úloh v tematicky řízených vývojových prostředích // Požadavky na uživatelsky řízená vývojová prostředí: [ eng. ] . — Springer, Berlín, Heidelberg, 1994-01-01. - S. 297-306. — ISBN 978-3-642-08189-7 . - doi : 10.1007/978-3-662-03035-6_23 .
  24. Fischer, Gerhard. Vývoj na zakázku  : [ eng. ]  / Gerhard Fischer, Elisa Giaccardi. — Springer Nizozemsko, 2006-01-01. — S.  427–457 . — ISBN 9781402042201 . - doi : 10.1007/1-4020-5386-x_19 .
  25. Lieberman, Henry. Vývoj na zakázku  : [ eng. ]  / Henry Lieberman, Fabio Paternò, Markus Klann … [ et al. ] . — Springer Nizozemsko, 2006-01-01. — S.  1–8 . — ISBN 9781402042201 . - doi : 10.1007/1-4020-5386-x_1 .
  26. Erickson, Thomas; Kellogg, Wendy A. (2000-03-01). „Sociální transparentnost: Přístup k rozvoji systémů, který podporuje sociální procesy“. ACM Trans. Počítač.-Hum. Komunikujte . 7 (1): 59-83. DOI : 10.1145/344949.345004 . ISSN  1073-0516 .
  27. Leshed, Gilly. CoScripter: Automatizace a přenos praktických znalostí v podnikovém prostředí  / Gilly Leshed, Eben M. Haber, Tara Matthews … [ et al. ] . - New York, NY, USA: ACM, 2008-01-01. — S.  1719–1728 . — ISBN 9781605580111 . - doi : 10.1145/1357054.1357323 .
  28. Intharah, Thanapong. Pomoc, nemůžu na to přijít: Automatizace úloh v GUI s ukázkami a doplňujícími otázkami / Thanapong Intharah, Daniyar Turmukhambetov, Gabriel J. Brostow. — New York, NY, USA : ACM, 2017-01-01. - S. 233-243. — ISBN 9781450343480 . - doi : 10.1145/3025171.3025176 .
  29. Fischer, G.; Giaccardi, E.; Ye, Y.; Sutcliffe, A.G.; Mehandjiev, N. (2004-09-01). "Meta Design: Manifest uživatelského vývoje". komunální. ACM . 47 (9): 33-37. DOI : 10.1145/1015864.1015884 . ISSN  0001-0782 .
  30. Harrison, Warren (červenec-srpen 2004). „Nebezpečí uživatelského programování“. IEEE software . 21 (4): 5. DOI : 10.1109/MS.2004.13 .
  31. Pliskin, Nava; Shoval, Peretz (1987). „Zakázkové prototypování: účast pokročilých uživatelů na vývoji systémů“. Databáze ACM SIGMIS . 18 (4): 7-17. DOI : 10.1145/1017816.1017817 .
  32. Brandt, Joel. Oportunistické programování: Jak se v praxi provádí rychlé vytváření prototypů nápadů / Joel Brandt, Philip J. Guo, Joel Lewenstein ... [ et al. ] . - New York, NY, USA: ACM, 2008-01-01. — S. 1–5. — ISBN 9781605580340 . - doi : 10.1145/1370847.1370848 .
  33. Softwarové inženýrství pro koncového uživatele: Empirické poznatky . Konsorcium koncových uživatelů tvoří efektivní softwarové konsorcium. Získáno 28. května 2008. Archivováno z originálu dne 31. března 2022.

Další čtení

Externí odkazy