Progetto “Tecnologie di Sviluppo di Applicazioni Internet”

Transcript

Progetto “Tecnologie di Sviluppo di Applicazioni Internet”
Progetto “Tecnologie di Sviluppo di Applicazioni Internet”
Progetto “Tecnologie di Sviluppo di Applicazioni
Internet”
1.
Obiettivo
Lo scopo di questo documento è quello di descrivere e pianificare un’attività di analisi e valutazione degli ambienti software che permettono di generare e modificare (semi-) automaticamente codice di applicazioni, eventualmente a partire da una specifica grafica basata
su formalismi predefiniti.
Si vuole quindi comprendere sia qual è la classe delle applicazioni che si possono specificare per mezzo dei formalismi grafici sia quali sono le modalità con cui questi ambienti permettono di specificare, generare e manutenere il codice.
La valutazione viene condotta in modo comparativo seguendo due approcci: uno di tipo
metodologico, che analizza il modo con cui le caratteristiche rilevanti per questo tipo di ambienti sono realizzate in ognuno degli ambienti considerati; l’altro di tipo sperimentale, provando ad implementare uno stesso caso d’uso in ognuno degli ambienti esaminati.
Viene sempre utilizzato lo schema di riferimento delle architetture software conosciuto
come Model-View-Controller
2.
Ambienti da esaminare
Gli ambienti che possono essere utilizzati nel progetto sono i seguenti (in ordine decrescente di preferenza):
1. Ruby on Rails (RoR)
2. Symfony http://www.symfony-project.com/
3.
Akelos http://trac.akelos.org/
4.
www.radicore.org
5.
CakePHP http://www.cakephp.org/
6. PHPopenbiz http://www.phpopenbiz.org/document/
7.
http://www.pradosoft.com/
8.
http://www.phpontrax.org/
9.
http://seagull.phpkitchen.com/
10.
http://framework.zend.com/
11.
http://www.codeigniter.com/
12.
http://p4a.sourceforge.net/
Se si utilizza un ambiente diverso da RoR bisogna confrontarne le caratteristiche con RoR.
E’ possibile svolgere progetti sviluppati “orizzontalmente”: applicazione semplice sviluppata
utilizzando più ambienti (in tal caso l’enfasi è sull’aspetto metodologico). Oppure “vertical-
versione 1.1 del 3 Gennaio 2008
pag. 1 di 8
Progetto “Tecnologie di Sviluppo di Applicazioni Internet”
mente”: applicazione complessa sviluppata utilizzando un singolo ambiente (in tal caso
l’enfasi è sull’aspetto sperimentale).
3.
Approccio metodologico
Vengono investigate le seguenti cinque classi di caratteristiche
1. Definizione Model
 Linguaggio e modalità utilizzate per la definizione del modello, con riferimento
alla possibilità di importare/esportare SQL e dati esistenti
 Utilizzo ORM o pattern Active Record
 Tipi di dato supportati
 di base (testo, numerico, data, ecc.)
 avanzati (file, foto, ecc.)
 Definizione di chiavi primarie
 Definizione di chiavi esterne
 Definizione di relazioni tra tabelle di varia cardinalità (1-1, 1-N, M-N, M-N through). Supporto single-table inheritance o associazioni polimorfiche.
 Definizione di viste
 Definizione di vincoli sul formato e sul contenuto dei dati
 supporto validazione lato client (p.e. Javascript)
 supporto validazione lato server
 Importazione ed esportazione dei dati (testo, xml, pdf, xls,...)
2. Definizione View
 Linguaggio target dell'applicazione generata (p.e. HTML, libreria GUI Swing per
Java, ....)
 Generazione automatica moduli
 inserimento record
 modifica record
 eliminazione record
 ricerca record
 elenco risultati (ordinamento singolo campo, ordinamento campi multipli, paginazione, ecc.)
 Possibilità di operare su più record contemporaneamente
 Facilità di personalizzazione della grafica (p.e. mediante l'utilizzo di template,
temi grafici, ecc..)
 Gestione degli interventi di personalizzazione della grafica con particolare riferimento alla sopravvivenza di tali interventi in seguito ad aggiornamenti dell'applicazione effettuate nell'ambiente
 Definizione e gestione di menu
 Progettazione visuale della struttura dell'interfaccia grafica
 Supporto AJAX
