This commit is contained in:
siulkilulki 2018-02-01 23:30:49 +01:00
commit 92e359e762
30 changed files with 797 additions and 0 deletions

4
abstract.tex Normal file
View File

@ -0,0 +1,4 @@
\chapter*{Abstract}
todo
\textbf{Key words:} information extraction

BIN
baza_danych.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

206
bibliografia.bib Normal file
View File

@ -0,0 +1,206 @@
@MISC{Fielding,
author = {Roy Thomas Fielding},
title = {Chapter 5: Representational State Transfer (REST)},
year = {2000},
howpublished={\url{http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.html}}
}
@MISC{SOAP_coverpages,
title = {XML {Cover} {Pages} on the history of {SOAP}},
note = {Coverpages.org. Ostatnia modyfikacja 2003-07-22},
key = {Xml},
howpublished={\url{http://xml.coverpages.org/soap.html}}
}
@MISC{EBay,
author = {Nick Wingfield},
title = {{EBay Aims to Be 'Operating System' For All E-Commerce on Internet}},
note = {The Wall Street Journal. Ostatnia modyfikacja 2000-11-20},
howpublished = {\url{http://www.wsj.com/articles/SB974675427606513763}}
}
@MISC{Amazon,
title = {{Amazon.com Launches Web Services; Developers Can Now Incorporate Amazon.com Content and Features into Their Own Web Sites; Extends ''Welcome Mat'' for Developers}},
key = {Amazon},
note = {Amazon Press Release. Opublikowano 2002-07-16},
howpublished = {\url{http://phx.corporate-ir.net/phoenix.zhtml?c=176060&p=irol-newsArticle&ID=503034}}
}
@MISC{Facebook,
author = {John Musser},
title = {Facebook {Launches} {API}},
note = {ProgrammableWeb.com. Opublikowano 2006-08-16},
howpublished = {\url{http://phx.corporate-ir.net/phoenix.zhtml?c=176060&p=irol-newsArticle&ID=503034}}
}
@MISC{Yahoo_buys_Flickr,
author = {Jim Hu},
title = {{Yahoo buys photo-sharing site Flickr}},
note = {CNET.com. Opublikowano 2005-03-21},
howpublished = {\url{https://www.cnet.com/news/yahoo-buys-photo-sharing-site-flickr/}}
}
@MISC{Flickr_archive,
author = {Flickr},
title = {{Yahoo buys photo-sharing site Flickr}},
note = {Flickr.com. Archiwum z 2004-08-04},
howpublished = {\url{https://web.archive.org/web/20040821021045/http://www.flickr.com/services/api/}}
}
@MISC{company_status_codes,
author = {Michael Gotiashvili},
title = {{HTTP Status Codes To Handle Errors In Your API}},
note = {mrGott.com. Opublikowano 2015-06-24},
howpublished = {\url{http://mrgott.com/misc/5-http-status-codes-to-handle-errors-in-your-api}}
}
@MISC{blueprint,
author = {Pocoo},
title = {{Modular Applications with Blueprints}},
note = {Pocoo.org. Dostęp 2017-01-29},
howpublished = {\url{http://flask.pocoo.org/docs/0.12/blueprints/}}
}
@MISC{owasp,
author = {Erlend Oftedal and Andrew van der Stock and Tony Hsu Hsiang Chih},
title = {{REST Security Cheat Sheet}},
note = {OWASP.org. Dostęp: 2016-11-17},
howpublished = {\url{https://www.owasp.org/index.php/REST_Security_Cheat_Sheet}}
}
@techreport{RFC5789,
author = {L. Dusseault and J. Snell},
title = {PATCH Method for HTTP},
howpublished = {Internet Requests for Comments},
type = {RFC},
number = {5789},
year = {2010},
month = {March},
issn = {2070-1721},
publisher = {RFC Editor},
institution = {RFC Editor},
url = {http://www.rfc-editor.org/rfc/rfc5789.txt},
note = {\url{http://www.rfc-editor.org/rfc/rfc5789.txt}},
}
@techreport{RFC7232,
author = {R. Fielding and J. Reschke},
title = {Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests},
howpublished = {Internet Requests for Comments},
type = {RFC},
number = {7232},
year = {2014},
month = {June},
issn = {2070-1721},
publisher = {RFC Editor},
institution = {RFC Editor},
url = {http://www.rfc-editor.org/rfc/rfc7232.txt},
note = {\url{http://www.rfc-editor.org/rfc/rfc7232.txt}},
}
@MISC{embed,
author = {Vinay Sahni},
title = {{Best Practices for Designing a Pragmatic RESTful API}},
note = {VinaySahni.com. Opublikowano 2015-06-21},
howpublished = {\url{http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api}}
}
@MISC{Twitter,
author = {Biz Stone},
title = {Introducing the {Twitter} {API}},
note = {ProgrammableWeb.com. Opublikowano 2006-08-16},
howpublished = {\url{http://phx.corporate-ir.net/phoenix.zhtml?c=176060&p=irol-newsArticle&ID=503034}}
}
@MISC{octo_design,
author = {Antoine Chantalou and Augustin Grimprel and Benoit Lafontaine and Florent Jaby and Jérémy Buisson and Mohamed Kissa and Nicolas Laurent},
title = {{How to design a REST API}},
note = {Octo.com. Opublikowano 2014-12-01},
howpublished = {\url{http://blog.octo.com/en/design-a-rest-api/}}
}
@techreport{RFC3968,
author = {G. Camarillo},
title = {The Internet Assigned Number Authority (IANA) Header Field Parameter Registry for the Session Initiation Protocol (SIP)},
howpublished = {Internet Requests for Comments},
type = {BCP},
number = {98},
year = {2004},
month = {December},
issn = {2070-1721},
publisher = {RFC Editor},
institution = {RFC Editor},
}
@techreport{RFC7396,
author = {P. Hoffman and J. Snell},
title = {JSON Merge Patch},
howpublished = {Internet Requests for Comments},
type = {RFC},
number = {7396},
year = {2014},
month = {October},
issn = {2070-1721},
publisher = {RFC Editor},
institution = {RFC Editor},
}
@techreport{RFC6902,
author = {P. Bryan and M. Nottingham},
title = {JavaScript Object Notation (JSON) Patch},
howpublished = {Internet Requests for Comments},
type = {RFC},
number = {6902},
year = {2013},
month = {April},
issn = {2070-1721},
publisher = {RFC Editor},
institution = {RFC Editor},
}
@techreport{RFC2616,
author = {Roy T. Fielding and James Gettys and Jeffrey C. Mogul and Henrik Frystyk Nielsen and Larry Masinter and Paul J. Leach and Tim Berners-Lee},
title = {Hypertext Transfer Protocol -- HTTP/1.1},
howpublished = {Internet Requests for Comments},
type = {RFC},
number = {2616},
year = {1999},
month = {June},
issn = {2070-1721},
publisher = {RFC Editor},
institution = {RFC Editor},
url = {http://www.rfc-editor.org/rfc/rfc2616.txt},
note = {\url{http://www.rfc-editor.org/rfc/rfc2616.txt}},
}
@BOOK{Best_Practices,
author = "Murat Yener and Alex Theedom",
publisher = {John Wiley \& Sons},
title = {Professional Java EE Design Patterns},
year = 2015,
month = "Jan."
}
@TECHREPORT{SUN_awarie,
author = {Waldo J. , Wyant G., Wollrath A., and Kendall S.},
title = {A note on distributed computing},
institution = {Sun Microsystems Laboratories, Inc.},
month = {Nov.},
year = {1994},
type = {Technical Report},
number = {SMLI TR-94-29}
}
@misc{wiki:latex,
key = "13240150",
title = "{LaTeX}",
howpublished = "[online]",
month = "lipiec",
year = "2008",
note = "[dostęp: 2008-09-10 20:48Z]",
annote = "Dostępny w Internecie: \url{http://pl.wikipedia.org/wiki/Fullpagename?oldid=13240150}"
}

BIN
czesc_dziecka.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

BIN
czesc_opiekuna.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 KiB

BIN
diagram_komponentow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

BIN
diagram_wdrozeniowy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

BIN
directory_structure.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

0
empty.tex Normal file
View File

BIN
google_trends.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
model.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
model_schema.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

46
oswiadczenie.tex Normal file
View File

@ -0,0 +1,46 @@
\thispagestyle{empty}
\newgeometry{bottom=0pt}
\begin{flushright}
Poznań, dnia \today
\end{flushright}
\vskip0.7in
\begin{center}
\large \textbf{Oświadczenie}
\end{center}
\begin{small}
Ja, niżej podpisany Dawid Jurkiewicz, student Wydziału Matematyki i Informatyki Uniwersytetu im. Adama Mickiewicza w Poznaniu oświadczam, że przedkładaną pracę dyplomową pt.
\begin{center}
\textit{„Ekstrakcja informacji o godzinach rozpoczęcia mszyświętych”,}
\end{center}
%rozdziały:
%\begin{center}
%\textit{od 1 do 5}
%\end{center}
napisałem samodzielnie. Oznacza to, że przy pisaniu pracy, poza niezbędnymi konsultacjami, nie korzystałem z pomocy innych osób, a w szczególności nie zlecałem opracowania rozprawy lub jej części innym osobom, ani nie odpisywałem tej rozprawy lub jej części od innych osób.
Oświadczam również, że egzemplarz pracy dyplomowej w wersji drukowanej jest całkowicie zgodny z egzemplarzem pracy dyplomowej w wersji elektronicznej.
Jednocześnie przyjmuję do wiadomości, że przypisanie sobie, w pracy dyplomowej, autorstwa istotnego fragmentu lub innych elementów cudzego utworu lub ustalenia naukowego stanowi podstawę stwierdzenia nieważności postępowania w sprawie nadania tytułu zawodowego.
[\qquad]* - wyrażam zgodę na udostępnianie mojej pracy w czytelni Archiwum UAM
[\qquad]* - wyrażam zgodę na udostępnianie mojej pracy w zakresie koniecznym do ochrony mojego prawa do autorstwa lub praw osób trzecich
\end{small}
\begin{scriptsize}
*Należy wpisać TAK w przypadku wyrażenia zgody na udostępnianie pracy w czytelni Archiwum UAM, NIE w przypadku braku zgody. Niewypełnienie pola oznacza brak zgody na udostępnianie pracy.
\end{scriptsize}
\begin{flushright}
......................................................
\end{flushright}
\restoregeometry

37
pakiety.tex Normal file
View File

@ -0,0 +1,37 @@
\usepackage[OT4]{polski} % tryb pelnej polonizacji
\usepackage[utf8]{inputenc} % kodowanie
\usepackage{makeidx} % indeks
\usepackage[pdftex]{graphicx} % zalaczanie grafiki
\usepackage{tikz} % grafika wektorowa
\usepackage{setspace} % interlinia
\usepackage{hyperref} % wewnetrzne odnosniki w dokumencie
\usepackage{listings} % kody zrodlowe
\usepackage{fancyhdr} % zywe paginy smierci
\usepackage{tocloft} % format spisu tresci
%\usepackage{array} % ladniejsze tabelki
\usepackage{multirow} % laczenie wierszy w tabelach
\usepackage[tableposition=top,format=hang,labelsep=period,labelfont={bf,small},textfont=small]{caption}
% formatuje podpisy pod rysunkami i tabelami, format=hang powoduje,
% ze kolejne linie podpisu beda wciete az do odleglosci nazwy podpisu np. "Rysunek 1."
\usepackage{floatflt} % ladne oplywanie obrazkow tekstem
\usepackage{url} % url w bibliografii
\usepackage{amsmath}
\usepackage{tabularx} %lepsze tabele nie uzywane
\usepackage{makecell} % do formatowania cell w tabelach
\usepackage{geometry}
\usepackage{minted} %kolorowanie kodu
\usepackage{subfig}
\usepackage{float} % to use H option in figures
\usepackage{enumitem} % bold numbers in enumerate
\usepackage{titling}
\usepackage{afterpage}

66
praca_dyplomowa.tex Normal file
View File

@ -0,0 +1,66 @@
\documentclass[a4paper, 12pt, twoside]{report}
\input{pakiety.tex}
\input{ustawienia.tex}
\newcommand\blankpage{%
\null
\thispagestyle{empty}%
%\addtocounter{page}{-1}%
\newpage}
\begin{document}
\pagenumbering{roman}
% strona tytulowa
\input{strona_tytulowa.tex}
% oswiadczenie
\blankpage
\input{oswiadczenie.tex}
\blankpage
\input{empty.tex}
% wstawienie spisu tresci:
\newpage
\tableofcontents
% tresc pracy - numeracja stron liczbami arabskimi
\newcounter{licznikStron}
\setcounter{licznikStron}{\value{page}}
\pagenumbering{arabic}
\setcounter{page}{\value{licznikStron}}
\newpage\null\thispagestyle{empty}\newpage
\input{streszczenie.tex}
\newpage\null\thispagestyle{empty}\newpage
\input{empty.tex}
\input{abstract.tex}
\newpage\null\thispagestyle{empty}\newpage
\input{wstep.tex}
\newpage\null\thispagestyle{empty}\newpage
\input{rozdzial_1.tex}
\input{rozdzial_2.tex}
\newpage\null\thispagestyle{empty}\newpage
\input{rozdzial_3.tex}
\input{rozdzial_4.tex}
\input{rozdzial_5.tex}
\newpage\null\thispagestyle{empty}\newpage
% spis ilustracji:
%\newpage
%\listoffigures
%\addcontentsline{toc}{chapter}{Spis ilustracji}
% spis tabel:
%\newpage
%\listoftables
%\addcontentsline{toc}{chapter}{Spis tabel}
%bibliografia
%\nocite{*}
\bibliographystyle{acm}
\bibliography{bibliografia}
\addcontentsline{toc}{chapter}{Bibliografia}
%\newpage\null\thispagestyle{empty}\newpage
%\input{zakres_projektu.tex}
\end{document}

30
rozdzial_1.tex Normal file
View File

@ -0,0 +1,30 @@
\chapter{Podstawowe pojęcia}
\chapter{Podejścia do ekstrakcji wydarzeń}
% w kontekście mojego projektu
\section{Regułowe}
\subsection{Wyrażenia regularne}
\section{Bootstraping}
\subsection{Algorytm Snowball}
\chapter{Metodologia}
\section{Ogólny zarys}
\section{Zbieranie informacji o parafiach}
\section{Wyszukiwanie stron internetowych parafii}
\section{Wydobywanie tekstu ze stron parafialnych}
\section{Organizacja danych} % może zbyt inżynierskieby
\section{Ekstrakcja godzin rozpoczęcia mszy świętych}
\subsection{Ogólny zarys}
\subsection{Named entity recognition}
\subsection{Słowa kluczowe}
\subsection{Reguły}
\subsection{Bootstraping}
\subsection{Otoczenia słów (ang. word embeddings)}
\chapter{Rezultaty}
\section{Wyrażenia regularne}
\section{Bootstraping}
\section{Autorska metoda}
\subsection{Ewaluacja wewnętrzna} %F1 score
\subsection{Ewaluacja zewnętrzna} % w systemie webowym, użytkownicy
\chapter{Wnioski}
\chapter{Perspektywy na przyszłość}

0
rozdzial_2.tex Normal file
View File

0
rozdzial_3.tex Normal file
View File

0
rozdzial_4.tex Normal file
View File

0
rozdzial_5.tex Normal file
View File

BIN
skladowe_systemu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

4
streszczenie.tex Normal file
View File

@ -0,0 +1,4 @@
\chapter*{Streszczenie}
TODO
\textbf{Słowa kluczowe:} ekstrakcja informacji

36
strona_tytulowa.tex Normal file
View File

@ -0,0 +1,36 @@
\thispagestyle{empty}
\begin{figure}[h!]
\centering
\includegraphics[width=0.25\hsize]{uam_logo.jpg}
\end{figure}
\begin{center}
\Large{Uniwersytet im. A. Mickiewicza w Poznaniu} \\
\large{Wydział Matematyki i Informatyki}\\
%\vskip0.2in
\large{Praca magisterska}\\
\large{\textbf{Ekstrakcja informacji o godzinach rozpoczęcia mszy świętych}}\\
\normalsize{\textbf{Extracting information about church services start times}}\\
%\normalsize{\textbf{}}
\end{center}
%\vskip0.1in
\begin{center}
\Large{Dawid Jurkiewicz}\\
\normalsize{Numer albumu: 396341 }\\
\normalsize{Kierunek: Informatyka}\\
\normalsize{Specjalność: Przetwarzanie języka naturalnego}
%\Large{Imię Nazwisko}\\
%\normalsize{Numer albumu: xxxxxx}\\
%\normalsize{Kierunek: Informatyka, Specjalność: xxxxxxxxxxxxxxxxxx}
\end{center}
%\vskip1.5in
\begin{flushright}
Promotor: \\
prof. UAM, dr hab. Krzysztof Jassem \\
\end{flushright}
\vfill
\begin{center}
\rm Poznań, 2018
\end{center}
\newpage

BIN
uam_logo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

52
ustawienia.tex Normal file
View File

@ -0,0 +1,52 @@
% ------------------------------------------------------------------------
% Kropki po numerach sekcji, podsekcji, itd.
% Np. 1.2. Tytul podrozdzialu
% ------------------------------------------------------------------------
\makeatletter
\def\numberline#1{\hb@xt@\@tempdima{#1.\hfil}} %kropki w spisie tresci
\renewcommand*\@seccntformat[1]{\csname the#1\endcsname.\enspace} %kropki w tresci dokumentu
\makeatother
%numerowanie tabel:
%\renewcommand{\thetable}{\thechapter.\arabic{figure}}
%
%twierdzenia, definicje i lematy
%
\newtheorem{defin}{Definicja}
\newtheorem{twr}{Twierdzenie}
\newtheorem{lem}[twr]{Lemat}
% ------------------------------------------------------------------------
% Inne
% ------------------------------------------------------------------------
\frenchspacing
\setlength{\parskip}{3pt} % odstep pom. akapitamia
\linespread{1.49} % odstep pomiedzy liniami (interlinia)
%\onehalfspacing
\setcounter{tocdepth}{2} % stopien zaglebienia w spisie tresci
\setcounter{secnumdepth}{2} % do jakiego stopnia zaglebienia numeracja
% polskie podpisy
\renewcommand{\figurename}{Rys.}
\renewcommand{\tablename}{Tab.}
%paginy zywe smierci
\pagestyle{fancy}
% zmiana liter w~zywej paginie na ma<6D>e
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
\fancyhf{} % usun biezace ustawienia pagin
\fancyhead[LE,RO]{\small\bfseries\thepage}
\fancyhead[LO]{\small\bfseries\rightmark}
\fancyhead[RE]{\small\bfseries\leftmark}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0pt}
\addtolength{\headheight}{0.5pt} % pionowy odstep na kreske
\fancypagestyle{plain}{%
\fancyhead{} % usun p. g<>rne na stronach pozbawionych
% numeracji (plain)
\renewcommand{\headrulewidth}{0pt} % pozioma kreska
}

44
wstep.tex Normal file
View File

@ -0,0 +1,44 @@
\chapter*{Wstęp}
\markboth{Wstęp}{Wstęp}
\addcontentsline{toc}{chapter}{Wstęp}
Każdy rodzic i nauczyciel wie, jak trudno jest zmotywować dziecko do pracy. W dzisiejszych czasach dzieci zapatrzone są w ekrany telefonów komórkowych i komputerów. Doskonale wiemy jak bardzo lubią one na nich grać.
Powyższe przemyślenia stały się inspiracją do stworzenia aplikacji Little Hero, która wykorzysta słabość dzieci do gier na telefonach, a jednocześnie umożliwi motywowanie ich do wykonywania zadań zleconych przez opiekuna.
\bigskip
\noindent W aplikacji mamy dwóch głównych aktorów:
\begin{itemize}
\item \textbf{opiekuna}, który daje dziecku zadania do zrobienia i nagradza ze jego wykonanie
\item \textbf{dziecko}, które poprzez wykonywanie zadań może rozwijać swoją wirtualną postać w grze
\end{itemize}
Aplikacja umożliwia dziecku zabawę, polegającą na rozwijaniu swoich wirtualnych postaci, ale tylko pod warunkiem, gdy dziecko będzie słuchało opiekuna, wykonując powierzone mu zadania.
Docelowym odbiorcą aplikacji są rodzice wraz z ich dziećmi oraz nauczyciele szkół podstawowych z ich uczniami.
\newpage
\noindent Projekt Little Hero składa się z:
\begin{itemize}
\item aplikacji mobilnej na telefony z Androidem,
\item serwera,
\item bazy danych
\end{itemize}
\bigskip
W dzisiejszych czasach niemal każda nowa aplikacja, która jest zorientowana na usługi (ang. SOA) lub ogólniej rzecz biorąc oparta na komunikacji żądanie-odpowiedź korzysta z REST API. Ogromna liczba tychże aplikacji powoduje, że REST jest ostatnio bardzo popularny.
Podążając za trendami technologicznymi zdecydowaliśmy się, żeby klient komunikował się z serwerm poprzez REST API.
Niniejsza praca poświęcona jest REST API. Szczególna uwaga została poświęcona dokładnemu omówieniu czym jest REST, dobrym praktykom w tworzeniu restowych API oraz implementacji REST API w języku Python z wykorzystaniem frameworka Flask.
Pierwszy rozdział krótko opisuje historię restowych API, począwszy od zdefiniowania terminu REST przez Roya Fieldinga, aż do osiągnięcia dużej popularności REST API.
Drugi rozdział dokładnie omawia styl architektoniczny REST. Jest on oparty na rozprawie doktoranckiej Roya Thomasa Fieldinga i opisuje wszystkie sześć ograniczeń definujących REST.
Trzeci rozdział skupia się na aktualnie obowiązujących dobrych praktykach w tworzeniu REST API.
Czwarty rozdział krótko omawia framework Flask i rozszerzenie Flask-RESTPlus oraz prezentuje łatwość z jaką można zaimplementować proste API za pomocą Flask-RESTPlus.
Piąty rozdział przedstawia szczegółowe tworzenie REST API we Flasku. Krok po kroku począwszy od implementacji bazy danych, aż po eksponowanie endpointów zaprezentowane jest jak stworzyć restowe API. Rozdział piąty opiera się na przykładach z aplikacji Little Hero.

BIN
wymagania_projektu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

0
wymagania_projektu.tex Normal file
View File

BIN
zakres_projektu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

272
zakres_projektu.tex Normal file
View File

@ -0,0 +1,272 @@
\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