Jaki jest lepszy sposób na opisanie procesu „Idiot Proofing” oprogramowania [zamknięte]

13

Dla mnie Idiot Proofing oznacza po prostu upewnienie się, że użytkownik nie może złamać oprogramowania, nawet jeśli spróbuje. Na przykład, jeśli wartość jest odczytywana z pola tekstowego i jest konwertowana na wartość podwójną, jeśli oprogramowanie leżące u podstaw jest odporne na idiotyzm, nie złamie się, jeśli użytkownik wpisze wartość inną niż podwójna.

Niedawno napisałem harmonogram rozwoju, a jeden z elementów nazwano „Idiot proof UI”. Ludzie, z którymi buduję to oprogramowanie, żartobliwie udają obrazę tego terminu, ale widzę, gdzie ten termin naprawdę by go zdenerwował.

Jak można to lepiej powiedzieć?

sooprise
źródło
23
Nazwij to, sprawdzanie ID-10T
Jarrod Nettles
2
Lol, zdałem sobie sprawę z 1337, kiedy przejrzałem ID-10T. ja zawiodłem ...
sooprise
13
To pytanie przypomina mi jedno z moich ulubionych cytatów: „Dzisiejsze programowanie to wyścig pomiędzy inżynierami oprogramowania dążącymi do tworzenia większych i lepszych programów odpornych na idioty, a Wszechświatem próbującym produkować większe i lepsze idioty. Jak dotąd wszechświat wygrywa. „ ~ Rich Cook
KallDrexx,
3
jak wygląda podstawowa inżynieria?
jk.
4
„Nic nie można uczynić niezawodnym, ponieważ głupcy są tak cholernie genialni”.
M.Sameer,

Odpowiedzi:

27

Jeśli dołączasz „Idiot proof UI” jako element harmonogramu, próbujesz po prostu dodać jakość do swojego oprogramowania. Każdy dobrze zaprojektowany system zweryfikuje swoje dane wejściowe i da użytkownikom jasne wskazówki, nie jest to coś, co zostanie umieszczone w harmonogramie jako dyskretny element (który następnie zostanie usunięty, gdy nadejdzie nieunikniony kryzys).

Alternatywnie, jeśli musi to być dyskretny element (wiem, jak niektóre organizacje myślą o planowaniu), „Idiot proof UI” należy zmienić na „Input Validation Library” i przenieść na początek harmonogramu.

Wino z gruszek
źródło
2
+1. Jeśli próbujesz dodać jakąkolwiek weryfikację danych wejściowych po fakcie, już prawie straciłeś. Lepiej mieć jako punkt odniesienia w specyfikacji „oprogramowanie musi z wdziękiem obsługiwać nieprawidłowe dane w dowolnym miejscu”. Dokładne, jak „z wdziękiem” obsługi nieprawidłowych danych wejściowych zależy w dużej mierze od tego, co oprogramowanie robi w tym konkretnym momencie. W przypadku bardzo prostych interfejsów użytkownika (być może bankomatów) może być nawet niemożliwe uniemożliwienie wprowadzenia nieprawidłowych danych wejściowych .
CVn
14
+1. Zabezpieczanie przed idiotami nie jest zadaniem. Odporność na idioty jest konsekwencją dobrego projektu.
S.Lott,
4
Zabezpieczanie przed idiotami jest procesem ciągłym - ponieważ wszechświat produkuje coraz bardziej pomysłowych idiotów
Steven A. Lowe
Choć może się to wydawać niewłaściwe i zbędne, należy wziąć pod uwagę, że zarówno projektanci interfejsów, jak i testerzy beta znali plany i ogólny projekt oprogramowania, i mogą po prostu nie zdawać sobie sprawy (przeoczyć), że coś, co wydaje im się całkowicie oczywiste, jest w rzeczywistości całkowicie zaskakujące dla zwykłego użytkownika. Można to nazwać „testowaniem i debugowaniem decyzji projektowych interfejsu użytkownika”. Sprawdzanie poprawności danych wejściowych to jedno, ponieważ użytkownik powinien wiedzieć, co należy wprowadzić w innym miejscu.
SF.
Do wszystkich zwycięzców: ... cokolwiek zrobisz, zawsze coś zapomnisz. Oprogramowanie jest tak złożone, że zespół, który sprawia, że ​​wszystko jest „idealne” za pierwszym razem, jest prawie nieosiągalny. Dlatego konieczne jest testowanie. Aby wykryć wady i pominięcia, a nawet rzeczy, o których nikt nie pomyślał. Taki „idiotyczny interfejs użytkownika” jest dokładnie tym, czego potrzeba.
Dagnelies,
10

