Stampa
Categoria: Didattica
Visite: 6006

Maturità 2018:  ITIA – ESAME DI STATO DI ISTRUZIONE SECONDARIA SUPERIORE

Indirizzo: ITIA – INFORMATICA E TELECOMUNICAZIONI

ARTICOLAZIONE INFORMATICA

Tema di: SISTEMI E RETI – Tipologia C

Soluzione

Premessa

La soluzione, per quanto possibile, prevede l’uso di dispositivi (Smatphone/Tablet/PC) e tecnologie standard facilmente reperibili sul mercato e l’utilizzo della rete Internet e telefonica. Le comunicazioni con il cliente avvengono mediante notifiche via mail e/o SMS/WhatsApp a secondo dei dati forniti dal cliente stesso. Le comunicazioni tra gli operatori della FastDelivery sono gestite da apposite Apps  sul dispositivo  utilizzato o mediante accesso ad apposita area sul sito web dedicata al servizio (previa autenticazione e  con attività legata al ruolo in azienda).  Il pacchetto/spedizione è identificato da un codice  alfanumerico univoco generato dal sistema in modo automatico a cui potrà essere abbinato un codice a barre o un QR code per acquisizione del codice con strumenti elettronici da parte degli operatori della FastDelivery

 

Punto 1

La procedura illustrata si riferisce all’uso di un PC da parte del cliente, ma può essere vista (con le opportune peculiarità del mezzo e dell’APP) in maniera  identica anche su dispositivi Mobile

Punto 2

  1. I trasportatori essendo in giro su furgoni o altro mezzo utilizzeranno o un proprio dispositivo (smatphone o tablet) o un dispositivo fornito dall’azienda FastDelivery (sempre cellulare o tablet ma con caratteristiche HW/SW adeguate allo scopo) ed un apposita App per interfacciarsi alla web application dell’azienda. Ogni operatore accede mediante credenziali e può vedere e svolgere azioni sul sistema adeguate al proprio ruolo. L’autenticazione permette anche al sistema, per quanto riguarda la tracciabilità del pacchetto, di memorizzare informazioni peculiari (chi fa che cosa).  Nel caso dei trasportatori l’App gestisce il sistema GPS del dispositivo inviando le coordinate, ad intervalli regolari, al sistema (web app aziendale) per tracciare su Google Maps  la posizione del corriere sul territorio e per le notifiche mirate (vedi sopra).  I magazzinieri  possono usare sia dispositivi come Tablet e lettori di QR code (nell’app) o PC ed eventualmente lettori di codice barre (uso di area riservata agli operatori sul sito web). Anche qui l’accesso al sistema è mediante account che individua in maniera univoca l’operatore  e cosa può fare (magazziniere, impegato uff. smistamento, amministrativo, dirigente o altro). NOTA: il QR code o il Codice a barra sono in alternativa!
  2. La comunicazione avviene mediante la normale rete telefonica (SMS/ WhatsApp/Telefonate) e la rete Internet (tutti i dispositivi devono avere accesso a Internet). Le comunicazioni ai  vari operatori (clienti/destinatari/corrieri/magazzinieri/impiegati) può essere automatica (gestita dal sistema mediante invio di mail o messaggi SMS) o manuale (gestita da impiegati/magazzinieri/corrieri)  che attivano appositi menu/comandi dell’App o della web application.  L’App e la web application utilizzano il protocollo HTTP  per la trasmissione dei dati al server (form/query string). Per la sicurezza dei dati bisogna utilizzare il protocollo HTTPS.  Tutte le comunicazioni avvengono previa autenticazione e su connessione protetta (HTTPS). Il server tiene i Log di tutti gli accessi e memorizza su database le informazioni peculiari del servizio (tracciabilità pacchetti, clienti, operatori, ecc.)
  3. L’azienda ha due o più possibili alternative per implementare il nuovo servizio:
    1. Acquistare: un IP pubblico; uno o più server (HW e tutto ciò che ne consegue) per gestire il server web e quello di posta; una connessione a banda larga; una o più licenze per un sistema operativo di tipo server (win2012 server); Licenze per database; Assumere un sistemista di rete o formare personale interno; Commissionare ad una software house le web app e le app per cellulare e tablet; formare il personale interno sull’uso della nuove procedure. Scegliendo tecnologia open source si risparmia su alcuni costi ma la manutenzione e l’assistenza sono più problematiche.  Questa soluzione ha alti costi di investimento ed è di più difficile implementazione per non parlare poi di tutte le problematiche relative al backup dei dati e alla fault tollerance
    2. Affittare un hosting (tipo aruba) con dominio, piattaforma Linux o Windows e database (MySQL o MS- SQL Server o altro), ma rimarrebbe a carico dell’azienda comunque la gestione del sito e del database che prevede avere personale esperto e competente in sede. I costi sono molto bassi
    3. Acquistare un server dedicato. Anche qui si eliminano i costi dell’HW. Lascia il massimo di flessibilità e di gestione delle risorse ed ha un buon rapporto prezzo/prestazioni ma serve una persona altamente competente che sia in grado di configurare e gestire in remoto tutti i servizi del server dedicato.
    4. Acquistare un sevizio CLUD : Demanda al fornitore del servizio tutte le problematiche di sicurezza, aggiornamento e manutenzione del sistema. Permette di risparmiare sull’investimento iniziale e sperimentare l’avvio del nuovo servizio incrementando progressivamente le risorse HW/SW del sistema man mano che il servizio si sviluppa. La gestione è in parte semplificata da opportune procedure guidate, ma rimane comunque la necessità di avere personale esperto nella sua gestione.

 

