-
1
REQUISITI
(secondo IEEE <- associazioni ingegneri americana)
- 1) Funzionalità per utente per raggiungere obiettivo o risolvere un problema
-
2) Condizione/funzionalità presente nel prodotto per soddisfare contratto o standard o legge,...
- Cose che programmatore deve aggiungere non per sua volontà, ma per diverse esigenze
- 3) Documentazione funzionalità descritte al punto 1) e 2)
-
2
Piramide dei requisiti
-
1)
- Requisiti di business
-
2)
-
Requisiti degli utenti
- Ci si riferisce a direzione e altri utenti finali per capire loro esigenze
-
3)
- Requisiti del software
-
3
Processo Ingegneria Requisiti
-
FASE 1 -> INDIVIDUARE
- FASE 1 -> INDIVIDUARE
- Identifica stakeholder
- Recupero di tutta la documentazione
Es:
Potrebbe esserci una Intranet aziendale dove trovare le info utili
-
FASE 2 -> ANALIZZARE
- - Identificare scopo prodotto
- Capire interazione prodotto con utente
- DARE PRIORITA' AI REQUISITI
'-> necessaria NEGOZIAZIONE <- priorità cliente potrebbero non coincidere con quelle del programmatore!
Vanno spiegate a cliente le vere priorità progetto
-
FASE 3 -> SPECIFICARE
- - Dividere requisiti funzionali e non funzionali
- Capire caratteristiche qualitative e VINCOLI
-
FASE 4 -> VALIDARE
- - Capire se a cliente va bene lavoro svolto
- NEI VARI MODELLI QUESTA E' LA FASE DI FEEDBACK
(-> 1) 2) e 3) invece appartengono alla fase di Comunicazione)
- E' un CICLO perchè di solito non si finisce in un colpo solo
Se nella fase 4) cliente vuole apportare modifiche, si ricomincia il ciclo
-
4
Approcci metodologici
-
top down
-
generico -> specifico
- - Approccio più usato
- Utile quando si ha ESPERIENZA (<- in questo modo difficile dimenticarsi qualche macro area)
-
bottom up
-
specifico -> generico
- - Utile quando si fa REVERSE-ENGINEERING (<- quando si prende esempio da un progetto già finito, quando si copia)
- Prima si guardano funzionalità specifiche poi quadro più ampio
-
5
Granularità
-
Non tutti i requisiti vengono documentati con stesso livello di dettaglio
-
grana grossa
- Requisiti semplici
-
grana sottile
- Requisiti complessi
-
6
Tipologia requisiti
-
requisiti funzionali
- Funzioni svolte da sistema
-
requisiti non funzionali
-
Proprietà e vincoli sistema
- Es.
Vincolo delle pagine web di caricarsi entro 5 sec per evitare che utente cambi pagina
- Sono requisiti che magari cliente non chiede, ma sui quali dobbiamo informarci noi
-
7
Verifica e Validazione
-
Requisiti di business
- decisi da chi paga
-
Requisiti utenti
- si chiede cosa vorrebbero utenti
-
Design
Sistemi e sotto-sistemi
- Dividi et impera
- non si parte facendo tutto sistema -> prima vengono SUDDIVISI REQUISITI, che sono quelli raccolti prima (business, utenti, software)
-
Design
Componenti
- ! Qui si inizia a scrivere il codice !
-
Test unitari
- simile a funzione debug Java
-
Test di integrazione
- verifica che Sistemi e sotto-sistemi funzioni insieme
-
Test di sistema
- x assicurarsi che non ci siano bug
-
Test di accettazione utente
- è il feedback dell'utente, NON è una VERIFICA, MA una VALIDAZIONE
-
8
Use-Case
-
Introduzione
- Schema di alto livello
- X discutere con utenti funzioni che sistema dovrà erogare (dal loro punto di vista!!)
- Devono essere comprensibili a utenti SENZA CONOSCENZE INFORMATICHE
- In software estesi vanno suddivisi in SCENARI di utilizzo
- NON RAPPRESENTA IL TEMPO
-
Elementi
-
ATTORE
- Persona o dispositivo che interagisce con sistema; possono essere ATTIVI o PASSIVI, nel caso 1 si collegano agli use case con connettore 'use', nel caso 2 con 'associate'
-
USE-CASE
- Funzione o servizio erogati da sistema.
Possono collegarsi tra loro con 'include', 'extend' e 'generalize'
- ARTIFACT
-
Connettori
-
Extend
- Indica che funzione rappresentata da use case alla base della freccia PUO' essere impiegata nel contesto dello use case alla punta.
Quindi ne rappresenta una sorta di arricchimento
-
Include
- Indica che funzione rappresentata da use case alla base della freccia include completamente la funzione dello use case alla punta
-
Generalize
- Caso d'uso che eredita caratteristiche di un altro caso d'uso, aggiungendo particolarità che lo differenziano
-
9
Activity Diagram
-
Introduzione
- Schema di alto livello
- Utilizzati per descrivere FLUSSI DI LAVORO (business workflow)
- Utilizzati x descrivere FLUSSI SISTEMA e ALGORITMI (pseudo-codice)
- Spesso associati a use-case (come dettaglio)
- Devono essere comprensibili a utenti SENZA CONOSCENZE INFORMATICHE
- Rappresenta attività, FLUSSI DECISIONALI, flussi concorrenti
- NON RAPPRESENTA IL TEMPO
- In caso di flussi estesi, possono essere suddivisi
-
Elementi
-
Activity
- singola attività all'interno del flusso, un solo flusso può entrare e uscire (!)
-
Structured activity
- contiene un sotto flusso
-
Activity initial
- inizio del flusso
-
Activity final
- fine flusso
-
Flow final
- fine ramo flusso, non determina fine diagramma
-
Decision
- divisione del flusso
-
Merge
- elemento ricezione flussi multipli
-
Fork/Join
- elemento divisione/ricezione flussi PARALLELI
-
Swimlanes
- elemento utile per enfatizzare attori coinvolti
-
Connettori
-
Control flow
- Collegamento logico tra elementi flusso
- NON RAPPRESENTA IL TEMPO
-
Scenari EX ANTE / EX POST
- Uno degli utilizzi degli activity diagram è confrontare un dato flusso di lavoro
(business workflow) prima (ex-ante) e dopo
(ex-post) l’implementazione del software
- È anche possibile determinare le differenze a livello di tempi necessari per l’esecuzione, ponendo basi concrete per un analisi costi/benefici accurata
-
Possibili domande test
-
Cos'è il sistema in use-case?
- E' la somma di tutti i casi d'uso
-
Come vengono rappresentati gli attori nell'Act. Diagr.?
- Con le Swimlane
-
Come vengono rappresentate attività concorrenti in AD?
- Con il Fork/Join
-
Si può rappresentare tempo nell'AD?
- NO, ma volendo si può calcolare facendo gli scenari ex-ante e ex-post
-
Quali sono i possibili punti di vista nello use case?
-
2
-
Punto di vista degli ATTORI
- grazie a use case
-
Punto di vista del SISTEMA
- grazie a REQUISITI funzionali e non funzionali
-
Perchè è stato avviato il progetto
- Progetti commissionati per:
- Risparmiare
- Guadagnare di più
- Cosa gli utenti potranno fare con il prodotto
-
Cosa gli sviluppatori devono costruire
- - Livello con più lavoro da fare
- Richiesto LINGUAGGIO TECNICO (a differenza livello 1) e 2))
-
Errori comuni
- 2 o + connettori escono dalla stessa attività
- fork aperto, ma senza join per la chiusura
- diagramma senza initial e/o final