Skip to content

Commit

Permalink
Refactored Server's Client to ConnectedClient.
Browse files Browse the repository at this point in the history
  • Loading branch information
filipkofron committed May 4, 2014
1 parent 4744d94 commit 06f8fa8
Show file tree
Hide file tree
Showing 19 changed files with 123 additions and 34 deletions.
21 changes: 10 additions & 11 deletions doc/Thesis.tex
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,10 @@ \subsubsection{Výsledek implementace}
\label{fig:ScanPrototype}
\end{figure}

\clearpage

\chapter{Návrh}

Kapitola návrh poskytne soubor informací k~následné implementaci. Požadavky sepsány v~kapitole Analýza budou pevně diktovat jeho obsah. Struktura návrhu se týka popisu případů užití, návrhu architektury, doménového modelu, databázového modelu a popisu komunikačního protokolu.

\section{Případy užití}

Expand All @@ -279,10 +282,6 @@ \section{Případy užití}
\label{fig:UseCase}
\end{figure}

\chapter{Návrh}

Kapitola návrh poskytne soubor informací k~následné implementaci. Požadavky sepsány v~kapitole Analýza budou pevně diktovat jeho obsah. Struktura návrhu se týka návrhu architektury, doménového modelu, databázového modelu a popisu komunikačního protokolu.

\section{Architektura}

Vzhledem nutnosti použít pro mobilní aplikaci server bude nejvhodnější model architektury klient - server. Tento model vyžaduje specifikovat komunikaci mezi oběma stranami a dále při vhodném navrhnutí lze uvažovat i o~klientech pro více platforem. Vhodná platforma pro jiný typ aplikace by mohla být webová aplikace, která by zpřístupňovala aplikaci na všech ostatních platformách skrze webový prohlížeč. Touto cestou by však nebylo možné uživatele jednoduše upozorňovat o~trvanlivosti přímo z~webové stránky i v~době, kdy uživatel stránku nepoužívá.
Expand Down Expand Up @@ -703,7 +702,7 @@ \subsubsection{Integrace v~aplikaci}

\chapter{Implementace}

Tato kapitola popisuje implentaci navrženého serveru a aplikace. Cílem této kapitoly není detailně popsat implementaci, nýbrž snaha popsat vývojové prostředí, zajímavosti a problémy, které se v~průběhu práce vyskytly. Nakonec bude popsán průběh testování a jeho souhrn poznatků.
Tato kapitola popisuje implentaci navrženého serveru a aplikace. Cílem této kapitoly není detailně popsat implementaci, nýbrž snaha popsat vývojové prostředí, zajímavosti a problémy, které se v~průběhu práce vyskytly.

\section{Vývojové nástroje}
V~této sekci lze nalézt všechny použité nástroje při implementaci.
Expand Down Expand Up @@ -843,37 +842,37 @@ \subsubsection{Background}

Pro získání dat inventáře je zde zjednodušené použití úloh z~části Task, které probíhá oddělěně od zbytku aplikace, která může čí nemusí být v~té době aktivní.

\section{Nasazení}
\chapter{Nasazení}

Nasazení probíhalo v~rámci integrace v~průběhu celé implementace.

Server byl nasazen na autorem vlastněný virtuální server, který běžel již od počátku implementace, aby bylo možné vyvíjenou klientskou aplikaci testovat co nejpřirozeněji. Tento cílový stroj je poháněn Unix-like operačním systémem. Kompilace serveru probíhala přímo na tomto stroji pomocí CMake. Server byl napojen na lokální databázový software MySQL.

Klientská aplikace byla při dokončnování implementace nasazena na Play Store pod názvem Food inventory - Beta, odkuď si ji mohl jakýkoliv zájemce vlastnící zařízení s~OS Android verze 2.3 a vyšší nainstalovat.

\section{Testování}
\chapter{Testování}

Každou část aplikace je třeba otestovat, aby byla zajištěna správná funkčnost při nasazení aplikace o~produkce. Je tedy nutné testovat jak server tak klientskou aplikaci.

Testování probíhalo ve 3 fázích. První fáze byla zajištěna samotným programátorem (autorem práce) při implementaci. Ta druhá probíhala mezi uživateli, kteří zkoušeli aplikaci v~alfa verzích s~autorovým dozorem. Poslední třetí fáze probíhala před a po dokončení psaní této práce přímo vydáním beta verze aplikace na Play Store.

\subsection{Testování programátorem}
\section{Testování programátorem}

Průběh testování spočíval v~psaní testů nad částmi, které nebylo možné testovat jako celek. Cílem testů bylo ověřit správnost implementace různých abstraktních tříd a rozhraní v~serveru i klientské aplikaci.

Další testování programátorem spočívalo v~přímém testování aplikace, čímž bylo ověřena aplikace jako celek a odhaleny zásadní chyby v~implementaci, zejména v~komunikaci protokolem se serverem.

Nejzásadnější chyby, které byly takto odhaleny zahrnovaly překlepy a synchronizační problémy vláken. Všechny tyto chyby bylo možné rychle opravit rovnou při probíhající implementaci a urychlit tak vývoj aplikace i serveru.

\subsection{Pozorované testování vybranými uživateli}
\section{Pozorované testování vybranými uživateli}

Toto testování mělo za účel odhalit chyby v~uživatelském rozhraní, které nebyli odstraněny při návrhu, ale projevily se až při skutečné uživatelské interakci. Pro testování byla použita alfa verze, která ještě neobsahovala veškerou funkčnost aplikace. Proto se testovaly především nedávno přidané změny.

