\chapter{Dokumentacja}

\section{Zakres projektu}
\enlargethispage{3\baselineskip}

\begin{figure}[h!]
\centering
\includegraphics[width=1\textwidth]{zakres_projektu.png}
%\caption{Wykres z Google Trends}
\label{fig:zakres_title}
\end{figure}

\subsection{Cele projektu}

Celem projektu jest zbudowanie aplikacji na telefon, która z jednej strony pozwala opiekunom na przydzielanie zadań dzieciom, a z drugiej wykorzystując elementy gamifikacji motywuje dzieci do ich wykonania. Dzieci tworzą i rozwijają swoje awatary.

\subsection{Wyszczególnione produkty projektu}

Aplikacja mobilna z pełniąca dwie funkcje - dla dziecka i opiekuna, serwer, baza danych, dokumentacja biznesowa (zasady korzystania), wymagania, zakres projektu, prace dyplomowe, dokumentacja REST API, co najmniej 50 obrazków ekwipunku, raport z przeprowadzonych testów. 

\subsection{Opis zakresu produktów oczekiwanych przez klienta}

Załącznik nr 1: Wymagania projektu w podrozdziale \ref{wymagania_projektu}

\subsection{Wymagania projektowe}

Z uwagi na specyfikę grupy docelowej, którą są dzieci w wieku wczesnoszkolnym i najczęściej ich rodzice, priorytetami w projekcie są łatwość użycia, interesująca treść i estetyczny wygląd aplikacji. Należy przeprowadzić testy użyteczności. Trzeba zapewnić odporność na błędy i spójność prezentowanych danych pomiędzy instancjami aplikacji, ponieważ mają decydujący wpływ na jakość produktu niezależnie od charakterystyki użytkownika. 

\subsection{Wymagania niefunkcjonalne}

Urządzenie mobilne (smartfony, tablety) z systemem Android w wersji 4.1+, dostęp do internetu, email.

\subsection{Granice projektu}

Aplikacja umożliwia nawiązywanie relacji opiekun dziecko, w ramach której delegować można zadania. Aplikacja nie dostarcza narzędzi do realizacji tych zadań, tj. gier edukacyjnych, przypomnień, edytora tekstu itp. W wersji 1.0 użytkownik nie będzie miał możliwości zakupu dodatkowych przedmiotów; aplikacja nie będzie miała elementów płatnych. Na razie nie ma w planach wersji aplikacji na iOS. 

\subsection{Kryteria akceptacji produktu}

Kryterium akceptacji produktu to jego publiczne udostępnienie w sklepie z aplikacjami (Google Play lub podobne). Poza tym do akceptacji projektu konieczne jest zakończenie testów w grupie dzieci i w miarę możliwości wdrożenie odkrytych niedociągnięć, pozytywna opinia pedagoga i dydaktyka.

\subsection{Ograniczenia projektowe}

Docelową platformą jest Android. Prace nad pierwszą pełną wersją produktu powinny zakończyć się z początkiem 2017 roku. Na dostarczenie projektu może mieć wpływ przebieg testów z dziećmi, sprawność w ich przeprowadzaniu, liczba chętnych dzieci. Dodatkową trudnością może być brak doświadczenia w projektach informatycznych zespołu i mało czasu.

\subsection{Organizacja projektu}

Zespół projektowy składa się z 4 osób.
Zofia Drozd - projekt interfejsu i implementacja części aplikacji związanej z widokiem.
Anna Gabler - implementacja części aplikacji związanej z widokiem, testy UX.
Dawid Jurkiewicz - serwer, baza danych, restowe API, autoryzacja
Eliza Nowacka - projekt interfejsu i implementacja części aplikacji związanej z widokiem.

Joanna Wetesko - członek zespołu projektowego na przedmiocie Architektura oraz projektowanie aplikacji webowych; komunikacja między warstwami aplikacji, implementacja elementów interfejsu.

Opiekunem projektu w ramach przedmiotu Projekt Inżynierski jest dr Jacek Marciniak. 
Dodatkowo część projektu stanowi zaliczenie na zajęciach Architektura oraz projektowanie aplikacji webowych prowadzonego przez GFT Polska.

Docelowi użytkownicy to mikrospołeczności skupione wokół różnorakich kursów, przedmiotów szkolnych, grup koleżeńskich, życia rodzinnego. Nauczyciele, pedagodzy, rodzice, dzieci w wieku wczesnoszkolnym.

\subsection{Zidentyfikowane ryzyka}

