wersja mobilna
Online: 733 Czwartek, 2016.12.08

Technika

Sekrety rozkładania akcji w czasie

czwartek, 16 listopada 2006 16:57

Za sekret dobrej komedii uważa się takie rozłożenie napięcia w czasie spektaklu, aby kwestia z puentą wywarła na widowni możliwie najsilniejsze wrażenie. Przy projektowaniu interakcji użytkownika z oprogramowaniem urządzenia, rozłożenie w czasie ich wzajemnych kontaktów jest równie istotne, ale siła oddziaływania powinna być minimalna. Interfejs użytkownika, podobnie jak muzyka w filmie, nie powinien absorbować. Użytkownicy za pośrednictwem interfejsu dążą do własnych celów, i na tych celach, a nie na interfejsie, ich uwaga powinna być skupiona. Dialog programów z urządzeniami jest nieodłącznie związany z ich właściwościami, a jego rozłożenie w czasie wymaga w trakcie projektowania przemyślanych decyzji. W niniejszym artykule będzie mowa o czasie reakcji, pulsujących LED, czasie bezczynnego oczekiwania i o tym, jak powinno się obchodzić z nieuniknionymi opóźnieniami.

Za sekret dobrej komedii uważa się takie rozłożenie napięcia w czasie spektaklu, aby kwestia z puentą wywarła na widowni możliwie najsilniejsze wrażenie. Przy projektowaniu interakcji użytkownika z oprogramowaniem urządzenia, rozłożenie w czasie ich wzajemnych kontaktów jest równie istotne, ale siła oddziaływania powinna być minimalna. Interfejs użytkownika, podobnie jak muzyka w filmie, nie powinien absorbować. Użytkownicy za pośrednictwem interfejsu dążą do własnych celów, i na tych celach, a nie na interfejsie, ich uwaga powinna być skupiona. Dialog programów z urządzeniami jest nieodłącznie związany z ich właściwościami, a jego rozłożenie w czasie wymaga w trakcie projektowania przemyślanych decyzji. W niniejszym artykule będzie mowa o czasie reakcji, pulsujących LED, czasie bezczynnego oczekiwania i o tym, jak powinno się obchodzić z nieuniknionymi opóźnieniami.

Każdą czynność człowiek wykonuje w naturalnym dla siebie tempie. Jeśli idzie z kimś innym, idącym w tempie nieco szybszym lub wolniejszym od jego naturalnego, nie idzie mu się tak dobrze, jak z kimś o tym samym tempie chodzenia. Z wzajemnym oddziaływaniem użytkownika z interfejsem jest podobnie. Najprostszym takim przypadkiem jest wyświetlacz, który natychmiastowo nie nadąża za użytkownikiem, wywołując jego irytację. Za przykład może posłużyć porównanie dwóch telefonów komórkowych. Jeden o znacznie bogatszym interfejsie, zrealizowano na wyświetlaczu wysokiej rozdzielczości z wykorzystaniem koloru i ikon. Drugi jest monochromatyczny o niższej rozdzielczości i oczywiście niższej cenie. Droższy kolorowy telefon wykazuje niewielkie opóźnienie w stosunku do naciskanych klawiszy. Przyczyną jest prawdopodobnie większe obciążenie procesora, wymagane do odświeżania wyświetlacza lub jego być może nieudolne zaprogramowanie. Przy szybkim naciskaniu klawiszy wyświetlacz pozostaje nawet o trzy ruchy w tyle. W tańszym telefonie mniej ambitnego producenta wyświetlanie jest natychmiastowe, przynajmniej w dostrzegalnych przez użytkownika granicach. Tak szybkie sprzężenie zwrotne daje użytkownikowi satysfakcję posiadania kontroli nad sprzętem. Można sobie wyobrazić, jak denerwujące (i niebezpieczne) byłyby dla kierowcy samochodu opóźnienia reakcji pojazdu.

