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
- Il cliente (mittente) che vuole spedire un pacco si collega al sito della FastDelivery (o scarica l’apposita App sul proprio smartphone/tablet) e, se nuovo, si registra alla piattaforma (un po’ come succede nei siti di e-commerce quando si acquista un prodotto) altrimenti, se già registrato, effettua il Login ed accede alla propria area personale.
- Nell’area personale il cliente potrà effettuare diverse azioni, tra cui le più importanti sono:
- Spedire un nuovo pacchetto
- Monitorare i pacchetti già spediti
- Vedere uno storico di tutte le spedizioni effettuate con la FastDelivery
- Modificare i dati personali compreso indirizzo di fatturazione e/o spedizione
- Ottenere info sui costi e le modalità del servizio
- Spedire un nuovo pacchetto: Il cliente (mittente) selezionando l’apposita voce di menu entrerà in una procedura guidata (composta anche da più videate) dove potrà scegliere:
- Il tipo di sevizio: consegna veloce, media, ecc.;
- Il tipo di pacchetto: dimensioni/peso, assicurato o meno, fragile, ecc
- Inserire i dati del mittente: cioè confermare i dati già registrati del mittente (indirizzo di prelievo, indirizzo di fatturazione, ecc) o inserire informazioni peculiari di questa spedizione. Ad esempio se chi spedisce è un’azienda con più uffici in luoghi diversi ma con un sistema di attivazione della spedizione centralizzato deve essere possibile inserire l’indirizzo di prelievo del pacco nonché un eventuale referente con cui relazionarsi.
- Inserire i dati del destinatario
- Scegliere le modalità di pagamento: carta di credito, bonifico, contanti, contrassegno, PayPal, ecc.
- Informazioni aggiuntive o note (vincoli sugli orari o altro)
- A fine procedura il sistema conferma l’ordine (anche con notifiche via mail/SMS) ed assegna un codice al pacchetto. Il codice potrebbe essere di tipo alfanumerico e così composto: SO di partenza-SO di destinazione-CodCliente-NrProgressivoOrdineDelCliente
- A fine procedura il cliente potrà scaricare, stampare ed incollare sul pacco (se di dimensioni sufficienti) un documento PDF con i dati della spedizione: Mittente, Destinatario, codice pacchetto, QR code o Codice a Barre. In alternativa l’etichettatura del pacco può essere fatta dall’operatore che lo preleva (opportunamente attrezzato all’uopo)
- Prelievo del pacchetto: Per il prelievo del pacchetto si possono prevedere due o più soluzioni a secondo della realtà dell’SO di riferimento.
- La SO di partenza (cioè quella assegnata automaticamente dal sistema in base all’indirizzo di prelievo del pacchetto) riceve una notifica automatica sul terminale dell’ufficio o dell’addetto allo smistamento e quest’ultimo, anche in base alle priorità (pacco celere, medio, ecc.), pianifica il prelievo del pacchetto comunicando sia al proprio operatore (corriere) che al cliente le modalità (data ed ora).
- Se la SO è sufficientemente piccola e con carichi di lavoro non troppo elevati si può pensare ad una notifica diretta agli operatori sul territorio (corrieri). A tutti gli operatori o solo a quelli più vicini al punto di prelievo per zona assegnata o per rilevamento tramite GPS (in quest’ultimo caso ogni corriere, mediante il dispositivo aziendale corredato di opportuna App, comunica ad intervalli regolari le proprie coordinate GPS al sistema. Il sistema in base alla posizione del corriere e a quella del punto di prelievo calcola le distanze e notifica solo ai più vicini).
- Il corriere, in tutti i casi, comunica al sistema (o all’operatore in ufficio) la presa in carico del prelievo presso il cliente
- Il corriere preleva il pacchetto dal cliente e, tramite l’app sul proprio dispositivo aziendale (Smartphone o Tablet ), comunica al sistema l’avvenuto ritiro (codice identificativo, data-ora ritiro- descrizione: “ritiro c/o cliente”). Il dato, memorizzato sul database aziendale, sarà il primo record del tracciamento e sarà subito visibile sial al cliente (area personale) che agli operatori della FastDelivery.
- Consegna pacchetto all’OS di partenza: Il corriere porta il pacchetto all’OS di riferimento. Il magazziniere registra la presa in carico del pacchetto mediante App su dispositivo aziendale o PC (scansione di QR code/codice barre o inserimento manuale del codice del pacchetto). Secondo record aggiunto dal sistema al database di tracciamento del pacco.
- Trasferimento pacchetto da OS partenza a CSR di riferimento: Il magazziniere, consegnato il pacco al corriere che lo trasferirà al CSR di zona, scarica il pacchetto dal magazzino sempre tramite apposita area del sito o tramite app del dispositivo aziendale. Terzo record sul database di tracciamento (in quest’ultimo caso oltre alle info visibili al cliente: codice-data/ora-descrizione potrebbero essere memorizzate altre info visibili solo agli operatori aziendali come codice del magazziniere, codice del corriere, ecc.)
- Altri trasferimenti: Il passaggio tra le varie strutture (come da schema della traccia) si ripete con modalità identiche. Ogni struttura genere due record: la presa in carico e lo scarico con le relative info memorizzate nel database.
- Il destinatario: Il destinatario, se il mittente gli invia copia della notifica via e-mail ricevuta, può a sua volta monitorare il percorso del pacchetto (istruzioni sulla mail). Andando su un’apposita pagina del sito della FastDelivery ed inserendo il codice ricevuto dal mittente (senza alcuna registrazione) può visualizzare i record registrarti dal sistema (tracciatura del percorso).
- Consegna del pacchetto: Il destinatario sarà informato via mail o via SMS (a secondo delle info inserite in fase di ordine del mittente. Almeno una delle due obbligatorie: mail o telefono) della data e ora di consegna del pacchetto. Questa fase è a cura della SO di destinazione che notifica al destinatario la data e ora di consegna del pacchetto (possibilmente con un certo anticipo se la comunicazione è via e-mail). Deve essere previsto un feedback da parte del destinatario nel caso quest’ultimo non potesse essere disponibile per la data concordata.
- Il corriere che consegna il pacco al destinatario (oltre alla normale ricevuta per il cliente), notifica al sistema (mediante la solita App) l’avvenuta consegna del pacchetto al destinatario. Ultimo record inserito nel database di tracciatura.
Punto 2
- 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!
- 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.)
- L’azienda ha due o più possibili alternative per implementare il nuovo servizio:
- 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
- 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
- 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.
- 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):
Figura 1: Tabella PACCHETTI con record di esempio
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):