Sprawdzanie poprawności danych wprowadzanych przez użytkowników uważam za termin profesjonalny. Nie widzę jednak nic złego w dowodach idiotyzmu, jeśli są używane w dokumentach wewnętrznych.

Ben Gale
źródło
3
Miałeś mnie przy „sprawdzaniu poprawności danych przez użytkownika”. Idiot proofing to nieprofesjonalny termin, niezależnie od tego, gdzie jest używany.
Robert Harvey
2
Cokolwiek robisz, nie pisz tego na piśmie.
JeffO
6

Hartowanie to dobre słowo. Jeśli ktoś zapyta, powiedz mu, że pierwsze przekazanie oprogramowania jest zwykle napisane dla idealnych scenariuszy, i podobnie jak narzędzia stalowe, oprogramowanie musi zostać „utwardzone” w celu zgrubnego codziennego użytkowania przez prawdziwych klientów.

Robustification jest kolejnym dobrym słowem na ten temat - czynisz kod odpornym na wyzwania, jakie stawiają przed nim prawdziwi klienci.

Oba słowa brzmią fajnie i industrialnie, nie obwiniaj użytkowników ani programistów, i przejdź do sedna sprawy.


BTW, oto stara maskotka Metrowerksa, Arnold, facet, który pomagał nam programiści komputerów Mac hartować i udoskonalać nasz kod za pomocą pieca do obróbki cieplnej, kuźni oraz kowadła i małego młota kowalskiego:

Bob Murphy
źródło
hartowanie ogólnie odnosi się do tolerancji na uszkodzenia podstawowego sprzętu - lub odporności na promienie gamma ;-) solidność może oznaczać wiele rzeczy
Steven A. Lowe
@Steven: Cóż, tak. Ale ma to na celu komunikację z potencjalnie nietechniczną publicznością, a pytanie naprawdę dotyczy tego, jak „zakręcić” to zadanie, aby było smaczne dla tych ludzi.
Bob Murphy
to ma sens; nietechniczni odbiorcy prawdopodobnie widzieli reklamy telewizyjne dla „utwardzonych” laptopów. Pomyślą więc, że można upuścić swoje oprogramowanie 3 stopy na beton ;-)
Steven A. Lowe
@Steven: Tak, a jeśli zobaczą najnowszą reklamę laptopów Toshiba, zdadzą sobie również sprawę, że jeśli nie dadzą ci czasu i zasobów na ulepszenie oprogramowania, doprowadzi to do Apokalipsy Zombie. B ^)
Bob Murphy
4

Programowanie obronne

Tego mnie nauczono. Kiedy musieliśmy wyrywać nasze własne kawałki z drewna.

Jeśli chcesz być na PC, nazwij to programowaniem „antycypacyjnym”.

Steven A. Lowe
źródło
4

Kiedy się uczyłem, nazwaliśmy to kuloodpornym .

Dotyczy to jednak większości innych eufemizmów, które czytałem.

Stephen
źródło
3

Co powiesz na system „tolerujący błędy” lub interfejs użytkownika?

Vinod R.
źródło
3

„Idiot proofing” powinien składać się z obu tych elementów

  • zaprojektowanie interfejsu użytkownika w taki sposób, aby był przyjazny dla użytkownika i prowadził użytkownika do wprowadzania danych zgodnie z oczekiwaniami programistów, oraz

  • testowanie interfejsu użytkownika w celu ustalenia, czy interfejs może zostać uszkodzony, wprowadzając nieoczekiwane wartości danych.

Oba kroki mogą w uzasadniony sposób pojawić się w harmonogramie programowania, w którym projekt jest sprawdzany przez eksperta ds. Doświadczenia użytkownika, a dostarczony kod jest weryfikowany przez testera, aby upewnić się, że nieprawidłowe dane są obsługiwane poprawnie (dla tego, co „poprawnie” oznacza dla aplikacji).