Przyjęta na użytek dyskusji o użyteczności sprzętu „reakcja natychmiastowa” jest na tyle szybka, żeby użytkownik nie zauważył opóźnienia. Dawno już ustalono, że wystarczy, aby opóźnienie to nie było dłuższe od 100ms. Doświadczenia dowiodły także, że użytkownicy preferują opóźnienia stabilne. Bardziej im przeszkadza zmienność opóźnienia, nawet jeśli średnia jego wielkość jest mniejsza. Użytkownikowi nie tyle zależy na oszczędności czasu, ile na wygodzie. Jak na ironię, droższy ale powolniejszy telefon wiele czynności może wykonywać szybciej niż ten tańszy. Bogatszy interfejs pozwala na realizację niektórych akcji mniejszą liczbą naciśnięć klawiszy. Ale tak jak to bywa ze stosunkowo krótkimi sekwencjami działania, nie jest ważne, jak długo trwają, tylko jak długimi się wydają.

Wracając do porównania z samochodem, wystarczy porównać jazdę z szybkością 60km/h w ciągu 30 minut z jazdą 90km/h przez 10 minut, staniem w korku przez 8 minut i dalszą jazdą 90km/h w ciągu 10 minut. Chociaż drugi przejazd jest krótszy, to przymusowy postój czyni go bardziej frustrującym od pierwszego. Z obu przykładów, telefonu i samochodu, widać, że użytkownik nie lubi narzucania mu niekontrolowanego tempa.

Wyszukane ikony nie mogą zrekompensować ciągłej irytacji, powodowanej przez nienadążanie interfejsu za klawiszami. Całkowity czas wymagany do nawiązania połączenia, czy wysłania wiadomości tekstowej, nie jest istotny. Najważniejsza dla użytkownika jest wygoda działania w narzuconym przez siebie tempie wraz ze świadomością, że tempo to jest właściwe również i dla używanego urządzenia. Jeżeli użytkownik jest zmuszony do oczekiwania na reakcję urządzenia, tempo jest narzucane przez urządzenie, co użytkownik zawsze odbiera jako dyskomfort. Interfejsy użytkownika są jak ubrania. Jeżeli wyglądają dobrze na pierwszy rzut oka, sprzedają się dobrze, ale jeśli klient nie czuje się w nich wygodnie, nie będą miały powodzenia. Jeśli interfejs nie będzie działał we właściwym tempie, użytkownik nigdy nie będzie go lubił.

Szybkie sprzężenie zwrotne

W niektórych działaniach występują opóźnienia nieuniknione. Uzupełniając każde naciśnięcie klawisza krótkim dźwiękiem daje się użytkownikowi natychmiastowy sygnał zwrotny o zapoczątkowaniu akcji, dzięki któremu łatwiej mu tolerować krótkie opóźnienie osiągnięcia przez wyświetlacz stanu końcowego. Niekiedy przyczyną tego jest za mała moc obliczeniowa procesora, potrzebna do wygenerowania obrazu na wyświetlaczu, albo wykresu ostatniej aktywności sterowanego procesu. W niektórych aplikacjach obraz jest tworzony poza ekranem, a potem gotowy kopiowany do wyświetlacza w jednej operacji. Dzięki takiemu rozwiązaniu unika się migotania obrazu. Jednak czasem, gdy użytkownik może obserwować proces stopniowego powstawania obrazu, łatwiej toleruje opóźnienie. Taki sposób wyświetlania może służyć jako wskaźnik postępu operacji.

Czas oczekiwania