3. Definizione Controller
 Formalismo / linguaggio di specifica e realizzazione (p.e. reti di Petri, Statecharts, diagrammi delle transizioni di stato, evento/condizione/azione)
 Possibilità di generazione di codice e, in caso affermativo, linguaggio di programmazione e infrastruttura utilizzati (Servlet, Web Services, etc...)
 Routing (mapping tra URL ed azioni / metodi)
versione 1.1 del 3 Gennaio 2008
pag. 2 di 8
Progetto “Tecnologie di Sviluppo di Applicazioni Internet”
 Supporto RESTful services
4. Applicazione generata
 Chiarire se l'applicazione generata viene interpretata a runtime oppure c'è una
fase di generazione di codice relativo a Model, View e Controller.
 Requisiti sistemistici dell'applicazione generata (p.e. indipendenza da uno specifico DBMS)
 Supporto all'internazionalizzazione
 gestione utenti e gruppi
 gestione autorizzazioni
5. Ambiente generatore
 Requisiti sistemistici dell'ambiente generatore
 Disponibilità di ambienti e strumenti di sviluppo che supportano il framework
 Convenzioni di naming
 Supporto al ciclo di vita
 Modularità delle modifiche/personalizzazioni
 Supporto pattern observer
 Generazione automatica di dati di test
 Supporto allo sviluppo basato su “test di unità”
 Gestione upgrade e downgrade tra versioni
 Disponibilità e qualità della documentazione (tutorial, manuali, ecc..) e di supporto in genere
 Organizzazione e dimensioni della comunità di sviluppatori
 Costo dell'ambiente e licenza utilizzata (commerciale o opensource: GPL, BSD,
MIT, ecc...) con particolare riferimento ai vincoli allo sfruttamento commerciale
4.
Approccio sperimentale
Di seguito si descrivono alcune applicazioni utilizzati per valutare gli ambienti precedentemente indicati. Generalmente sono abbastanza semplici, ma sufficientemente generali per
evidenziare empiricamente le differenze e somiglianze tra le funzionalità e le capacità di
questi ambienti.
Le specifiche delle seguenti applicazioni sono intese come indicative e soggette ad ulteriori
modifiche e raffinamenti.
4.1. Elenco applicazioni
4.1.1
LIBRERIA
Assumiamo che tale applicativo gestisca una libreria, permettendo le operazioni di visualizzazione, inserimento, modifica, eliminazione e ricerca. Da un punto di vista concettuale i
dati sono modellati mediante tre entità: Libro, Autore, Editore e due relazioni Ha-Scritto, tra
Libro e Autore con cardinalità M a N, e Ha-Pubblicato, tra Editore e Libro con cardinalità 1
a N.
La base di dati sottostante deve avere le seguenti tabelle:
libro con i seguenti attributi:
 libro_id (o id) automaticamente assegnato dal DBMS (chiave primaria)
versione 1.1 del 3 Gennaio 2008
pag. 3 di 8
Progetto “Tecnologie di Sviluppo di Applicazioni Internet”






editore_id campo obbligatorio, chiave esterna della tabella Editore
titolo stringa, campo obbligatorio
prezzo numerico
libro_stato enumerato, con dominio: {fuori commercio, disponibile, esaurito,ordinato}
copertina, stringa (corrisponde al nome di un file contenente l’immagine della copertina)
data_pubblicazione, data
autore con i seguenti attributi:

autore_id (o id) automaticamente assegnato dal DBMS (chiave primaria)

nome stringa
editore con i seguenti attributi:
 editore_id (o id) automaticamente assegnato dal DBMS (chiave primaria)
 casa_editrice stringa
ha-scritto con i seguenti attributi:
 ha-scritto_id (o id) automaticamente assegnato dal DBMS (chiave primaria)
 libro_id campo obbligatorio, chiave esterna della tabella Libro
 autore_id campo obbligatorio, chiave esterna della tabella Autore
 note, tipo testo (non stringa)
