Uzupełnienie materiałów do wykładu 11.

This commit is contained in:
Krzysztof Jassem 2021-12-31 15:32:37 +01:00
parent 0a602a2639
commit 7cbf0c11fe
3 changed files with 1198 additions and 18 deletions

View File

@ -18,13 +18,99 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Aspekty użyteczności\n", "# Aspekty użyteczności w pytaniach... często bez odpowiedzi\n",
"Użyteczność aplikacji powinna być analizowana pod kątem sześciu aspektów:\n", "Na podstawie książki \"Postaw na użyteczność\" Matta Laceya (Wydawnictwo Naukowe PWN, 2019).\n",
"\n",
"Podczas konstruowania systemu informatycznego warto zadać sobie pytania, na które odpowiedź wcale nie musi być oczywista - zależeć może ona od typu aplikacji i środowiska, w którym aplikacja będzie używana."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Definicja użyteczności (...jeszcze jedna)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h3>Użyteczność</h3> \n",
"\n",
"Użyteczność to zestaw cech aplikacji, które sprawiają, że korzysta się z niej <b>łatwo</b>.\n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Przepis na sukces\n",
"\n",
"SUKCES = WARTOŚĆ + ODCZUCIA UŻYTKOWNIKA + SZCZĘŚCIE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Wartość</h3> \n",
"\n",
"Wartość aplikacji to suma korzyści dla użytkownika: \n",
"<ul>\n",
"<li>zadanie jest wykonalne\n",
"<li>zadanie jest łatwiejsze\n",
"<li>zadanie można wykonać szybciej\n",
"<li>aplikacja dostarcza dochód lub oszczędza środki\n",
"<li>dostarczenie rozrywki\n",
"<li>dostarczenie informacji\n",
"<li>edukacja \n",
"</ul>\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Odczucia użytkownika (User Experience)</h3> \n",
"\n",
"Odczucia użytkownika to uczucia i emocje użytkownika doznawane podczas korzystania z aplikacji.\n",
"\n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Szczęście</h3> \n",
"\n",
"\"Szczęście przychodzi do tego, kto jest przygotowany i napotyka okazje.\" (Seneka)\n",
"\n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Sześć magicznych składników użyteczności...\n",
"...czyli sześć aspektów, pod którymi powinniśmy rozpatrywać użyteczność:\n",
"* kontekst, \n", "* kontekst, \n",
"* wprowadzanie danych, \n", "* wprowadzanie danych, \n",
"* wyprowadzanie danych, \n", "* wyprowadzanie danych, \n",
"* responsywność, \n", "* responsywność, \n",
"* łączność z siecią, \n", "* dostęp do sieci, \n",
"* zasoby." "* zasoby."
] ]
}, },
@ -32,42 +118,546 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Kontekst" "# 1. Kontekst"
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Wprowadzanie danych" "<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Kontekst</h3> \n",
"\n",
"Kontekst to środowisko i okoliczności używania aplikacji. Odpowiada na pytania:\n",
"<ul>\n",
"<li>Kto?\n",
"<li>Gdzie?\n",
"<li>Kiedy?\n",
"<li>Jak? \n",
"</ul>\n",
" \n",
"<div>"
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Wyprowadzanie danych" "## 1.1. Kto?\n",
"\n",
"ZASADY:\n",
"\n",
"1. Musisz precyzyjnie poznać użytkownika.\n",
"2. To nie Ty jesteś użytkownikiem.\n",
"3. Każdy jest inny.\n",
"4. Użytkownik ma prawo robić coś innego\n",
" "
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Responsywność" "### 1.1.1. Musisz precyzyjnie poznać użytkownika\n",
"\n",
"* Dla kogo aplikacja będzie stanowić wartość?\n",
" * Wskazówka: (patrz definicja wartości)\n",
"* Kto dokładnie będzie użytkownikiem aplikacji?\n",
" * Wskazówka: wykonaj diagram Venna\n",
"\n",
"<img src=\"obrazy/Diagram Venna.png\" alt=\"Diagram Venna\" width=500px>\n",
"(Przykładowy diagram Venna, Źródło: Matt Lacey, \"Postaw na użyteczność\")\n",
"\n",
"* Jakie są grupy użytkowników?\n",
" * Wskazówka: metoda persony"
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Łączność z siecią" "### 1.1.2. To nie Ty jesteś użytkownikiem\n",
" * Czym użytkownik różni się od siebie?\n",
" * Czym mogą się rożnić oczekiwania innych uzytkowników od Twoich?\n",
" * W stosunku do jakich niedociągnięć użytkownicy mogą być od Ciebie mniej pobłażliwi?\n",
" * Dlaczego TY nie jesteś przeciętnym użytkownikiem Twojej aplikacji?\n",
" * Jakie umiejętności Cię wyróżniają?\n",
" * Dlaczego Tobie będzie łatwiej używać aplikacji?"
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Zasoby" "### 1.1.3. Każdy jest inny\n",
" * Czy użytkownicy aplikacji mogą się różnić w aspekcie dostępności?\n",
" Na dostępność składają się:\n",
" * umiejętności\n",
" * wiedza\n",
" * kultura\n",
" * lokalizacja\n",
" * płeć\n",
" * wiek\n",
" * niepełnosprawność\n",
" * choroby (daltonizm)\n",
" * Czy użytkownicy aplikacji mogą mieć od niej różne oczekiwania?\n",
" * Czy użytkownicy aplikacji mogą chcieć uzyskać dzięki niej różne cele?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.1.4. Użytkownik ma prawo robić coś innego\n",
" * Jakie inne działania będą podejmować użytkownicy podczas pracy z naszą aplikacją?\n",
" * Jak się o tym dowiedzieć?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. 2. Gdzie?\n",
"ZASADA: \n",
"Czy aplikacja będzie stosowana w różnych krajach?\n",
" * Jesli nie, to pomiń dalsze pytania.\n",
" * Jeśli tak, to odpowiedz na dalsze pytania.\n",
"\n",
"PYTANIA:\n",
" * Czy zaplanowałeś wielojęzyczność aplikacji?\n",
" * Jakimi językami posługują się użytkownicy w innych krajach?\n",
" * Zaplanuj tłumaczenie aplikacji\n",
" * Czy użytkownicy innych krajów stosują te same formaty liczb / dat?\n",
" * Jeśli nie, to opracuj algorytmy konwersji"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.3. Kiedy?\n",
"### 1.3.1. Pora (dnia, tygodnia, miesiąca, roku)\n",
"Czy aplikacja może działać w różny sposób w zależności od:\n",
" * pory dnia\n",
" * dnia tygodnia\n",
" * dnia miesiąca\n",
" * pory roku"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.3.2. Czas użytkowania\n",
" * Jak długo trwa jedna sesja użytkowania?\n",
" * daj możliwość korzystania nawet w bardzo krótkim czasie\n",
" * Po jakim czasie użytkownik porzuci aplikację?\n",
" * zachęcaj do pozostania z aplikacją"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.4. Jak?\n",
"### 1.4.1. Okoliczności\n",
" * Czy użytkownik jest w ruchu?\n",
" * Czy użytkownik może wykonywać inne czynności?\n",
" * Jakie?\n",
" * Czy jest skupiony na naszej aplikacji?\n",
" * Czy nasza aplikacja współpracuje z innymi?\n",
" * W jakiej pozycji użytkownik korzysta z aplikacji?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.4.2. Urządzenia\n",
" * Zasada WORE (Write Once Run Everywhere)\n",
" * Plusy\n",
" * szybciej powstaje\n",
" * łatwiejsza w utrzymaniu\n",
" * możliwość dostosowania dla wielu urządzeń\n",
" * przydatna szczególnie w grach (niestandardowy UI)\n",
" * Minusy\n",
" * wymagana znajomość różnych platform\n",
" * wymagana dyscyplina kodu\n",
" * konieczność dostosowania elementów wizualnych do różnych platform\n",
" * konieczność testowania na wielu platformach\n",
" * Różne systemy operacyjne\n",
" * W jakich systamach operacyjnych ma działać aplikacja?\n",
" * Czy wziąłeś pod uwagę ograniczenia narzucane przez różne sklepy?\n",
" * Czy wygląd aplikacji jest zgodny z przyzwyczajeniami użytkowników danego systemu?\n",
"\n",
" * Wielkość urządzenia\n",
" * Czy wziąłeś pod uwagę, że wielkość ekranu ma wpływ na to, co jest wyświetlane?\n",
" * Czy pomyślałeś, jak trzymane jest urządzenie?\n",
" \n",
" * Przyciski sprzętowe\n",
" * Czy przewidziałeś ich wykorzystanie?\n",
" * Czujniki\n",
" * Czy przewidziałeś ich wykorzystanie?\n",
" * Wskazówka: Współczesne urządzenia mogę mieć kilkanaście czujników:\n",
" * ruchu\n",
" * pozycji\n",
" * położenia\n",
" * środowiskowe "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Wprowadzanie danych (Input)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Input</h3> \n",
"\n",
"Information fed into a data processing system or computer (słownik: Miriam - Webster)\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.1. Interakcja użytkownik - system\n",
"### 2.1.1. Wejście dotykowe\n",
" * Czy wziąłeś pod uwagę zalecane minimalne wielkości obszarów dotykowych?\n",
" * iOS: 11 mm\n",
" * Android: 7-10 mm\n",
" * Windows: 7-9 mm\n",
"\n",
" * Czy gesty obsługiwane są standardowo?\n",
" * pojedyncze dotknięcie\n",
" * podwójne dotknięcie\n",
" * przesunięcie palcem po ekranie\n",
" * dotknięcie i przytrzymanie\n",
" * uszczypnięcie / rozciąganie\n",
" * obracanie\n",
" * inne (powstające)\n",
" \n",
" * Czy pomyślałeś o tym, że podczas dotykania ekranu jego część będzie zasłonięta?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1.2. Rysik\n",
" * Czy wziąłeś pod uwagę możliwość wprowadzania danych za pomocą rysika?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1.3. Mysz i klawiatura\n",
"\n",
" * Czy aplikacja będzie obługiwana myszą i / lub klawiaturą?\n",
" * Jeśli myszą, to weź pod uwagę spójność dotyku i uzycia myszy:\n",
" * pojedyncze dotknięcie - pojedyncze kliknięcie\n",
" * podwójne dotknięcie - podwójne kliknięcie\n",
" * prawy przycisk myszy - przytrzymanie\n",
" * przesuwanie myszą - przesuwanie palcem\n",
" * Jeśli klawiaturą, to weź pod uwagę standardową reakcję klawiszy:\n",
" * Tab\n",
" * Enter\n",
" * Ctrl\n",
" * Shift"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1.4. Wejście głosowe\n",
" * Czy wziąłeś pod uwagę możliwość wejścia głosowego?\n",
" * Jeśli tak, to weź pod uwagę ograniczenia techniczne systemów rozpoznawania mowy (np. architektura: klient - serwer)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.2. Ułatwienia wprowadzania danych"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2.1. Minimalizacja wysiłku użytkownika\n",
" * Czy pomyślałeś o zminimalizowaniu wysiłku użytkownika przy wprowadzaniu danych?\n",
" * Wskazówki:\n",
" * proponowane wyboru zamiast ręcznego wprowadzania\n",
" * skróty (szybki dostęp)\n",
" * autosugestie (autouzupełnianie)\n",
" * łączenie wprowadzania danych (np. daty przyjazdu / wyjazdu)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2.2. Optymalizacja formularzy\n",
" * Czy w Twojej aplikacji dane są wprowadzane za pomocą formularzy? Jeśli tak, to odpowiedz na następujące pytania:\n",
" * Czy dobrze posortowałeś listy wyboru?\n",
" * Czy program reaguje już po części wpisanych danych?\n",
" * Czy nad polami są ich etykiety?\n",
" * Czy program podpowiada format danych?\n",
" * Czy zapewniłeś wartości domyślne?\n",
" * Czy pomyślałeś o walidacji danych?\n",
" * Czy błędy pokazywane są w odpowiednim miejscu?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2.3. Altenatywne metody wprowadzania danych\n",
" * Czy wziąłeś pod uwagę alternatywne metody wejścia?\n",
" * wirtualna klawiatura\n",
" * pismo ręczne\n",
" * optyczne rozpoznawanie znaków\n",
" * interaktywne mapy, pozwalające wskazać adres (lokalizację)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.3. Dane z innych źródeł"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Dane z innych źródeł</h3> \n",
"\n",
"Są to dane niewprowadzone przez użytkownika aplikacji.\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3.1. Dane z serwisów sieciowych\n",
" * W jaki sposób nasza aplikacja może pozyskiwać informacje dane z serwisów sieciowych?\n",
" * w formie odpowiedzi na żądanie\n",
" * w formie powiadomień (notyfikacji)\n",
" * w formie SMS-ów\n",
" * Czy pomyślałeś o obsłudze komunikatów o błędach przesłanych z serwisów sieciowych?\n",
" * Czy pomyślałeś o przetworzeniu przesłanych komunikatów (np. skróceniu ich, wyekstrahowaniu tego, co najważniejsze)?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3.2. Dane z systemu operacyjnego\n",
" * Czy nasza aplikacja wykorzystuje dane PIM (Personal Information Manager)?\n",
" * wyszukiwanie danych teleadresowych\n",
" * wyszukiwanie kontaktów\n",
" * sprawdzanie poprawności wprowadzanych danych\n",
" * korzystanie z osobistego kalendarza\n",
" * Czy nasza aplikaca wykorzystuje dane z systemu plików?\n",
" * zdjęcia\n",
" * filmy\n",
" * teksty"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3.3. Dane z innych aplikacji\n",
" * Czy nasza aplikacja wykorzystuje dane z innych aplikacji? \n",
" * Jeśli tak, to w jaki sposób dane są współdzielone?\n",
" * wspólne dane przechowywane lokalnie\n",
" * natywne współdzielenie (wbudowany mechanizm współdzielenia danych)\n",
" * formaty plików (typy MIME: Multipurpose Internet Mail Extensions)\n",
" * metoda \"kopiuj i wklej\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3.4. Dane z czujników\n",
" * Czy nasza aplikacja wykorzystuje dane z czujników? \n",
" * Jeśli tak, to czy zadbałeś o to, aby\n",
" * zapytać użytkownika o uprawnienia\n",
" * wyjaśnić, w jaki sposób aplikacja będzie korzystać z czuujników\n",
" * wyjaśnić, do czego dane te są potrzebne\n",
" * wspomnieć o kwestiach polityki prywatności"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3.5. Inne typy wprowadzania danych\n",
" * Czy istnieją jeszcze inne metody, w jaki aplikacja może pozyskać dane?\n",
" * np. karta z chipem"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 3. Wyprowadzanie danych (wyjście)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Output</h3> \n",
"\n",
"Information produced by a computer (słownik: Miriam - Webster)\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3.1. Wyjście wizualne"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h3>Zasady projektowania wizualnych komponentów wyprowadzania danych:</h3> \n",
" \n",
"<ol>\n",
"<li> \"Cele użytkownika na pierwszym miejscu.\"\n",
"<li> Spełnianie oczekiwań użytkowników\n",
"<li> Uwzględnianie rodzaju urządzenia\n",
"<li> Przestrzeganie norm i konwencji\n",
"</ol>\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3.2. Wyjście niewizualne\n",
" * Czy wziąłeś pod uwagę możliwości wyprowadzania danych w inny sposób niż wizualnie?\n",
" * dźwięki i wibracje\n",
" * kanały komunikacji dla innych aplikacji\n",
" * powiadomienia \"push\"\n",
" * poczta elektroniczna\n",
" * SMS"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 4. Responsywność"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Responsywność</h3> \n",
"\n",
"Cecha aplikacji, która powoduje, że użytkownicy uważają, że mogą uzyskać swój cel szybko - bez straty czasu.\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Responsywność aplikacji to nie to samo co responsive design.**\n",
"> Responsive design oznacza, że to co jest wyświetlane w danym momencie w aplikacji, dostosowuje się do zmieniającej się wielkości ekranu. \n",
"> Pojęcie responsywności jest dużo szersze: aplikacja powinna reagować nie tylko na wielkość ekranu, lecz na akcje użytkownika i działania aplikacji. Szybkość i sposób, w jaki aplikacja odpowiada, przekłada się na doświadczenia użytkownika."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 5. Dostęp do sieci\n",
" * Czy wziąłeś pod uwagę potencjalne problemy z dostępem do sieci:\n",
" * szybkość połączenia może się różnić\n",
" * koszt połączenia może być zmienny\n",
" * połączenie może być niedostępne\n",
" * połączenie może być utracone"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 6. Zasoby"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Resource</h3> \n",
"\n",
"A source of supply, support, or aid, especially one that can be readily drawn upon when needed (www. dictionary.com)\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" > A gdy się zasoby skończą, to ich nie będzie.\n",
" \n",
"Ilość zasobów jest skończona, więc naszym obowiązkiem jest je oszczędzać:\n",
"\n",
" * Energia\n",
" * Pojemność dysku\n",
" * Pojemność pamięci\n",
" * Zasoby procesora\n",
" * Możliwości przesyłu danych"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Podsumowanie\n",
"Użyteczność często rozumiana jest jako synonim łatwości użytkowania aplikacji.\n",
"\n",
"Zapewnienie, aby aplikacja używana była **łatwo** nie jest zadaniem banalnym. Wymaga odpowiedzenia sobie na wiele pytań, na które odpowiedzi mogą być zupełnie różne w zależności od typu aplikacji."
] ]
} }
], ],

