Συμπλήρωση και των υπόλοιπων περιπτώσεων χρήσης στο θεωριτικό έγγραφο της πτυχιακής.

Διαγραφή φακέλων και αρχείων τεκμηρίωσης τα οποία δεν χρειάζονται πλέον (έχουν συγχωνευθεί στο κύριο έγγραφο).
This commit is contained in:
alextselegidis@gmail.com 2013-06-26 14:23:48 +00:00
parent 3062dbc001
commit 8a35846416
9 changed files with 101 additions and 1306 deletions

File diff suppressed because it is too large Load Diff

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -1,70 +1,28 @@
%% =============================
%% GENERAL SETTINGS
%% =============================
\documentclass[12pt]{article}
\usepackage [margin=2.5cm]{geometry}
\usepackage {graphics}
\usepackage {xltxtra}
\usepackage {xgreek}
\usepackage {color}
\usepackage {hyperref}
\hypersetup {colorlinks}
\setmainfont[Mapping=tex-text]{Tahoma}
\setlength{\parindent}{0cm} %% No paragraph indent
\definecolor{darkred}{rgb}{0.5,0,0}
\definecolor{darkgreen}{rgb}{0,0.5,0}
\definecolor{darkblue}{rgb}{0,0,0.5}
\hypersetup{ colorlinks,
linkcolor=darkblue,
filecolor=darkgreen,
urlcolor=darkblue,
citecolor=darkred }
%% =============================
%% DOCUMENT PROPERTIES
%% =============================
\title{{\Huge {\bf Easy!Appointments}} \\[0.3cm] Unit Testing}
\author{Αλέξανδρος Τσελεγγίδης}
\date{Μάιος 2013}
%% =============================
%% DOCUMENT CONTENT
%% =============================
\begin{document}
\maketitle
\thispagestyle{empty} %% Απομάκρυνση page number από την πρώτη σελίδα
%% ΕΙΣΑΓΩΓΗ ΣΤΟ UNIT TESTING
\section {Εισαγωγή}
\chapter{Έλεγχος του Συστήματος}
Σε κάθε τομέα παραγωγής προϊόντων είναι πολύ σημαντικό να παράγονται προϊόντα τα οποία να τηρούν πάντα τις προδιαγραφές τους και να μπορούν να αντεπεξέλθουν στις απαιτήσεις του καταναλωτικού κοινού. Η φήμη και η εμπιστοσύνη που προσδίδει μια εταιρεία είναι κομβικά χαρακτηριστικά για την βιωσιμότητας της. Κάθε επαγγελματίας είναι απαραίτητο να είναι σε θέση να εγγυηθεί για την ποιότητα του προϊόντος ή της υπηρεσίας που παρέχει ως αντάλλαγμα της αμοιβής του.
\\[0.3cm]
Ο τρόπος διασφάλισης της ποιότητας διαφέρει ανάλογα με την φύση του προϊόντος ή της υπηρεσίας και μπορεί να εκτελεστεί με διάφορους μεθόδους. Για παράδειγμα αν το προϊόν ήταν κάποιο τρόφιμο, η εταιρία θα έπρεπε να είναι σίγουρη ότι είναι σε άριστη κατάσταση πριν φτάσει στο τραπέζι του καταναλωτή, διότι αν δεν το έκανε αυτό θα υπήρχαν επιπλοκές στην υγεία των καταναλωτών. Αντίστοιχα μια εταιρία που παρέχει μια υπηρεσία πρέπει να διασφαλίσει και να ελέγξει την ποιότητα παροχής της υπηρεσίας με διάφορους τρόπους. Ένας από αυτούς θα ήταν να λαμβάνει τις παρατηρήσεις των καταναλωτών αφότου λάβουν την υπηρεσία ή να περνάει από εσωτερικές εξετάσεις και εκπαίδευση τους υπαλλήλους της έτσι ώστε να είναι σίγουρη ότι αυτοί θα μπορούν να παρέχουν σωστά και αξιόπιστα την υπηρεσία στους πελάτες.
\\[0.3cm]
Στην διαδικασία ανάπτυξης λογισμικού υπάρχουν αντίστοιχα διάφοροι τρόποι ελέγχου ότι το λογισμικό που αναπτύσσεται τηρεί τις προδιαγραφές του. Κάποιοι από αυτούς τους τρόπους είναι τα unit testing, fuzz testing, δημοσίευση δοκιμαστική έκδοσης (beta version) κ.α. Το πιο κοντινό εργαλείο ελέγχου στον προγραμματιστή είναι η διαδικασία unit testing, η οποία εφαρμόζεται αποκλειστικά σε αντικειμενοστραφή κώδικα. Παρακάτω θα γίνει μια ανάλυση αυτής της τεχνικής ελέγχου και θα αναφερθούν οι μέθοδοι και η διαδικασία ελέγχου πάνω στο Easy!Appointments.
\section {Unit Testing}
Για την υλοποίηση unit tests πάνω στον κώδικα είναι απαραίτητο να τηρούνται δύο πράγματα: (1) η αντικειμενοστραφείς δομή και (2) η χρήση κάποιας βιβλιοθήκης ή εργαλείου το οποίο μπορεί να βοηθήσει στην οργάνωση και καλύτερη υλοποίηση των tests.
\\[0.3cm]
Με τον όρο unit testing εννοείται η δοκιμή μίας “λειτουργικής μονάδας” του λογισμικού που αναπτύσσεται. Η κάθε λειτουργική μονάδα απομονώνεται από τις υπόλοιπες και δοκιμάζεται ξεχωριστά σε διάφορες καταστάσης. Για αυτόν τον λόγο είναι απαραίτητο ο κώδικας να έχει αντικειμενοστραφής δομή. Η διαδικασία χωρίζεται στην συγγραφή πολλαπλών unit test, συναρτήσεων δηλαδή που δοκιμάζουν μια διαδικασία για συγκεκριμένες τιμές εισόδου. Σε κάθε περίπτωση στόχος είναι να υπάρχει ελεγχόμενη έξοδος έτσι ώστε να μπορέσει ο προγραμματιστής να είναι σίγουρος ότι το σύστημα θα λειτουργήσει σωστά σε οποιαδήποτε κατάσταση και αν βρίσκεται. Κατά την διαδικασία αυτήν μπορούν να βρεθούν πολύ εύκολα πολλά προβλήματα και ασυνέπειες στον κώδικα ενός συστήματος, τα οποία χρειάζεται να αντιμετωπιστούν.
\\[0.3cm]
Για να μπορέσουν να υλοποιηθούν αυτά τα test είναι απαραίτητο να χρησιμοποιηθεί κάποια βιβλιοθήκη ή εργαλείο, το οποίο θα κατέχει τις βασικές συναρτήσεις ελέγχου αποτελεσμάτων και επιπρόσθετα λειτουργίες για την παραγωγή αναφορών, οι οποίες περιέχουν τα αποτελέσματα των δοκιμών. Υπάρχουν πάρα πολλά εργαλεία που κάνουν αυτήν την δουλειά, το καθένα για μια συγκεκριμένη γλώσσα προγραμματισμού. Τα πιο διαδεδομένα εργαλεία είναι αυτά που ανήκουν στην οικογένεια xUnit (Junit, CppUnit, NUnit κ.α).
\\[0.3cm]
Τα εργαλεία αυτά μπορούν συνήθως κάλλιστα να συνεργαστούν μαζί με άλλα εργαλεία ανάπτυξης έτσι ώστε να είναι πολύ εύκολο για τον προγραμματιστή να συμπεριλάβει την διαδικασία unit testing στην υλοποίηση του κάθε συστήματος.
\section {Easy!Appointments Testing}
Η συγγραφή των unit tests για το Easy!Appointmnets έγινε με την χρήση της ενσωματωμένης βιβλιοθήκης που παρέχει το CodeIginter. Η βιβλιοθήκη παρέχει τις βασικές λειτουργίες ελέγχου και παραγωγής αναφορών για τα tests του κώδικα. Προτιμήθηκε έναντι του phpunit λόγω της καλύτερης απόδοσης σε σχέση με το CodeIgniter Framework.
\\[0.3cm]
Η διαδικασία της δοκιμής του συστήματος ξεκίνησε από τα Models, τις λειτουργικές μονάδες που διαχειρίζονται την κίνηση προς και από την βάση δεδομένων. Είναι απαραίτητο για το σύστημα να κατέχει ακέραια δεδομένα μιας και όλη η εφαρμογή βασίζεται σε αυτά. Η κάθε μέθοδος του κάθε model δοκιμάστηκε ξεχωριστά από τις υπόλοιπες για 3-5 διαφορετικές περιπτώσεις κάθε φορά. Όσο αναπτύσσεται το σύστημα τόσο αυξάνονται και unit tests.
\\[0.3cm]
Για την σωστή δοκιμή του συστήματος απομονώθηκε το κάθε model και δοκιμάστηκε ανεξάρτητα από τα υπόλοιπα. Κάθε μέθοδος έχει κατά μέσω όρο 3-5 unit test, κάτι που μελλοντικά μπορεί να αυξηθεί όσο επεκτείνεται η εφαρμογή.
\section {Παραδειγματα}
Στον παρακάτω κώδικα δοκιμάζεται η βασική ροή της περίπτωσης χρήσης “προσθήκη ραντεβού”. Σε αυτό το test case η είσοδος της μεθόδου add() είναι σωστή και έτσι περιμένουμε ότι και το αποτέλεσμα της διαδικασίας θα είναι επιτυχία. Στο τέλος αφαιρούμε την εγγραφή που προστέθηκε για να μην μείνουν κατάλοιπα στην βάση. Σε κάθε unit test χρησιμοποιείται μόνο μια μέθοδος του model. Έτσι το κάθε test δεν επιρρεάζεται από τυχόν προβλήματα σε άλλες μεθόδους του model.
\section {Παραδείγματα}
Στον παρακάτω κώδικα δοκιμάζεται η βασική ροή της περίπτωσης χρήσης “προσθήκη ραντεβού”. Σε αυτό το test case η είσοδος της μεθόδου add() είναι σωστή και έτσι περιμένουμε ότι και το αποτέλεσμα της διαδικασίας θα είναι επιτυχία. Στο τέλος αφαιρούμε την εγγραφή που προστέθηκε για να μην μείνουν κατάλοιπα στην βάση. Σε κάθε unit test χρησιμοποιείται μόνο μια μέθοδος του model. Έτσι το κάθε test δεν επηρεάζεται από τυχόν προβλήματα σε άλλες μεθόδους του model.
\begingroup
\fontsize{10pt}{12pt}
@ -126,6 +84,4 @@ private function test_get_value_record_does_not_exist() {
\end{verbatim}
\endgroup
Κάποια unit test δοκιμάζουν τις μεθόδους για σωστές τιμές και αναμένουν την επιτυχή ολοκλήρωση των διαδικασιών τους. Τα περισσότερα όμως tests σκοπό έχουν να δουν την συμπεριφορά του συστήματος για τιμές οι οποίες δεν είναι φυσιολογικές. Με αυτόν τον τρόπο μπορούν να προβλεφθούν πολλά bug και άλλα προβλήματα στον κώδικα και η εφαρμογή να είναι περισσότερο αξιόπιστη και δυνατή απέναντι σε σφάλματα.
\end{document}
Κάποια unit test δοκιμάζουν τις μεθόδους για σωστές τιμές και αναμένουν την επιτυχή ολοκλήρωση των διαδικασιών τους. Τα περισσότερα όμως tests σκοπό έχουν να δουν την συμπεριφορά του συστήματος για τιμές οι οποίες δεν είναι φυσιολογικές. Με αυτόν τον τρόπο μπορούν να προβλεφθούν πολλά bug και άλλα προβλήματα στον κώδικα και η εφαρμογή να είναι περισσότερο αξιόπιστη και δυνατή απέναντι σε σφάλματα.

View File

@ -5,9 +5,9 @@
\chapter{Περιπτώσεις Χρήσης}
Σε αυτό το κεφάλαιο θα γίνει η αναλυτική περιγραφή των περιπτώσεων χρήσης του συστήματος που υλοποιήθηκε. Θα περιγραφούν τόσο η βασική ροή όσο και οι εναλλακτικές ροές για όλες τις περιπτώσεις χρήσης. Το κεφάλαιο χωρίζεται σε τμήματα ανάλογα με τον ρόλο (actor) της εφαρμογής στον οποίο ανήκουν.
\section{Περιπτώσεις Χρήσης Πελάτη}
\section{Πελάτης}
\subsection{Κράτηση Ραντεβού}
Η βασικότερη περίπτωση χρήσης της εφαρμογής είναι η διαδικασία της κράτησης ραντεβού του πελάτη με έναν πάροχο υπηρεσίας για την υπηρεσία που τον ενδιαφέρει. Αυτή η περίπτωση χρήσης αποτελεί το βασικότερο κομμάτι, μιας και το σύστημα έχει ως στόχο την ευκολότερη διαχείριση των ραντεβού με τους πελάτες.
Η βασικότερη περίπτωση χρήσης της εφαρμογής είναι η διαδικασία της κράτησης ραντεβού του πελάτη με έναν πάροχο υπηρεσίας για την υπηρεσία που τον ενδιαφέρει. Πρόκειται για την κυριότερη περίπτωση χρήσης, μιας και το σύστημα έχει ως στόχο την ευκολότερη διαχείριση των ραντεβού με τους πελάτες.
\textbf{ΒΑΣΙΚΗ ΡΟΗ}
@ -34,7 +34,7 @@
\item Ο διαχειριστής του συστήματος μπορεί να έχει ορίσει ένα χρονικό περιθώριο πριν το ραντεβού, στο οποίο δεν επιτρέπεται να γίνονται αλλαγές (λόγω σταθερότητας του πλάνου). Αν ο χρήστης βρίσκεται μέσα σε αυτό το περιθώριο τότε θα εμφανιστεί μήνυμα το οποίο θα τον ενημερώνει για τον λόγο τον οποίο δεν μπορεί να πραγματοποιήσει αλλαγές στο ραντεβού του.
\end{itemize}
\section {Περιπτώσεις Χρήσης Πάροχου Υπηρεσιών}
\section {Πάροχος Υπηρεσιών}
\subsection {Συγχρονισμός Πλάνου με το Google Calendar}
Βασικό στοιχείο για την χρησιμότητα και την απόδοση του συστήματος είναι η διαχείριση των δεδομένων να γίνεται από πολλά συστήματα. Κάτι τέτοιο μπορεί να επιτεφθχεί με τον συγρονισμό των ραντεβού με το Google Calendar API. Σε αυτό ο χρήστης θα μπορεί να πραγματοποιεί αλλαγές στο πλάνο του μέσω του Google Calendar και αυτές να εφαρμόζονται και στο σύστημα κρατήσεων ραντεβού, κάνοντας έτσι την εργασία του πολύ εύκολη.
@ -47,4 +47,89 @@
\begin{itemize}
\item Υπάρχει η περίπτωση στην οποία ο πάροχος έχει πραγματοποιήσει αλλαγές στο Google Calendar και στο Easy!Appointments ταυτόχρονα, χωρίς να έχει τρέξει η διαδικασία του συγχρονισμού. Σε αυτήν την περίπτωση υπάρχει μεγάλη πιθανότητα να δημιουργηθεί κάποια σύγκρουση (conflict) και να υπάρχουν δυο συμβάντα τα οποία να ανταποκρίνονται στην ίδια χρονική περίοδο. Σε αυτήν την κατάσταση ο χρήστης είναι υπεύθυνος να λύσει την σύγκρουση μεταξύ των δύο συμβάντων και να φέρει το πλάνο του στην σωστή του μορφή.
\item Πιθανό είναι επίσης να γίνει μια αλλαγή σε ένα συγχρονισμένο συμβάν στο Google Calendar το οποίο όμως να έχει αλλαχθεί και στο Easy!Appointments. Σε αυτήν την περίπτωση θεωρείται ότι υπερισχύει η αλλαγή που έχει γίνει στο Easy!Appointmets διότι δεν υπάρχει η δυνατότητα να ελεγχθεί και στα δύο συστήματα το πότε (χρονική στιγμή) έχει γίνει η τροποποίηση.
\end{itemize}
\end{itemize}
\subsection {Διαχείριση Ραντεβού}
Όπως και ο πελάτης, έτσι και ο πάροχος υπηρεσιών θα πρέπει να έχει την δυνατότητα να διαχειρίζεται τα ραντεβού του (εφόσον του έχει δοθεί το δικαίωμα από τον διαχειριστή). Με αυτόν τον τρόπο θα έχει την δυνατότητα να πραγματοποιεί αλλαγές στο ημερολόγιο του, να αλλάζει την ημερομηνία των ραντεβού του και να καθορίζει το πλάνο του καταπώς τον βολεύει. Το Easy!Appointments εμφανίζει όλα τα ραντεβού σε ημερολόγιο, στο οποίο ο χρήστης μπορεί να περιηγηθεί χρονικά.
\textbf{ΒΑΣΙΚΗ ΡΟΗ}
Ο χρήστης ενημερώνεται από τον προϊστάμενο του ότι θα πρέπει να πραγματοποιήσει κάποια εργασία σε ένα χρονικό διάστημα στο οποίο υπάρχουν καταχωρημένα ραντεβού με πελάτες της εταιρείας. Κάποια από τα ραντεβού μπορεί να τα αναλάβει κάποιος άλλος πάροχος και για αυτόν τον λόγο ο χρήστης επεξεργάζεται αυτά τα ραντεβού και αλλάζει τον πάροχο τους έτσι ώστε να μετατεθούν στο πλάνου του αντίστοιχου χρήστη. Όσα περισσέψουν θα χρειαστεί να τα μεταφέρει χρονικά ή να τα διαγράψει προτείνοντας στους πελάτες να κλείσουν κάποια άλλη στιγμή.
\textbf{ΕΝΑΛΛΑΚΤΙΚΕΣ ΡΟΕΣ}
\begin{itemize}
\item Καθώς ο πάροχος υπηρεσιών επεξεργάζεται ένα ραντεβού μπορεί να αποφασίσει ότι δεν θέλει να αποθηκεύσει κάποιο ραντεβού και έτσι να πατήσει το κουμπί ακύρωσης και να μην επιρρεάσει το ραντεβού.
\item Σε αντίθεση με τον πελάτη, ένας πάροχος υπηρεσιών μπορεί να αλλάξει την διάρκεια ενός ραντεβού, ανεξάρτητα από το πόση ώρα διαρκεί το ραντεβού του. Οπότε στην φόρμα επεξεργασίας ενός ραντεβού υπάρχει η δυνατότητα επιλογής ημερομηνίας και ώρας έναρξης και τερματισμού του ραντεβού.
\end{itemize}
\subsection{Λήψη ειδοποιήσεων από το Σύστημα}
Κάθε φορά που πραγματοποιείται μια ενέργεια που αφορά κάποιο ραντεβού στο σύστημα ο πάροχος υπηρεσίας θα ενημερώνεται με email (εκτός και αν απενεργοποιήσει αυτήν την ρύθμιση). Έτσι θα είναι πάντα ενήμερος σχετικά με την κατάσταση των ραντεβού του. Σε αυτά τα μηνύματα θα περιέχεται και ένα μοναδικό link το οποίο θα δίνει την δυνατότητα στον πάροχο να πραγματοποίηση αλλαγές γρήγορα στο ραντεβού που τον ενδιαφέρει.
\textbf{ΒΑΣΙΚΗ ΡΟΗ}
Ο πάροχος υπηρεσιών μπαίνει στο σύστημα και πραγματοποιεί αλλαγές σε ένα ήδη καταχωρημένο ραντεβού. Με την αποθήκευση των αλλαγών αυτός και ο πελάτης θα λάβουν ένα email στο οποίο θα φαίνονται τα νέα στοιχεία του ραντεβού. Με αυτόν τον τρόπο μπορεί να επαληθευθεί ότι οι αλλαγές που έγιναν είναι σωστές και επίσης δίνεται η δυνατότητα να στον χρήστη να χρησιμοποίήσει το link του ραντεβού για να πραγματοποιήσει άλλες αλλαγές, αν αυτό είναι απαραίτητο.
\subsection {Διαχείριση Πελατών}
Από την στιγμή που ένας πάροχος θα έχει το δικαίωμα να επεξεργαστεί τις πληροφορίες ενός ραντεβού θα μπορεί να επεξεργάζεται και τα στοιχεία των πελατών που υπάγονται σε αυτό. Με αυτήν την δυνατότητα θα μπορεί να είναι σε θέση να ενημερώσει κάποια πεδία στην εγγραφή του πελάτη τα οποία είναι πιθανώς λανθασμένα ή και να προσθέσει νέες πληροφορίες.
\textbf{ΒΑΣΙΚΗ ΡΟΗ}
Ο πάροχος μπαίνει στο σύστημα και επιλέγει να επεξεργαστεί κάποιο ραντεβού. Στην οθόνη επεξεργασίας του ραντεβού θα μπορέσει να τροποποιήσει και τα στοιχεία των πελατών. Όταν είναι έτοιμος μπορεί να αποθηκεύσει τις αλλαγές στην βάση δεδομένων.
\textbf{ΕΝΑΛΛΑΚΤΙΚΕΣ ΡΟΕΣ}
Ο πάροχος μπορεί να αλλάξει τα στοιχεία ενός πελάτη χωρίς να πραγματοποιήσει αλλαγές στις πληροφορίες του ραντεβού του ίδιου.
\section{Γραμματέας}
\subsection{Διαχείριση Ραντεβού}
Ο χρήστης γραμματέας μπορεί να πραγματοποιήσει αλλαγές στα ραντεβού ενός ή περισσοτέρων πάροχων υπηρεσίας. Με αυτόν τον τρόπο μια εταιρεία μπορεί αν αναθέσει όλη την διαχείριση των ραντεβού σε ένα άτομο και οι πάροχοι απλώς να βλέπουν τα ραντεβού τους στο πλάνο.
\textbf{ΒΑΣΙΚΗ ΡΟΗ}
Ο χρήστης γραμματέας δέχεται τηλεφώνημα από κάποιον πελάτη ο οποίος επιθυμεί να αλλάξει την ώρα του ραντεβού του αλλά δεν έχει σύνδεση με το διαδίκτυο στο σημείο που βρίσκεται. Έτσι ο γραμματέας πραγματοποιεί την αλλαγή του ραντεβού καταπώς μπορεί να βολεύει τόσο τον πάροχο υπηρεσίας όσο και τον πελάτη. Όταν τελειώσει μπορεί να αποθηκεύσει τις αλλαγές στο σύστημα.
\subsection{Διαχείριση Πελατών}
Εκτός των ραντεβού, ο χρήστης γραμματέας είναι σε θέση να πραγματοποιήσει αλλαγές και στα στοιχεία των πελατών, οργανώνοντας και κρατώντας πλήρη πελατολόγιο για την επιχείριση. Μελλοντικά θα είναι σε θέση να βρίσκει πολύ εύκολα οποιονδήποτε πελάτη της επιχείρισης και να βλέπει τα στοιχεία του.
\textbf{ΒΑΣΙΚΗ ΡΟΗ}
Ο γραμματέας πηγαίνει στο backend στην σελίδα τον πελατών και φιλτράρει τον πελάτη που τον ενδιαφέρει και αμέσως βλέπει τα στοιχεία του. Πολύ εύκολα μπορεί να πραγματοποιήσει αλλαγές, αλλά και να τον διαγράψει από το σύστημα.
\textbf{ΕΝΑΛΛΑΚΤΙΚΕΣ ΡΟΕΣ}
\begin{itemize}
\item Ο γραμματέας μπορεί να επεξεργαστεί τα στοιχεία ενός πελάτη και την στιγμή που επεξεργάζεται ένα ραντεβού. Παρόλα αυτά σε αυτήν την περίπτωση κυρίαρχη οντότητα είναι το ραντεβού και έτσι ο χρήστης δεν έχει την δυνατότητα να φιλτράρει τους πελάτες καταπώς θέλει. Επίσης ένας πελάτης μπορεί να διαγραφεί μόνο όταν διαγραφεί και το ραντεβού του.
\end{itemize}
\section{Διαχειριστής}
\subsection{Εγκατάσταση της εφαρμογής}
Αυτή η περίπτωση χρήσης περιλαμβάνει την ρύθμιση του server όπου θα τρέξει το Easy!Appointments και την δημιουργία του λογαριασμού του διαχειριστή. Επίσης μπορεί να καθοριστούν και τα κλειδιά που απαιτούνται για την χρήση του Google Calendar API.
\textbf{ΒΑΣΙΚΗ ΡΟΗ}
Ο διαχειριστής τοποθετεί τα αρχεία της εφαρμογής στον server του και πηγαίνει με τον περιηγητή στην διεύθυνση που δείχνει τον κύριο κατάλογο. Η εφαρμογή καταλαβαίνει ότι δεν έχει ακόμα πραγματοποιηθεί εγκατάσταση και μεταφέρει τον χρήστη στην διαδικασία εγκατάστασης. Σε αυτήν την διαδικασία ο διαχειριστής θα πρέπει να ορίσει σημαντικά στοιχεία που αφορούν την λειτουργία του συστήματος και τα στοιχεία του λογαριασμού του. Όλα αυτά τα στοιχεία βέβαια θα είναι διαθέσιμα προς επεξεργασία από την αντίστοιχη σελίδα στο backend.
\subsection{Παραμετροποίηση της εφαρμογής}
Για να μπορέσει να λειτουργήσει η εφαρμογή σύμφωνα με την μορφή της επιχείρησης θα χρειαστεί να παραμετροποίηση από τον διαχειριστή. Η παραμετροποίηση περιλαμβάνει τα ωράρια λειτουργίας της επιχείρησης, την διαχείριση των υπηρεσιών που θα είναι διαθέσιμες προς το κοινό, καθώς και την διαχείριση των πάροχων υπηρεσιών.
\textbf{ΒΑΣΙΚΗ ΡΟΗ}
Ο διαχειριστής εισέρχεται στο backend μέρος της εφαρμογής και επιλέγει την σελίδα των ρυθμίσεων. Εκεί έχει την δυνατότητα να θέσει τις τιμές σε διάφορες παραμέτρους, οι οποίες καθορίζουν τον τρόπο με τον οποίο λειτουργεί το σύστημα. Στόχος είναι αυτός να συμβαδίζει με τον τρόπο λειτουργίας της επιχείρισης έτσι ώστε να μπορεί η εταιρεία να επωφεληθεί από το Easy!Appointments.
\subsection{Διαχείριση των ραντεβού}
Ο διαχειριστής ως χρήστης έχει πρόσβαση σε όλες τις πληροφορίες του συστήματος. Έτσι μπορεί να μεταβάλει και να προσθέσει ραντεβού στο σύστημα σαν να ήταν ένας πάροχος υπηρεσιών ή ένας χρήστης γραμματέας.
\textbf {ΒΑΣΙΚΗ ΡΟΗ}
Ο διαχειριστής συνδέεται στο backend μέρος της εφαρμογής και πηγαίνει στην σελίδα του ημερολογίου. Εκεί μπορεί να δει τα ραντεβού όλων των πάροχων υπηρεσιών και να πραγματοποιήσει αλλαγές σε αυτά. Με το που αποθηκευτούν οι αλλαγές σε ένα ραντεβού ο πελάτης και ο πάροχος θα ενημερωθούν με email, όπως θα γινόταν δηλαδή αν την επεξεργασία την έκανε ένας πάροχος.
\subsection {Διαχείριση πάροχων υπηρεσίας}
Τις υπηρεσίες που προσφέρει η εταιρεία τις αναλαμβάνουν κάποιοι υπάλληλοι (ή ομάδες υπαλλήλων), οι οποίοι αναφέρονται στο σύστημα ως πάροχοι υπηρεσιών. Τα στοιχεία τους, τις αρμοδιότητές τους και τα δικαιώματα μέσα στο σύστημα τα ορίζει μόνο ο διαχειριστής του συστήματος, από το backend μέρος της εφαρμογής.
\textbf{ΒΑΣΙΚΗ ΡΟΗ}
Ο διαχειριστής της εφαρμογής συνδέεται στο backend μέρος του συστήματος και πηγαίνει στην σελίδα των πάροχων υπηρεσίας. Εκεί βλέπει μια λίστα με τους ήδη καταχωρημένους πάροχους υπηρεσιών. Αν θέλει μπορεί να προσθέσει έναν καινούργιο πάροχο, ή να επεξεργαστεί και να διαγράψει κάποιον πάροχο που υπάρχει ήδη στην βάση δεδομένων.
\subsection {Διαχείριση Υπηρεσιών}
Οι πελάτες που θα επισκέπτονται τον ιστότοπο του Easy!Appointments της επιχείρησης θα κλείνουν ραντεβού για συγκεκριμένες υπηρεσίες. Το ποιες υπηρεσίες θα είναι διαθέσιμες και ποιοι πάροχοι υπηρεσιών μπορούν να εξυπηρετήσουν τι, το διαχειρίζεται ο διαχειριστής του συστήματος. Αποτελεί υποπερίπτωση χρήσης της παραμετροποίησης της εφαρμογής.

Binary file not shown.

View File

@ -17,4 +17,5 @@
\input{includes/external-tools.tex}
\input{includes/usage-scenarios.tex}
\input{includes/use-cases.tex}
\input{includes/unit-testing.tex}
\end{document}

Binary file not shown.

Binary file not shown.

View File

@ -1,177 +0,0 @@
%% =============================
%% GENERAL SETTINGS
%% =============================
\documentclass[12pt]{article}
\usepackage [margin=2.5cm]{geometry}
\usepackage {graphics}
\usepackage {xltxtra}
\usepackage {xgreek}
\usepackage {color}
\usepackage {hyperref}
\hypersetup {colorlinks}
\setmainfont[Mapping=tex-text]{Tahoma}
\setlength{\parindent}{0cm} %% No paragraph indent
\definecolor{darkred}{rgb}{0.5,0,0}
\definecolor{darkgreen}{rgb}{0,0.5,0}
\definecolor{darkblue}{rgb}{0,0,0.5}
\hypersetup{ colorlinks,
linkcolor=darkblue,
filecolor=darkgreen,
urlcolor=darkblue,
citecolor=darkred }
%% =============================
%% DOCUMENT PROPERTIES
%% =============================
\title{{\Huge {\bf Easy!Appointments}} \\[0.3cm] Περιπτώσεις Χρήσης}
\author{Αλέξανδρος Τσελεγγίδης}
\date{Νοέμβριος 2012}
%% =============================
%% DOCUMENT CONTENT
%% =============================
\begin{document}
\maketitle
\thispagestyle{empty} %% Απομάκρυνση page number από την πρώτη σελίδα
\pagebreak
%% ΠΕΡΙΠΤΩΣΕΙΣ ΧΡΗΣΗΣ ΔΙΑΧΕΙΡΙΣΤΗ
\section {Περιπτώσεις Χρήσης Διαχειριστή}
\subsection{Εγκατάσταση της εφαρμογής}
Αυτή η περίπτωση χρήσης περιλαμβάνει την ρύθμιση του server όπου θα τρέξει το Easy!Appointments και την δημιουργία του λογαριασμού του διαχειριστή.
\\[0.3cm]
Χαρακτήρες: Διαχειριστής, Σύστημα Βάσης Δεδομένων
\\[0.3cm]
Βαθμός σημαντικότητας: 9
\\[0.3cm]
Βαθμός δυσκολίας: 2
\subsection{Παραμετροποίηση της εφαρμογής}
Για να μπορέσει να λειτουργήσει η εφαρμογή σύμφωνα με την μορφή της επιχείρησης θα χρειαστεί να παραμετροποιηθεί από τον διαχειριστή. Η παραμετροποίηση περιλαμβάνει τα ωράρια λειτουργίας της επιχείρησης, την διαχείρηση των υπηρεσιών που θα ειναι διαθέσιμες προς το κοινό, καθώς και την διαχειρηση των πάροχων υπηρεσιών. Οι ρυθμίσεις αυτές θα μπορούν να μεταφέρονται από εγκατάσταση σε εγκατάσταση (portable).
\\[0.3cm]
Χαρακτήρες: Διαχειριστής, Σύστημα Βάσης Δεδομένων
\\[0.3cm]
Βαθμός σημαντικότητας: 8
\\[0.3cm]
Βαθμός δυσκολίας: 2
\subsection{Διαχείριση Ραντεβού}
Τα ραντεβού που θα κλείνουν οι πελάτες για τις διάφορες υπηρεσίες που προσφέρει η επιχείρηση θα εμφανίζονται πάνω σε ημερολόγια, τα οποία αντιπροσωπεύουν τα πλάνα των υπαλλήλων (πάροχων υπηρεσιών). Ο διαχειριστής θα μπορεί να κάνει οποιαδηποτε αλλαγή σε αυτά τα ραντεβού, αλλάζοντας έτσι το πλάνο ενός υπαλλήλου. Εκτός αυτού, ο διαχειριστής θα έχει την δυνατότητα να διαχειριστεί όλους τους πελάτες που έχουν καταχωρηθεί στο σύστημα.
\\[0.3cm]
Χαρακτήρες: Διαχειριστής, Σύστημα Βάσης Δεδομένων
\\[0.3cm]
Βαθμός σημαντικότητας: 10
\\[0.3cm]
Βαθμός δυσκολίας: 3
\subsection{Διαχείριση Πάροχων Υπηρεσίας}
Τις υπηρεσίες που προσφέρει η εταιρεία τις αναλαμβάνουν κάποιοι υπάλληλοι (ή ομάδες υπαλλήλων), οι οποίοι αναφέρονται στο σύστημα ως πάροχοι υπηρεσιών. Τα στοιχεία τους, τις αρμοδιότητές τους και τα δικαιώματα μέσα στο συστημα τα ορίζει μόνο ο διαχειριστής του συστήματος. Αποτελεί υπο-περίπτωση χρησης της παραμετροποίησης της εφαρμογής.
\\[0.3cm]
Χαρακτήρες: Διαχειριστής, Σύστημα Βάσης Δεδομένων
\\[0.3cm]
Βαθμός σημαντικότητας: 7
\\[0.3cm]
Βαθμός δυσκολίας: 1
\subsection{Διαχείριση Υπηρεσιών}
Οι πελάτες που θα επισκεπτονται τον ιστότοπο του Easy!Appointments της επιχείρησης θα κλείνουν ραντεβού για συγκεκριμένες υπηρεσίες. Το ποιές υπηρεσίες θα είναι διαθέσιμές και ποιοί πάροχοι υπηρεσιών μπορούν να εξυπηρετησουν τι, το διαχειρίζεται ο διαχειριστής του συστήματος. Αποτελεί υπο-περίπτωση χρησης της παραμετροποίησης της εφαρμογής.
\\[0.3cm]
Χαρακτήρες: Διαχειριστής, Σύστημα Βάσης Δεδομένων
\\[0.3cm]
Βαθμός σημαντικότητας: 6
\\[0.3cm]
Βαθμός δυσκολίας: 1
\subsection{Διαχείριση Γραμματειών}
Μερικές επιχειρήσεις με μεγάλο αριθμό υπαλλήλων, μπορεί να αναθέσουν το καθήκον της διαχείρισης ραντεβού και πελατών σε έναν ή περισσότερους γραμματείς. Οι γραμματείς που θα μπορούν να μπαίνουν στο σύστημα για να διαχειρίζονται τα ραντεβού των πάροχων θα καταχωρούνται από τον διαχειριστή του συστήματος.
\\[0.3cm]
Χαρακτήρες: Διαχειριστής, Σύστημα Βάσης Δεδομένων
\\[0.3cm]
Βαθμός σημαντικότητας: 6
\\[0.3cm]
Βαθμός δυσκολίας: 1
%% ΠΕΡΙΠΤΩΣΕΙΣ ΧΡΗΣΗΣ ΠΑΡΟΧΟΥ ΥΠΗΡΕΣΙΩΝ
\section {Περιπτώσεις Χρήσης Πάροχου Υπηρεσιών}
\subsection{Διαχείριση Ραντεβού}
Ο πάροχος υπηρεσίας, αφού του έχουν δοθεί τα κατάλληλα δικαιώματα από τον διαχειριστή θα μπορεί να διαχειρίζεται τα ραντεβού που αντιστοιχούν σε αυτόν. Για παράδειγμα θα μπορεί να αλλάξει την ημερομηνία και την ώρα, την διάρκεια και τα υπόλοιπα χαρακτηριστικά ενός ραντεβού.
\\[0.3cm]
Χαρακτήρες: Πάροχος Υπηρεσίων, Σύστημα Βάσης Δεδομένων
\\[0.3cm]
Βαθμός σημαντικότητας: 7
\\[0.3cm]
Βαθμός δυσκολίας: 1
\subsection{Διαχείριση Ημερολογιακού Πλάνου}
Σε κάθε πάροχο υπηρεσιών αντιστοιχεί ένα ημερολογιακό πλάνο, το οποίο περιέχει τα ραντεβού που έχουν κανονιστεί μεταξύ αυτού και των πελατών. Αυτό το πλάνο μπορεί ο χρήστης να το δει, να το επεξεργαστεί και να το συγχρονίσει με άλλες υπηρεσίες ημερολογίων (Google Calendar). Εκτός αυτού μπορεί να ορίσει ένα πλάνο ως πρότυπο και έτσι αυτό να αποτελεί την βάση για κάθε νέα εβδομάδα.
\\[0.3cm]
Χαρακτήρες: Πάροχος Υπηρεσιών, Σύστημα Βάσης Δεδομένων, Google Calendar
\\[0.3cm]
Βαθμός σημαντικότητας: 10
\\[0.3cm]
Βαθμός δυσκολίας: 3
\subsection{Λήψη Ειδοποιήσεων από το Σύστημα}
Όταν γίνονται νέες κρατήσεις ραντεβού, αλλά και όταν πραγματοποιούνται αλλαγές στο πλάνο ενός παρόχου υπηρεσίας πρέπει όλοι οι εμπλεκόμενοι να ενημερωθούν με κάποιον τρόπο. Για αυτόν τον λόγο το Easy!Appointments θα περιέχει ένα υποσύστημα το οποίο θα αποστέλνει Email σε όποιον χρήστη ενδιαφέρει άμεσα η αλλαγή.
\\[0.3cm]
Χαρακτήρες: Σύστημα Ειδοποιήσεων, Υπηρεσία SMS
\\[0.3cm]
Βαθμός σημαντικότητας: 9
\\[0.3cm]
Βαθμός δυσκολίας: 2
%% ΠΕΡΙΠΤΩΣΕΙΣ ΧΡΗΣΗΣ ΠΕΛΑΤΗ
\section {Περιπτώσεις Χρήσης Πελάτη}
\subsection{Κράτηση Ραντεβού}
Αφού ο πελάτης βρει την ημερομηνία και την ώρα που τον βολεύει για το ραντεβού του, θα έχει την δυνατότητα να πραγματοποιήσει μια κράτηση, καταχωρόντας τα στοιχεία του στο σύστημα. Με το πέρας αυτής της διαδικασίας το επιλεγμένο χρονικό διάστημα έχει δεσμευτεί και δεν μπορεί κάποιος άλλος πελάτης να το πάρει.
\\[0.3cm]
Χαρακτήρες: Πελάτης, Σύστημα Βάσης Δεδομένων
\\[0.3cm]
Βαθμός σημαντικότητας: 9
\\[0.3cm]
Βαθμός δυσκολίας: 2
\subsection{Επεξεργασία - Ακύρωση Ραντεβού}
Είναι πολύ σημαντικό να υπάρχει η δυνατοτητα ο ίδιος πελάτης να μπορεί να ακυρώσει το ραντεβού του (σημειώνοντας τον λόγο αν θέλει) ή κάποιος άλλος χρήστης με τα ανάλογα δικαιώματα να μπορεί να αλλάξει ημερομηνία και να κάνει τροποποιήσεις στο ραντεβού. Μόλις ο πελάτης ολοκληρώσει την κράτηση ενός ραντεβού, θα του έρχεται ένα email το οποίο θα περιέχει έναν σύνδεσμο (μοναδικό) ο οποίος θα οδηγεί στην σελίδα επεξεργασίας του ραντεβού. Σε αυτήν την σελίδα ο πελάτης θα μπορεί να πραγματοποιήσει αλλαγές πάνω σε ένα υπάρχον ραντεβού (αλλαγή ημερομηνίας, υπηρεσίας ή και ακύρωση ραντεβού).
\\[0.3cm]
Χαρακτήρες: Πελάτης, Σύστημα Βάσης Δεδομένων, Συστημά Ειδοποιήσεων
\\[0.3cm]
Βαθμός σημαντικότητας: 9
\\[0.3cm]
Βαθμός δυσκολίας: 3
\subsection{Ειδοποιήσεις Συστήματος}
Παρόμοια με την προαναφερθέντα περίπτωση χρήσης, ο πελάτης θα ενημερώνεται για οποιαδήποτε αλλαγή έχει γίνει σε κάποιο ραντεβού του.
\\[0.3cm]
Χαρακτήρες: Πάροχος Υπηρεσιών, Σύστημα Βάσης Δεδομένων, Google Calendar
\\[0.3cm]
Βαθμός σημαντικότητας: 8
\\[0.3cm]
Βαθμός δυσκολίας: 2
% ΠΕΡΙΠΤΩΣΕΙΣ ΧΡΗΣΗΣ ΓΡΑΜΜΑΤΕΑ
\section {Περιπτώσεις Χρήσης Γραμματέα}
\subsection{Διαχείριση Ημερολογιακών Πλάνων}
Ο χρήστης γραμματέας μπορεί να πραγματοποιήσει αλλαγές στα ραντεβού ενός ή περισσότερων πάροχων υπηρεσίας.
\\[0.3cm]
Χαρακτήρες: Γραμματέας, Σύστημα Βάσης Δεδομένων
\\[0.3cm]
Βαθμός σημαντικότητας: 7
\\[0.3cm]
Βαθμός δυσκολίας: 2
\subsection{Διαχείριση Πελατών}
Ο χρηστης γραμματέας μπορεί να διαχειρίζεται τους καταχωρημένους πελάτες, διευκολύνοντας έτσι την λειτουργία της επιχείρησης και την εξυπηρέτηση των πελατών.
\\[0.3cm]
Χαρακτήρες: Γραμματέας, Σύστημα Βάσης Δεδομένων
\\[0.3cm]
Βαθμός σημαντικότητας: 6
\\[0.3cm]
Βαθμός δυσκολίας: 1
\end{document}