Na użytkownika wywierają wpływ także inne czynniki czasowe, niezwiązane z szybkością działania układu. Irytować go mogą akcje rozpoczynające się w niespodziewanych momentach. Taką nagłą akcją jest czas oczekiwania. Gdy zmienianie nastawień urządzenia wymaga wielu kroków, należy unikać pozostawiania nastawień już zmienionych, ale jeszcze nie zaakceptowanych. Odpowiedni czas oczekiwania, którego odliczanie wówczas się rozpoczyna, gwarantuje, że układ nie zostanie pozostawiony w nieskończonym oczekiwaniu na końcowe naciśnięcie klawisza. Naciśnięcie to miało zaakceptować jakieś zmiany wcześniej wprowadzone przez innego być może użytkownika. Z tego rodzaju czasem oczekiwania wiążą się liczne problemy. Jeden pozostawia użytkownikowi czas na decyzję, jaki ma być następny krok, gdy krok początkowy został skasowany. Ocena czasu odczytu ekranu może być optymistyczna, jeśli użytkownik jest dobrze obznajomiony z urządzeniem. Ale nawet kilkuminutowy czas oczekiwania może mu nie wystarczyć, jeśli będzie chciał poradzić się kolegi lub zajrzeć do podręcznika. Użytkownik może wprowadzić urządzenie w stan mylący. Zanim przywołany ekspert zdoła je zobaczyć, wyjdzie ono z budzącego konfuzję stanu. Inne niebezpieczeństwo może powstać, gdy czas oczekiwania rozpocznie się w czasie, gdy użytkownik zbliża palec do ostatniego klawisza sekwencji. Użytkownik może nie być pewny, co zdarzyło się najpierw, początek odliczania czasu oczekiwania, czy zakończenie sekwencji. Może pozostawać w niepewności aż do momentu, gdy zajdą zmiany, które chciał wywołać. Można tego uniknąć, pokazując zegar przez kilka ostatnich sekund czasu oczekiwania, dzięki czemu użytkownik może się orientować, kiedy czas oczekiwania dobiega końca.

Krótkie czasy oczekiwania mogą być bardzo frustrujące. Na przykład człowiek wchodząc do biura odszukuje numer telefonu, wprowadza go do telefonu bezprzewodowego, i dla przeprowadzenia rozmowy przechodzi do następnego pomieszczenia. Gdy już usiadł w fotelu, w telefonie kończy się czas oczekiwania i przed naciśnięciem klawisza „połącz” numer znika z ekranu. Najprostszym sposobem uniknięcia takich niespodzianek jest nie stosowanie czasu oczekiwania w ogóle. Niestety, w niektórych zastosowaniach częściowa i przypadkowa zmiana krytycznych dla bezpieczeństwa ustaleń stanowi zbyt duże ryzyko, aby można było dopuścić do pozostawienia układu w zawieszeniu przez czas nieokreślony. Często zastosowania czasu oczekiwania wymagają względy bezpieczeństwa. Jeśli np. ktoś zapomni karty kredytowej bankomacie, lepiej będzie, gdy wprowadzony PIN nie pozostanie aktualny w nieskończoność. Następny klient mógłby bowiem skorzystać z okazji i ogołocić konto. Podobnie, czas oczekiwania jest nieodzowny w zarządzaniu trybami oszczędzania zasilania.

Niekiedy niezbędność czasu oczekiwania wynika z samej natury sterowanego systemu. Na przykład, gdy włącza się rzutnik, obraz na ekranie pojawia się z niewielkim opóźnieniem spowodowanym rozgrzewaniem się żarówki projektora. Niecierpliwy użytkownik może pomyśleć, że włącznik nie zadziałał, i naciśnie go raz jeszcze. Jeżeli jest to przełącznik „włączanie-wyłączanie”, układ zostanie wtedy wyłączony. W takim przypadku użytkownik powinien zostać zmuszony do odczekania czasu oczekiwania wymaganego na rozgrzanie się żarówki. Czasem warto uzupełnić włącznik o sygnał sprzężenia zwrotnego, np. migającą w tym czasie LED i postarać się przewidzieć, co zniecierpliwiony użytkownik może zrobić, ignorując ten sygnał. Jeśli jest prawdopodobne, że naciśnie ten włącznik ponownie, można na pewien czas uniemożliwić jego działanie, albo oddzielić wyłącznik od włącznika.

Migotanie

