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