Brak zrozumienia rynku, nietrafienie z pomysłem, bądź niedopasowanie treści do odbiorcy. Pojawienie się nieoczekiwanej konkurencji. Niemożność osiągnięcia założeń projektu z powodu niedostatecznych umiejętności członków zespołu. Brak czasu.

\newpage
\subsection{Struktura systemu}
\enlargethispage{6\baselineskip}
\begin{figure}[H]
\centering
\includegraphics[width=0.75\textwidth]{diagram_wdrozeniowy.png}
\caption{Diagram wdrożeniowy}
\label{diagram_wdrozeniowy}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=0.92\textwidth]{diagram_komponentow.png}
\caption{Diagram komponentów}
\label{diagram_komponentow}
\end{figure}

\subsection{Schemat bazy danych}

\begin{figure}[H]
\centering
\makebox[\textwidth][c]{\includegraphics[width=1.2\textwidth]{baza_danych.png}}
\caption{Schemat bazy danych}
\label{diagram_komponentow}
\end{figure}

\newpage
\subsection{Projekt graficzny aplikacji - struktura informacji}

\noindent {\Large Część dziecka:\par}

\begin{figure}[H]
\centering
\includegraphics[width=1\textwidth]{czesc_dziecka.png}
\caption{Część dziecka}
\label{czesc_dziecka}
\end{figure}

\noindent {\Large Część opiekuna:\par}

\begin{figure}[H]
\centering
\includegraphics[width=1\textwidth]{czesc_opiekuna.png}
\caption{Część opiekuna}
\label{czesc_opiekuna}
\end{figure}


\subsection{Zestawienie wykonanych składowych systemu z podziałem na wykonawców}

\begin{figure}[H]
\centering
\includegraphics[width=1\textwidth]{skladowe_systemu.png}
\label{skladowe_systemu}
\end{figure}

\subsection{Dokumentacja web serwisu}

Załącznik nr 2: Dokumentacja web serwisu w podrozdziale \ref{dokumentacja_api}

\subsection{Raporty z testów aplikacji}

\textbf{Raport 1}

\noindent Dzieci (klasa III) w Szkole Podstawowej nr 3 w Luboniu zostały zapytane o:
\begin{itemize}
    \item Z jakich telefonów korzystają;
    \item Jakie aplikacje im się podobają i co im się w nich podoba;
    \item Czy instalują samodzielnie czy pomagają im rodzice;
\end{itemize}

\noindent\textbf{Wynik:} 

Większość korzysta z telefonu z systemem Android wersje systemu 4+; aplikacje które się podobają to zazwyczaj gry zręcznościowe. Dzieci instalują aplikacje samodzielnie.
Test ten miał na celu rozeznanie się czy warto robić aplikację na Androida i czy dzieci samodzielnie korzystają z telefonów komórkowych oraz z jakich aplikacji korzystają najczęściej.

\noindent\textbf{Raport 2}

Ta sama grupa badanych w pomniejszonym składzie (5 osób, wiek 7-9 lat, różny stopień rozwoju intelektualnego) testowały aplikację. Przełączali ekrany, byli pytani czy używa im się wygodnie aplikacji, czy podoba się kolorystycznie. Nie zgłaszali żadnych uwag, podobały im się bardzo obrazki. Każde z dzieci nie miał problemów z logowaniem i nawigacją po aplikacji.

\noindent\textbf{Raport 3}

Grupa badanych - opiekunowie, rodzice (3 osoby).
Nie mieli kłopotów z dodawaniem zadań, nawigacją po aplikacji - była intuicyjna. Z relacji wynikało, że aplikacja jest podobna w obsłudze do innych stąd też nie mieli problemu z nawigacją. Została pozytywnie zrecenzowana przez rodziców - chcieliby aby ich dzieci były zmotywowane do codziennych obowiązków.

\noindent\textbf{Raport 4}

Dzieci były zapytane czy “gra” się podoba oraz czy ubrania są wystarczająco zachęcające do robienia zadań nadanych przez rodziców. Zapytano czy potrzebny byłby samouczek do obsługi aplikacji - okazuje się, że nie, ponieważ niektóre z badanych dzieci nie potrafią czytać a aplikacja jest na tyle intuicyjna i łatwa w obsłudze (nie ma zbyt wielu funkcji), że nie potrzeby wprowadzenia “samouczka”.

\chapter{Załączniki}

\section{Załącznik nr 1: Wymagania projektu} \label{wymagania_projektu}
\enlargethispage{4\baselineskip}
\begin{figure}[h!]
\centering
\includegraphics[width=1\textwidth]{wymagania_projektu.png}
%\caption{Wykres z Google Trends}
\label{fig:wymagania_projektu}
\end{figure}