W interfejsie użytkownika najczęściej upływ czasu oczekiwania sygnalizuje się migotaniem LED, albo migotaniem napisu na wyświetlaczu. Częstotliwości migotania używa się zwykle do sygnalizacji, czy sygnał jest pilny, czy jedynie informujący. Stopień wypełnienia 50% wydaje się naturalny dla LED. Inaczej jest w przypadku tekstu. Jeśli w czasie wyłączenia tekst nie jest widoczny, użytkownik przez połowę czasu odczytu będzie oczekiwał na jego pojawienie się. Często się zdarza, że tekst pojawia się na wyświetlaczu z pewnym opóźnieniem, a znika natychmiastowo. Jest więc czytelny przez mniej niż 50% czasu całkowitego. Czytelność migoczącego tekstu można znacznie poprawić zwiększając współczynnik wypełnienia migotania do np. 75%. Optymalna wielkość tego współczynnika zależy w pewnym stopniu od długości migoczącego tekstu i rodzaju od wyświetlacza.

Przeoczenie

Komputer osobisty jest pierwszym punktem odniesienia dla użyteczności urządzenia. Projektowanie dla komputera tym różni się od projektowania dla urządzenia wbudowanego, że użytkownik przez dłuższy czas ześrodkowuje swoją uwagę na komputerze. Przyjmuje się, że użytkownik patrzy na wyświetlacz, gdy coś się na nim zmienia. Ale urządzenia wbudowane nie przyciągają tak silnie uwagi użytkownika. Migotanie LED w telefonicznym automacie zgłoszeniowym sygnalizuje odebranie wiadomości. Przykładowo automat taki wysyła co trzy sekundy dwa krótkie błyski. Ale szybki rzut oka na aparat, znacznie krótszy od trzech sekund, może wypaść pomiędzy błyskami, przyczyniając się do przeoczenia sygnału. Takie doświadczenie może nauczyć użytkownika nieco dłuższego obserwowania telefonu. W ten sposób automat właścicielowi długim cyklem sygnalizacji swojego stanu dyktuje właścicielowi sposób obserwacji.

Szanowanie czasu użytkownika

Tworzony przez programistę program w sposób naturalny nie wcześniej domaga się informacji, niż wtedy kiedy jest mu potrzebna. Ale dla użytkownika nie zawsze jest to wygodne. Na przykład jakaś kalibracja wymaga wprowadzenia wielkości ciśnienia, która jest potrzebna dopiero w połowie trwającej ok. 10 minut procedury. A więc, po upływie 5 minut od rozpoczęcia procedury kalibracyjnej, urządzenie zatrzymuje się, i domaga się od użytkownika wprowadzenia ciśnienia atmosferycznego. W praktyce, użytkownik wiedząc, że procedura potrwa ok. 10 minut, często odchodzi albo zajmuje się czymś innym. Odkrycie, że procedura została zatrzymana celem wprowadzenia danych jest frustrujące. Gdyby można je było wprowadzić na samym początku, na długo przed momentem, w którym je program potrzebuje, użytkownik miałby czas na inne zajęcia.

Interfejsy wielu odtwarzaczy DVD lekceważą czas użytkownika. Zmuszają go często do oglądania wbrew woli zwiastuna filmu i prezentacji praw autorskich. Legaliści, co prawda, uważają to za potrzebne, ale dla porównania, czytelnik książki nigdy nie jest zmuszany do czytania przez 10 sekund analogicznych informacji, i przewraca kartki wtedy, kiedy chce. Projektant urządzeń powinien pamiętać, że narzucanie użytkownikom prawnie i marketingowo wątpliwych treści jest lekceważeniem ich czasu. Dawniej taśmy wideo do uruchomienia magnetowidu wymagały naciśnięcia tylko jednego klawisza. Teraz po wybraniu menu DVD, aby przejść do odtwarzania, potrzeba kilkusekundowej sekwencji przerw i poleceń. Projektanci widocznie uważają, że jest to wizualnie imponujące, ale zapominają, że odbiera użytkownikowi kontrolę i wymusza na nim priorytety czasowe. Pominięcie części wstępnej jest czasami możliwe za pomocą przycisku przyspieszonego przesuwu, ale niewielu użytkowników tę możliwość odkrywa. Trzeba zatem zawsze zakładać, że użytkownikowi się spieszy, i rzadko kiedy zechce poświęcić kilka dodatkowych sekund na zapoznawanie się z dodatkowymi informacjami, bez względu na to, jak są one ważne i jak silne wrażenie mogą wywierać. Porównanie czasu spędzanego na oglądaniu filmu z 10 sekundami oczekiwania na menu nie ma tu znaczenia. Chodzi tu o to, kto kontroluje i ustala tempo. Nie ma znaczenia, jak dużo czasu się zyskuje lub traci. Najważniejsze jest poczucie użytkownika, że to on nadaje tempo i to on wszystko kontroluje.

