Web Application Engineering

Sviluppo agile delle applicazioni Web

Cristian Lucchesi

Istituto di Informatica e Telematica - CNR

Agenda

Agenda (cont)

Web Application

From Wikipedia, the free encyclopedia
In software engineering, a Web application or webapp is an application that is accessed with a Web browser over a network such as the Internet or an intranet. Web applications are popular due to the ubiquity of the browser as a client, sometimes called a thin client. The ability to update and maintain Web applications without distributing and installing software on potentially thousands of client computers is a key reason for their popularity. Web applications are used to implement Webmail, online retail sales, online auctions, wikis, discussion boards, Weblogs, MMORPGs and many other functions.

Web Application & Web development

Percezione del Web development

6. Web project planning and management
5. Web-based system
4. Web site construction
3. Web site design
2. Web page design
1. Web page costruction

Caratteristiche Web Application

1. tempi di sviluppo richiesti molto brevi 2. specifica dei requisiti insufficiente
3. "content is king", contenuti integrati instricabilmente con il software, aggiornati molto frequentemente 4. costante evoluzione con brevi cicli di revisione
5. piccoli team (spesso di giovani) che lavorano con scadenze molto brevi 6. utilizzate da tipologie di utenti molto diversi con differenti requisiti, percezioni e conoscenze
7. molta attenzione alla soddisfazione dell'utente 8. utilizzo di tecnologie e metodologie emergenti
9. grande varietà di device e di formati da utilizzare e supportare 10. criticità nelle prestazioni
11. standard in continua evoluzione a cui l'applicazione si deve adeguare (nuove tecnologie, nuovi linguaggi, nuovi tool,...) 12. consapevolezza della necessità di molte discipline come graphic design, information architecture, HCI, ...
13. importanza della sicurezza e dalla privacy 14. problematiche legali, sociali e etiche

Semplici vs Complesse

Semplici Complesse
contenuto delle informazioni statico pagine web dinamiche, contenuti che cambiano spesso
poche informazioni principalmente testuali molte informazioni (anche multimediali)
semplice navigazione difficoltà di navigare e trovare le informazioni
accessi poco frequenti o limitata utilità
limitatà interattività e funzionalità
integrata con database o altri sistemi di pianificazione, schedulazione attività e tracking
le prestazioni non sono un requisito fondamentale high performance e alta affidabilità richieste
sviluppata da un singolo individuo o un team molto piccolo (1-2) persone necessità di un team di sviluppo con conoscenze in aree diverse
pochi cambiamenti nel tempo pronte anche per grandi evoluzioni
facili da creare necessitano il controllo di molti componenti e l'integrazione di tecnologie e metodologie anche molto diverse
principalmente utilizzate come presenza sul web, non come un mezzo di comunicazione interattivo necessitano della gestione del progetto e di metodologie per la gestione del ciclo di vita

Web Engineering

Web Engineering is the application of systematic, disciplined and quantifiable approaches to development, operation, and maintenance of Web-based applications (Murugesan et all, 1999)
It (Web Engineering) is a response to the early chaotic development of Web sites and applications as well as recognition of a divide between Web developers and conventional software developers(Murugesan et all, 2002)

Web Engineering - Multisciplinarietà

Web Engineering Multidisciplinarity

Web & Software development

Fallimento dei progetti Web-based

Web development process

Processo evolutivo

Processo di sviluppo evolutivo

Agile development

Metodologie di sviluppo Agile

Manifesto Agile Software - Principi

I principi su cui si basa una metodologia leggera che segua i punti indicati dall'Agile Manifesto, sono solo quattro:

eXtreme Programming - XP

Extreme Programming - valori

Semplicità
design semplice e codice molto semplice possono essere facilmente compresi da tutto il gruppo di lavoro
Comunicazione
costruire e disseminare conoscenze tra gli sviluppatori e i partecipanti al team (compreso i clienti), creando e condividendo una visione comune di come il sistema funziona
Feedback
è strettamente collegato alla comunicazione e alla semplicità.
il Feedback è relativo a diversi elementi: feedback dal sistema, feedback dal client, feedback dal gruppo di lavoro

Extreme Programming - valori (cont)

Coraggio
il coraggio emerge in diversi aspetti correlati alla programmazione come assicurare ai programmatori di sentirsi a loro agio nel rifattorizzare il loro codice se necessario
Rispetto
rispetto può essere inteso in diverse accezioni: la considerazione del lavoro del partecipanti al gruppo, la convinzione dello sviluppo di un prodotto di elevata qualità o la ricerca del miglior design per la soluzione

Extreme Programming - principi

XP principi (Beck, 1999):

XP Core Practice

XP è definito dalle pratiche usate.
Le pratiche variano nel tempo e a seconda del progetto in cui vengono utilizzate:

XP Core Practice: planning the game

XP Core Practice: planning the game (cont)

XP Core Practices: planning the game (cont)

XP Iterations

XP Core Practice: simple design

XP Core Practice: pair programming

XP Core Practice: testing

XP Core Practice: refactor

XP: collective code ownership

XP Code
CRC = Class-Responsibility-Collaborator

Riferimenti