\newpage
\noindent {\LARGE \textbf{Słownik pojęć:}\par}

\begin{description}
\item [Opiekun] - rodzic, nauczyciel, wychowawca, który może dodać / odjąć punkty dziecku za wykonanie lub niewykonanie zadań przez niego wyznaczonych. Każdemu opiekunowi może podlegać więcej niż jedno dziecko. 

\item [Dziecko] - podopieczny opiekuna. Każde dziecko może podlegać więcej niż jednemu opiekunowi.

\item [Pieniądze] - wirtualna waluta, którą dziecko otrzymuje za oceny, pochwały i wykonane wyzwania. Może je później wymienić na ekwipunek.
\item [Punkty doświadczenia] - wyznacznik aktywności dziecka. Po przekroczeniu określonej liczby punktów następuje awans na kolejny poziom.
\item [Punkty zdrowia] - wyznacznik sumienności w wykonywaniu zadań przez dziecko. Dziecko traci punkty, jeśli nie wykona wyzwania. Wyczerpanie punktów zdrowia prowadzi do utraty poziomu i jednego przedmiotu z ekwipunku (z wyłączeniem przedmiotów dodatkowych). Punkty uzupełniają się po zdobyciu nowego poziomu.

\item [Poziom] - jednostka wyrażająca postęp dziecka zależna od punktów doświadczenia. Kolejne poziomy dziecko zdobywa poprzez przekraczanie progów punktowych.
\item [Awatar] - postać reprezentująca dziecko i jego osiągnięcia. Dziecko ma możliwość jego rozwoju poprzez dostosowanie wyglądu i zakup nowych części ekwipunku.
\item [Ekwipunek] - przedmioty, które dziecko może kupić za pieniądze. Części ekwipunku, które wybierze pojawiają się na obrazku awatara.
\item [Przedmiot] - element ekwipunku.
\item [Wyzwanie] - zadanie do wykonania powierzone przez opiekuna.
\item [Powiadomienie] - wiadomość informująca o ostatnich zmianach w koncie użytkownika.
\item [Zaproszenie] - oferta połączenia kont opiekuna i dziecka, która skutkuje utworzeniem awatara
\end{description}

\noindent {\LARGE \textbf{Funkcjonalnośći wersja 1.0}\par}

\begin{enumerate}[label=\textbf{\arabic*})]
    \item \textbf{UC1: Łączenie kont dzieci z kontami opiekunów}\newline
Opiekun/dziecko wysyła zaproszenie do dziecka/opiekuna po czym strona przeciwna akceptuje lub odrzuca prośbę.

\item \textbf{UC2: Tworzenie awatara}\newline
Po połączeniu konta dziecka z kontem opiekuna tworzony jest nowy awatar. 
Dziecko po wejściu do aplikacji jest przeniesione do kreatora postaci.

\item \textbf{UC3: Dodanie wyzwania dla awatara przez opiekuna}\newline
Opiekun tworzy nowe wyzwanie dla awatara. Wpisuje jego opis, przyznane pieniądze, punkty doświadczenia i poziom trudności. Nowe wyzwanie jest widoczne dla wybranego awatara.

\item \textbf{UC4: Usunięcie wyzwania dla awatara przez opiekuna}\newline
Opiekun usuwa wyzwanie. System aktualizuje listę wyzwań awatara. Wyzwanie przestaje być widoczne dla awatara.

\item \textbf{UC5: Zarządzanie punktami na koncie awatara przez system}\newline
Po tym jak opiekun oznaczy wyzwanie jako wykonane lub niewykonane, system dodaje lub odejmuje punkty awatarowi.

\item \textbf{UC6: Zarządzanie punktami awatara przez opiekuna}
\begin{enumerate}[label=\textbf{\alph*})]
    \item \textbf{UC6a: Dodanie punktów}\newline
    Opiekun wybiera z listy awatar. Z listy jego wyzwań wybiera jedno, po czym oznacza je jako wykonane.
    \item \textbf{UC6b: Odjęcie punktów}\newline
    Opiekun wybiera z listy awatar. Z listy zadań tego awatara wybiera wyzwanie, po czym oznacza je jako niewykonane.
\end{enumerate}