View File

@ -18,13 +18,99 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Aspekty użyteczności\n", "# Aspekty użyteczności w pytaniach... często bez odpowiedzi\n",
"Użyteczność aplikacji powinna być analizowana pod kątem sześciu aspektów:\n", "Na podstawie książki \"Postaw na użyteczność\" Matta Laceya (Wydawnictwo Naukowe PWN, 2019).\n",
"\n",
"Podczas konstruowania systemu informatycznego warto zadać sobie pytania, na które odpowiedź wcale nie musi być oczywista - zależeć może ona od typu aplikacji i środowiska, w którym aplikacja będzie używana."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Definicja użyteczności (...jeszcze jedna)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h3>Użyteczność</h3> \n",
"\n",
"Użyteczność to zestaw cech aplikacji, które sprawiają, że korzysta się z niej <b>łatwo</b>.\n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Przepis na sukces\n",
"\n",
"SUKCES = WARTOŚĆ + ODCZUCIA UŻYTKOWNIKA + SZCZĘŚCIE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Wartość</h3> \n",
"\n",
"Wartość aplikacji to suma korzyści dla użytkownika: \n",
"<ul>\n",
"<li>zadanie jest wykonalne\n",
"<li>zadanie jest łatwiejsze\n",
"<li>zadanie można wykonać szybciej\n",
"<li>aplikacja dostarcza dochód lub oszczędza środki\n",
"<li>dostarczenie rozrywki\n",
"<li>dostarczenie informacji\n",
"<li>edukacja \n",
"</ul>\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Odczucia użytkownika (User Experience)</h3> \n",
"\n",
"Odczucia użytkownika to uczucia i emocje użytkownika doznawane podczas korzystania z aplikacji.\n",
"\n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Szczęście</h3> \n",
"\n",
"\"Szczęście przychodzi do tego, kto jest przygotowany i napotyka okazje.\" (Seneka)\n",
"\n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Sześć magicznych składników użyteczności...\n",
"...czyli sześć aspektów, pod którymi powinniśmy rozpatrywać użyteczność:\n",
"* kontekst, \n", "* kontekst, \n",
"* wprowadzanie danych, \n", "* wprowadzanie danych, \n",
"* wyprowadzanie danych, \n", "* wyprowadzanie danych, \n",
"* responsywność, \n", "* responsywność, \n",
"* łączność z siecią, \n", "* dostęp do sieci, \n",
"* zasoby." "* zasoby."
] ]
}, },
@ -32,42 +118,546 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Kontekst" "# 1. Kontekst"
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Wprowadzanie danych" "<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Kontekst</h3> \n",
"\n",
"Kontekst to środowisko i okoliczności używania aplikacji. Odpowiada na pytania:\n",
"<ul>\n",
"<li>Kto?\n",
"<li>Gdzie?\n",
"<li>Kiedy?\n",
"<li>Jak? \n",
"</ul>\n",
" \n",
"<div>"
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Wyprowadzanie danych" "## 1.1. Kto?\n",
"\n",
"ZASADY:\n",
"\n",
"1. Musisz precyzyjnie poznać użytkownika.\n",
"2. To nie Ty jesteś użytkownikiem.\n",
"3. Każdy jest inny.\n",
"4. Użytkownik ma prawo robić coś innego\n",
" "
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Responsywność" "### 1.1.1. Musisz precyzyjnie poznać użytkownika\n",
"\n",
"* Dla kogo aplikacja będzie stanowić wartość?\n",
" * Wskazówka: (patrz definicja wartości)\n",
"* Kto dokładnie będzie użytkownikiem aplikacji?\n",
" * Wskazówka: wykonaj diagram Venna\n",
"\n",
"<img src=\"obrazy/Diagram Venna.png\" alt=\"Diagram Venna\" width=500px>\n",
"(Przykładowy diagram Venna, Źródło: Matt Lacey, \"Postaw na użyteczność\")\n",
"\n",
"* Jakie są grupy użytkowników?\n",
" * Wskazówka: metoda persony"
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Łączność z siecią" "### 1.1.2. To nie Ty jesteś użytkownikiem\n",
" * Czym użytkownik różni się od siebie?\n",
" * Czym mogą się rożnić oczekiwania innych uzytkowników od Twoich?\n",
" * W stosunku do jakich niedociągnięć użytkownicy mogą być od Ciebie mniej pobłażliwi?\n",
" * Dlaczego TY nie jesteś przeciętnym użytkownikiem Twojej aplikacji?\n",
" * Jakie umiejętności Cię wyróżniają?\n",
" * Dlaczego Tobie będzie łatwiej używać aplikacji?"
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Zasoby" "### 1.1.3. Każdy jest inny\n",
" * Czy użytkownicy aplikacji mogą się różnić w aspekcie dostępności?\n",
" Na dostępność składają się:\n",
" * umiejętności\n",
" * wiedza\n",
" * kultura\n",
" * lokalizacja\n",
" * płeć\n",
" * wiek\n",
" * niepełnosprawność\n",
" * choroby (daltonizm)\n",
" * Czy użytkownicy aplikacji mogą mieć od niej różne oczekiwania?\n",
" * Czy użytkownicy aplikacji mogą chcieć uzyskać dzięki niej różne cele?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.1.4. Użytkownik ma prawo robić coś innego\n",
" * Jakie inne działania będą podejmować użytkownicy podczas pracy z naszą aplikacją?\n",
" * Jak się o tym dowiedzieć?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. 2. Gdzie?\n",
"ZASADA: \n",
"Czy aplikacja będzie stosowana w różnych krajach?\n",
" * Jesli nie, to pomiń dalsze pytania.\n",
" * Jeśli tak, to odpowiedz na dalsze pytania.\n",
"\n",
"PYTANIA:\n",
" * Czy zaplanowałeś wielojęzyczność aplikacji?\n",
" * Jakimi językami posługują się użytkownicy w innych krajach?\n",
" * Zaplanuj tłumaczenie aplikacji\n",
" * Czy użytkownicy innych krajów stosują te same formaty liczb / dat?\n",
" * Jeśli nie, to opracuj algorytmy konwersji"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.3. Kiedy?\n",
"### 1.3.1. Pora (dnia, tygodnia, miesiąca, roku)\n",
"Czy aplikacja może działać w różny sposób w zależności od:\n",
" * pory dnia\n",
" * dnia tygodnia\n",
" * dnia miesiąca\n",
" * pory roku"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.3.2. Czas użytkowania\n",
" * Jak długo trwa jedna sesja użytkowania?\n",
" * daj możliwość korzystania nawet w bardzo krótkim czasie\n",
" * Po jakim czasie użytkownik porzuci aplikację?\n",
" * zachęcaj do pozostania z aplikacją"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.4. Jak?\n",
"### 1.4.1. Okoliczności\n",
" * Czy użytkownik jest w ruchu?\n",
" * Czy użytkownik może wykonywać inne czynności?\n",
" * Jakie?\n",
" * Czy jest skupiony na naszej aplikacji?\n",
" * Czy nasza aplikacja współpracuje z innymi?\n",
" * W jakiej pozycji użytkownik korzysta z aplikacji?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.4.2. Urządzenia\n",
" * Zasada WORE (Write Once Run Everywhere)\n",
" * Plusy\n",
" * szybciej powstaje\n",
" * łatwiejsza w utrzymaniu\n",
" * możliwość dostosowania dla wielu urządzeń\n",
" * przydatna szczególnie w grach (niestandardowy UI)\n",
" * Minusy\n",
" * wymagana znajomość różnych platform\n",
" * wymagana dyscyplina kodu\n",
" * konieczność dostosowania elementów wizualnych do różnych platform\n",
" * konieczność testowania na wielu platformach\n",
" * Różne systemy operacyjne\n",
" * W jakich systamach operacyjnych ma działać aplikacja?\n",
" * Czy wziąłeś pod uwagę ograniczenia narzucane przez różne sklepy?\n",
" * Czy wygląd aplikacji jest zgodny z przyzwyczajeniami użytkowników danego systemu?\n",
"\n",
" * Wielkość urządzenia\n",
" * Czy wziąłeś pod uwagę, że wielkość ekranu ma wpływ na to, co jest wyświetlane?\n",
" * Czy pomyślałeś, jak trzymane jest urządzenie?\n",
" \n",
" * Przyciski sprzętowe\n",
" * Czy przewidziałeś ich wykorzystanie?\n",
" * Czujniki\n",
" * Czy przewidziałeś ich wykorzystanie?\n",
" * Wskazówka: Współczesne urządzenia mogę mieć kilkanaście czujników:\n",
" * ruchu\n",
" * pozycji\n",
" * położenia\n",
" * środowiskowe "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Wprowadzanie danych (Input)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Input</h3> \n",
"\n",
"Information fed into a data processing system or computer (słownik: Miriam - Webster)\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.1. Interakcja użytkownik - system\n",
"### 2.1.1. Wejście dotykowe\n",
" * Czy wziąłeś pod uwagę zalecane minimalne wielkości obszarów dotykowych?\n",
" * iOS: 11 mm\n",
" * Android: 7-10 mm\n",
" * Windows: 7-9 mm\n",
"\n",
" * Czy gesty obsługiwane są standardowo?\n",
" * pojedyncze dotknięcie\n",
" * podwójne dotknięcie\n",
" * przesunięcie palcem po ekranie\n",
" * dotknięcie i przytrzymanie\n",
" * uszczypnięcie / rozciąganie\n",
" * obracanie\n",
" * inne (powstające)\n",
" \n",
" * Czy pomyślałeś o tym, że podczas dotykania ekranu jego część będzie zasłonięta?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1.2. Rysik\n",
" * Czy wziąłeś pod uwagę możliwość wprowadzania danych za pomocą rysika?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1.3. Mysz i klawiatura\n",
"\n",
" * Czy aplikacja będzie obługiwana myszą i / lub klawiaturą?\n",
" * Jeśli myszą, to weź pod uwagę spójność dotyku i uzycia myszy:\n",
" * pojedyncze dotknięcie - pojedyncze kliknięcie\n",
" * podwójne dotknięcie - podwójne kliknięcie\n",
" * prawy przycisk myszy - przytrzymanie\n",
" * przesuwanie myszą - przesuwanie palcem\n",
" * Jeśli klawiaturą, to weź pod uwagę standardową reakcję klawiszy:\n",
" * Tab\n",
" * Enter\n",
" * Ctrl\n",
" * Shift"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1.4. Wejście głosowe\n",
" * Czy wziąłeś pod uwagę możliwość wejścia głosowego?\n",
" * Jeśli tak, to weź pod uwagę ograniczenia techniczne systemów rozpoznawania mowy (np. architektura: klient - serwer)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.2. Ułatwienia wprowadzania danych"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2.1. Minimalizacja wysiłku użytkownika\n",
" * Czy pomyślałeś o zminimalizowaniu wysiłku użytkownika przy wprowadzaniu danych?\n",
" * Wskazówki:\n",
" * proponowane wyboru zamiast ręcznego wprowadzania\n",
" * skróty (szybki dostęp)\n",
" * autosugestie (autouzupełnianie)\n",
" * łączenie wprowadzania danych (np. daty przyjazdu / wyjazdu)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2.2. Optymalizacja formularzy\n",
" * Czy w Twojej aplikacji dane są wprowadzane za pomocą formularzy? Jeśli tak, to odpowiedz na następujące pytania:\n",
" * Czy dobrze posortowałeś listy wyboru?\n",
" * Czy program reaguje już po części wpisanych danych?\n",
" * Czy nad polami są ich etykiety?\n",
" * Czy program podpowiada format danych?\n",
" * Czy zapewniłeś wartości domyślne?\n",
" * Czy pomyślałeś o walidacji danych?\n",
" * Czy błędy pokazywane są w odpowiednim miejscu?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2.3. Altenatywne metody wprowadzania danych\n",
" * Czy wziąłeś pod uwagę alternatywne metody wejścia?\n",
" * wirtualna klawiatura\n",
" * pismo ręczne\n",
" * optyczne rozpoznawanie znaków\n",
" * interaktywne mapy, pozwalające wskazać adres (lokalizację)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.3. Dane z innych źródeł"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Dane z innych źródeł</h3> \n",
"\n",
"Są to dane niewprowadzone przez użytkownika aplikacji.\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3.1. Dane z serwisów sieciowych\n",
" * W jaki sposób nasza aplikacja może pozyskiwać informacje dane z serwisów sieciowych?\n",
" * w formie odpowiedzi na żądanie\n",
" * w formie powiadomień (notyfikacji)\n",
" * w formie SMS-ów\n",
" * Czy pomyślałeś o obsłudze komunikatów o błędach przesłanych z serwisów sieciowych?\n",
" * Czy pomyślałeś o przetworzeniu przesłanych komunikatów (np. skróceniu ich, wyekstrahowaniu tego, co najważniejsze)?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3.2. Dane z systemu operacyjnego\n",
" * Czy nasza aplikacja wykorzystuje dane PIM (Personal Information Manager)?\n",
" * wyszukiwanie danych teleadresowych\n",
" * wyszukiwanie kontaktów\n",
" * sprawdzanie poprawności wprowadzanych danych\n",
" * korzystanie z osobistego kalendarza\n",
" * Czy nasza aplikaca wykorzystuje dane z systemu plików?\n",
" * zdjęcia\n",
" * filmy\n",
" * teksty"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3.3. Dane z innych aplikacji\n",
" * Czy nasza aplikacja wykorzystuje dane z innych aplikacji? \n",
" * Jeśli tak, to w jaki sposób dane są współdzielone?\n",
" * wspólne dane przechowywane lokalnie\n",
" * natywne współdzielenie (wbudowany mechanizm współdzielenia danych)\n",
" * formaty plików (typy MIME: Multipurpose Internet Mail Extensions)\n",
" * metoda \"kopiuj i wklej\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3.4. Dane z czujników\n",
" * Czy nasza aplikacja wykorzystuje dane z czujników? \n",
" * Jeśli tak, to czy zadbałeś o to, aby\n",
" * zapytać użytkownika o uprawnienia\n",
" * wyjaśnić, w jaki sposób aplikacja będzie korzystać z czuujników\n",
" * wyjaśnić, do czego dane te są potrzebne\n",
" * wspomnieć o kwestiach polityki prywatności"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3.5. Inne typy wprowadzania danych\n",
" * Czy istnieją jeszcze inne metody, w jaki aplikacja może pozyskać dane?\n",
" * np. karta z chipem"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 3. Wyprowadzanie danych (wyjście)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Output</h3> \n",
"\n",
"Information produced by a computer (słownik: Miriam - Webster)\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3.1. Wyjście wizualne"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-success\">\n",
" \n",
"<h3>Zasady projektowania wizualnych komponentów wyprowadzania danych:</h3> \n",
" \n",
"<ol>\n",
"<li> \"Cele użytkownika na pierwszym miejscu.\"\n",
"<li> Spełnianie oczekiwań użytkowników\n",
"<li> Uwzględnianie rodzaju urządzenia\n",
"<li> Przestrzeganie norm i konwencji\n",
"</ol>\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3.2. Wyjście niewizualne\n",
" * Czy wziąłeś pod uwagę możliwości wyprowadzania danych w inny sposób niż wizualnie?\n",
" * dźwięki i wibracje\n",
" * kanały komunikacji dla innych aplikacji\n",
" * powiadomienia \"push\"\n",
" * poczta elektroniczna\n",
" * SMS"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 4. Responsywność"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Responsywność</h3> \n",
"\n",
"Cecha aplikacji, która powoduje, że użytkownicy uważają, że mogą uzyskać swój cel szybko - bez straty czasu.\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Responsywność aplikacji to nie to samo co responsive design.**\n",
"> Responsive design oznacza, że to co jest wyświetlane w danym momencie w aplikacji, dostosowuje się do zmieniającej się wielkości ekranu. \n",
"> Pojęcie responsywności jest dużo szersze: aplikacja powinna reagować nie tylko na wielkość ekranu, lecz na akcje użytkownika i działania aplikacji. Szybkość i sposób, w jaki aplikacja odpowiada, przekłada się na doświadczenia użytkownika."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 5. Dostęp do sieci\n",
" * Czy wziąłeś pod uwagę potencjalne problemy z dostępem do sieci:\n",
" * szybkość połączenia może się różnić\n",
" * koszt połączenia może być zmienny\n",
" * połączenie może być niedostępne\n",
" * połączenie może być utracone"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 6. Zasoby"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-info alert-success\">\n",
" \n",
"<h3>Resource</h3> \n",
"\n",
"A source of supply, support, or aid, especially one that can be readily drawn upon when needed (www. dictionary.com)\n",
" \n",
"<div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" > A gdy się zasoby skończą, to ich nie będzie.\n",
" \n",
"Ilość zasobów jest skończona, więc naszym obowiązkiem jest je oszczędzać:\n",
"\n",
" * Energia\n",
" * Pojemność dysku\n",
" * Pojemność pamięci\n",
" * Zasoby procesora\n",
" * Możliwości przesyłu danych"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Podsumowanie\n",
"Użyteczność często rozumiana jest jako synonim łatwości użytkowania aplikacji.\n",
"\n",
"Zapewnienie, aby aplikacja używana była **łatwo** nie jest zadaniem banalnym. Wymaga odpowiedzenia sobie na wiele pytań, na które odpowiedzi mogą być zupełnie różne w zależności od typu aplikacji."
] ]
} }
], ],

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB