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ę:

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ż

Bibliografia

Dalsza lektura

Linki zewnętrzne