Programarea utilizatorului

Termenii dezvoltare utilizator ( End-User Developement - EUD ) sau programare utilizator ( End-User Programming - EUP ) desemnează un set de tehnici și instrumente care permit programarea de către utilizatorii finali - oameni care nu sunt dezvoltatori de software profesioniști . Persoanele care nu sunt dezvoltatori profesioniști pot folosi instrumentele EUD pentru a crea sau modifica artefacte software (descrieri ale acțiunilor automate) și obiecte de date complexe fără cunoștințe de limbaje de programare .

Există diverse abordări ale problemei programării utilizatorilor - acest subiect este explorat activ în informatică și în știința interacțiunii om-calculator . Exemplele includ sisteme de programare în limbaj natural [1] [2] , foi de calcul [3] , limbaje de scripting (în special în suite de birou sau aplicații pentru artiști), programare vizuală , programare cu acțiuni de declanșare și programare de exemplu .

Cel mai popular instrument de programare a utilizatorilor sunt foile de calcul [3] [4] Datorită naturii lor nerestrictive, acestea permit utilizatorilor destul de neexperimentați să scrie programe care reprezintă modele complexe de date, protejându-i în același timp de nevoia de a învăța limbaje de programare de nivel inferior. [5] Competențele cu foi de calcul sunt considerate una dintre cele mai utile pentru absolvenții de universități datorită utilizării pe scară largă a foilor de calcul pentru rezolvarea problemelor de afaceri [6] Începând cu 2005, numărul de utilizatori care utilizează foi de calcul în Statele Unite a fost estimat la 13 milioane de oameni. [7]

Utilizarea Exemplului de Programare nevoia utilizatorului de a învăța abstracțiile limbajelor de programare clasice. În schimb, utilizatorul specifică exemple de rezultate sau operații dorite care trebuie efectuate asupra datelor, iar sistemul de programare al exemplului însuși derivă abstracții din aceasta, corespunzătoare programului care generează rezultatul dorit. Date noi pot fi introduse în programul creat automat în acest fel, iar utilizatorul poate corecta erorile din ieșire pentru a corecta programul. Platformele de dezvoltare cu un minim de cod sunt, de asemenea, o opțiune pentru programarea utilizatorului.

Un domeniu de dezvoltare în acest domeniu este utilizarea dispozitivelor mobile pentru a sprijini dezvoltarea software personalizat. Specificul dispozitivelor mobile nu permite aplicarea acelorași abordări care au funcționat pentru aplicațiile desktop. Mediilor desktop EUD le lipsesc beneficiile de a permite utilizatorilor finali să creeze aplicații ori de câte ori este posibil. [opt]

Recent, a existat, de asemenea, un interes crescut pentru modul de utilizare a tehnicilor EUD pentru a dezvolta aplicații Internet of Things . În acest domeniu, programarea acțiunilor de declanșare este considerată o abordare promițătoare. [9]

Deciziile EUD pot avea un impact semnificativ asupra unor domenii precum ciclul de viață al software-ului pentru produsele software comerciale, dezvoltarea web de acasă și implementarea aplicațiilor pentru întreprinderi .

Platforme de dezvoltare cu cod minim

În prezent, există aproximativ 40 de furnizori care oferă soluții utilizatorilor finali pentru a reduce efortul de programare. Crearea de programe în ele nu necesită cunoștințe de programare tradițională, cu toate acestea, acestea sunt concepute pentru a crea sisteme destul de specializate, cum ar fi sisteme de gestionare a contractelor, sisteme de gestionare a relațiilor cu clienții , sisteme de urmărire a erorilor și erorilor . Astfel de sisteme de dezvoltare sunt adesea denumite platforme de dezvoltare cu un minim de cod . De regulă, acestea sunt un ghid interactiv care permite utilizatorului să dezvolte o aplicație în doar 40-80 de ore (1,7-3,3 zile).

Definiție

Lieberman și colab. oferă următoarea definiție: [10]

Dezvoltarea utilizatorilor poate fi definită ca un set de metode, tehnici și instrumente care permit utilizatorilor de software care nu sunt dezvoltatori de software profesioniști să creeze, să modifice sau să extindă artefacte software într-o oarecare măsură.

Ko et al. oferă următoarea definiție: [11]

