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