Proszę czekać

Z rozpoczęciem każdej akcji urządzenia trwającej od 1 do 10 sekund powinno się poinformować użytkownika, że musi poczekać, ale bieżące pokazywanie jej procentowego wykonania nie jest potrzebne. Jednak powyżej 10 sekund użytkownikowi należy się informacja, czy czas do zakończenia akcji jest na tyle krótki, że powinien poczekać, czy że przez ten czas może zająć się czymś innym.

Naturalnym wskaźnikiem opóźnienia jest licznik odliczający pozostałe do końca sekundy. Niestety, czas ten nie zawsze jest dokładnie znany. W zastosowaniach sterujących układ może oczekiwać na osiągnięcie zdefiniowanej uprzednio temperatury lub ciśnienia, albo czekać na reakcję innego urządzenia lub sieci. Listwy postępu nie muszą dokładnie przedstawiać tempa ilustrowanego procesu. Wystarczy zależność przybliżona. W przypadku oczekiwania osiągnięcia przez system docelowej temperatury listwa postępu może pokazywać różnicę temperatur, której zależność od czasu jest nieliniowa.

Badania wykazały, że jeśli listwa postępu wypełnia się powoli, użytkownik ma tendencję do uznawania za przyczynę powolność komputera. W przypadku, gdy listwa postępu wypełnia się wielokrotnie, ale szybko, użytkownik uznaje komputer za szybki, ale przeciążony. Taki sposób przedstawiania postępu nie informuje, jaka upłynęła część całkowitego czasu.

Animacje

Czasem do pokazywania stopnia zaawansowania procesu używa się animacji, która nie informuje o dokonanym postępie. W interfejsach terminali znakowych systemu Unix jednym ze sposobów jest tworzenie wirującej linii przez wyświetlanie sekwencji znaków | \ - /, z których każdy kolejno zastępuje poprzedni. Tworzą one iluzję wirującej w przestrzeni tarczy, sygnalizującej ciągłe działanie systemu. Innym sposobem jest pokazywanie trzech kropek (elipsy), które kolejno się wymazują i odtwarzają.

Jeśli dostępny jest graficzny interfejs użytkownika, animacje mogą być bardziej wyszukane. W medycznym stymulatorze mięśni w trakcie wysyłanie impulsów elektrycznych stymulujących mięśnie brzucha wyświetla się obraz mężczyzny wykonującego przysiady. W MS Windows w czasie kopiowania lub przenoszenia plików widać frunące kartki. Animacja powinna być w jakiś sposób powiązana z dokonującym się procesem. W Windows XP można odłączyć kabel sieci w trakcie kopiowania, a animacja nie zostanie przerwana. Wadą samej animacji jest brak wskazań stopnia zaawansowania odbywającego się procesu. Można użyć animacji, która równocześnie informuje o postępie procesu, albo oprócz animacji zastosować listwę postępu. Jednak w niektórych przypadkach czasu zakończenia nie da się z góry określić i wtedy pozostaje animacja bez wskazywania postępu. Ale animacji nie należy nadużywać. Są przeznaczone do użycia w czasie, gdy użytkownik czeka, i nie zajmuje się innymi działaniami urządzenia. Ale nieustanna animacja lub pulsowanie mogą niepotrzebnie rozpraszać uwagę.