Programarea utilizatorului este programarea pentru a obține rezultatul unui program în primul rând pentru uz personal și nu public.

Artefactele software create de utilizatorii finali pot fi descrieri ale comportamentului automat sau secvențe de control, cum ar fi interogări de baze de date sau reguli gramaticale [12] care pot fi create folosind paradigme de programare precum programarea prin demonstrație , programarea prin exemple , programarea vizuală sau crearea de macrocomenzi . [13] Ele (artefactele) pot fi, de asemenea, un set de parametri care indică unul dintre modurile predefinite în care funcționează programul. [14] Alte artefacte generate de utilizatorul final pot fi forme de conținut generat de utilizator, cum ar fi adnotările, care pot fi sau nu interpretabile programatic (adică pot fi procesate de funcții automate adecvate). [cincisprezece]

Exemple

Exemple de dezvoltare personalizată includ:

Costuri și beneficii de modelare

Potrivit Sutcliff , [21] EUD este în esență externalizarea dezvoltării către utilizatorul final. Învățarea instrumentelor EUD necesită întotdeauna un efort, așa că motivația utilizatorilor depinde de convingerea lor că vor ajuta la ușurarea muncii, la economisirea timpului sau la creșterea productivității. În acest model, beneficiile utilizatorilor se bazează pe marketing, demonstrații și cuvântul în gură. Odată ce tehnologia este utilizată în mod activ, experiența reală și beneficiile devin un factor cheie de motivare.

Studiul de mai sus definește costurile ca fiind suma următoarelor:

Costurile de la primul și al doilea punct sunt o singură dată, iar costurile de la al treilea și al patrulea punct apar de fiecare dată în timpul dezvoltării. Beneficiile (reale sau percepute) în acest caz sunt următoarele:

Colaborare în dezvoltare personalizată

Majoritatea activităților de dezvoltare a utilizatorilor, prin însăși natura lor, necesită colaborare, fie între dezvoltatorii utilizatori înșiși, fie între dezvoltatorii utilizatori și profesioniști.

Dezvoltarea reciprocă [22] este o tehnică în care dezvoltatorii profesioniști și utilizatori încearcă împreună să creeze un produs software. Dezvoltatorii profesioniști creează de obicei coloana vertebrală a sistemului și oferă instrumente pe care „proprietarii de sarcini [23] ” le pot folosi atunci când este necesar pentru a crea soluții adecvate care țin cont de obiectivele și contextele unei anumite probleme [24] . Ca urmare a comunicării dintre dezvoltatorii profesioniști și utilizatori, modificările specifice ale acestora din urmă pot fi transformate în artefacte software și pot deveni funcționalități comerciale cu drepturi depline, care afectează global produsul.

Au fost propuse diferite abordări pentru a reduce decalajul de comunicare dintre dezvoltatorii profesioniști și utilizatori, cum ar fi atelierele de turnare de software [25] . Aceste abordări încearcă să ofere transparență (în conformitate cu modelul de transparență socială [26] ), astfel încât fiecare participant la proces să fie conștient de schimbările efectuate de alți participanți și să poată fi tras la răspundere pentru acțiunile lor datorită acestei conștientizări.

În timp ce dezvoltatorii profesioniști folosesc platforme de colaborare specializate (cum ar fi GitHub), dezvoltatorii de utilizatori preferă să folosească sisteme wiki în care își partajează artefactele software create. Dezvoltarea personalizată este adesea folosită și pentru a crea scripturi de automatizare sau tutoriale interactive pentru a împărtăși cunoștințele practice. Exemplele includ programele CoScripter [27] și HILC [28] . În astfel de aplicații, utilizatorul poate crea scripturi folosind un limbaj semi-natural, sau prin programare prin demonstrație. În același timp, utilizatorii pot partaja scriptul creat prin încărcarea acestuia într-un depozit online special organizat în stilul wiki. Pe această pagină wiki, utilizatorii pot nu numai să caute scripturi disponibile, ci și să le îmbunătățească prin adăugarea de parametri suplimentari pentru a le adapta la diferite condiții sau a lucra cu alte obiecte.

În plus, există comunități online și offline de dezvoltatori de utilizatori, unde aceștia pot rezolva împreună problemele de dezvoltare pe o bază reciproc avantajoasă. În astfel de comunități, experții locali își împărtășesc cunoștințele și oferă sfaturi. Membrii comunității se susțin adesea social unul pe altul, ceea ce ajută la dezvoltarea de software public [29] .