Testování probíhalo tak, že uživatelé byli dotázáni na různé případy užití a případné zmatení či ztracení uživatele v~navigaci se projevilo při změně rozvržení uživatelského rozhraní. Jejich pocity a názory byli poté autorem zaznamenány. Tím byl zpětně upravován návrh UI aplikace.

Problémy odhalené v~této části testování zahrnovaly především nízkou informovanost uživatele o~probíhajícíh událostech na jejich akce. Proto byly při implementaci přidány dialogy, které informovaly uživatele o~průběhu jejich akcí.

\subsection{Testování vydáním na Play Store}
\section{Testování vydáním na Play Store}

Vydáním beta verze aplikace na Play Store byla plně naimplementovaná aplikace testována přímo samotnými uživateli. V~době psaní této práce se tohoto testování zúčastnilo 5 osob různých věkových kategorií.

Expand Down
90 changes: 90 additions & 0 deletions doc/op.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
1)
Uvod - rozsirit

2)
Analyza
- pozadavky, vice z dotazniku (jaka vekova kategorie)

rozdelit kategorie, pozadavky - vice rozepsat

carove kody vsechny - funkcni pozadavek (nebo naopak)

ctecka carovych kodu, rozdelit do podkapitol

Z jednoducheho dema - slangovy vyraz

zbar -

implementace prototypu - nerozepisovat tridy

vysledek tabulkou

3)



domenovy model - rozepsat (food moc malo)


4)
zaver - kategorie



default_use_by - popsat

JSON - bezpecnost

zabezpeceni do zaveru

zaloha, jak lepsi do zaveru

protokol - zpravy vice rozepsat, co se prenasi


c++ - vlaknovani - multithreading

MySQL - proc ne clietske knihovny
JSONcpp z jakych a proc

Kudy putuje zprava - schema na abstraktnich tridach

zpusob -


prechodovy diagram UI obrazovek, navigace

srovnat s wireframy, subjektivne zkusenost

pU8w3au2 WTF nastaven :D :D

prostredi pro vyvoj software


strohy seznam v implementaci odstranit, rozepisy staci

Connected client misto client


Log do implementace zminit

proc je seznam v navrhy u klienta ?


nasazeni: zverejneni kodu + more..


vice rozepsat to testovani podle typu, v programatorovy



zaver bude vice poznamek

keywords - seznam

\hypersetup





4 changes: 2 additions & 2 deletions src/Server/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ add_subdirectory(Config)
add_subdirectory(Entity)
add_subdirectory(Util)
add_subdirectory(Network)
add_subdirectory(Client)
add_subdirectory(ConnectedClient)
add_subdirectory(Handler)
add_subdirectory(Protocol)
add_subdirectory(Database)

target_link_libraries(${PROJECT_NAME} database database_dao entity_dao network client protocol handler entity util mysqlcppconn ssl crypto config /home/kofee/build/jsoncpp/lib/libjsoncpp.a)
target_link_libraries(${PROJECT_NAME} database database_dao entity_dao network connected_client protocol handler entity util mysqlcppconn ssl crypto config /home/kofee/build/jsoncpp/lib/libjsoncpp.a)
13 changes: 0 additions & 13 deletions src/Server/Client/CMakeLists.txt

This file was deleted.

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
13 changes: 13 additions & 0 deletions src/Server/ConnectedClient/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
set(connected_client_source_files
ClientThread.hpp
ClientThread.cpp
Context.hpp
Context.cpp
BufferException.hpp
BufferException.cpp
Buffer.hpp
Buffer.cpp
)
add_library(connected_client ${connected_client_source_files})

target_link_libraries( connected_client network )
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion src/Server/Handler/Handler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

class Handler;

#include "../Client/Context.hpp"
#include "../ConnectedClient/Context.hpp"

class Handler
{
Expand Down
4 changes: 2 additions & 2 deletions src/Server/Network/BufferReader.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

class BufferReader;

#include "../Client/Buffer.hpp"
#include "../Client/Context.hpp"
#include "../ConnectedClient/Buffer.hpp"
#include "../ConnectedClient/Context.hpp"

#include <memory>

Expand Down
4 changes: 2 additions & 2 deletions src/Server/Network/BufferWriter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

class BufferWriter;

#include "../Client/Buffer.hpp"
#include "../Client/Context.hpp"
#include "../ConnectedClient/Buffer.hpp"
#include "../ConnectedClient/Context.hpp"

class BufferWriter
{
Expand Down
2 changes: 1 addition & 1 deletion src/Server/Network/MessageSender.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class MessageSender;

#include "../Protocol/Message.hpp"
#include "../Client/Context.hpp"
#include "../ConnectedClient/Context.hpp"

class MessageSender
{
Expand Down
2 changes: 1 addition & 1 deletion src/Server/Network/Server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "Server.hpp"
#include "ServerException.hpp"
#include "../Config/Configurator.hpp"
#include "../Client/ClientThread.hpp"
#include "../ConnectedClient/ClientThread.hpp"
#include <cstdio>
#include <thread>
#include <mutex>
Expand Down
2 changes: 1 addition & 1 deletion src/Server/Network/Server.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class Server;
#include <deque>
#include <inttypes.h>

#include "../Client/Context.hpp"
#include "../ConnectedClient/Context.hpp"

class Server
{
Expand Down

0 comments on commit 06f8fa8

Please sign in to comment.