Polityka kasowania

Jeśli akcja trwa dłużej niż kilka sekund, powinno się pozostawić użytkownikowi możliwość jej skasowania. W przypadku niektórych procesów fizycznych skutek takiego skasowania może nie być natychmiast widoczny, i wtedy trzeba jakoś zasygnalizować, że polecenie skasowania zostało przez urządzenie zaakceptowane. Krótkie akcje nie wymagają takiej opcji – pojawienie się przycisku kasowania parusekundowej akcji może budzić irytację. Zwykle opcję kasowania stosuje się dla akcji dłuższych od 10 sekund. Decyzja ta bardzo zależy jednak od tego, czy użytkownik potrafi przewidzieć stan systemu po skasowaniu akcji. Jeżeli wybrał skasowanie pewnej liczby rekordów, to może założyć, że jeśli skasował akcję w połowie, to prawdopodobnie została usunięta połowa rekordów.

Innym przykładem może być wykonywanie autokalibracji systemu. Jeżeli skasowanie kalibracji jest równoznaczne z usunięciem poprzedniej kalibracji, a nowa jeszcze nie została dokonana, to system zostaje bez kalibracji. Jest to stan gorszy niż poprzedni z kalibracją przestarzałą. W takim przypadku lepszym rozwiązaniem wydaje się uniemożliwienie skasowania rozpoczętej procedury, niezależnie od spowodowanego tym opóźnienia.

Umiejscowienie przycisku kasowania powinno zostać starannie przemyślane. Zwykle przycisk ten pojawia się z chwilą rozpoczęcia akcji, a po jej zakończeniu zamiast niego pojawia się przycisk „OK”. Ten ostatni służy użytkownikowi do potwierdzenia wyników akcji, albo do zamknięcia okienka dialogu. Przyciski „Kasowanie” i „OK” nie muszą być dostępne równocześnie. Nie jest dobrym rozwiązaniem umieszczenie ich w tym samym miejscu, gdy po zakończeniu akcji przycisk „Kasowanie” jest zastępowany przez przycisk „OK”. Może się bowiem zdarzyć, że gdy użytkownik chce nacisnąć przycisk „Kasowanie”, właśnie akcja się skończy i wbrew swoim zamiarom naciśnie „OK”.

Zdalne sterowanie

Właściwości czasowe aplikacji z wykorzystaniem zdalnego sterowania mogą czasem być zaskakujące z powodu opóźnienia pomiędzy poleceniem a jego wykonaniem. Gdy użytkownik wydaje polecenie, powolna na nie reakcja prowokuje go często do powtórzenia polecenia. Jednym ze sposobów eliminacji skutków takiej reakcji jest zastąpienie poleceń względnych bezwzględnymi. W przypadku z mikroskopem, jeśli polecenie dwukrotnego powiększenia obrazu zostałoby powtórzone, to obraz zostałby powiększony czterokrotnie. Polecenie to można zmienić na bezwzględne, przez odniesienie powiększenia do określonej wielkości początkowej, na przykład 100%. Polecenie zmiany do 400% zawsze oznaczałoby wtedy czterokrotnie większe, niezależnie od liczby jego powtórzeń.

Innym sposobem do stosowania w powolnych systemach jest wyraźne wyświetlanie wszystkich kolejnych poleceń. Uzmysłowi to użytkownikowi dokładnie, ile poleceń musi urządzenie wykonać, aby za nim nadążyć. Może to być bardzo proste, jak wykres słupkowy, wykazujący liczbę poleceń do wykonania, ale niekoniecznie musi pokazywać je wszystkie dokładnie. Najbardziej znanym przykładem takiego mechanizmu jest kolejka drukowania na ekranie komputera. Po zażądaniu wydruku, gdy nie widać wysuwającego się z drukarki dokumentu, można poczuć chęć zażądania go ponownie. Ale gdy kolejka jest widoczna, wiadomo, że polecenie jest wykonywane, i należy spokojnie czekać.

(KKP)