cover tecnologia digitaleIII

Marcello Missiroli

Tecnologia e progettazione 
per il mondo digitale e per il web 3

con esercizi
ISBN 9788899283094 Digital Index Editore, Modena, 2019
Libro di testo disponibile per l'adozione scolastica

Formato epub 2.0: per tutti tablet, e-readers, kindle, smartphone, iPad e iPhone

Libro di testo utilizzabile per la disciplina "Tecnologie e progettazione di sistemi informatici e di telecomunicazioni" per l'indirizzo "Informatica, articolazione Informatica" dei nuovi Istituti Tecnici.

Su tutti gli stores italiani e su

acquista amazonacquista su google play acquista su iBookstore

Web anteprima su Google Play

Corso Moodle dedicato

Note all'edizione 2019-20

La revisione risulta necessaria per via dei grandi cambiamenti verificatisi nel corso degli ultimi anni dovuti, fra le tante cose, all'evoluzone del mondo
informatico e alle modifiche all'Esame di Stato introdotti dal MIUR. Più specificamente si è provveduto a:

* Aggiornare i riferimenti
* Estendere la trattazione di reti e protocolli Peer-to-peer e dei sistemi distribuiti in generale
* Enunciare e dettagliare il problema CORS
* Approfondire il framework Django e il CMS Wordpress
* Riorganizzare la sezione dello sviluppo informatico, presentando due modelli di sviluppo (tradizionale e agile) riprendendo materiale anticipato nel corso del terzo anno;
* Guida al nuovo esame di stato, con una soluzione commentata passo per passo della prova ordinaria del giugno 2019
* Ampliamento della sezione sull'UML.

---------------------------------