\item \textbf{UC7: Kupowanie ekwipunku dla awatara}\newline
Dziecko chcąc kupić nowy element ekwipunku, przechodzi do odpowiedniej sekcji aplikacji i wybiera przedmiot z listy dostępnego wyposażenia. Jeżeli dziecko posiada wystarczającą ilość pieniędzy, system automatycznie uaktualnia wygląd awatara nanosząc nowo zakupiony przedmiot. W przeciwnym razie nie dochodzi do zakupu.

\item \textbf{UC8: Edytowanie awatara przez dziecko}\newline
Dziecko chcąc spersonalizować swój awatar, edytuje jego podstawowe cechy fizyczne (włosy, kolor skóry, oczu). Jeżeli wymieniło wcześniej punkty na dodatkowy ekwipunek, może także go dodać. Wybrany wygląd jest widoczny w głównym widoku aplikacji.

\item \textbf{UC9: Edytowanie wyzwania przez opiekuna}\newline
Opiekun wybiera wyzwanie i dokonuje zmian w jego nazwie lub poziomie trudności. System aktualizuje dane na liście wyzwań. Dziecko jest powiadamiane o zmianie.

\item \textbf{UC10: Podgląd postępów awatara dziecka przez opiekuna}\newline
Opiekun wybiera awatar, którego stan chce sprawdzić. Opiekun otrzymuje informacje o obecnym stanie punktów, rozpoczętych zadaniach oraz poziomie danego awatara.

\item \textbf{UC11: Rozłączenie konta dziecka i opiekuna}\newline
Dziecko nadal ma dostęp do awatara, który był podłączony do 
Dziecko lub opiekun wybierają użytkownika, z którym chcą się rozłączyć i tego opiekuna, ale bez możliwości edycji.


\end{enumerate}

\noindent {\LARGE \textbf{Wymagania wersja 2.0}\par}

\begin{enumerate}[label=\textbf{\arabic*})]
    \item \textbf{UC12: Zarządzanie grupami awatarów}
    \begin{enumerate}[label=\textbf{\alph*})]
        \item \textbf{UC12a: Dodanie grupy}\newline
Opiekun tworzy nową grupę, nadając jej nazwę.
        \item \textbf{UC12b: Dodanie awatara do grupy}\newline
        Opiekun wchodzi w ustawienia wybranej grupy. Po wybraniu odpowiedniej opcji wybiera z listy awatary, które chce dodać.        
        \item \textbf{UC12c: Usunięcie awatara z grupy}\newline
        Opiekun wchodzi w wybraną grupę. Z listy awatarów, które się w niej znajdują wybiera awatar i go usuwa.
        \item \textbf{UC12d: Usunięcie grupy}\newline
           Opiekun wchodzi w wybraną grupę i ją usuwa.
    \end{enumerate}
    
    \item \textbf{UC13: Archiwizowanie wyzwań}\newline
    Zarówno dziecko jak i opiekun mają wgląd w ukończone zadania.
    \item \textbf{UC14: Przyznanie kluczyka awatarowi przez opiekuna}\newline
    Opiekun wybiera z listy awatar dziecka, które według niego zasługuje na wyróżnienie i przyznaje mu kluczyk.

    \item \textbf{UC15: Odblokowanie przedmiotu-niespodzianki przez awatara}\newline
    Dziecko nagrodzone kluczykiem odblokowuje jeden ze specjalnych przedmiotów. Może dodać go do awatara bez dodatkowych płatności.

    \item \textbf{Dodatkowe płatne funkcjonalności}\newline
    	Na przykład kupowanie specjalnych przedmiotów, wyjątkowych klas itd.
    \item \textbf{Samouczek dziecka}\newline
    Przy pierwszym uruchomieniu dziecko ma możliwość poznania działania aplikacji za pośrednictwem interaktywnego tutoriala. Jest on dostępny także później.
    \item \textbf{Dynamiczne podpowiedzi w wyszukiwaniu opiekuna/awatara do podpięcia}\newline
Szukanie znajomego awatara/opiekuna może odbywać się przez podanie nicku, maila albo nazwy użytkownika. W trakcie pisania generowane są podpowiedzi z puli zarejestrowanych użytkowników.
    \item \textbf{Rozszerzenie funkcji wyszukiwanie (nie tylko po mailu)}\newline
    Dodatkowe opcje po których można wyszukiwać awatary i opiekunów.
\end{enumerate}

\newpage
\section{Załącznik nr 2: Dokumentacja web serwisu} \label{dokumentacja_api}

\newpage\null\thispagestyle{empty}\newpage

\title{Little Hero REST API Documentation}
\author{Dawid Jurkiewicz}
\date{30 January 2017}
\maketitle