UNIVERSITA` DEGLI STUDI DELL`INSUBRIA Facoltà di Informatica

Transcript

UNIVERSITA` DEGLI STUDI DELL`INSUBRIA Facoltà di Informatica
UNIVERSITA' DEGLI STUDI DELL'INSUBRIA
Facoltà di Informatica
Anno accademico 2009/2010
Corso di Web 2.0
Barboni Stefano
702499
Castiglioni Andrea 700484
Modugno Manlio
701896
Sommario
Introduzione ......................................................................................................................... 3
Trovare lavoro on-line .......................................................................................................... 6
Dominio applicativo ............................................................................................................. 8
Le aziende......................................................................................................................... 8
Gli eventi lavorativi .......................................................................................................... 9
Le categorie lavorative .................................................................................................... 10
L’utente in cerca di lavoro .............................................................................................. 10
Sicurezza e Privacy ............................................................................................................ 11
Sicurezza ........................................................................................................................ 11
Privacy ............................................................................................................................ 12
Tecnologie ......................................................................................................................... 13
Il pattern MVC................................................................................................................ 13
INTRODUZIONE
Il World Wide Web era un contenitore di documenti statici visualizzabili da un Web Browser.
Documenti statici venivano resi disponibili da un web server che rispondeva alla richiesta di un
client (tramite la chiamata ad un Url da parte di un web browser).
Digitando un Url (per esempio www.miosito.com/index.html) sul nostro web browser, il web server
verificava la presenza del file richiesto (index.html) e ,se lo trovava, inviava la risposta al client
permettendo la lettura del file.
Questo tipo di struttura aveva il difetto di necessitare di un intervento tecnico diretto sul server ad
ogni aggiornamento dei dati.
Inoltre la gestione di autorizzazione e autenticazione degli utenti imponeva lo sviluppo di soluzioni
(per esempio script cgi o filtri isapi) che non erano alla portata di tutti.
Figura 1: Schema della struttura di un sito web "statico"
L'evoluzione tecnologica ha modificato radicalmente i sistemi di gestione delle informazioni in rete.
Il principio attuale dello sviluppo web può essere riassunto così: "informazioni sempre aggiornate,
sempre disponibili .
La diffusione di linguaggi e tecnologie lato server (Asp, Php, j2ee, jsp, servlet, .net e altri) hanno
portato notevoli semplificazioni nella gestione di informazioni, fornendo modelli di sviluppo e
framework che, se da una parte hanno reso lo sviluppo rapido e proficuo, dall'altra hanno
allontanato il programmatore dai protocolli, spesso impedendo un controllo funzionale e preciso
sulla sicurezza del flusso di dati.
La figura 2 descrive la struttura tipica di una semplice applicazione Web sviluppata con un
linguaggio di scripting lato server.
·
Il web server riceve dal client la richiesta di un'informazione aggiornata.
·
L'applicazione (ospitata dal server applicazioni) riceve la richiesta proveniente dal web
server e la elabora, interrogando la fonte dati e ricevendo una risposta.
·
L'applicazione risponde al web server con una pagina formattata e comprensibile
(contenente i dati provenienti dalla fonte dati).
·
Il web server risponde al client fornendo l'informazione richiesta.
Figura 2: Schema di una struttura di una applicazione web "dinamica"
Questo struttura, tuttora in uso, ha diversi vantaggi, tra cui il fatto che le informazioni sono più
semplici da aggiornare e che i tre livelli "logici" dell'applicazione (presentazione, logica, dati) sono
separati.
L'ultima "moda" dello sviluppo dell'applicazione Web (non una novità, ma solo un'applicazione
evoluta di tecnologie già esistenti), è il cosiddetto Web 2.0.in cui viene utilizzata una tecnologia
chiamata Ajax Asynchronous JavaScript and XML per fornire all'applicazione web funzionalità di
aggiornamento asincrono. La figura 3 descrive la struttura di un'applicazione Ajax.
Figura 3: Struttura di una applicazione Ajax
La trasmissione di dati tra il client e il server avviene secondo richieste "esclusive per zone della
pagina", in questo modo non si ha la necessità di aggiornare tutta la pagina per visualizzare i
contenuti aggiornati di un "box".
TROVARE LAVORO ON-LINE
Il lavoro oggi, forse a seguito anche dell'ultima crisi economica, è rappresenta una delle
problematiche principali, e per trovarlo non sempre si hanno gli strumenti giusti: le agenzie
interinali non offrono un vero impiego lavorativo ma danno lavoro solo in sostituzione di malattie o
ferie di dipendenti fissi, inoltre ci sono spesso lunghi tempi di attesa; in internet possiamo trovare
numerosi siti che propongono lavoro come Bakeka o JobRapido ma non sempre si trovano tutte le
informazioni a riguardo e, elemento da non sottovalutare, fondamentale i siti non vengono
aggiornati frequentemente.
Inoltre su questi siti non si conosce approfonditamente l'entità di chi offre il lavoro, quindi il
lavoratore interessato si deve fidare della società che lo fornisce senza avere nessun feedback a
riguardo se non facendo una ricerca sui vari blog, a discapito della sicurezza e di una reale perdita
di tempo.
Possiamo quindi dire che al giorno d'oggi internet è uno strumento potentissimo per interagire e
risolvere problemi importanti come quello della ricerca di un impiego, ma deve essere sicuramente
sfruttato in una maniera migliore in modo che chi offre lavoro sia occasionalmente (esempio
servizio catering per feste, cerimonie) oppure costantemente (normale contratto lavorativo) siano
aziende conosciute o perlomeno valutabili da chi richiede lavoro. L’idea che ha fatto nascere questa
applicazione web ha come utenza principale le aziende che si iscrivono illustrando un profilo
completo della propria attività e, di volta in volta, pubblicheranno eventi lavorativi nei quali si
ricercano personale.
Le applicazioni web-based oggi concorrono ad implementare in tutto o in parte soluzioni software
quali Webmail, e-commerce, web forum, blog, MMORPG e molto altro ancora.
Troviamo applicazioni web ovunque. Esempi comuni sono quelle applicazioni che ci permettono di
cercare sul web, come Google; di collaborare a progetti, come SourceForge; di acquistare prodotti
da un'asta, come avviene su eBay. Inoltre sono nati molti siti web che fungono da directory di
script, spesso gratuiti (Opensource), come Hotscripts.com (In lingua Inglese).
Ma questo è solo un esempio poiché se ricerchiamo su Google è facile scoprire un'infinità di siti in
tutte le lingue e paesi. La stessa Wikipedia è un brillante esempio di riuscitissima webapp.
Non sono presenti però web application che siano in grado di fornire agli utenti la ricerca e l’offerta
di lavoro dislocato in un determinato ambito territoriale.
Si costruisce così la web application del lavoro (NET – WORK), una rete non ancora presente sul
web, facile da usare, trasparente e che offra lavoro anche a breve termine (es.: un'azienda di catering
può aver bisogno per la settimana immediatamente successiva di 5 camerieri. Posterà l'evento
“catering” e successivamente valuterà le proposte dei candidati iscritti a quell'evento scegliendone i
cinque canditati che l’azienda ritiene essere migliore).
Parallelamente ad uno sviluppo implementativo verrà aggiornato anche uno sviluppo teorico per
eventuali sviluppi futuri.
DOMINIO APPLICATIVO
Come descritto nel capitolo precedente, delle strutture web per la ricerca del lavoro non sono ancora
esistenti. La nostra idea è quella di creare una web application (quindi non solo un sito dove si
mettono dei semplici annunci) in cui le informazioni scambiate sono la domanda e l'offerta di
lavoro, inoltre l'aspetto fondamentale è la semplicità di utilizzo e la conoscenza dell'utente che offre
lavoro e che usufruisce del lavoro. Punto cardine della applicazione sarà la dislocazione territoriale
della forza lavoro: molte aziende hanno necessità di ricercare personale in breve tempo e in una
determinata area, mentre gli utenti in cerca di lavoro temporaneo potranno selezionare la zona
interessata e il tipo di mansione che possono prestare.
Le aziende
Le aziende rappresentano le utenze principali. Esse dovranno compilare un profilo dettagliato e
completo in modo tale da fornire, agli utenti interessati, tutte le informazioni che riguardano
l’azienda stessa, dando così l’opportunità a tutti gli utenti di valutare il futuro datore di lavoro.
Agli utenti che presteranno attività lavorativa presso un’azienda, sarà data la possibilità di valutare
l’azienda attraverso dei feedback che potranno essere positivi, nulli o negativi.
Gli eventi lavorativi
Gli eventi lavorativi saranno inseriti nell’applicazione dalle aziende in cerca di personale
dipendente. Negli eventi dovranno essere indicati obbligatoriamente il tipo di mansione richiesto,
luogo e data dove svolgere l’attività lavorativa. In particolare sarà data importanza alla dislocazione
territoriale dell’evento (attraverso una mappa interattiva), per permettere all’utente in cerca di
lavoro di ricercare, nella zona a lui più conveniente, l’attività lavorativa.
L’evento lavorativo metterà in relazione le agenzia con gli utenti in cerca di lavoro. Candidandosi
all’evento, l’utente permetterà all’azienda di accedere ai suoi dati personali e alle sue qualifiche.
Le categorie lavorative
Un ruolo importante appartiene anche alle categorie lavorative che indicano il tipo di lavoratore del
quale l’aziende intende avvalersi. Uno degli scopi dell’applicazione è quello di offrire ad un utente
in cerca di opportunità lavorativa, la possibilità di ricercare tali eventi filtrati per categoria.
L’utente in cerca di lavoro
Gli utenti in cerca di lavoro (iscritti o non iscritti) avranno la possibilità di cercare gli eventi
lavorativi, selezionando il tipo di mansione preferito e la zona di lavoro. All’utente in cerca di
lavoro sarà data la possibilità di compilare un curriculum vitae on-line che gli permetterà di
mostrare, a chi offre il lavoro, le proprie qualifiche.
SICUREZZA E PRIVACY
Sicurezza
Il requisito della sicurezza nelle applicazioni web rimane, ad oggi, uno dei principali problemi che
affligge questa tecnologia. Basta scorrere le security advisory pubblicate su, ad esempio, Security
Focus per accorgersi della gravità del fenomeno. Sul totale delle vulnerabilità segnalate, una grossa
percentuale è da attribuire a software sviluppati con tecnologie web.
L’applicazione, per gestire il trattamento di dati personali, dovrà rispettare le seguenti misure di
sicurezza:
·
utilizzo di una procedura di autenticazione che permetta l'identificazione dell'incaricato
attraverso opportune credenziali di autenticazione;
·
utilizzo di una parola chiave, quando prevista dal sistema di autenticazione, composta da
almeno otto caratteri;
·
possibilità di modifica della parola chiave, quando prevista dal sistema di autenticazione,
da parte dell'incaricato al primo utilizzo e, successivamente, almeno ogni sei mesi;
·
possibilità di disattivazione delle credenziali di autenticazione non utilizzate da almeno
sei mesi, salvo quelle preventivamente autorizzate per soli scopi di gestione tecnica;
·
esistenza di meccanismi di autorizzazione per la separazione dei privilegi degli incaricati
in base a diversi profili autorizzativi;
·
esistenza di meccanismi di backup che consentano il salvataggio dei dati con frequenza
almeno settimanale
Privacy
Ai sensi del D. Lgs. n. 196/2003 "Codice in materia di trattamento dei dati personali", quando siti e
applicazioni trattano dati personali e/o sensibili/giudiziari, le operazioni che vengono effettuate su
di essi devono essere previste da leggi o regolamenti.
Inoltre, è obbligatorio dare adeguata informativa su tutti i trattamenti dei dati personali che
vengono effettuati dal titolare.
Al momento della raccolta di dati tramite compilazione di schede per via telematica occorre fornire
all´utente una serie di informazioni specifiche:
1. le finalità e le modalità del trattamento cui sono destinati i dati;
2. la natura obbligatoria o facoltativa del conferimento dei dati;
3. le conseguenze di un eventuale rifiuto di rispondere;
4. i soggetti o le categorie di soggetti ai quali i dati personali possono essere comunicati o
che possono venirne a conoscenza in qualità di responsabili o incaricati, e l'ambito di
diffusione dei dati medesimi;
5. i diritti di cui all'articolo 7;
6. gli estremi identificativi del titolare e, se designati, del rappresentante nel territorio dello
Stato ai sensi dell'articolo 5 e del responsabile. Quando il titolare ha designato più
responsabili è indicato almeno uno di essi, indicando il sito della rete di comunicazione o le
modalità attraverso le quali è conoscibile in modo agevole l´elenco aggiornato dei
responsabili. Quando è stato designato un responsabile per il riscontro all´interessato in caso
di esercizio dei diritti di cui all´articolo 7, è indicato tale responsabile.
TECNOLOGIE
Negli ultimi anni hanno cominciato a riscuotere sempre più successo tra i Web developers alcuni
framework (come Ruby on Rails per Ruby e Django per Phyton) tesi a migliorare lo sviluppo di
applicazioni Web. Questi framework, basati sul paradigma Model-View-Controller (MVC), offrono
allo sviluppatore diverse funzionalità tra cui:
·
maggiore organizzazione del codice
·
scaffolding dei dati
·
URL "puliti", adatti ai motori di ricerca
·
maggiore rapidità di sviluppo.
ASP.Net MVC rappresenta anche uno dei primi esperimenti Open Source di Microsoft. Il nuovo
componente del framework .NET è stato infatti sviluppato in collaborazione con la community
attraverso il rilascio su CodePlex di diverse versioni di prova durante tutto il ciclo di sviluppo,
iniziato nel 2007, e del codice sorgente, disponibile sotto licenza Ms-PL anche per la versione 1.0 di
ASP.Net MVC.
Il diverso approccio utilizzato da Microsoft per ASP.Net MVC trova conferma anche
nell'inserimento all'interno del download ufficiale della libreria Javascript JQuery in una versione
con supporto all'Intellisense di Visual Studio.
Il pattern MVC
Model-View-Controller (MVC) è un pattern utilizzato in programmazione per dividere il codice in
blocchi dalle funzionalità ben distinte.
Per capire come questo approccio si possa adattare allo sviluppo Web, si pendi al classico
funzionamento di una applicazione internet.
Un client, tipicamente un browser, inoltra la richiesta ad un server per una pagina HTML. Il server
ospita un'applicazione scritta in un linguaggio di programmazione lato server (come C# o VB.NET)
che preleva i dati da un database, li elabora e li restituisce al client in formato HTML.
Figura 4: Funzionamento di una applicazione server
La parte più "attiva" in questo procedimento è l'applicazione Web che ha il compito di reperire ed
inviare le informazioni.
Si immagini ora di scrivere una applicazione consistente in una singola pagina Web che svolga tutti
i compiti descritti in precedenza. È evidente che riunire tutte queste operazioni in un unico blocco di
codice (la pagina) creerà presto molta confusione, oltre a portare problemi di manutenzione e
infinite sessioni di debug per risolvere i problemi.
Si provi ora ad organizzare il codice in modo più logico, dividendolo in tre parti: la prima si
occuperà dei dati e fornirà quindi i metodi per accedere al database, la seconda sarà responsabile
della creazione del codice HTML, mentre la terza farà da intermediario fra le prime due.
Lo sviluppatore, organizzando il codice secondo questo schema, potrà concentrarsi su un problema
specifico ed avere la sicurezza che l'intervento rimanga circoscritto al blocco di codice di cui si sta
occupando, lasciando intatti gli altri. Se pensiamo poi ad un progetto di grandi dimensioni, in cui
presumibilmente ogni parte sarà creata e mantenuta da persone diverse, diventa evidente come la
divisione logica del codice in zone distinte aumenti l'efficienza complessiva.
Lo schema che abbiamo identificato è esattamente quello proposto dal pattern MVC. In particolare:
·
Model: contiene i metodi di accesso ai dati.
·
View: si occupa di visualizzare i dati all'utente e gestisce l'interazione fra quest'ultimo e
l'infrastruttura sottostante.
·
Controller: riceve i comandi dell'utente attraverso il View e reagisce eseguendo delle operazioni che
possono interessare il Model e che portano generalmente ad un cambiamento di stato del View.
Figura 5: Divisione dei ruoli in MVC