Critica

Cercetătorii sunt îngrijorați de faptul că de multe ori utilizatorii finali nu înțeleg cum să-și testeze sau să-și securizeze aplicațiile. Warren Harrison, profesor de informatică la Universitatea de Stat din Portland, a scris [30] :

Este uluitor faptul că încercăm să ne așteptăm la orice fel de securitate... de la marea majoritate a aplicațiilor dacă sunt scrise cu puține sau deloc cunoștințe despre bunele practici general acceptate (cum ar fi definirea clară a problemei înainte de codificare, testarea sistematică). , etc.) ... Câte cărți „X for Dummies” există (unde „X” este limbajul tău de programare preferat)? La început m-a amuzat această tendință, dar în ultimul timp am devenit neliniștit la gândul unde își pot aplica acești diletanti noile cunoștințe.

Din acest punct de vedere, se presupune că toți utilizatorii finali sunt la fel de răi la dezvoltarea de software, dar Pliskin și Shoval susțin că nu este adevărat că utilizatorii avansați sunt capabili de dezvoltare de calitate. [31] . Totuși, spre deosebire de profesioniști, programatorii utilizatori rareori au timpul sau motivația pentru a stăpâni sistematic și disciplinat arta dezvoltării [32] , ceea ce face foarte dificilă asigurarea calității produselor software de utilizator.

Cercetarea sistematică în dezvoltarea software-ului utilizatorului a fost un răspuns la aceasta. Acestea se ocupă de probleme care depășesc dezvoltarea în sine, în special, motivația utilizatorilor-dezvoltatori de a se asigura că produsele lor sunt sigure, verificabile sau reutilizabile [33] .

O soluție alternativă este ca utilizatorii finali sau consilierii acestora să folosească instrumente declarative care oferă securitate și reguli de afaceri puternice în detrimentul performanței și scalabilității; de regulă, produsele create folosind EUD sunt mai puțin eficiente decât cele create folosind medii de programare profesionale. Cu toate acestea, separarea funcționalității și eficienței este un principiu acceptabil - poate duce la o situație în care utilizatorii dezvoltatori efectuează analize de cerințe și prototipuri de instrumente fără participarea analiștilor de afaceri . Astfel, utilizatorii vor determina ei înșiși funcționalitatea necesară, chiar înainte ca acești experți să poată evalua limitările impuse de un anume vor avea ocazia să ia în considerare limitările unei anumite aplicații sau platforme software . Astfel de inițiative ale utilizatorilor pot fi susținute de conducere, în funcție de afilierile existente sau potențiale cu furnizorii de software.

Vezi și

