Termerna användarutveckling (End-User Developement- EUD ) eller användarprogrammering (End-User Programming- EUP ) betecknar en uppsättning tekniker och verktyg som tillåter programmering av slutanvändare - personer som inte är professionella mjukvaruutvecklare . Människor som inte är professionella utvecklare kan använda EUD-verktyg för att skapa eller modifiera programvaruartefakter (beskrivningar av automatiska åtgärder) och komplexa dataobjekt utan kunskap om programmeringsspråk .
Det finns olika tillvägagångssätt för problemet med användarprogrammering - det här ämnet utforskas aktivt inom datavetenskap och vetenskapen om människa-datorinteraktion . Exempel inkluderar programmeringssystem för naturliga språk [1] [2] , kalkylblad [3] , skriptspråk (särskilt i kontorssviter eller applikationer för artister), visuell programmering , trigger action- programmering och exempelprogrammering .
Det mest populära verktyget för användarprogrammering är kalkylblad [3] [4] På grund av deras icke-restriktiva karaktär tillåter de ganska oerfarna användare att skriva program som representerar komplexa datamodeller samtidigt som de skyddar dem från att behöva lära sig programmeringsspråk på lägre nivå. [5] Kalkylbladsfärdigheter anses vara en av de mest användbara för universitetsexaminerade på grund av den utbredda användningen av kalkylblad för att lösa affärsproblem. [6] Från och med 2005 uppskattades antalet användare som använder kalkylblad i USA till 13 miljoner människor. [7]
Att använda exempelprogrammering behovet för användaren att lära sig abstraktionerna i klassiska programmeringsspråk. Istället specificerar användaren exempel på de önskade resultaten eller operationerna som ska utföras på data, och programmeringssystemet i exemplet själv härleder abstraktioner från detta, motsvarande programmet som genererar den önskade utdata. Ny data kan matas in i programmet som skapas automatiskt på detta sätt, och användaren kan korrigera fel i utdata för att korrigera programmet. Utvecklingsplattformar med ett minimum av kod är också ett alternativ för användarprogrammering.
Ett utvecklingsområde inom detta område är användningen av mobila enheter för att stödja anpassad mjukvaruutveckling. Mobila enheters specificitet tillåter inte att tillämpa samma tillvägagångssätt som fungerade för stationära applikationer. EUD-skrivbordsmiljöer saknar fördelarna med att låta slutanvändare skapa applikationer när det är möjligt. [åtta]
På senare tid har det också funnits ett ökat intresse för hur man använder EUD-tekniker för att utveckla Internet of Things- applikationer . På detta område anses programmering av utlösande åtgärder vara ett lovande tillvägagångssätt. [9]
EUD:s beslut kan ha en betydande inverkan på områden som mjukvarans livscykel för kommersiella mjukvaruprodukter, utveckling av hemwebb och implementering av företagsapplikationer .
Det finns för närvarande cirka 40 leverantörer som erbjuder lösningar till slutanvändare för att minska programmeringsansträngningen. Att skapa program i dem kräver inte kunskap om traditionell programmering, men de är designade för att skapa ganska specialiserade system, såsom avtalshanteringssystem, kundrelationshanteringssystem , bugg- och felspårningssystem . Sådana utvecklingssystem kallas ofta för utvecklingsplattformar med ett minimum av kod . Som regel är de en interaktiv guide som låter användaren utveckla en applikation på bara 40-80 timmar (1,7-3,3 dagar).
Lieberman et al erbjuder följande definition: [10]
Användarutveckling kan definieras som en uppsättning metoder, tekniker och verktyg som gör det möjligt för programanvändare som inte är professionella programvaruutvecklare att skapa, modifiera eller utöka programvaruartefakter i viss utsträckning.
Ko et al erbjuder följande definition: [11]
Användarprogrammering är programmering för att uppnå resultatet av ett program i första hand för personligt snarare än allmänt bruk.
Programvaruartefakter skapade av slutanvändare kan vara beskrivningar av automatiserat beteende eller kontrollsekvenser som databasfrågor eller grammatikregler [12] som kan skapas med hjälp av programmeringsparadigm som programmering genom demonstration , programmering genom exempel , visuell programmering eller skapa makron . [13] De (artefakter) kan också vara en uppsättning parametrar som pekar på ett av de fördefinierade sätten programmet fungerar. [14] Andra slutanvändargenererade artefakter kan vara former av användargenererat innehåll, såsom annoteringar, som kan eller inte kan tolkas programmatiskt (dvs. kan bearbetas av lämpliga automatiserade funktioner). [femton]
Exempel på anpassad utveckling inkluderar:
Enligt Sutcliff , [21] är EUD i huvudsak outsourcing av utveckling till slutanvändaren. Att lära sig EUD-verktyg kräver alltid en viss ansträngning, så användarnas motivation beror på deras övertygelse om att de kommer att bidra till att göra arbetet enklare, spara tid eller öka produktiviteten. I denna modell baseras användarfördelarna på marknadsföring, demos och mun till mun. När tekniken väl har använts aktivt blir verklig erfarenhet och fördelar en viktig motivation.
Ovanstående studie definierar kostnader som summan av följande:
Kostnaderna från första och andra punkten är engångskostnader och kostnaderna från tredje och fjärde uppstår varje gång under utvecklingen. Fördelarna (verkliga eller upplevda) i detta fall är följande:
De flesta användarutvecklingsaktiviteter kräver till sin natur samarbete, antingen mellan användarutvecklare själva eller mellan användare och professionella utvecklare.
Ömsesidig utveckling [22] är en teknik där professionella och användarutvecklare tillsammans försöker skapa en mjukvaruprodukt. Professionella utvecklare skapar vanligtvis ryggraden i systemet och tillhandahåller verktyg som "uppgiftsägare [23] " kan använda när det behövs för att skapa lämpliga lösningar som tar hänsyn till målen och sammanhangen för ett visst problem [24] . Som ett resultat av kommunikation mellan professionella och användarutvecklare kan specifika modifieringar av de senare omvandlas till mjukvaruartefakter och bli fullfjädrad kommersiell funktionalitet som globalt påverkar produkten.
Olika tillvägagångssätt har föreslagits för att överbrygga kommunikationsklyftan mellan professionella och användarutvecklare, såsom programvaruformningsworkshops [25] . Dessa tillvägagångssätt försöker ge transparens (i enlighet med modellen för social transparens [26] ), så att varje deltagare i processen är medveten om de förändringar som gjorts av andra deltagare och kan hållas ansvariga för sina handlingar på grund av denna medvetenhet.
Medan professionella utvecklare använder specialiserade samarbetsplattformar (som GitHub), föredrar användarutvecklare att använda wiki-system där de delar sina skapade mjukvaruartefakter. Anpassad utveckling används också ofta för att skapa automatiseringsskript eller interaktiva handledningar för att dela praktisk kunskap. Exempel inkluderar programmen CoScripter [27] och HILC [28] . I sådana applikationer kan användaren skapa skript med ett semi-naturligt språk, eller genom att programmera genom demonstration. Samtidigt kan användare dela det skapade skriptet genom att ladda upp det till ett speciellt onlineförråd organiserat i wiki-stil. På denna wikisida kan användare inte bara söka efter tillgängliga skript, utan också förbättra dem genom att lägga till ytterligare parametrar för att anpassa dem till olika förhållanden eller arbeta med andra objekt.
Dessutom finns det online- och offline-communities av användarutvecklare, där de gemensamt kan lösa utvecklingsproblem på en ömsesidigt fördelaktig basis. I sådana samhällen delar lokala experter med sig av sin kunskap och ger råd. Gemenskapsmedlemmar är ofta socialt stödjande av varandra, vilket hjälper offentlig mjukvaruutveckling [29] .
Forskare är oroliga över att slutanvändare ofta inte förstår hur man testar eller säkrar sina applikationer. Warren Harrison, professor i datavetenskap vid Portland State University, skrev [30] :
Det är häpnadsväckande att vi försöker förvänta oss någon form av säkerhet... från de allra flesta applikationer om de är skrivna med liten eller ingen kunskap om allmänt accepterad god praxis (som tydlig problemdefinition före kodning, systematisk testning , etc.) ... Hur många "X for Dummies"-böcker finns det (där "X" är ditt favoritspråk för programmering)? Först var jag road av denna trend, men på senare tid har jag blivit orolig vid tanken på var dessa dilettanter kan tillämpa sin nyvunna kunskap.
Ur denna synvinkel antas det att alla slutanvändare är lika dåliga på mjukvaruutveckling, men Pliskin och Shoval hävdar att det inte är sant att avancerade användare är kapabla till kvalitetsutveckling. [31] . Men till skillnad från proffs har användarprogrammerare sällan tid eller motivation att systematiskt och disciplinerat bemästra konsten att utveckla [32] , vilket gör det mycket svårt att säkerställa kvaliteten på användarprogramvaruprodukter.
Systematisk forskning om utveckling av användarprogramvara har varit ett svar på detta. De behandlar frågor som går utöver själva utvecklingen, i synnerhet motivationen för användarutvecklare att se till att deras produkter är säkra, verifierbara eller återanvändbara [33] .
En alternativ lösning är för slutanvändare eller deras rådgivare att använda deklarativa verktyg som ger säkerhet och starka affärsregler på bekostnad av prestanda och skalbarhet; som regel är produkter som skapats med EUD mindre effektiva än de som skapas med professionella programmeringsmiljöer. Separationen av funktionalitet och effektivitet är dock en acceptabel princip - det kan leda till en situation där utvecklareanvändare gör kravanalys och verktygsprototyper utan deltagande av affärsanalytiker . Således kommer användarna att själva bestämma den funktionalitet som krävs redan innan dessa experter kan utvärdera de begränsningar som åläggs av en viss person kommer att ha möjlighet att överväga begränsningarna för en viss applikation eller mjukvaruplattform . Sådana användarinitiativ kan stödjas av ledningen, beroende på befintliga eller potentiella kopplingar till programvaruleverantörer.