Prima Parte: Ministero Dell'istruzione, Dell' Università e Della Ricerca
Prima Parte: Ministero Dell'istruzione, Dell' Università e Della Ricerca
Il candidato svolga la prima parte della prova e due tra i quesiti proposti nella seconda parte.
PRIMA PARTE
Per favorire il turismo culturale, l’Assessorato al Turismo di una città d’arte di medie dimensioni intende realizzare
un’infrastruttura tecnologica che offra ai visitatori un servizio per la fruizione di contenuti multimediali che descrivono i
“punti di interesse” (Point Of Interest = POI) di tipo monumentale (es. chiese, luoghi storici, …) e artistico (es. musei,
mostre, …) distribuiti nel centro storico della città.
Per il servizio, si è deciso di erogare i contenuti multimediali sotto forma di pagine web, secondo due possibili formati
denominati “pagina multimediale di base” e “pagina multimediale avanzata”.
Nella pagina multimediale di base sono previsti:
un video di presentazione breve del POI della durata tipica di un minuto esclusivamente in italiano con sottotitoli
in inglese;
un massimo di tre immagini relative al POI (es. dettagli architettonici, quadri, ...) con relativa didascalia in
italiano ed inglese.
Nella pagina multimediale avanzata sono previsti:
un video di presentazione approfondita del POI della durata tipica di cinque minuti in una fra 7 possibili lingue
compreso l’italiano;
una galleria di una ventina di immagini con relativa descrizione (tipicamente intorno ai 500 caratteri) in una fra 7
possibili lingue compreso l’italiano.
Il visitatore, acquistando il servizio in uno dei chioschi (InfoPoint) dislocati nella città, riceverà un biglietto con cui potrà
avere accesso ai due tipi di pagina sulla base di tre possibili tariffe:
“tariffa base”: permette la fruizione di una pagina multimediale di base per ciascun POI;
“tariffa intermedia”: consente la fruizione di pagine multimediali avanzate per tre POI a scelta dell’utente e
pagine di base per gli altri;
“tariffa piena”: consente la fruizione di pagine multimediali avanzate per ogni POI della città.
Il biglietto acquistato riporta la password di accesso ai contenuti, univoca per ciascun visitatore, associata al tipo
di tariffa pagata e con validità giornaliera.
In relazione alle funzionalità che il servizio dovrà offrire, l’Assessorato richiede che siano soddisfatti i seguenti
vincoli progettuali:
la consultazione delle pagine multimediali sia abilitata esclusivamente ai dispositivi (minitablet) forniti all’atto
dell’acquisto del biglietto, previa consegna di un documento di identità o di un numero di carta di credito valida;
per facilitare l’aggiornamento periodico dei contenuti esistenti e l’inserimento di nuovi, gli stessi non siano
memorizzati sui dispositivi utilizzati dagli utenti ma su sistemi server;
l’accesso alle pagine multimediali sia effettuabile solo dopo l’inserimento, all’inizio della visita, della password
presente nel biglietto;
l’accesso alle pagine multimediali relative ad un POI debba avvenire solo in prossimità o all’interno del POI
stesso;
la restituzione dei dispositivi (minitablet) possa avvenire presso l’InfoPoint che ha in custodia il documento di
identità oppure presso un qualsiasi InfoPoint se il visitatore ha optato per lasciare il numero di carta di credito
valida.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 2
Prof. Mauro De Berardis Teramo
Il candidato analizzi la realtà di riferimento e, fatte le opportune ipotesi aggiuntive, individui una soluzione che a suo
motivato giudizio sia la più idonea a sviluppare i seguenti punti:
1. il progetto, anche mediante rappresentazioni grafiche, dell’infrastruttura tecnologica ed informatica necessaria a
gestire il servizio nel suo complesso, dettagliando:
a) l’architettura della rete e le caratteristiche del o dei sistemi server, motivando anche la scelta dei luoghi in cui
installare questi ultimi;
b) le modalità di comunicazione tra server e dispositivi consegnati ai visitatori, descrivendo protocolli e servizi
software da implementare per gestire la rete e fornire le pagine;
c) gli elementi dell’infrastruttura utili a limitare la fruizione delle pagine multimediali esclusivamente in prossimità o
all’interno dei POI a cui si riferiscono;
2. il progetto della base di dati per la gestione del servizio sopra descritto: in particolare si richiedono il modello
concettuale ed il corrispondente modello logico;
3. la progettazione delle pagine web che consentono all’utente, in possesso di biglietto con tariffa base, la fruizione dei
contenuti multimediali relativi al POI presso cui si trova, codificandone una porzione significativa in un linguaggio a
scelta;
4. l’analisi di massima delle possibili modalità di gestione delle tre fasce tariffarie, delle opzioni offerte all’utente per la
scelta dei tre POI nel caso della tariffa intermedia, e della scelta della lingua nel caso delle tariffe intermedia e piena.
SECONDA PARTE
Il candidato risponda a due quesiti a scelta tra quelli sotto riportati.
I. In relazione al tema proposto nella prima parte, si vuole offrire ai visitatori la possibilità di inserire via web un
commento ed un voto di gradimento su ogni POI visitato. Effettuata a tale scopo una opportuna integrazione della base
di dati, si realizzi, codificandola in un linguaggio a scelta, una pagina web che consente la visualizzazione della media
dei voti ricevuti da ciascun POI.
II. In relazione al tema proposto nella prima parte, si discuta la possibilità di allargare la fruizione dei contenuti
multimediali anche ai dispositivi personali degli utenti. In particolare, si analizzino le seguenti due ipotesi alternative:
uso limitato ai soli dispositivi (minitablet) forniti all’atto dell’acquisto del biglietto, come sopra descritto: si
individuino possibili soluzioni per impedire l’accesso alle pagine multimediali attraverso dispositivi non forniti
dagli InfoPoint;
uso consentito ai dispositivi personali degli utenti (es. smartphone): si descriva una possibile integrazione del
servizio volta a consentire la fruizione dei contenuti direttamente ad un singolo dispositivo di proprietà del
visitatore, pur mantenendo i vincoli di fruibilità in base alla tariffa associata al biglietto.
III. Nella realizzazione e gestione di una base di dati accessibile da categorie di utenti con differenti ruoli, sono di
rilevante importanza gli aspetti relativi alla sicurezza dei dati. Ad esempio, si supponga che nella realtà scolastica il
personale della “Segreteria Alunni” non debba accedere ai dati del personale docente, il personale della “Segreteria
Docenti” non debba accedere all’elenco dei fornitori della scuola, ecc. Il candidato approfondisca la tematica proposta
discutendo gli strumenti offerti dai sistemi DBMS per creare utenze che abbiano un accesso libero alla totalità dei dati o
limitato a parte di essi, in termini di operazioni consentite, in base al ruolo ricoperto nell’organizzazione. Produca quindi
esempi significativi, nel contesto proposto della segreteria scolastica, nel linguaggio fornito dal DBMS di sua
conoscenza.
IV. Per le aziende che dispongono di sedi dislocate in varie località sorge spesso la necessità di consentire al personale
l’accesso ai sistemi da postazioni remote. Il candidato discuta le tipologie e i protocolli di accesso remoto ai sistemi,
indicando in particolare le possibilità offerte dalle connessioni VPN. Sviluppi poi esempi nel caso di una azienda che ha
due sedi operative e agenti commerciali che, muovendosi sul territorio, hanno necessità di collegarsi al sistema
informativo aziendale.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 3
Prof. Mauro De Berardis Teramo
La prima parte riguarda la progettazione di una piattaforma digitale, web based, per la fruizione di contenuti informativi
dell'offerta turistica del centro storico di una città d'arte di medie dimensioni. L'infrastruttura di rete necessaria riguarda:
il server che fornisce i contenuti informativi sui singoli punti di interesse e gestisce la piattaforma
i punti di interesse (POI), chiese, castelli, palazzi storici, musei, eventi ecc.., oggetto dell'offerta turistica
i chioschi (InfoPoint), in cui i turisti possono acquistare i servizi di fruizione dei contenuti multimediali relativi ai POI
Per quel che riguarda il server, prendiamo in considerazione 3 alternative:
1. utilizzare un Data Center costruito e gestito internamente dal Comune
2. gestire la piattaforma attraverso un portale e facendo ricorso ad una soluzione hosting tradizionale
3. affidarsi ad un Server cloud, ovvero a risorse e servizi forniti tramite Internet da un Provider
Analizzando le varie soluzioni, possiamo fare le seguenti considerazioni:
a) L'utilizzo di un Data Center interno garantisce il pieno controllo su dati e applicazioni ma richiede un
investimento iniziale elevato per l'acquisto e la configurazione del server e necessita di personale tecnico
informatico specializzato. Inoltre richiede notevoli costi annuali per la connessione DSL a larga banda, per la
manutenzione e l'upgrade dell'hardware e del software e per garantire la sicurezza informatica;
b) L’hosting tradizionale è una soluzione poco costosa ma adatta per ospitare esclusivamente siti con un traffico
non elevato;
c) L'utilizzo di un Server Cloud richiede che all'interno della struttura comunale sia presente una figura
professionale in grado di amministrare da remoto un sistema informativo complesso. Inoltre non consente la
possibilità di intervenire immediatamente in casi di guasti hardware e software: bisogna aprire un ticket di
assistenza e aspettare l'intervento del provider. Ma garantisce diversi e importanti vantaggi:
virtualizzazione dei sistemi in ambiente GNU/Linux open source su una infrastruttura dedicata
pieno controllo e possibilità di gestione effettuando tutte le configurazioni che si ritengono necessarie
nessun investimento iniziale e costi annuali complessivi sostenibili
elevati livelli di sicurezza informatica grazie ad un'architettura distribuita e ridondata
gradualità degli investimenti: possibilità di richiedere al Provider nuovi servizi o prestazioni più performanti
man mano che crescono le esigenze o di modulare le risorse a seconda del fabbisogno
totale scalabilità
Tra le 3 alternative, si sceglie la soluzione Cloud in quanto le tecnologie di virtualizzazione e l’hardware proposti dai
fornitori di servizi Cloud garantiscono affidabilità, scalabilità, flessibilità ed elevata sicurezza informatica e permettono di
contenere i costi di esercizio. Un Web Server Apache, interfacciato con DB MySql e installato sul Server Cloud,
fornisce tramite protocollo HTTPS le pagine web di base ed avanzate a cui accedono i visitatori, dialogando con i POI e
gli InfoPoint per la gestione delle tariffe e dei servizi da erogare.
I POI sono equipaggiati da un modem/router/access point per connettere i minitablet dei visitatori, via wireless, alla rete
Internet e consentire la fruizione dei contenuti multimediali. In alternativa, ciascun minitablet potrebbe essere dotato di
connettività LTE/4G con evidenti vantaggi di semplificazione dell'infrastruttura ma allo stesso tempo con pesante
aggravio dei costi di gestione.
Gli InfoPoint, oltre a fornire le informazioni turistiche, devono stampare e consegnare ai visitatori i biglietti e
contestualmente, "previa consegna di un documento di identità o di un numero di carta di credito valida", i minitablet Per
questo motivo in ciascun InfoPoint, la consegna di biglietti e dispositivi sarà gestita da un operatore mentre i servizi di
informazione turistica avanzati (elenco e descrizione sintetica dei POI, mappe, indicazione di percorsi, contenuti
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 4
Prof. Mauro De Berardis Teramo
multimediali, ecc..) verranno forniti, in diverse lingue, da un totem interattivo con touchscreen. Gli InfoPoint sono
dislocati in alcuni punti strategici del centro storico, presumibilmente nelle vicinanze dei POI più importanti e frequentati
dai visitatori.
POI ed InfoPoint sono connessi ad Internet tramite l'infrastruttura di rete cittadina, wireless e cablata, a larga banda già
esistente e basata sull'utilizzo di fibra ottica, con connettività FTTH (Fiber to the Home con velocità di trasmissione sia
in download che in upload fino a 1 GBit/sec).
La scelta della fibra ottica, peraltro sempre più competitiva in termini di costi, è necessaria per assicurare una
connettività adeguata ad un servizio a pagamento, basato su pagine web che presentano contenuti multimediali
"pesanti" e che presumibilmente in alcuni POI e in determinate occasioni viene fruito contemporaneamente da un
numero elevato di utenti.
InfoPoint
POI
Web Server
Internet DB MySql
POI Rete fibra ottica
Il minitablet che viene fornito in dotazione agli utenti che hanno acquistato il servizio è equipaggiato con SO Android e
si connette automaticamente alla rete WiFi nella quale si trova in quel momento, grazie al fatto che su di esso sono
"salvate" le reti WiFi (SSID e password) di tutti i POI del centro storico ed è impostata l'opzione "Attiva WiFi
automaticamente".
Sul minitablet è installata un'app dedicata che presenta la mappa del centro storico con i marker dei vari punti di
interesse e, attraverso il dialogo con il server, gestisce il servizio; inoltre è settato con un account ospite e un profilo
molto limitato che, per motivi di sicurezza e privacy, consentono di usare esclusivamente l'app dedicata e impediscono
di modificare le impostazioni di sistema. L'app del minitablet è dunque il cuore del servizio per la fruizione di contenuti
multimediali relativi ai POI e, poiché i visitatori che la utilizzano provengono verosimilmente da diverse parti del mondo, è
localizzata nelle lingue più importanti e diffuse.
Il sistema proposto si basa su un'architettura client-server, nella quale il dispositivo client Android scambia dati con il
Db MySql attraverso script PHP lato Server. Per realizzare il collegamento agli script PHP si utilizza il protocollo HTTP
dal sistema Android, per lo scambio dei dati si utilizza preferibilmente il formato JSON (JavaScript Object Notation).
2. il progetto della base di dati per la gestione del servizio sopra descritto: in particolare si richiedono il modello
concettuale ed il corrispondente modello logico;
illustrato datacaricamento
id url flag
descrizione
id url datacaricamento
id url
datacaricamento n n immagineavanzata lingua
n
flag
flag videobreve videolungo
lingua
Ipotesi di lavoro
Per semplicità:
di ciascuna entità sono presi in considerazione solo gli attributi più significativi e utili per la soluzione del tema
proposto
non si prendono in considerazione le tabelle nazioni e città relative al visitatore che acquista il biglietto e la
tabella lingue relativa alle lingue utilizzate per immagini avanzate e video lunghi
Note
a) l'attributo flag di immagini, sia base che avanzate, viene valorizzato a 1 o a 0 a seconda se l'immagine è
"abilitata" o "disabilitata" ad illustrare il POI. In tal modo l'amministratore del sistema, quando vuole utilizzare
nuove immagini per illustrare un POI, non deve cancellare quelle precedenti e può conservare lo storico delle
immagini per un eventuale riutilizzo. Stesso discorso vale per l'attributo flag di video, sia brevi che lunghi
b) l'attributo tariffa dell'entità biglietto può assumere esclusivamente i valori: B (base), I (intermedia), P (piena). Se
si seleziona la tariffa I si possono inserire i codici dei tre POI (poi1, poi2, poi3) scelti per la visualizzazione di
pagine multimediali avanzate
c) i video brevi integrano l'audio in italiano e i sottotitoli in inglese, i video lunghi integrano l'audio in ciascuna delle
7 lingue previste (ciascun video lungo viene memorizzato con parlato in lingua diversa)
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 6
Prof. Mauro De Berardis Teramo
Modello logico
infopoint biglietti poi immaginibase immaginiavanzate
id PK id PK id PK id PK
id PK url url
nome nome
dataora flag flag
indirizzo indirizzo
ndispositivo datacaricamento datacaricamento
latitudine
password didascaliaita descrizione
longitudine
visitatori tariffa didascaliaing lingua
id PK linguascelta idpoi FK idpoi FK
nome poi1
telefono poi2
email poi3 videobrevi videolunghi
città poicorrente FK id PK id PK
nazione idinfopoint FK url url
documento idvisitatore FK flag flag
ncartacredito datacaricamento datacaricamento
idpoi FK lingua
idpoi FK
3. la progettazione delle pagine web che consentono all’utente, in possesso di biglietto con tariffa base, la fruizione dei
contenuti multimediali relativi al POI presso cui si trova, codificandone una porzione significativa in un linguaggio a
scelta;
Come già detto, il minitablet in dotazione del visitatore è equipaggiato con SO Android e si connette automaticamente
alla rete WiFi nella quale si trova in quel momento: un'app dedicata preinstallata gestisce il servizio di fruizione delle
pagine multimediali, dialogando con Il Server Web.
Al primo accesso, il visitatore, una volta selezionata la lingua dell'app e dei contenuti, introduce la password ricevuta
all'atto dell'acquisto del biglietto: se la password è valida e la data di emissione, che risulta nella tabella biglietti, è
uguale a quella corrente, viene "loggato".
Se la tariffa prescelta è quella intermedia, seleziona, cliccando sui marker della mappa, i 3 POI per cui richiede la
fruizione di contenuti multimediali avanzati. La tariffa, la lingua selezionata ed eventualmente i tre POI a scelta,
vengono memorizzati, tramite script PHP, nella riga della tabella 'biglietti' individuata tramite la password.
La password, introdotta al primo accesso, rimane valida per l'intera giornata grazie all'utilizzo del meccanismo delle
sessioni.
Una volta effettuato il login e le impostazioni legate alla tariffa, l'app visualizza sulla mappa la posizione del visitatore e
quella dei POI più vicini in maniera tale che il visitatore possa scegliere facilmente il POI che intende raggiungere
cliccando sul marker corrispondente nella mappa. Il codice del POI selezionato viene memorizzato sulla tabella biglietti
nel campo poicorrente.
Al fine di "limitare la fruizione delle pagine multimediali esclusivamente in prossimità o all’interno dei POI a cui si
riferiscono", la soluzione più economica è quella del controllo di coerenza tra le coordinate GPS del minitablet in
dotazione e le coordinate GPS del POI che si sta visitando. Il minitablet viene localizzato automaticamente e l'app si fa
carico di far fronte ai problemi di stabilità del segnale GPS: ad esempio, quando il segnale nei punti più interni degli
edifici non viene più ricevuto dal minitablet, l'app assume come coordinate le ultime ricevute.
Quando il visitatore si reca in un altro POI, lo seleziona sul minitablet cliccando sul corrispondente marker della mappa e
il processo di dialogo con il Server e di erogazione dei contenuti si ripete.
In alternativa al meccanismo basato sul GPS, si potrebbero utilizzare altre soluzioni che prevedono l'utilizzo di tag RFID
o bluetooth. Anche in questo caso il minitablet sarebbe localizzato automaticamente ma si presenterebbero problemi di
costo e problemi logistici dovuti alle distanze di funzionamento dei dispositivi.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 7
Prof. Mauro De Berardis Teramo
E' da sottolineare, comunque, che l'utilizzo dei tag RFID o bluetooth, è in forte sviluppo e costituisce una frontiera di
innovazione molto importate nelle applicazioni informatiche, dell'IoT (Internet of Things) in particolare.
Riguardo alla specifica funzionalità richiesta dalla traccia che "la consultazione delle pagine multimediali sia abilitata
esclusivamente ai dispositivi (minitablet) forniti all’atto dell’acquisto del biglietto", si è detto che i minitablet sono
equipaggiati da un'app dedicata che non si può scaricare da uno store o da un sito pubblico. Questo garantisce che, pur
conoscendo la password, è complicato utilizzare dispositivi diversi da quelli forniti insieme al biglietto.
In ogni caso si interviene sugli access point che consentono il collegamento dei minitablet alla rete, impostando delle
regole di filtraggio basate sul mac address dei minitablet stessi. In altre parole, si imposta una lista di dispositivi (una
whitelist) che possono accedere alla rete. Se altri dispositivi con mac address non presenti nella whitelist tentano di
accedere, vengono bloccati. In diversi access point commerciali l'impostazione di whitelist risulta agevole grazie ad
appositi software di controllo che permettono di configurare facilmente decine di access point distribuiti in luoghi diversi,
anche attraverso una rete geografica WAN. Il filtraggio tramite mac address è una misura di sicurezza aggiuntiva a
quelle dei protocolli di sicurezza WEP, WPA e WPA2 dello standard IEEE 802.11 che impediscono la connessione di
terze parti alla rete e criptano i dati inviati attraverso di essa.
Riguardo alla codifica, per tutto quanto detto finora e per affrontare le tante problematiche proposte dalla situazione di
riferimento e dalle richieste della traccia, il software dell'applicazione appare complesso e molto esteso. In particolare
dovremmo scrivere:
a) lato Server gli script PHP in grado di:
1. connettersi al DB MySql
2. eseguire le query per recuperare e/o scrivere, modificare i dati delle tabelle, a seconda delle richieste
HTTP del client Java Android
3. fornire i risultati (preferibilmente in formato JSON se si tratta di dati di una certa complessità)
b) lato client Java Android il codice in grado di:
1. inviare le richieste HTTP al Server
2. prendere in input, tramite la classe BufferedReader, i dati ricevuti
3. fare eventualmente il parsing dei dati JSON ricevuti
4. visualizzare le pagine web
Come esempio, rivolto agli studenti che hanno le competenze di base riguardanti la programmazione Android, ho
sviluppato il codice per effettuare su un dispositivo mobile il login del visitatore tramite l'autenticazione della password
sul DataBase MySql remoto. . Si tratta di un codice molto essenziale, ma spero utile, che può essere esteso senza
particolari difficoltà concettuali a problematiche più complesse.
Risposta
Internet Web Server
Client Android
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 8
Prof. Mauro De Berardis Teramo
Progetto Android
Ho utilizzato l'ambiente di lavoro Android Studio e nel codice Java ho inserito molti commenti.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 9
Prof. Mauro De Berardis Teramo
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Login"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:textSize="30sp" />
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="35dp"
android:background="#dddddd"
android:ems="5"
android:focusable="true"
android:focusableInTouchMode="true"
android:hint="Password"
android:inputType="textPassword"
android:textColorHighlight="#ff7eff15"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView1"
tools:textSize="24sp" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="47dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="10dp"
android:background="@color/colorPrimary"
android:onClick="cLogin"
android:paddingTop="5dp"
android:paddingRight="20dp"
android:paddingLeft="20dp"
android:paddingBottom="5dp"
android:text="Accedi"
android:textColor="@color/colorAccent"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/password"
tools:paddingLeft="20dp" />
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
app:layout_constraintEnd_toEndOf="parent"
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 10
Prof. Mauro De Berardis Teramo
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button"
app:srcCompat="@drawable/duomo" />
<Button
android:id="@+id/Button2"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="Chiudi app"
android:onClick="Chiudi"
android:textSize="18sp"
android:layout_marginTop="90dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView"
tools:textSize="18sp" />*/
</android.support.constraint.ConstraintLayout>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="106dp"
android:layout_marginBottom="51dp"
android:text="Login eseguito"
android:textSize="24sp"
app:layout_constraintBottom_toTopOf="@+id/textView2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:textSize="24sp" />
<TextView
android:id="@+id/textView2"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="37dp"
android:layout_marginLeft="37dp"
android:layout_marginEnd="37dp"
android:layout_marginRight="37dp"
android:layout_marginBottom="49dp"
android:text="Benvenuto a Teramo"
android:textSize="32sp"
app:layout_constraintBottom_toTopOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView1"
tools:textSize="32sp" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="83dp"
android:paddingLeft="20dp"
android:paddingTop="5dp"
android:paddingRight="20dp"
android:paddingBottom="5dp"
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 11
Prof. Mauro De Berardis Teramo
android:onClick="Back"
android:text="Torna al Login"
app:layout_constraintBottom_toTopOf="@+id/textView3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2"
tools:paddingLeft="20dp" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="77dp"
android:onClick="MySite"
android:text="link sito maurodeberardis.it"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button"
tools:textSize="18sp" />
</android.support.constraint.ConstraintLayout>
4) Modifica di strings.xml
<resources>
<string name="app_name">Assessorato Turismo Teramo</string>
</resources>
5) MainActivity.java
package it.maurodeberardis.loginandroidphp;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.content.SharedPreferences;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// il metodo findViewById()permette di recuperare
// il riferimento alla passord nell’interfaccia utente
}
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 12
Prof. Mauro De Berardis Teramo
public void cLogin(View arg0) //Si attiva sull'evento onClick di Button (pulsante di login)
{
this.finish();
pdLogin.setTitle("Login in corso!");
pdLogin.setCancelable(false);
pdLogin.setIndeterminate(true);
pdLogin.show();
}
/* nel thread in background: in questa fase, invocata subito dopo onPreExecute(),
avviene il dialogo client android-server php tramite la classe HttpURLConnection*/
@Override
protected String doInBackground(String... params) {
try
{ //url del server php, in questo caso il server remoto
url = new URL("http://www.maurodeberardis.it/xxxxxxxx/xxx/login.php");
}
catch (MalformedURLException e)
{
e.printStackTrace();
return "eccezione";
}
try {
// Impostazione della classe HttpURLConnection
connessione = (HttpURLConnection)url.openConnection();
connessione.setReadTimeout(READ_TIMEOUT);
connessione.setConnectTimeout(CONNECTION_TIMEOUT);
connessione.setRequestMethod("POST");
connessione.setDoInput(true); // Imposta la connessione a ricevere i dati
connessione.setDoOutput(true);// Imposta la connessione a trasmettere i dati
// Aggiunge i parametri all'URL, in questo caso la password
Uri.Builder b = new Uri.Builder();
b.appendQueryParameter("password", params[0]);
String query = b.build().getEncodedQuery();
// Utilizza uno stream di output per trasmettere i dati
OutputStream output = connessione.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output, "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
output.close();
connessione.connect();
}
catch (IOException e1)
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 13
Prof. Mauro De Berardis Teramo
{
e1.printStackTrace();
return "exception";
}
try {
}else{
// se, ad esempio, si verifica un errore sul Server Php
return("problemi");
}
} catch (IOException e) {
e.printStackTrace();
return "eccezione";
} finally {
connessione.disconnect();
}
@Override
protected void onPostExecute(String risposta) {
if(risposta.equalsIgnoreCase("true"))
{
// Se la password è corretta e login.php restituisce il risultato "true"
Intent intent = new Intent(MainActivity.this,Success.class);
startActivity(intent);
MainActivity.this.finish();
}else if (risposta.equalsIgnoreCase("false")){
}
}
}
}
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 14
Prof. Mauro De Berardis Teramo
6) Success.java
package it.maurodeberardis.loginandroidphp;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_success);
}
public void Back(View arg0) //Si attiva sull'evento onClick di Button (pulsante di Torna al login)
{
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
Success.this.finish();
}
public void MySite(View arg0) //Si attiva sull'evento onClick sul weblink)
{
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.maurodeberardis.it"));
startActivity(intent);
}
}
Test dell'applicazione
Per il test dell'applicazione sopra descritta (app Android + Server Php), ho utilizzato come client Android uno
smartphone con schermo da 5.1 " e ho realizzato il server Php MySql sul mio sito www.maurodeberardis.it.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 15
Prof. Mauro De Berardis Teramo
2) Se inserisco una password non corretta 3) Se, ad esempio, si verifica un errore sul Server Php
Scrivere codice Android non è semplice e credo inoltre che in molte realtà scolastiche la programmazione Android non
sia ancora trattata in modo adeguato.
Si ipotizza pertanto che, per sviluppare il quesito 3 ("la progettazione delle pagine web che consentono all’utente, in
possesso di biglietto con tariffa base, la fruizione dei contenuti multimediali relativi al POI presso cui si trova,
codificandone una porzione significativa in un linguaggio a scelta"), la visualizzazione dei contenuti non sia gestita
dall'app sul minitablet ma interamente da codice php (contenuti.php) lato server. La stessa esemplificazione sarà
adottata nello svolgimento dei quesiti successivi.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 16
Prof. Mauro De Berardis Teramo
contenuti.php
<?php // server:localhost username:root password:mypassword database:db_poi
session_start();
if(isset($_SESSION["password"]))
{
$password=$_SESSION["password"];
$visitatore=$_SESSION["visitatore"];
}
else
{
die("effettuare il login");
}
?>
<!DOCTYPE html>
<head><title> Esame di Stato 2019 Informatica-Sistemi e Reti </title></head>
<style> td {border:1px solid #888888}</style>
<body>
<?php
$conn=mysqli_connect("localhost","root","mypassord","db_poi");
if(!$conn) die('Non riesco a connettermi: '.mysqli_error());
}
}
//
// gestione delle altre 2 fasce tariffarie-------------------------------------------
//
mysqli_close($conn);
?>
</body>
</html
4. l’analisi di massima delle possibili modalità di gestione delle tre fasce tariffarie, delle opzioni offerte all’utente per la
scelta dei tre POI nel caso della tariffa intermedia, e della scelta della lingua nel caso delle tariffe intermedia e piena.
Le modalità di gestione delle tre fasce tariffarie sono strettamente legate al modello concettuale e al modello logico della
base dei dati. Il codice di "contenuti.php" riportato nel punto precedente e sviluppato, come richiesto dalla traccia, per
consentire la fruizione dei contenuti multimediali previsti per la tariffa base, lascia intuire come estendere facilmente il
codice al fine di gestire anche le altre due fasce tariffarie.
Per quel riguarda la scelta dei tre POI nel caso della tariffa intermedia e della scelta della lingua nel caso delle tariffe
intermedia e piena, si è detto che tali impostazioni vengono effettuate all'atto del login. Esse possono essere modificate
in ogni momento: cambiare la lingua è semplice perché si tratta di aggiornare il campo linguascelta della tabella biglietti,
campo che viene letto ogni volta che deve visualizzare una pagina di contenuti con contenuti che prevedono una tariffa
differente da quella Base. Anche la modifica dei tre POI della tariffa intermedia non presenta difficoltà elevate ma
richiede che si tenga conto dei POI scelti e già visitati.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 19
Prof. Mauro De Berardis Teramo
Per rispondere al quesito occorre integrare il modello concettuale e il modello logico della base dei dati nel seguente
modo:
Integrazione Modello concettuale Diagramma E/R
telefono
acquista id latitudine longitudine
id nome email commenta
nome
visitatore n n poi
indirizzo
Ogni visitatore commenta e vota n POI, ogni POI è commentato e votato da n visitatori
visitatori
id PK commenta poi
nome id PK id PK
telefono dataora nome
email commento indirizzo
città voto latitudine
nazione idvisitatore FK longitudine
documento idpoi FK
ncartacredito
commenta è una
tabella di link
Il codice PHP (mediavoti.php) che consente la visualizzazione della media dei voti ricevuti da ciascun POI è, in forma
molto essenziale, il seguente:
$s="SELECT poi.nome,poi.indirizzo,round(avg(voto),2)
from poi,commenta
where poi.id=commenta.idpoi
group by poi.id
order by avg(voto)Desc";
$q=mysqli_query($conn,$s);
echo "<table>
<tr bgcolor='#ffff00'>
<td style='font-weight:bold'>Nome POI</td>
<td style='font-weight:bold'>Indirizzo</td>
<td style='font-weight:bold'>Media voti</td>
</tr>";
while($r=mysqli_fetch_array($q))
{
echo "<tr>
<td>$r[0]</td>
<td>$r[1]</td>
<td style='text-align:center'>$r[2]</td>
</tr>";
}
mysqli_close($conn);
?>
</body>
</html>
II. In relazione al tema proposto nella prima parte, si discuta la possibilità di allargare la fruizione dei contenuti
multimediali anche ai dispositivi personali degli utenti. In particolare, si analizzino le seguenti due ipotesi alternative:
uso limitato ai soli dispositivi (minitablet) forniti all’atto dell’acquisto del biglietto, come sopra descritto: si
individuino possibili soluzioni per impedire l’accesso alle pagine multimediali attraverso dispositivi non forniti
dagli InfoPoint;
uso consentito ai dispositivi personali degli utenti (es. smartphone): si descriva una possibile integrazione del
servizio volta a consentire la fruizione dei contenuti direttamente ad un singolo dispositivo di proprietà del
visitatore, pur mantenendo i vincoli di fruibilità in base alla tariffa associata al biglietto.
Il problema di impedire l’accesso alle pagine multimediali attraverso dispositivi non forniti dagli InfoPoint è stato già
affrontato nella prima parte. In sintesi:
a) il funzionamento complessivo della soluzione proposta si basa su un'app precaricata su ciascun minitablet che
non si può scaricare da un sito pubblico; è dunque difficile utilizzare dispositivi diversi da quelli ricevuti in
dotazione
b) "ad abundantiam" gli access point delle reti WiFi consentono di selezionare i dispositivi che accedono alla rete
tramite il filtraggio dei mac address (protezione MAC)
Se si vuole consentire l'uso dei dispositivi personali degli utenti, mantenendo i vincoli di fruibilità in base alla tariffa
associata al biglietto, occorre:
1. rinunciare al filtraggio dei dispositivi tramite mac address
2. consentire di scaricare sul dispositivo personale, da uno store pubblico (ad esempio il sito del Comune) e in
modo riservato (utilizzando la password ricevuta all'atto dell'acquisto del biglietto), l'app dedicata
3. utilizzare un captive portal che permetta di autenticare i visitatori, ad esempio tramite un Server Radius: la
password di autenticazione potrebbe essere fornita all'atto dell'acquisto del servizio ed essere la stessa
utilizzata per la fruizione delle pagine multimediali