Giunti al vostro ultimo anno di corso, avete già acquisito tantissime competenze e conoscenze nel ramo informatico che potrete applicare nel mondo del lavoro (e potrete dimostrarlo già quest'anno con gli stage, se non lo avete già fatto) oppure espandere e approfondire nel caso decidiate di proseguire gli studi nel ramo.
Ma allora, cosa ci resta da fare? Per la verità, ancora parecchio. Infatti, il mondo informatico è in continua e tumultuosa evoluzione, che ci offre prodotti e servizi sempre nuovi, ma al prezzo di una complessità sempre crescente.
Pensiamo ad una applicazione di uso comune come Gmail (o sistema equivalente di Webmail): è composto da due software principali (browser e server) ciascuno composto di molte componenti specializzate (interfaccia utente, comunicazione, ...); ad esso aggiungiamo l'infrastruttura di rete per la connessione, un sistema di archiviazione dati (su cloud), gestione della sicurezze e tanto tanto ancora. Solo pochi anni fa, un programma equivalente (simile a questo) avrebbe richiesto non più di qualche centinaio di righe di codice e sarebbe stato realizzabile da una sola persona... oggi, questo non è possibile.
Il che ci porta al tema centrale di quest'anno: l'integrazione e la complessità.
Gran parte degli argomenti che vedrete, infatti, riguarderà l'integrazione di elementi che già conoscete – anche studiati in materie diverse – in modo nuovo e originale, ma al prezzo di una aumentata complessità dei sistemi; cercheremo quindi di limitare tale complessità, in ambito operativo, sistemico e di sviluppo, utilizzando strumenti e tecniche innovative.
Più dettagliatamente parleremo di

  • Completare le vostre conoscenze in ambito web gestendo un server web
  • Espandere la programmazione web tramite la programmazione server-side
  • Semplificare lo sviluppo di applicazioni web utilizzando i CMS e i framework di sviluppo
  • Rivoluzionare le metodologia di sviluppo software con l'approccio agile

Al contrario degli anni precenti, in cui avete affrontato temi piuttosto impegnativi anche dal punto di vista teorico, gli argomenti dell'ultimo anno si concentrano sugli aspetti applicativi e pratici; troverete quindi meno spiegazioni, disegni e screencast, ed in compenso avrete invece ampie possibilità di mettere le “mani in pasta” e applicare le novità in laboratorio - idealmente potreste utilizzarne alcune nel progetto finale da presentare all'Esame di Stato.

Per ulteriori dettagli, consigli e proposte di personalizzazione consultare la Guida a Tecnologia e progettazione per il mondo digitale e per il web 1, 2 e 3, che è liberamente scaricabile.

 

Indice dell'opera

Introduzione
Introduzione (per i docenti)
Come usare questo libro
Stili visivi
Work in progress
1 - SISTEMI DISTRIBUITI

1.1 Architetture distribuite
1.1.1 Anni 60: Elaborazione centralizzata
1.1.2 Anni 70 e 80: Decentramento indipendente
1.1.3 Primi anni 90
1.1.4 Fine anni 90
1.1.5 Dal 2000 a oggi
1.1.6 Vantaggi e svantaggi
1.1.7 Modello client-server.
1.1.8 Architettura a due strati
1.1.9 Architettura multilivello
1.1.11 Riassumendo
1.1.12 E ora?
1.1.3 Domande
1.2 Programmazione distribuita
1.2.1 IPC nel modello Internet: TCP e UDP
1.2.2 I socket
1.2.3 Uso dei socket con TCP
1.2.4 Uso dei socket con UDP
1.2.5 Riassumendo
1.2.6 Domande
1.2.7 E ora?
1.3 Comunicazione TCP
1.3.1 Programmazione server in C/Unix
1.3.2 Programmazione client in C/Unix
1.3.3 Programmazione di rete tramite Winsock
1.3.3.1 Il server Tcp in Winsock/C++
1.3.3.2 Il Client
1.3.4 Programmazione server in Java
1.3.5 Programmazione client in Java
1.3.6 Programmazione avanzata
1.3.7 Riassumendo
1.3.8 E ora?
1.3.9 Domande ed esercizi
1.4 Comunicazione UDP
1.4.1 Programmazione di un Client UDP (C/Linux)
1.4.2 Programmazione di un server UDP (C/Linux)
1.4.3 Programmazione UDP in Winsock
1.4.3.1 UDP Server
1.4.3.2 UDP Client
1.4.4 Programmazione di un client UDP in Java
1.4.5 Programmazione di un server UDP in Java
1.4.6 UDP Broadcasting
1.4.7 UDP Multicasting
1.4.8 Ossimoro? La “Connessione UDP”
1.4.9 Riassumendo
1.4.10 E ora?
1.4.11 Domande ed esercizi
1.5 Facciamo il punto e tracciamo la rotta
1.6 Esercizi di riepilogo
1.7 Mappe mentali

2 - LA PIATTAFORMA WEB

2.1 Il mondo del web oggi
2.1.1 Le piattaforme
2.1.2 Il sistema operativo
2.1.3 Il web server
2.1.4 Database
2.1.5 Linguaggio di programmazione
2.1.6 Le piattaforme più diffuse.
2.1.6.1 LAMP e varianti
2.1.6.2 Microsoft WISA/WISC
2.1.6.3 MEAN, nuovo e aggressivo.
2.1.7 Installiamo Apache
2.1.7.1 XAMPP
2.1.7.2: Installazione singola
2.1.7.3 Macchina virtuale
2.1.7.4 Outsourcing
2.1.7.5 PAAS
2.1.7.6 E i contenuti?
2.1.8 Riassumendo
2.1.9 Domande
2.2 Configurazione elementare di Apache
2.2.1 I file di configurazione (classica/XAMPP)
2.2.2 I file di configurazione (moderna, Debian/Ubuntu)
2.2.3 Direttive fondamentali
2.2.4 Contenitori e Limitazione di Accesso
2.2.5 La direttiva Options
2.2.6 Permessi flessibili
2.2.7 Alias
2.2.8 Gestione errori
2.2.9 MultiView
2.2.9.1 Setup server
2.2.9.2 Nomi dei file
2.2.9.3 Test
2.2.10 Riassumendo
2.2.11 Domande ed esercizi
2.3 Apache: funzionalità avanzate
2.3.1 Accesso protetto da password.
2.3.1.1 Preparazione server
2.3.1.2 Preparazione account
2.3.1.3 Attivazione la protezione
2.3.1.4 Test
2.3.1.5 Configurazione alternativa
2.3.2 Gestione Moduli
2.3.3 Virtual hosts
2.3.3.1 Configurazione di un sito basato sull'IP
2.3.3.2 Configurazione di un virtual host basato sul nome
2.3.4 Logging
2.3.4.1 Personalizzazione dei log
2.3.4.2 Uso dei log
2.3.5 Riassumendo
2.3.6 E ora?
2.3.7 Domande e Esercizi
2.4 Programmazione server-side>
2.4.1 Gli albori: Server Side Includes
2.4.1.1 Configurazione di Apache per gli SSI
2.4.2 Common Gateway Interface
2.4.3 Embedded web programming
2.4.4 Applicazioni Web e piattaforme
2.4.5 Hello world LAMP
2.4.5.1 Il form
2.4.5.2 Risposta al form tramite bash
2.4.5.3 Risposta al form tramite C
2.4.5.4 Risposta al form tramite PHP
2.4.6 Quale linguaggio utilizzare?
2.4.7 Riassumendo
2.4.8 E ora?
2.4.9 Domande ed Esercizi
2.5 Introduzione ad AJAX
2.5.1 AJAX 101
2.5.1.1 Dettagli tecnici
2.5.2 Inviare dati al server con un form
2.5.2.1 GET o POST?
2.5.3 Il formato dei dati
2.5.3.1 HTML (o testo semplice)
2.6.3.2 XML
2.5.3.3 JSON
2.5.4 Ajax e jQuery, un matrimonio perfetto.
2.5.5 Test
2.5.6 Riassumendo
2.5.7 Domande ed Esercizi
2.6 Facciamo il punto e tracciamo la rotta
2.7 Esercizi di ricapitolazione
2.8 Mappe mentali

3 - SEMPLIFICARE IL WEB

3.1 Il problema
3.1.1 La via tradizionale
3.1.2 Universi paralleli
3.2 Content Management Systems
3.2.1 Google sites
3.2.2 Joomla
3.2.2.1 Installazione
3.2.2.2 Primi passi
3.2.2.3 I Template
3.2.2.3 Gli articoli
3.2.2.4 I Menu
3.2.2.5 Utenti e permessi
3.2.2.6 Scaricare files
3.2.2.7 More?
3.2.3 Mondo parallelo: Terra-J
3.2.4 Riassumendo
3.3.5 E ora?
3.3.6 Domande ed esercizi
3.3 Framework di sviluppo
3.3.1 MVC
3.3.2 URL Routing e RESTing
3.3.3 Scaffolding
3.3.4 Grafica e UI
3.3.5 Autenticazione e Sicurezza
3.3.6 Convention over configuration
3.3.7 Interfaccia utente ricca
3.3.8 G11n, I18n, l10n
3.3.9 Quale framework scegliere?
3.3.10 Riassumendo
3.4 Bootstrap
3.4.1 Setup
3.4.2 I componenti base
3.4.3 Il sistema a griglia
3.4.4 Le animazioni
3.4.5 Personalizzare
3.4.6 Mondi paralleli: Terra-B
3.4.7 Riassumendo
3.4.8 Domande ed esercizi
3.5 Introduzione a CakePHP
3.5.1 Installazione
3.5.2 Scaffolding & REST
3.5.3 Come funziona?
3.5.4 Mondi paralleli: Terra-C
3.6 A MEAN New World?
3.6.1 Node.js
3.6.2 MongoDB (o altri database)<
3.6.3 Express.js
3.6.4 Angular.JS
3.6.5 Prova su strada
3.6.5.1 Il primo nodo
3.6.5.2 Il database
3.6.5.3 Veloci con Express
3.6.5.4 Gli spigoli di Angular
3.6.5.5 ...rien ne va plus!
3.6.5.6 ...mais il va encore!
3.6.6 Mondi paralleli: Terra-M
3.6.7 Riassumendo
3.7 Facciamo il punto e tracciamo la rotta
3.8 Mappe mentali

4 - PROGETTAZIONE AGILE

4.1 Ciclo di sviluppo agile
4.1.1. Concept – Scelta del progetto
4.1.2 Inception, “Riscaldamento” - Inizio del progetto
4.1.3 Interazioni di sviluppo – Produzione di un sistema funzionante
4.1.4 Transizione o rilascio, “Fine partita”: il rilascio
4.1.5 Produzione – Gestione e supporto del prodotto
4.1.6 Ritiro – Rimozione del prodotto
4.1.7 Change: Diventare agile
4.1.8 Riassumendo
4.1.9 Domande ed esercizi
4.2 Storie utenti
4.2.1 Interessati o coinvolti?
4.2.2 Le storie utenti
4.2.2.1 Prima fase: bozza
4.2.2.2 Seconda fase: formalizzazione.
4.2.2.3 Terza fase: conversazione.
4.2.2.4 Fasi successive e ulteriore raffinamento.
4.2.3.1 I.N.V.E.S.T.!
4.2.3.2 S.M.A.R.T!
4.2.3.3 In sintesi
4.2.4 Stima agile dei tempi
4.2.4.2 Planning poker
4.2.5 Esempio di gestione di product backlog
4.2.5.1 Product Backlog
4.2.5.2 Raffinamento
4.2.5.2 Stima dei tempi
4.2.5.2 Raffinamento delle storie
4.2.6 Storie utente al cetriolo
4.2.7 Riassumendo
4.2.8 Domande ed esercizi
4.3 Scrum
4.3.1 Ruoli
4.3.1.1 Il Product owner
4.3.1.2 Il Team
4.3.1.3 Lo Scrum master
4.3.2 Visione d'insieme
4.3.3 Lo sprint
4.3.3.1 Strategical Sprint planning (1-4 ore)
4.3.3.2 Tactical Sprint planning (1-4 ore)
4.3.3.3 Daily Scrum (da tre giorni a quattro settimane)
4.3.3.4 Sprint review ( 2-4 ore)
4.3.3.5 Sprint retrospective ( 2-4 ore)
4.3.3.6 Sprint termination
4.3.4 Release sprint
4.3.5 Agile Tools
4.3.5.1 Trello (www.trello.com)
4.3.5.2 VersionOne (www.versionone.com)
4.3.5.3 Pivotal Tracker (www.pivotaltracker.com)
4.3.5.4 Google is your friend!
4.3.7 Riassumendo
4.3.9 Domande ed Esercizi
4.4 Facciamo il punto: verso l'infinito, e oltre
4.5 Mappe mentali

5 - APPENDICE

5-1 Breve guida ad IIS
[TBA]
5-2 Manuale minimo di UML
Diagrammi di stato e di sequenza
Diagrammi di casi d'uso
Diagrammi di Classe
C'è altro?
Software di supporto
BoUML (Libero/Commerciale; Windows/Linux)
ArgoUML (Libero; Java)
StarUML (Shareware; Windows/Linux)
5-3 Esame di stato
Traccia dell'esame di stato 2013
Traccia dell'esame di stato 2014
Traccia dell'esame di stato 2015


Ringraziamenti