\n",
"\n",
"Kontekst to środowisko i okoliczności używania aplikacji. Odpowiada na pytania:\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 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",
"metadata": {},
"source": [
"### 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",
"
\n",
"\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",
"metadata": {},
"source": [
"### 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",
"metadata": {},
"source": [
"### 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": [
"
\n",
" \n",
"
Input
\n",
"\n",
"Information fed into a data processing system or computer (słownik: Miriam - Webster)\n",
" \n",
"
"
]
},
{
"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": [
"
\n",
" \n",
"
Dane z innych źródeł
\n",
"\n",
"Są to dane niewprowadzone przez użytkownika aplikacji.\n",
" \n",
"
"
]
},
{
"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 aplikacja 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": [
"
\n",
" \n",
"
Output
\n",
"\n",
"Information produced by a computer (słownik: Miriam - Webster)\n",
" \n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3.1. Wyjście wizualne"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
" \n",
"
Zasady projektowania wizualnych komponentów wyprowadzania danych:
\n",
" \n",
"
\n",
"- \"Cele użytkownika na pierwszym miejscu.\"\n",
"
- Spełnianie oczekiwań użytkowników\n",
"
- Uwzględnianie rodzaju urządzenia\n",
"
- Przestrzeganie norm i konwencji\n",
"
\n",
" \n",
"
"
]
},
{
"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": [
"
\n",
" \n",
"
Responsywność
\n",
"\n",
"Cecha aplikacji, która powoduje, że użytkownicy uważają, że mogą uzyskać swój cel szybko - bez straty czasu.\n",
" \n",
"
"
]
},
{
"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": [
"
\n",
" \n",
"
Resource
\n",
"\n",
"A source of supply, support, or aid, especially one that can be readily drawn upon when needed (www. dictionary.com)\n",
" \n",
"
"
]
},
{
"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 zadania wielu pytań, na które odpowiedzi mogą być zupełnie różne w zależności od typu aplikacji."
]
}
],
"metadata": {
"author": "Krzysztof Jassem",
"email": "jassem@amu.edu.pl",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"lang": "pl",
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
},
"subtitle": "11. Aspekty użyteczności[wykład]",
"title": "Przygotowanie do projektu badawczo-rozwojowego",
"year": "2021"
},
"nbformat": 4,
"nbformat_minor": 4
}