La soluzione più semplice ed economica (dipende dalla dimensione dell’azienda e da quanti soldi è disposta ad investire) è quella del punto b) delegando ad una software house la creazione del software e la gestione del sito nonché l’aggiornamento del personale.

Punto 3

Con la soluzione adottata, la sicurezza dei dispositivi degli operatori (in particolare dei corrieri) si può garantire fornendo dispositivi aziendali con accesso al dispositivo mediante PW o Impronte digitali.

La sicurezza del SW e delle comunicazioni deve essere garantita da accessi mediante credenziali, uso di sessioni brevi e trasmissioni crittografate (HTTPS).

La sicurezza dei dati viene garantita dal fornitore del servizio acquistando il backup automatico del sito e del database e accedendo regolarmente per farsene copia in locale.

La performance del sito la si può incrementare acquistando  un servizio un po’ più costoso ma che garantisca maggior larghezza di banda e migliori prestazioni.

SECONDA PARTE

Quesito 1

 

Un possibile modello E/R  SEMPLIFICATO dello schema concettuale è il seguente:

 

Il modello logico (solo della parte tracciamento) potrebbe essere il seguente:

UTENTI: id, email,pw, ruolo, data_iscrizione. NOTA: email=username; ruolo: 1=amministratore; 2=cliente; 3=corriere; 4=magazziniere; ecc.)

CLIENTI: id (coincide con id utente), cognome, telefono, indirizzo,CF, PartitaIVA, ecc. (altri dati). NOTA: id coincide con id utente (id=id utente). Relazione UNITI 1:1

ORDINI: id, stato, altri dati (ind. mitt. e dest., info su pacchetto, ecc). NOTA: id=id_utente; stato: nuovo, avviato, evaso, ecc.

ORDINI_OPERATORI (relazione GESTITI):  id_ordine, id_operatore

OPERATORI: id, cognome, mansione, id_sede, id_mezzo, altri dati (telefono, indirizzo, CF, ecc.). NOTA: id=id utente (relazione SONO 1:1)

OPERATORI_PACCHETTI (relazione TRACCIA):  id_operatore, id_pacchetto

PACCHETTI: id, id_ordine, data , posizione, altri dati (note, descrizione, …). NOTA:  tutti i record che hanno medesimo id_ordine sono i record che tracciano un determinato pacchetto; id_ordine realizza anche la relazione VEDE legata a CLIENTI;  la data (timestamp) viene inserita automaticamente all’iserimento del record (ora e data di sistema. Valore predefinito); la posizione indica dove si trova il pacchetto (ancora dal mittente; prelevato dal mittente; presso SO x; presso CSR y; consegnato al destinatario;  ecc.)

NOTA: gli id sottolineati indicano che sono chiavi primarie (PK); l’id ordini viene assemblato da id sede SO partenza+id sede SO destinazione+id cliente+nr_progressivo_ordine_di_quel_cliente (es.: 318-234-3456-21) ciò permette di accedere ai dati di sede o del cliente direttamente disassemblando il codice ordine e dovrebbe semplificare la gestione del database (query).

A titolo di esempio (non fa parte della soluzione):

Tabella Pacchetti con record

Figura 1: Tabella PACCHETTI con record di esempio

Tabella Pacchetti-Struttura

Figura 2: Tabella PACCHETTI – Struttura MySQL

 

Come codice, per la sua semplicità,  si realizza la parte di visualizzazione da parte del destinatario dello stato di consegna del pacchetto.

Il destinatario, dopo aver ricevuto dal mittente o dalla FastDelivery un e-mail con il codice dell’ordine e le istruzioni si reca sull’apposita pagina del sito (o scarica App per cellulare/tablet). Inserisce nell’apposito campo il codice ordine e, confermando,  riceve le informazioni prelevate dall’entità PACCHETTI in forma tabellare (data, posizione ed eventuali note inserite dagli operatori).

Il codice presentato è in PHP ed è puramente didattico ed esplicativo (no CSS, Template o altri accorgimenti “professionali”).

Codice

 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Traccia Pacchetto</title>
    </head>
    <body>
        <?php
        function stampaTabella($result) {
            print"  <table border='1'>
        <tr><th>Data</th><th>Posizione</th><th>Operatore</th></tr>";
            while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
                print "<tr><td>".implode("</td><td>", $row)."</td></tr>\n";
            }
            print "</table>";
        }        
        if (isset($_POST['codice'])) {
            //Connessione al database
            $mysqli = @new mysqli("localhost", "root", "", "fastdelivery");
            if ($mysqli->connect_errno) {
                die( "Errore connessione MySQL: (" . $mysqli->connect_errno.") ".$mysqli->connect_error);
            }
            $sql = "SELECT data,posizione, note FROM pacchetti WHERE id_ordine LIKE '$_POST[codice]'";
            $result=@$mysqli->query($sql);
            if (!$result) {
                die('Query Errata: ' .$mysqli->error);
            }
            if ($result->num_rows > 0) {
                Print "<h1>Tracciato del pacchetto: $_POST[codice]</h1> ";
                stampaTabella($result);
            } else
                print "<h1>Pacchetto '$_POST[codice]': Nessun informazione disponibile</h1>";
        }
        ?>
        <h1>Inserire codice di spedizione pacchetto</h1>
        <form method="post">
            <p>Codice:<input type="text" name="codice" size="40" required="">
            <input type="submit" value="Cerca"/></p>
        </form>
    </body>
</html>

 

 

A titolo di esempio l'output del codice (non fa parte della soluzione):