Link -uri

  1. Greg Little și Robert C (Miller Little, Greg și Robert C. Miller.) Traducerea comenzilor de cuvinte cheie în cod executabil Arhivat 10 decembrie 2017 la Wayback Machine / 19th Annual Proceedings ACM Symposium on User Interface Technologies. ACM, 2006.
  2. Bruckman, Amy și Elizabeth Edwards. „ Arhivam cunoștințele în limbajul natural? O analiză a erorilor utilizatorilor într-un limbaj de programare în stil natural” Arhivat 29 august 2017 la Wayback Machine ” / Proceedings of the SIGCHI Conference on human factors in computing systems. ACM, 1999. A.P.A.
  3. 1 2 Burnett, Margaret M. Dezvoltarea utilizatorilor finali  / Margaret M. Burnett, Christopher Scaffidi. — Interaction-Design.org. Arhivat pe 3 iulie 2015 la Wayback Machine în Encyclopedia of Human-Computer Interaction.
  4. Hornsby, Peter împuternicirea utilizatorilor să-și creeze propriul software . UX Matters (3 august 2009). Consultat la 31 ianuarie 2014. Arhivat din original la 26 ianuarie 2022.
  5. Abraham, R. Programare cu foi de calcul // Wiley Encyclopedia of Computer Science and Engineering / R. Abraham, M Burnett, M ​​​​Erwig. - 2009. - P. 1–10.
  6. Kruck, S. & Sheetz, S., 2001. Teoria acurateței foii de calcul Arhivat 18 august 2018 la Wayback Machine . Journal of Pedagogy in Information Systems (Jurnal of Information Systems Education).
  7. Scaffidi, C., Shaw, M. & Myers, B., 2005. Estimarea numărului de utilizatori finali și programatori ai utilizatorilor finali ) Arhivat la 12 septembrie 2011 la Wayback Machine . 2005 IEEE Symposium on Visual Languages ​​and Human-Centric Computing (VL/HCC'05), pp.207–214.
  8. Paternò F., 2013, ISRN Software Engineering, End User Development: Survey of an Emerging Field for Empowering People . Consultat la 17 noiembrie 2020. Arhivat din original la 31 ianuarie 2022.
  9. G. Giani, M. Manca, F. Paterno, S. Santoro (Ghiani, G., Manca, M., Paternò, F., Santoro, C.): Personalizarea programelor dependente de context folosind acțiuni de declanșare (Personalization of Aplicații dependente de context prin intermediul regulilor de acțiune de declanșare). ACM Transactions on Computer-Human Interaction, Vol.24, Issue 2, Article N.14, April 2017.
  10. Lieberman, H., Paternò, F., Klann, M. și Wulf, V. (2006). Dezvoltare personalizată: o nouă paradigmă. În: Custom Software Development, Lieberman, H., Paternò, F. și Wulf, V. (eds.), Springer Țările de Jos, 2006, ser. Interacțiune om-calculator, volumul 9, capitolul 1, pp. 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, Joseph; Lieberman, Henry (01-04-2011). „Stadiul tehnicii în domeniul ingineriei software pentru utilizatorii finali” ACM Comput. Surv . 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 și D. Wright. Grammex: Definirea gramaticilor prin exemplu (Grammex: Definirea gramaticilor prin exemplu). Conferința ACM privind factorii umani în sistemele informatice (rezumat și demonstrații) (CHI '98), Los Angeles, CA, SUA, pp. 11–12. ACM Press, aprilie 1998. (Conferința ACM despre factorii umani în sistemele de calcul)
  13. Maria Francesca Costabile, Daniela Fogli, Piero Mussio, Antonio Piccinno. Dezvoltarea utilizatorului final: abordarea atelierului de modelare a software-ului Arhivat 18 august 2018 la Wayback Machine . În Lieberman, H., Paternò, F., Wulf, V. (Eds) (2004) Dezvoltarea utilizatorului final — Împuternicirea oamenilor să utilizeze în mod flexibil Tehnologia avansată a informației și comunicațiilor, © 2004 Kluwer Academic Publishers, Dordrecht, Țările de Jos.
  14. Costabile, MF, Fogli, D., Letondal, C., Mussio, P., Piccinno, A., Domain-Expert Users and their Needs of Software Development Copie arhivată din 31 ianuarie 2022 la Wayback Machine ", Conferința UAHCI , Creta, 22-27 iunie 2003, 232-236.
  15. Gerhard Fischer End-User Development and Meta-Design: Foundations for Cultures of Participation Arhivat 18 august 2018 la Wayback Machine . Note de curs despre programarea utilizatorilor în informatică, 2009, volumul 5435/2009, 3-14,
  16. Scaffidi, Christopher. SIG: Programare utilizator / Christopher Scaffidi, Joel Brandt, Margaret Burnett … [ și alții ] . - 2012. - P. 1193-1996. — ISBN 9781450310161 . - doi : 10.1145/2212776.2212421 .
  17. Leonardi, Nicola. Programarea acțiunilor pe un declanșator pentru a personaliza comportamentul roboților umanoizi / Nicola Leonardi, Marco Manca, Fabio Paternò … [ și colab. ] . - 2019. - ISBN 978-145035970-2 . - doi : 10.1145/3290605.3300675 .
  18. Sarkar, Advait. Învățați și încercați: O tehnică interactivă simplă pentru modelarea datelor arbitrare ale utilizatorului final / Advait Sarkar, Alan Blackwell, Mateja Jamnik … [ și colab. ] . - iulie 2014. - P. 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  (toamna 1985), pp. 143–156. Preluat la 19 martie 2016.
  20. Roy Chowdhury, Soudip. Computing with Wisdom: On Interactive Recommendations Based on Data Composition  / Soudip Roy Chowdhury, Carlos Rodriguez, Florian Daniel … [ și alții ] . - 2010. - P.  144–155 . — ISBN 9783642193934 .
  21. Alistair Sutcliff (iulie 2005). „Evaluarea pierderilor și beneficiilor în dezvoltarea utilizatorilor”. Note de proiectare software ACM SIGSOFT . 30 (4): 1-4. DOI : 10.1145/1082983.1083241 .
  22. Andersen, Renate. Dezvoltare reciprocă: un studiu de caz privind dezvoltarea software inițiată de client: [ ing. ]  / Renate Andersen, Anders I. Mørch. — 2009-03-02. — Vol. 5435.—P. 31–49. - ISBN 978-3-642-00425-4 . - doi : 10.1007/978-3-642-00427-8_3 .
  23. Fischer, Gerhard. Transferarea controlului către proprietarii de sarcini în medii de dezvoltare bazate pe subiecte // Cerințe pentru mediile de dezvoltare conduse de utilizator: [ ing. ] . — Springer, Berlin, Heidelberg, 1994-01-01. - P. 297-306. — ISBN 978-3-642-08189-7 . - doi : 10.1007/978-3-662-03035-6_23 .
  24. Fischer, Gerhard. Dezvoltare personalizată  : [ ing. ]  / Gerhard Fischer, Elisa Giaccardi. — Springer Țările de Jos, 2006-01-01. — P.  427–457 . — ISBN 9781402042201 . - doi : 10.1007/1-4020-5386-x_19 .
  25. Lieberman, Henry. Dezvoltare personalizată  : [ ing. ]  / Henry Lieberman, Fabio Paternò, Markus Klann … [ și colab. ] . — Springer Țările de Jos, 2006-01-01. — P.  1–8 . — ISBN 9781402042201 . - doi : 10.1007/1-4020-5386-x_1 .
  26. Erickson, Thomas; Kellogg, Wendy A. (01-03-2000). „Transparența socială: O abordare de dezvoltare a sistemelor care sprijină procesele sociale”. ACM Trans. Calcul.-Hum. Interacționează . 7 (1): 59-83. DOI : 10.1145/344949.345004 . ISSN  1073-0516 .
  27. Lesshed, Gilly. CoScripter: Automatizarea și transferul de cunoștințe practice într-un mediu corporativ  / Gilly Leshed, Eben M. Haber, Tara Matthews … [ și colab. ] . - New York, NY, SUA : ACM, 2008-01-01. — P.  1719–1728 . — ISBN 9781605580111 . - doi : 10.1145/1357054.1357323 .
  28. Intharah, Thanapong. Ajutor, nu pot să-mi dau seama: Automatizarea sarcinilor în GUI cu demonstrații și întrebări ulterioare / Thanapong Intharah, Daniyar Turmukhambetov, Gabriel J. Brostow. — New York, NY, SUA : ACM, 2017-01-01. - P. 233-243. — ISBN 9781450343480 . - doi : 10.1145/3025171.3025176 .
  29. Fischer, G.; Giaccardi, E.; Da, Y.; Sutcliffe, A.G.; Mehandjiev, N. (01-09-2004). „Meta Design: Manifestul dezvoltării utilizatorilor”. comun. ACM . 47 (9): 33-37. DOI : 10.1145/1015864.1015884 . ISSN  0001-0782 .
  30. ^ Harrison, Warren (iulie-august 2004). „Pericolele programării utilizatorilor”. Software IEEE . 21 (4): 5. DOI : 10.1109/MS.2004.13 .
  31. Pliskin, Nava; Shoval, Peretz (1987). „Prototiparea personalizată: participarea utilizatorilor avansați la dezvoltarea sistemelor”. Baza de date ACM SIGMIS . 18 (4): 7-17. DOI : 10.1145/1017816.1017817 .
  32. Brandt, Joel. Programare oportunistă: cât de rapidă se realizează prototiparea ideilor în practică / Joel Brandt, Philip J. Guo, Joel Lewenstein ... [ și colab. ] . - New York, NY, SUA : ACM, 2008-01-01. — P. 1–5. — ISBN 9781605580340 . - doi : 10.1145/1370847.1370848 .
  33. Inginerie software pentru utilizatorul final: constatări empirice . Utilizatorii finali modelează un consorțiu software eficient. Preluat la 28 mai 2008. Arhivat din original la 31 martie 2022.

Lectură suplimentară

Link- uri externe