Zaawansowane interfejsy użytkownika

Transkrypt

Zaawansowane interfejsy użytkownika
Zaawansowane interfejsy użytkownika
automatycznie adaptujące swoją strukturę
do preferencji i typowych działań użytkownika
Leszek Pawłowski 148912
Dlaczego są nam potrzebne?
Wraz z galopującym postępem technologicznym wzrasta informatyzacja
naszego społeczeństwa. Komputery wkraczają w kolejne obszary życia
codziennego. Ułatwiają nam pracę (a często są w niej wręcz niezbędne), służą
rozrywce i pomagają przy wielu innych czynnościach. Z roku na rok, a nawet z
miesiąca na miesiąc, człowiek coraz częściej w taki lub inny sposób komunikuje
się z komputerami. A każda kolejna maszyna czy program, z którym mamy do
czynienia to nowy interfejs, którego musimy się nauczyć. W dodatku, używane
przez nas programy stają się coraz bardziej rozbudowane. Posiadają większą
funkcjonalność, oferują nowe możliwości. Mnogość opcji przekłada się
bezpośrednio na skomplikowanie interfejsu użytkownika.
Z drugiej strony, o ile możliwości rozwoju oprogramowania wydają się prawie
nieograniczone, nasza pamięć i czas zdecydowanie takie nie są. Bardzo często
nie chcemy lub nie możemy poznać wszystkich funkcji nowego programu lub
urządzenia, zwłaszcza jeśli za pół roku zastąpimy go nowym, lepszym... I
prawdopodobnie jeszcze bardziej rozbudowanym.
Dlatego bardzo istotne jest rozsądne projektowanie interfejsów użytkownika.
Jest to dziedzina na pograniczu psychologii, inżynierii i sztuki użytkowej.
Poprawnie zbudowany interfejs użytkownika jest schludny, czytelny, przyjazny i
oferuje łatwy dostęp do najczęściej używanych opcji.
Takie statyczne podejście do tworzenia interfejsów sprawdza się w wielu
sytuacjach, ale co jeśli „najczęściej używane opcje” nie są identyczne dla
każdego użytkownika? Ludzie mają w końcu różne potrzeby i preferencje.
Bardzo często coś, co jest czytelne i eleganckie dla jednej osoby, jest zupełnie
nieintuicyjne dla innej.
Można pozwolić użytkownikom dostosowywać interfejs do swoich potrzeb.
Większość współczesnych aplikacji w mniejszym lub większym stopniu na to
pozwala. Naturalnie nie jest to alternatywa dla dobrego projektu, tylko jego
uzupełnienie. Jednakże ręczna adaptacja interfejsu do własnych oczekiwań
wymaga od użytkownika czasu, uwagi i dobrej znajomości programu. O ile
więc efekt jest dobry (dostosowany do indywidualnych potrzeb, czytelny
interfejs), to droga do niego już mniej. Dlatego pracę związaną z adaptacją
interfejsu do osobistych preferencji użytkownika warto zautomatyzować.
Automatycznie dostosowujące się interfejsy mają oczywiście wady. Skoro
bardzo często ani twórca, ani nawet sam użytkownik nie potrafi precyzyjnie
określić swoich potrzeb, to jak ma sobie z tym poradzić maszyna? „Czytanie w
myślach” to w końcu trudna sztuka.
Ponadto, zmienność interfejsu sama w sobie może być wadą. Większość
czynności wykonujemy intuicyjnie. Nie myślimy nad tym, gdzie znajduje się
dany przycisk, okno czy opcja. Znajdujemy je instynktownie. W momencie
kiedy elementy interfejsu nam się przemieszczają, znikają i pojawiają, nasza
intuicja przestaje działać.
O ile więc automatycznie adaptujące swoją strukturę interfejsy mają liczne
zastosowania i są obiecującą alternatywą dla bardziej tradycyjnych rozwiązań,
należy korzystać z nich z rozwagą i umiarem.
Zasady działania, tworzenia i problemy
Definicja
Interfejs użytkownika automatycznie adaptujący swoją strukturę (Adaptive
User Interface, AUI) jest to system oparty o bazę wiedzy, który automatycznie
zmienia swoją funkcjonalność i sposób interakcji z użytkownikiem,
dostosowując się do indywidualnych potrzeb i preferencji osób korzystających z
tego systemu.
Adaptacja może przykładowo polegać na wyborze metod interakcji i kanałów
komunikacji z użytkownikiem. System może zmieniać sposób prezentacji
informacji w zależności od realizowanego zadania lub osoby użytkownika.
Formą adaptacji jest też oferowanie zindywidualizowanej pomocy.
Przed przystąpieniem do programowania
Projektując system typu AUI musimy odpowiedzieć sobie na następujące
pytania:
•
Kto uczestniczy w adaptacji i jaką pełni rolę? Jest to szczególnie
ważne w przypadku aplikacji webowych, w których liczba użytkowników
jest znaczna i reprezentują oni różne kategorie (gość, zarejestrowany
użytkownik, płacący klient, moderator, administrator...). Ważne jest też z
jakimi użytkownikami mamy do czynienia – użytkownicy środowisk
programistycznych z reguły łatwiej opanowują skomplikowane programy
niż użytkownicy pakietów biurowych.
•
Które poziomy interakcji są adaptowane? Zestaw prezentowanych
użytkownikowi informacji? Paski narzędzi i menu? Tematy pomocy i
podpowiedzi?
•
Jakie informacje powinny być brane pod uwagę? Wykorzystywać
można dane zgromadzone w procesie użytkowania oprogramowania albo
w zupełnie inny sposób – na podstawie adresu IP, informacji podanych w
formularzu rejestracyjnym.
•
Jaki jest cel adaptacji? Inne role pełni adaptacja w pakiecie biurowym
(gdzie jej zadaniem jest ułatwienie opanowania funkcjonalności
programu oraz korzystania z najbardziej potrzebnych opcji) niż w
serwisie internetowym (gdzie najczęściej chodzi o zaproponowanie
odpowiedniej oferty usług i towarów, aby zainteresowały one
użytkownika).
•
Kiedy adaptacja powinna występować? Czy powinna ona być
automatyczna, czy półautomatyczna?
Etapy adaptacji
W procesie adaptacji można wyróżnić cztery główne fazy: fazę inicjatywy, fazę
propozycji, fazę decyzji i fazę wykonania.
W fazie inicjatywy, wykrywane są zmiany jakie nastąpiły w potrzebach i celach
użytkownika. Przykładowo, może zostać odkryte, że pewna trudno dostępna z
poziomu interfejsu funkcjonalność jest często używana lub wręcz przeciwnie –
dobrze wyeksponowana opcja nie jest wykorzystywana wcale. Zmianie może
podlegać sam użytkownik, jeśli kilka osób korzysta z tego samego urządzenia.
W fazie propozycji, program proponuje działania zmierzające do poprawienia
dostosowania systemu do potrzeb użytkownika. Może to być na przykład
wyeksponowanie często używanej funkcji przez dodanie skrótu w pasku
narzędzi, usunięcie skrótu do mało używanej funkcji. Propozycja może być
przedstawiana użytkownikowi w systemie półautomatycznym lub funkcji
decyzyjnej w systemie w pełni automatycznym.
W fazie decyzji przeprowadzany jest wybór najlepszej propozycji zmiany i
podejmowana jest decyzja czy zmiany w ogóle dokonywać. W systemach
automatycznych
można
tutaj
posiłkować
się
różnymi
algorytmami
heurystycznymi, opartymi na rachunku prawdopodobieństwa czy logice
rozmytej.
W fazie wykonania decyzja jest wprowadzana w życie.
Narzędzia
W projektowaniu automatycznie adaptujących się interfejsów użytkownika
wykorzystuje się metody projektowania oparte o modele (popularny jest UML).
Baza wiedzy budowana jest często przy pomocy metajęzyków (takich jak XML).
Zaletami XMLa i podobnych języków jest przenaszalność, czytelność i łatwość
wprowadzania zmian (które pociąga za sobą np. każde rozszerzenie
funkcjonalności aplikacji).
Automatycznie adaptujące interfejsy użytkownika popularne są przede
wszystkim tam, gdzie warstwa prezentacji jest wyraźnie oddzielona od reszty
programu, czyli w aplikacjach webowych. Do ich tworzenia są więc stosowane
narzędzia typowe dla tego typu oprogramowania: XHTML, AJAX, PHP czy
kanały RSS.
Systemy AUI korzystają z wielu zdobyczy sztucznej inteligencji (są to przecież
systemy uczące się) takich jak heurystyki, algorytmy oparte na logice rozmytej
i podobne do stosowanych w systemach eksperckich.
Przykłady
Prostym przykładem automatycznie adaptującego się interfejsu użytkownika
jest pasek startowy w systemach Windows, który domyślnie wyświetla tylko
listę najczęściej używanych programów.
Wirtualny asystent pakietu biurowego Microsoft Office podpowiada dopasowane
do kontekstu tematy pomocy.
Edytor grafiki 3D Blender, podczas zapisywania lub eksportowania do pliku
wyświetla listę najczęściej używanych katalogów roboczych.
Edytor tekstowy pakietu Open Office w chwili kiedy to piszę, podpowiada mi
dłuższe słowa, które użyłem w tekście już kilkakrotnie wcześniej.
Automatycznie adaptujące się interfejsy są wykorzystywane przez wiele portali
i stron internetowych. Przykładowo serwis YouTube automatycznie dostosowuje
język prezentacji na podstawie adresu IP (lub danych konta użytkownika) oraz
proponuje filmy w oparciu o historię filmów oglądanych wcześniej przez
zalogowanego użytkownika.
Serwis last.fm analizuje listę słuchanych przez nas utworów i za pomocą bazy
tagów i kategorii, podpowiada nam inne utwory, które mogą trafić w nasze
gusta.
Serwis społecznościowy facebook podpowiada aplikacje i rozszerzenia na
podstawie naszych wcześniejszych wyborów oraz wyborów naszych przyjaciół.
A naciągając lekko definicję AUI, można powiedzieć, że reklamy dobierane pod
kątem informacji zawartych w koncie użytkownika portalu (lub zdobytych w
inny sposób) też są przykładem tego typu systemu.
Podsumowanie
Programiści – osoby z dużym doświadczeniem w korzystaniu z komputerów łatwo zapominają jak ważnym elementem oprogramowania jest przyjazny i
prosty interfejs użytkownika. Świadczy o tym chociażby ogromna popularność
systemów Windows, którą nie mogą poszczycić się teoretycznie lepsze i
oferujące większe możliwości (a w dodatku w większości darmowe!)
dystrybucje GNU/Linux. Dopiero niedawno systemy Microsoftu zaczynają tracić
na popularności, właśnie dzięki pojawieniu się bardziej egalitarnych dystrybucji
Linux takich jak Ubuntu. Projektowanie takich interfejsów jest sztuką
pogodzenia wielości funkcji programów z prostą formą ich prezentacji.
Automatyzacja wyboru najważniejszych dla użytkownika opcji wydaje się być
jedną z dróg do celu.
Póki co, automatyczna adaptacja struktury do potrzeb użytkownika jest raczej
dodatkiem do tradycyjnie projektowanych interfejsów niż ich podstawą. Dobrze
pokazuje to większość przykładów. Wraz z rozwojem sztucznej inteligencji i
psychologii, a także coraz większym skomplikowaniem używanych przez nas
programów, te techniki będą rosnąć na znaczeniu, ale wydaje się, że jeszcze
długo w trudnej sztuce projektowania interfejsów główne rolę będą pełnić
inżynier tworzący program oraz sam użytkownik, najlepiej znający swoje
potrzeby.
Literatura
Prezentacje z kursu Adaptive User Interfaces:
http://www.cc.gatech.edu/computing/classes/cs8113d_94_fall/homepage.html
[IA Summit 2007] 'Adaptive Interfaces' Presentation:
http://www.poetpainter.com/thoughts/article/ia-summit-2007-adaptiveinterfaces-presentation
Adaptive User Interfaces Based on Models and Software Agents:
http://www.isys.ucl.ac.be/bchi/publications/Ph.D.Theses/Lopez-PhD2005.ppt