Rozwój użytkownika końcowego - End-user development
Rozwój użytkownika końcowego ( EUD ) lub programowanie użytkownika końcowego ( EUP ) odnosi się do działań i narzędzi, które umożliwiają użytkownikom końcowym - osobom, które nie są zawodowymi programistami - programowanie komputerów . Osoby, które nie są profesjonalnymi programistami, mogą używać narzędzi EUD do tworzenia lub modyfikowania artefaktów oprogramowania (opisów zautomatyzowanego zachowania) i złożonych obiektów danych bez znacznej znajomości języka programowania . W 2005 roku oszacowano (na podstawie statystyk z US Bureau of Labor Statistics ), że do 2012 roku w Stanach Zjednoczonych będzie ponad 55 milionów programistów użytkowników końcowych, w porównaniu z mniej niż 3 milionami programistów zawodowych. Istnieją różne podejścia EUD i jest to aktywny temat badawczy w dziedzinie informatyki i interakcji człowiek-komputer . Przykłady obejmują programowanie w języku naturalnym , arkusze kalkulacyjne , języki skryptowe (szczególnie w pakiecie biurowym lub aplikacji graficznej ), programowanie wizualne, programowanie typu trigger-action i programowanie na przykładach .
Najpopularniejszym narzędziem EUD jest arkusz kalkulacyjny . Ze względu na swoją nieograniczoną naturę arkusze kalkulacyjne umożliwiają stosunkowo niewykwalifikowanym użytkownikom komputerów pisanie programów, które reprezentują złożone modele danych, jednocześnie chroniąc ich przed koniecznością nauki języków programowania niższego poziomu. Ze względu na ich powszechne wykorzystanie w biznesie, umiejętności korzystania z arkuszy kalkulacyjnych należą do najbardziej pożytecznych umiejętności dla absolwenta i dlatego są najczęściej poszukiwane.W samych Stanach Zjednoczonych szacuje się, że istnieje 13 milionów programistów końcowych programistów. z arkuszami kalkulacyjnymi
Podejście programowania przez przykłady ( PbE ) ogranicza potrzebę uczenia się przez użytkownika abstrakcji klasycznego języka programowania. Zamiast tego użytkownik wprowadza kilka przykładów pożądanych wyników lub operacji, które należy wykonać na danych, a system PbE wnioskuje o pewne abstrakcje odpowiadające programowi, który generuje te dane wyjściowe, które użytkownik może udoskonalić. Do automatycznie tworzonego programu można wówczas wprowadzić nowe dane, a użytkownik może poprawić błędy popełnione przez program w celu udoskonalenia jego definicji. Platformy programistyczne Low-code są również podejściem do EUD.
Jedną z ewolucji w tej dziedzinie było rozważenie wykorzystania urządzeń mobilnych do wspierania działań rozwojowych użytkownika końcowego. W tym przypadku nie można po prostu ponownie zaproponować poprzednich podejść do aplikacji komputerowych, biorąc pod uwagę specyficzne cechy urządzeń mobilnych. Środowiskom Desktop EUD brakuje zalet umożliwiających użytkownikom końcowym tworzenie aplikacji w sposób dogodny w ruchu.
Niedawno wzrosło zainteresowanie tym, jak wykorzystać EUD do wspierania rozwoju aplikacji Internetu rzeczy. W tej dziedzinie programowanie działań wyzwalających wydaje się obiecującym podejściem.
Główne wnioski wyciągnięte z rozwiązań EUD mogą mieć istotny wpływ na cykl życia oprogramowania dla komercyjnych produktów programowych , w domu intranet / extranet zmian i aplikacji korporacyjnych wdrożeń.
Platformy programistyczne o niskim kodzie specyficzne dla aplikacji
Około 40 dostawców oferuje obecnie rozwiązania skierowane do użytkowników końcowych, zaprojektowane w celu zmniejszenia wysiłków związanych z programowaniem. Rozwiązania te nie wymagają tradycyjnego programowania i mogą opierać się na stosunkowo wąskiej funkcjonalności, np. Zarządzaniu umowami, zarządzaniu relacjami z klientami, śledzeniu problemów i błędów. Często nazywane platformami programistycznymi o niskim kodzie, interakcje internetowe prowadzą użytkownika do stworzenia aplikacji w zaledwie 40–80 godzin.
Definicja
Lieberman i in. zaproponuj następującą definicję:
Rozwój użytkownika końcowego można zdefiniować jako zbiór metod, technik i narzędzi, które pozwalają użytkownikom systemów oprogramowania, którzy działają jako nieprofesjonalni programiści, w pewnym momencie tworzyć, modyfikować lub rozszerzać artefakt oprogramowania.
Ko i in. zaproponuj następującą definicję:
Programowanie użytkownika końcowego to programowanie w celu osiągnięcia wyniku programu głównie do użytku osobistego, a nie publicznego.
Artefakty definiowane przez użytkowników końcowych mogą być obiektami opisującymi pewne zautomatyzowane zachowanie lub sekwencję sterowania, takie jak żądania bazy danych lub reguły gramatyczne, które można opisać za pomocą paradygmatów programowania, takich jak programowanie przez demonstrację , programowanie z przykładami , programowanie wizualne lub generowanie makr . Mogą to być również parametry, które wybierają między alternatywnymi predefiniowanymi zachowaniami aplikacji. Inne artefakty rozwoju użytkownika końcowego mogą również odnosić się do tworzenia treści generowanych przez użytkowników, takich jak adnotacje, które mogą być interpretowane obliczeniowo lub nie (tj. Mogą być przetwarzane przez powiązane funkcje automatyczne).
Przykłady
Przykłady rozwoju użytkownika końcowego obejmują tworzenie i modyfikację:
- Skrypty animacyjne używane przez grafików do opisywania postaci, środowisk i tego, jak postacie poruszają się, aby stworzyć zamierzoną animację
- Pliki konfiguracyjne, które zacierają granicę między programami a danymi (np. Filtry poczty e-mail to uporządkowane listy kryteriów i działań, które należy wykonać)
- Narzędzia programowania zorientowane na przykłady
- Modyfikacje gier mające na celu wprowadzenie własnych postaci, środowisk itp. - wiele ostatnich gier jest dystrybuowanych z myślą o modyfikacji
- Skrypty interakcji używane w call center CRM
- Narzędzia do tworzenia aplikacji mobilnych, takie jak App Inventor
- Modele procesów stosowane w aplikacjach workflow
- Prototypy i programy specyficzne dla danej dziedziny napisane przez biznesmenów, inżynierów i naukowców w celu zademonstrowania lub przetestowania określonych teorii
- Zachowanie robota
- Modele naukowe wykorzystywane w symulacji komputerowej
- Dodane skrypty i makra w celu rozszerzenia lub zautomatyzowania pakietów biurowych i aplikacji graficznych .
- Symulacje utworzone za pomocą oprogramowania do definiowania aplikacji
- Jednoczesna edycja wielu powiązanych elementów poprzez proces wsadowy określony przez użytkownika końcowego lub bezpośrednią manipulację , taką jak te dostępne w edytorze tekstu Lapis i edycji wielokrotnej .
- Modele arkusza kalkulacyjnego , np. Używane do budżetowania, analizy ryzyka, interaktywnego uczenia maszynowego lub projektowania obwodów elektronicznych
- Programowanie wizualne w postaci języków wizualnych, takich jak AgentSheets , LabVIEW , Scratch (język programowania) czy LEGO Mindstorms .
- Strony internetowe - zwykły HTML lub HTML i skrypty
- Wiki - wspólny proces rozwoju użytkownika końcowego
- Mashupy internetowe w postaci języków wizualnych.
- Modele 3D utworzone za pomocą narzędzi i aplikacji zorientowanych na użytkownika końcowego, takich jak Sketchup
Modelowanie kosztów i korzyści
Według Sutcliffe , EUD zasadniczo zleca prace rozwojowe użytkownikowi końcowemu. Ponieważ nauka narzędzia EUD zawsze wymaga pewnego wysiłku, motywacja użytkowników zależy od ich przekonania, że usprawni ono ich pracę, zaoszczędzi czas w pracy lub zwiększy produktywność. W tym modelu korzyści dla użytkowników są początkowo oparte na marketingu, demonstracjach i przekazach ustnych. Po wdrożeniu technologii doświadczenie rzeczywistych korzyści staje się kluczowym czynnikiem motywującym.
W niniejszym opracowaniu koszty zdefiniowano jako sumę:
- Koszt techniczny: cena technologii i nakład pracy związany z jej zainstalowaniem
- Koszt nauki: czas potrzebny na zrozumienie technologii
- Koszt rozwoju: wysiłek związany z opracowaniem aplikacji przy użyciu technologii
- Koszt testów i debugowania: czas potrzebny na weryfikację systemu
Pierwszy i drugi koszt są ponoszone jednorazowo podczas akwizycji, a trzeci i czwarty przy każdym tworzeniu aplikacji. Korzyści (które mogą być postrzegane lub rzeczywiste) są postrzegane jako:
- Funkcjonalność zapewniana przez technologię
- Elastyczność w reagowaniu na nowe wymagania
- Użyteczność utworzonych aplikacji
- Ogólna jakość utworzonych aplikacji
Współpraca w rozwoju użytkownika końcowego
Wiele działań związanych z rozwojem użytkowników końcowych ma charakter współpracy, w tym współpraca między profesjonalnymi programistami i programistami dla użytkowników końcowych oraz współpraca między programistami użytkowników końcowych.
Wzajemny rozwój to technika, w ramach której profesjonalni programiści i programiści-użytkownicy końcowi współpracują przy tworzeniu rozwiązań oprogramowania. We wspólnym rozwoju, profesjonalni programiści często „projektują” system i dostarczają narzędzi umożliwiających „właścicielom problemów” tworzenie odpowiednich rozwiązań w czasie ich użytkowania, dostosowanych do ich potrzeb, celów i kontekstów sytuacyjnych. Następnie komunikacja między profesjonalnymi programistami a Twórcy użytkowników końcowych często mogą stymulować formalizowanie modyfikacji ad hoc przez użytkowników końcowych w artefakty oprogramowania, przekształcając rozwiązania opracowane przez użytkowników końcowych w funkcje produktu komercyjnego, które mają wpływ wykraczający poza rozwiązania lokalne.
W ramach tej współpracy proponuje się różne podejścia, takie jak warsztaty kształtowania oprogramowania, aby wypełnić lukę komunikacyjną między profesjonalnymi programistami a programistami będącymi użytkownikami końcowymi. Podejścia te często zapewniają przezroczystość zgodnie z modelem półprzezroczystości społecznej, umożliwiając każdemu we współpracy świadomość zmian wprowadzanych przez innych i odpowiedzialność za swoje działania dzięki świadomości.
Oprócz programowania platform współpracy, takich jak GitHub, które są głównie wykorzystywane przez doświadczonych programistów ze względu na ich stromą krzywą uczenia się, współpraca między programistami użytkowników końcowych często odbywa się na platformach wiki, na których współdzielone są tworzone artefakty oprogramowania. Programowanie dla użytkowników końcowych jest również często wykorzystywane do tworzenia skryptów automatyzacji lub interaktywnych samouczków do dzielenia się wiedzą „jak to zrobić”. Przykładami takich aplikacji są CoScripter i HILC. W takich aplikacjach użytkownik może tworzyć skrypty do zadań przy użyciu języka pseudo-naturalnego lub poprzez programowanie demonstracyjne. Użytkownicy mogą przesłać skrypt do repozytorium skryptów w stylu wiki. Na tej wiki użytkownicy mogą przeglądać dostępne skrypty i rozszerzać istniejące skrypty, aby obsługiwały dodatkowe parametry, obsługiwały dodatkowe warunki lub operowały na dodatkowych obiektach.
Utworzono również społeczności internetowe i offline programistów użytkowników końcowych, w których programiści użytkowników końcowych mogą wspólnie rozwiązywać problemy EUD będące przedmiotem wspólnego zainteresowania lub dla obopólnych korzyści. W takich społecznościach lokalni eksperci rozpowszechniają wiedzę i porady. Członkowie społeczności zapewniają również wzajemne wsparcie społeczne, aby wspierać wspólne tworzenie oprogramowania.
Krytyka
Komentatorzy obawiali się, że użytkownicy końcowi nie rozumieją, jak testować i zabezpieczać swoje aplikacje. Warren Harrison, profesor informatyki na Uniwersytecie Stanowym w Portland, napisał:
To po prostu niezrozumiałe, że możemy oczekiwać bezpieczeństwa ... od większości aplikacji, które są tam napisane, gdy są napisane z niewielką, jeśli w ogóle, wiedzą na temat ogólnie przyjętych dobrych praktyk, takich jak specyfikacja przed kodowaniem, systematyczne testowanie i tak dalej. ... Ile książek o X for Complete Idiots (gdzie „X” jest Twoim ulubionym językiem programowania) jest dostępnych? Początkowo byłem rozbawiony tym trendem, ale ostatnio poczułem się nieswojo myśląc o tym, gdzie ci amatorzy wykorzystują swoją nowo odkrytą wiedzę.
Ten punkt widzenia zakłada, że wszyscy użytkownicy końcowi są równie naiwni, jeśli chodzi o rozumienie oprogramowania, chociaż Pliskin i Shoval twierdzą, że tak nie jest, że zaawansowani użytkownicy końcowi są zdolni do rozwoju użytkownika końcowego. Jednak w porównaniu z programistami-ekspertami programiści będący użytkownikami końcowymi rzadko mają czas lub zainteresowanie systematycznymi i zdyscyplinowanymi działaniami w zakresie inżynierii oprogramowania, co sprawia, że zapewnienie jakości artefaktu oprogramowania powstającego w wyniku rozwoju użytkownika końcowego jest szczególnie trudne.
W odpowiedzi na to pojawiło się badanie inżynierii oprogramowania dla użytkowników końcowych . Zajmuje się kwestiami wykraczającymi poza rozwój użytkownika końcowego, w wyniku których użytkownicy końcowi stają się zmotywowani do rozważenia takich kwestii, jak możliwość ponownego użycia, bezpieczeństwo i weryfikowalność podczas opracowywania swoich rozwiązań.
Alternatywnym scenariuszem jest to, że użytkownicy końcowi lub ich konsultanci stosują deklaratywne narzędzia, które wspierają rygorystyczne zasady biznesowe i bezpieczeństwa kosztem wydajności i skalowalności; narzędzia stworzone przy użyciu EUD będą miały zazwyczaj gorszą wydajność niż te utworzone w profesjonalnych środowiskach programistycznych. Chociaż oddzielenie funkcjonalności od wydajności jest prawidłowym oddzieleniem obaw , może doprowadzić do sytuacji, w której użytkownicy końcowi zakończą i udokumentują analizę wymagań i prototypowanie narzędzia, bez udziału analityków biznesowych . W ten sposób użytkownicy określą funkcje wymagane, zanim eksperci będą mieli okazję rozważyć ograniczenia konkretnej aplikacji lub struktury oprogramowania . Wsparcie wyższego kierownictwa dla takich inicjatyw użytkowników końcowych zależy od ich podejścia do istniejącego lub potencjalnego uzależnienia od dostawcy .
Zobacz też
- Automatyczne programowanie
- Obliczenia dla użytkowników końcowych
- Platformy programistyczne o niskim kodzie
- Programowanie w języku naturalnym
- Zastosowanie sytuacyjne
- Inżynieria oprogramowania
Bibliografia
Dalsza lektura
- Cypher, Allen (1993). Zobacz, co robię: programowanie przez demonstrację . Przekazujący Daniel C. Halbert. Wydawca: MIT Press. ISBN 978-0-262-03213-1 .
- Lieberman, Henry (2001). Twoje życzenie jest moim rozkazem: programowanie na przykładzie . Przekazujący Ben Shneiderman. Wydawca: Morgan Kaufmann. ISBN 978-1-55860-688-3 .
- F. Paternò (2013) End User Development: Survey of a Emerging Field for Empowering People , ISRN Software Engineering, vol. 2013, numer artykułu 532659, 11 stron, 2013. doi : 10.1155 / 2013/532659 , 2013
- B. Guo, D. Zhang, M. Imai. Umożliwienie zorientowanego na użytkownika zarządzania we wszechobecnym przetwarzaniu: The Meta-Design Approach, Computer Networks, Elsevier, Vol. 54, nr 16, 2010.
- Burnett, Margaret M. i Scaffidi, Christopher (2011): Rozwój użytkownika końcowego . W: Soegaard, Mads and Dam, Rikke Friis (red.). „Encyklopedia interakcji człowiek-komputer”.
- Kierkegaard, Patrick (2011) Kierkegaard, Patrick (2011). Poprawa rozwoju użytkowników końcowych: ochrona prawna i zgodność z przepisami . Rozwój użytkownika końcowego. Notatki do wykładów z informatyki . Notatki do wykładów z informatyki. 6654/2011. s. 203–217. doi : 10.1007 / 978-3-642-21530-8_16 . ISBN 978-3-642-21529-2 .
Linki zewnętrzne
- Drugie międzynarodowe sympozjum na temat rozwoju użytkowników końcowych
- Konsorcjum EUSES, współpraca zajmująca się badaniami komputerów użytkowników końcowych
- Książka o rozwoju użytkownika końcowego
- Sieć doskonałości Komisji Europejskiej w zakresie rozwoju użytkowników końcowych
- Seria konferencji Międzynarodowe sympozjum na temat rozwoju użytkowników końcowych