Robert Harvey
źródło
Nie odpowiedziałeś na zadane pytanie.
Robert Harvey
@Robert - wydaje mi się, że tak. Lepszym sposobem na powiedzenie „idiot proofing” jest albo „przejrzenie projektu w celu poprawy przyjazności dla użytkownika”, albo „przetestowanie, czy interfejs obsługuje nieprawidłowe dane” w zależności od tego, co rozumiesz przez „idiot proofing”.
Justin Cave,
OK, to ma sens.
Robert Harvey
2

Zabezpieczanie przed idiotami wymaga znacznie więcej niż prostej weryfikacji danych wejściowych. Nie zawarłbym nawet takiej rzeczy w jej definicji.

Sprawdzanie poprawności danych wejściowych jest procesem polegającym na odkażaniu i sprawdzaniu poprawności danych użytkownika w celu wyeliminowania niedozwolonych / bezsensownych wartości. Powinno to zawsze odbywać się z wszelkimi informacjami pochodzącymi spoza twojego programu, aby wyeliminować oczywiste, a także chronić się przed atakami (np. Ataki typu sql injection).

Uważam, że ochrona przed idiotami jest zbiorem logiki, która zapobiega przypadkowemu wyrządzeniu użytkownikowi poważnych szkód za pomocą środków prawnych.

Na przykład wykonanie rmpolecenia odrzucenia rm -rf /i zamknięcia wariantów nie ma nic wspólnego z sprawdzaniem poprawności lub poprawnością. To doskonale poprawne polecenie. Niestety jest to polecenie, które może i może usunąć wszystkie dane ze wszystkich dysków w systemie Unix / Linux. Dowodzenie przez idioty to odrzuciłoby to polecenie i sugerowałoby rm -rf --i-really-mean-this /, lub w trybie interaktywnym, aby użytkownik napisał odpowiedź twierdzącą po ostrzeżeniu.

Wszystko, co jest destrukcyjne dla systemu, powinno być zabezpieczone przed idiotami. Wszystko, co może powodować potencjalne zażenowanie, może być również kandydatem (np. „Czy na pewno chcesz wysłać tę wiadomość e-mail bez załącznika, nawet jeśli wspomniałeś o niej w tekście?” Oraz „czy na pewno chcesz wysłać tę wiadomość e-mail na adres cała firma? ”)

Zabezpieczanie przed idiotami to współpraca między QA (starając się być najlepszym idiotą) a Programistą (starając się przewidzieć wszystkie te scenariusze i zaprojektować je wokół).

Jeśli chodzi o bardziej przyjazny synonim, czy mogę zasugerować „destrukcyjną analizę ścieżki kodu” lub „włączyć informacje zwrotne od użytkowników dotyczące operacji krytycznych”. Jakkolwiek to nazwiesz, naprawdę powinieneś rozpocząć go jak najwcześniej na etapie projektowania.

niepythonic
źródło
1

„Sprawdzanie rozsądku” dość często działa dość dobrze…

Marlon
źródło
3
Dla mnie „sprawdzanie rozsądku” oznacza mniej więcej to samo, co „stwierdzenie”: upewnienie się, że stan wewnętrzny jest prawidłowy. Niezupełnie to samo, co sprawdzanie poprawności danych zewnętrznych.
Mason Wheeler,
@Mason, myślę, że to sprawdzanie stanu systemu we wszystkich punktach pod kątem prawidłowego wprowadzania, które ma sens. Na przykład sprawdzanie, czy data końcowa jest późniejsza niż data początkowa, oprócz sprawdzania ilości śmieci, itp. Widzę również twój punkt widzenia i zgadzam się z tobą.
Marlon
1

„Obsługa błędów” lub „sprawdzanie poprawności danych wejściowych” byłyby innymi terminami, których użyłbym do tego, co opisujesz. Kuloodporny byłby inny termin, który mogłem zobaczyć w niektórych kręgach, ponieważ chodzi tu o to, aby oprogramowanie było wystarczająco solidne, aby obsłużyć prawie wszystko. Rock solid byłby kolejnym slangowym wyrażeniem, które mogłem sobie wyobrazić, że ktoś też chciałby tutaj użyć.

JB King
źródło
1

„Korekta najgorszego scenariusza”. Ponieważ jako programiści wszyscy wiemy, że jeśli da się to zrobić, to będzie zrobione . Musisz więc być przygotowany na poradzenie sobie z najgorszym przypadkiem ze swoim oprogramowaniem.