Variante n. 1: aggiungere entità Pubblicazione che si specializza in Libro e nella nuova entità Rivista.
Variante n. 2: aggiungere recensioni e valutazioni.
Variante n. 3: aggiungere funzionalità e-commerce.
4.1.2
GESTIONALE
Assumiamo che tale applicativo gestisca un negozio, permettendo le operazioni di visualizzazione, inserimento, modifica, eliminazione e ricerca. Da un punto di vista concettuale i
dati sono modellati mediante le seguenti entità: Cliente, Prodotto, Ordine,
e le seguenti relazioni
Riga-Ordine, tra Ordine e Prodotto con cardinalità M a N,
Ha-comprato, tra Cliente e Ordine con cardinalità 1 a N.
La base di dati sottostante che deve supportare queste funzionalità deve avere le seguenti
tabelle:
prodotto
cliente
ordine
riga_ordine
Possibile estensione: aggiungere un'entità Dipendente ed associare le righe dell'ordine a
zero oppure un dipendente.
versione 1.1 del 3 Gennaio 2008
pag. 4 di 8
Progetto “Tecnologie di Sviluppo di Applicazioni Internet”
4.1.3
TOUR-IST
Gli Autisti devono condurre i clienti attraverso le varie località in cui il loro tour prevede fermate. Queste possono aver luogo o presso alberghi o presso beni artistici/ambientali. Le
fermate, di entrambi i tipi, sono caratterizzate dal nome del bene o dell'albergo e dall'indirizzo, ed eventuale numero di telefono, di questi. L'autista vuole poter conoscere i dati temporali relativi a tutte le fermate del tour. In particolare per i beni da visitare è d'interesse la
giornata (relativamente alla data di partenza del tour) e l'ora d'inizio
della visita, mentre per gli alberghi si vogliono sapere le giornate e le ore di arrivo e di partenza. Ogni tour può essere replicato in più date. Altri dati dei tour sono la data di ritorno e
il numero totale di Km.
Gli Autisti desiderano avere informazioni circa i tour cui sono stati assegnati e i pullman
che dovranno guidare. Inoltre necessitano dei dati (nome, regione, stato) non solo delle località in cui il tour si fermerà, ma di tutti quelli utili a tracciare con precisione il percorso del
tour. A tal fine sarebbe d'aiuto poter disporre delle distanze tra le principali località come
pure di mappe con diversi livelli di dettaglio (e indicazione della zona laddove la mappa sia
relativa solo a parte di una città). Gli Autisti, e i pullman loro assegnati, hanno come unità
minima di lavoro il tour giornaliero e a loro disposizione è un cellulare fornito dall'agenzia.
Infine, per quanto riguarda i pullman, si dovranno memorizzare le seguenti informazioni:
numero di posti, ingombri del veicolo, sua autonomia, targa e il valore del contatore di km
(aggiornato dall'autista al termine del tour).
versione 1.1 del 3 Gennaio 2008
pag. 5 di 8
Progetto “Tecnologie di Sviluppo di Applicazioni Internet”
4.2. Funzionalità da implementare
Come detto, le funzioni che devono essere fornite sono quelle standard di manipolazione
dei dati note anche con l’acronimo CRUD (Create, Read, Update, Delete), cioè inserimento, lettura, aggiornamento, cancellazione.
La lettura avviene sia in forma sintetica, consultando un elenco (paginabile ed ordinabile in
base a qualunque attributo) di tutti gli elementi presenti nella tabella, sia in forma dettagliata, consultando tutti i campi di un elemento, visualizzato singolarmente.
L’ordinamento deve essere ricordato quando si cambia pagina.
In fase di inserimento di ognuno degli elementi vengono forniti i dati che non sono chiavi
primarie della tabella nella quale viene inserito.
versione 1.1 del 3 Gennaio 2008
pag. 6 di 8
Progetto “Tecnologie di Sviluppo di Applicazioni Internet”
La modifica e cancellazione possono avvenire sia selezionando un elemento su di un elenco (paginabile ed ordinabile in base a qualunque attributo) che visualizza l’intero contenuto
di una tabella, sia fornendo direttamente l’ID dell’elemento stesso. Si noti che in fase di modifica devono essere editabili esclusivamente i campi che non sono chiave primaria. Sia
cancellazione che modifica chiedono la conferma riepilogando le modifiche che si stanno
per apportare. Si noti che in fase di modifica devono essere editabili esclusivamente i campi che non sono chiave primaria.
Per la ricerca, infine, si richiede che l'utente possa cercare un'arbitraria sottostringa, che
deve inserire in un apposito campo di testo, e che selezioni tramite delle checkbox i campi
nei quali desidera ricercare.
In breve, l'interfaccia della ricerca dovrà disporre di un campo di testo e di tanti checkbox
quanti sono i campi nei quali è possibile ricercare.
La funzione restituisce tutti i libri che soddisfano i criteri di ricerca in un elenco paginato, ordinabile, ecc. I risultati della ricerca devono essere ricordati quando si cambia pagina.
Gestire in maniera appropriata le relazioni, visualizzando campi significativi per le tabelle
collegate, non gli id.
Se sono specificate azioni da eseguire su tabelle referenziate e referenzianti in caso di
cancellazione o di modifica, chiedere sempre conferma all’utente prima di eseguirle.
In ciascun progetto, anche se non specificato esplicitamente, deve essere sempre presente una tabella contenente almeno:
 un attributo di tipo stringa testuale (varchar)
 un attributo di tipo numerico
 un attributo di tipo data oppure ora oppure data-ed-ora
 un attributo di tipo file allegato
 un attributo di tipo testo (text)
4.3. Autenticazione
Il sistema deve prevedere un meccanismo di autenticazione basato su nome utente e password.
La tabella utente supporta il rispetto delle seguenti misure minime di sicurezza:
* le password sono di lunghezza pari almeno ad 8 caratteri
* le password sono registrate nella tabella in modo cifrato con un algoritmo one-way
MD5
* si impone all'utente il cambiamento della password se sono passati più di 6 mesi dall'ultimo cambiamento della password stessa
* le utenze che non hanno fatto alcun accesso durante gli ultimi 6 mesi vengono disabilitate
versione 1.1 del 3 Gennaio 2008
pag. 7 di 8
Progetto “Tecnologie di Sviluppo di Applicazioni Internet”
La tabella utente, che tiene traccia nel DB degli account degli utenti registrati nel sistema e
delle loro credenziali di accesso, ha pertanto la seguente struttura ed uso degli attributi:
* usernameMail, indirizzo email col vincolo "unique"
* password, autoesplicativo
* passwordLastChanged, con dominio timestamp, memorizza la data dell'ultimo cambiamento password, per forzare una nuova password dopo 6 mesi di non accesso)
* expired, con dominio {S, N}, dove S=disattivato, N=attivo
* flagFirstEntry, con dominio {S, N}, dove S=primo accesso, si forza il cambiamento della
password inviata, N=accesso successivo
* lastAccess, con dominio timestamp, memorizza la data dell'ultimo accesso al sistema,
per la disattivazione dopo 6 mesi di non accesso)
* role, con dominio numerico descrive il tipo di utente
Il cambiamento della password cambiata più di 6 mesi prima (si usa il valore standard di
180 giorni) viene automaticamente forzato al primo accesso che viene effettuato nel momento in cui è stata superata la scadenza per il cambiamento della password stessa. Questo vuol dire che si forza il cambiamento se al momento dell'accesso l'ultimo cambiamento
della password risale a più di 180 giorni prima.
5.
Elementi di valutazione del progetto
La valutazione del lavoro terrà conto dei seguenti aspetti:
 architettura del programma
 aderenza paradigma MVC
 aderenza alle specifiche
 usabilità ed accessibilità
 Efficienza
 utilizzo di tecnologie e funzionalità avanzate (AJAX, REST)
 presenza di test automatici
 gestione di casi particolari e/o loro discussione nella documentazione
 duplicazione del codice
 leggibilità e chiarezza dichiarativa del codice (uso di costanti, scelta dei nomi per le
costanti, le variabili, le funzioni, i metodi)
 documentazione interna (commenti nel codice)
 documentazione esterna
versione 1.1 del 3 Gennaio 2008
pag. 8 di 8