Środki bezpieczeństwa to nie tylko sposób ochrony użytkowników przed inwazjami cybernetycznymi, ale także przed sobą. Żyjemy w niedoskonałym świecie z niedoskonałymi użytkownikami.

użytkownik29981
źródło
1

Pozłacanie to grzeczny (i bardzo pozytywnie brzmiący) termin, którego używam, mówiąc o poprawianiu interfejsu użytkownika w jakikolwiek sposób (GUI lub inny).

Jak twierdzisz, ochrona przed idiotami jest największą częścią tego procesu, wraz z ulepszeniami projektu lub przepływu pracy (pomyśl o potwierdzeniu opinii użytkowników końcowych).

Chodzi o to, że możesz swobodnie używać tego terminu w środowisku pracy i jest postrzegany jako cenny proces (po zakończeniu) zarówno przez kierownictwo, jak i użytkowników, nawet jeśli może to zająć trochę czasu (a zatem generalnie kosztuje trochę pieniędzy).

wiele innych terminów związanych z tym procesem (często na koniec cyklu) sprawia, że ​​brzmi to tak:

  • sugeruje, że użytkownicy (często zarządzanie ;-) są głupi
  • jest trudny do osiągnięcia
  • ma niewielką wartość netto

Kojarząc złoto z procesem (metal zwykle utożsamiany z „wartością”, a nie „kosztem”), zauważyłem, że proces zmienił się z wydatków na inwestowanie w sposób myślenia niektórych menedżerów.

To jak otwarcie stwierdzenie, że dopóki to się nie stanie, ten niezgrabny kawałek stali nie jest jeszcze biżuterią. Ale kiedy zostanie pokryty ... to będzie cenny.

moliad
źródło
Widzę, jak ten termin działa dla Twoich odbiorców. Dla większości menedżerów pozłacanie byłoby pierwszą rzeczą odciętą od projektu. Innymi słowy, niepotrzebne części.
Gilbert Le Blanc
Dziwne - termin „złocenie” postrzegam jako oznaczający, że marnujesz czas na robienie czegoś, co nie oferuje żadnej poprawy funkcjonalnej . Zapewnienie prawidłowych wejść itp robi oferta poprawę funkcjonalną i dlatego (według mojej definicji) nie złocenie.
ChrisF
szczegółem jest to, że złocenie nie poprawia oprogramowania wewnętrznego. poprawia jedynie jego zewnętrzny aspekt. Używam go, gdy w grę wchodzą nie-specjaliści, ponieważ nie odnosi się to do konkretnej części procesu końca cyklu. Ludzie to rozumieją, ponieważ po zakończeniu złocenia jest przyjemny, łatwy w użyciu i ma wartość dodaną. to nie tylko oprogramowanie kreślarskie.
moliada
Z mojego doświadczenia wynika, że pozłacanie jest zwykle używane do opisywania oprogramowania pełnego niepotrzebnych funkcji , tj. Jako synonim wzdęcia .
Mark Booth,
tak, właśnie przeprowadziłem małe badania i odkryłem, że termin ten jest czasem używany w literaturze (dzięki za komentarz). Zabawne jest to, że w wielu miejscach, w których pracowałem, idiotyzm był uważany za pozłacanie w tym sensie (tak naprawdę zależy to od rodzaju pracy, którą wykonuję).
moliada
1

Najczęściej używa się w odniesieniu do procesów produkcyjnych, ale myślę, że naprawdę dobrym dopasowaniem jest Poka-Yoke :

„[poka yo-ke] to japoński termin oznaczający„ zabezpieczenie przed awarią ”lub„ zabezpieczenie przed błędami ”

Pierwotnie był opisywany jako baka-jarzmo, ale ponieważ oznacza to „głupotę” (lub „głupotę”), nazwa została zmieniona na łagodniejsze poka-jarzmo.

Mówiąc szerzej, termin ten może odnosić się do wszelkich ograniczeń kształtujących zachowanie zaprojektowanych w produkcie, aby zapobiec nieprawidłowej obsłudze przez użytkownika. ”

Matt Wilko
źródło
1

Częstym terminem w większych sklepach jest także Quality Assurance (QA) .

Jest to ogólny, niejasny cel, który możesz nadać swojemu indywidualnemu znaczeniu w cyklu wydawniczym.

moliad
źródło
0

Nazywamy to sprawdzianem człowieka. Wszyscy jesteśmy idiotami.

Wyatt Barnett
źródło