SlideShare una empresa de Scribd logo
1 de 33
DIAGRAMMI DEI CASI D’USO 
INGEGNERIA DEL SOFTWARE 
Università degli Studi di Padova 
Dipartimento di Matematica 
Corso di Laurea in Informatica, A.A. 2014 – 2015 
rcardin@math.unipd.it
SOMMARIO 
 Cosa sono gli Use Case 
 Specifica Use Case 
 Diagrammi dei Casi d’Uso 
 Use Case: Inclusione 
 Use Case: Estensione 
 Use Case: Generalizzazione 
 Individuazione Use Case 
Ingegneria del software mod. A 
Riccardo Cardin 2
SOMMARIO 
 Cosa sono gli Use Case 
 Specifica Use Case 
 Diagrammi dei Casi d’Uso 
Use Case: Inclusione 
Use Case: Estensione 
Use Case: Generalizzazione 
 Individuazione Use Case 
Ingegneria del software mod. A 
Riccardo Cardin 3
DIAGRAMMI DEI CASI D’USO 
Ingegneria del software mod. A 
Riccardo Cardin 4
DIAGRAMMI DEI CASI D’USO 
 Analisi dei Requisiti 
Ingegneria del software mod. A 
Riccardo Cardin 5 
• Diagrammi Use case 
• Diagrammi di flusso 
Revisione dei 
Requisiti 
R. Progetto 
Architetturale 
Revisione di 
Qualifica 
R. di 
Accettazione 
• Diagrammi dei package 
• Diagrammi delle classi 
• Diagrammi degli oggetti 
• Diagrammi di attività 
• Diagrammi di sequenza 
• Diagrammi delle classi 
• Diagrammi di attività 
• Diagrammi di sequenza 
• Diagrammi di flusso
COSA SONO GLI USE CASE 
 Tecniche per individuare i requisiti funzionali 
 Descrivono interazioni 
 Sistema 
 Utenti (attori)/elementi esterni al sistema 
 Come il sistema deve essere utilizzato? 
 Che funzionalità espone? 
Ingegneria del software mod. A 
Riccardo Cardin 6 
Esempio 
È richiesto lo sviluppo di un’applicazione che permetta la gestione di un semplice blog. 
In particolare devono essere disponibili almeno tutte le funzionalità base di un blog: 
deve essere possibile per un utente inserire un nuovo post e successivamente per gli 
altri utenti deve essere possibile commentarlo. Queste due operazioni devono essere 
disponibili unicamente agli utenti registrati all’interno del sistema. La registrazione 
avviene scegliendo una username e una password. La username deve essere univoca 
all’interno del sistema.
COSA SONO GLI USE CASE 
 Scenari 
 Sequenza di passi che descrivono interazioni 
 Attori (utenti) e il sistema 
 Rappresentazione di una possibilità 
 Scenari alternativi 
 Esempio: la carta di credito non è accettata, il cliente è 
abituale e il suo profilo è già presente nel sistema, … 
 Tutti gli scenari (principale e alternativo) condividono 
uno scopo 
 Esempio: l’acquisto di almeno un prodotto 
Ingegneria del software mod. A 
Riccardo Cardin 7
COSA SONO GLI USE CASE 
 Definizione 
Un caso d’uso è un insieme di scenari (sequenze di azioni) 
che hanno in comune uno scopo finale (obiettivo) per un 
utente (attore). 
 Informale 
 Un caso d’uso è una situazione nella quale il sistema viene 
utilizzato per soddisfare uno o più bisogno dell’utente. 
 Descrivono l’insieme di funzionalità del sistema come 
sono percepite dagli utenti 
 Visione esterna del sistema 
 Nessun dettaglio implementativo 
Ingegneria del software mod. A 
Riccardo Cardin 8
COSA SONO GLI USE CASE 
 Attori 
 Ruolo dell’ utente nell’interazione con il sistema 
 Utente: persona, altro sistema esterno 
 Utente “fisico”  più ruoli (attori) 
 Più utente  medesimo ruolo (attore) 
 Svolgono il caso d’uso per raggiungere l’obiettivo 
 Stesso attore  più casi d’uso 
 Un caso d’uso  più attori 
 Buon mezzo di individuazione dei casi d’uso 
1. Individuare la lista degli attori 
2. Comprendere i loro obiettivi e come interagiscono con il 
sistema (quale ruolo a quale funzionalità) 
 Nessun dettaglio implementativo sui modi di interazione! 
Ingegneria del software mod. A 
Riccardo Cardin 9
COSA SONO GLI USE CASE 
Ingegneria del software mod. A 
Riccardo Cardin 10 
 Identificare gli 
ATTORI
SOMMARIO 
 Cosa sono gli Use Case 
 Specifica Use Case 
 Diagrammi dei Casi d’Uso 
Use Case: Inclusione 
Use Case: Estensione 
Use Case: Generalizzazione 
 Individuazione Use Case 
Ingegneria del software mod. A 
Riccardo Cardin 11
SPECIFICA USE CASE 
 Use Case sono puro TESTO 
 UML descrive solo gli use case diagram 
 Specificano l’interazione tra i casi d’uso 
Caso d’uso: UC1 - Registrazione 
Attore primario: Utente 
Precondizioni: L’utente non è ancora autenticato presso il sistema 
Postcondizioni: L’utente possiede un’account presso il sistema, contraddistinto da una username e da 
una password 
Scenario principale: 
1. L’utente accede al sistema 
2. L’utente seleziona la funzionalità "Registrati" 
3. L’utente inserisce una username univoca nel sistema 
4. L’utente inserisce una password che rispetta i vincoli imposti 
Estensioni: 
a. Nel caso in cui l’utente inserisca una username già censita a sistema: 
Ingegneria del software mod. A 
Riccardo Cardin 12 
1. L’utente non viene registrato presso il sistema 
2. Viene visualizzato un errore esplicativo 
3. Viene fornita all’utente la possibilità di scegliere un’altra password
SPECIFICA USE CASE 
 Il valore aggiunto è nel contenuto testuale 
 Nome/Identificatore 
 Scenario principale 
 Scenari alternativi 
 D’eccezione o errore 
 Pre-condizioni 
 Effetti / Garanzia (post-condizioni) 
 Trigger 
 Evento scatenante del caso d’uso 
 Attori principali 
 Attori secondari 
Ingegneria del software mod. A 
Riccardo Cardin 13
SPECIFICA USE CASE 
 Considerazioni 
 Un solo scenario principale per caso d’uso 
 Scenari alternativi (0..*) 
 Prendono in considerazione solo la parte che differisce dallo 
scenario principale 
 Granularità 
 Soddisfa lo scopo di un attore (fare un ordine, …) 
 Più piccolo di un processo di business 
 Non fornisce dettagli significativi, non individua le funzionalità 
del sistema 
 Kite level 
 Più grande di una singola operazione su un componente 
 Dettaglio eccessivo allontana il focus dall’obiettivo 
 Sea level, Fish level 
Ingegneria del software mod. A 
Riccardo Cardin 14
SOMMARIO 
 Cosa sono gli Use Case 
 Specifica Use Case 
 Diagrammi dei Casi d’Uso 
 Use Case: Inclusione 
 Use Case: Estensione 
 Use Case: Generalizzazione 
 Individuazione Use Case 
Ingegneria del software mod. A 
Riccardo Cardin 15
DIAGRAMMI DEI CASI D’USO 
 Rappresentazione grafica dei casi d’uso 
 Mette in evidenza attori e servizi del sistema 
 Grafo i cui nodi sono 
 Attori 
 Use case 
 Archi del grafo rappresentano 
 La comunicazione tra gli attori e gli use case 
 I legami tra gli use case 
 Relazione di estensione 
 Relazione di inclusione 
 Relazione di generalizzazione 
 Il diagramma individua i confini del sistema nello 
scenario 
Ingegneria del software mod. A 
Riccardo Cardin 16
DIAGRAMMI DEI CASI D’USO 
 Componenti di un diagramma use case 
Ingegneria del software mod. A 
Riccardo Cardin 17 
Attore 
Use case 
Il nome del caso 
d’uso può essere 
posizionato dentro 
o fuori della figura 
Associazione 
Inclusione 
Estensione 
Generalizzazione 
«include» 
«extend» 
Relazioni
DIAGRAMMI DEI CASI D’USO 
 Esempio 
Blog 
 Associazione attore - use case: partecipazione 
 Comunicazione diretta 
 Utilizzazione del sistema 
 DEVE essere descritta anche in versione TESTUALE 
 Precondizioni e postcondizioni non possono essere desunte 
Ingegneria del software mod. A 
Riccardo Cardin 18 
UC1 - Registrazione 
Utente 
esegue
DIAGRAMMI DEI CASI D’USO 
 Esempio 
Ingegneria del software mod. A 
Riccardo Cardin 19 
attore 
soggetto 
caso d’uso
USE CASE: INCLUSIONE 
 Funzionalità comune fra più use case 
 Ogni istanza di A esegue B 
 B è incondizionatamente incluso nell’esecuzione di A 
 A non conosce i dettagli di B, ma solo i suoi risultati 
 B non conosce di essere inlcuso da A 
 Responsabilità esecuzione di B è completamente di A 
 Evita la ripetizione / Aumenta il riutilizzo 
Ingegneria del software mod. A 
Riccardo Cardin 20 
A B
USE CASE: INCLUSIONE 
 Esempio 
Ingegneria del software mod. A 
Il database deve 
essere esterno al 
perimetro del sistema 
(i.e. Facebook, 
Twitter)!!! 
Riccardo Cardin 21
USE CASE: ESTENSIONE 
 Aumento delle funzionalità di un use case 
A B 
 Ogni istanza di A può esegue B in modo condizionato 
 L’esecuzione di B interrompe A 
 La responsabilità dei casi di estensione è di chi estende (B) 
 Non rappresenta l’ereditarietà nei linguaggi di progr. 
Ingegneria del software mod. A 
Riccardo Cardin 22
USE CASE: ESTENSIONE 
 Estensione 
 Condizione di estensione 
 Determina quando l’estensione deve essere utilizzata 
 Descrizione narrativa e/o icona dello use case 
 La condizione di estensione è verificata 
 Può esistere indipendentemente dagli use case estesi 
 Può estendere più use case base (riuso) 
 Attenzione al perimetro del caso d’uso esteso 
 Modifica scenario principale / post condizione 
 Esempio: gestione dei casi di eccezione 
Ingegneria del software mod. A 
Riccardo Cardin 23
USE CASE: ESTENSIONE 
 Esempio 
Ingegneria del software mod. A 
Riccardo Cardin 24
INCLUSIONE E ESTENSIONE 
 Aspetti in comune 
 Fattorizzano comportamenti comuni a più use case 
 Aumentano il comportamento di un use case base 
 Differenze 
 Estensione: l’attore può non eseguire tutte le 
estensioni 
 Condizioni non verificate 
 Inclusione: l’attore esegue sempre tutte le inclusioni 
 Casi di utilizzo 
 Inclusione: una funzionalità si ripete in più use case 
 Estensione: si vogliono descrivere variazioni dalla 
funzionalità standard 
Ingegneria del software mod. A 
Riccardo Cardin 25
USE CASE: GENERALIZZAZIONE 
 Aggiungere o modificare caratteristiche base 
 Attori 
 A è generalizzazione di B se B condivide almeno le 
funzionalità di A 
 Use Case (più raro) 
 I casi d’uso figli possono aggiungere funzionalità rispetto ai 
padri, o modificarne il comportamento 
 Tutte le funzionalità non ridefinite nel figlio si mantengono 
in questo come definite nel padre 
Ingegneria del software mod. A 
Riccardo Cardin 26 
Generalizzazione 
fra use case 
Generalizzazione 
fra attori
USE CASE: GENERALIZZAZIONE 
 Esempio 
Ingegneria del software mod. A 
Riccardo Cardin 27
USE CASE: ESEMPIO 
Tripadvisor è un noto sito di viaggi diffuso in tutto il mondo. Per accedervi, è 
necessario registrarsi fornendo una username e una password. Come in molti altri 
sistemi, la usename deve essere univoca: il sistema, quindi, non permette ad un 
nuovo utente di registrarsi utilizzando una username già scelta da un altro utente. 
All’interno del sito sono presenti le recensioni di numerose attrazioni turistiche, 
ristoranti, hotel, ecc...Le recensioni sono visibili pubblicamente e possono essere lette 
anche dagli utenti non registrati. La scrittura delle recensioni è disponibile unicamente 
per gli utenti registrati. Ogni recensione contiene un giudizio riassuntivo che l’utente 
inserisce utilizzando le “stelle” (da una a cinque) e da una descrizione di almeno 100 
caratteri. Nel caso si cerchi di inserire una recensione di lunghezza inferiore, il sistema 
avvisa l’utente con un messaggio di errore. È possibile per l’eventuale proprietario 
dell’attrazione turistica rispondere brevemente ad una recensione, inserendo a sua 
volta un commento. Il profilo di un utente è caratterizzato oltre che dal suo nome e 
dalla sua foto, che può essere modificata, dai distintivi che ha ottenuto. I distintivi sono 
legati al numero di recensioni scritte: ad esempio, dopo 20 recensioni l’utente diviene 
un “Recensore esperto” e il sistema lo notifica con un messaggio opportuno. È infine 
possibile collegare il proprio account con il proprio profilo Facebook. In questo caso il 
sistema notificherà l’utente ogni qualvolta un proprio amico inserisce all’interno di 
Tripadvisor una recensione. 
Ingegneria del software mod. A 
Riccardo Cardin 28
USE CASE: ESEMPIO 
Ingegneria del software mod. A Riccardo Cardin 29
SOMMARIO 
 Cosa sono gli Use Case 
 Specifica Use Case 
 Diagrammi dei Casi d’Uso 
Use Case: Inclusione 
Use Case: Estensione 
Use Case: Generalizzazione 
 Individuazione Use Case 
Ingegneria del software mod. A 
Riccardo Cardin 30
INDIVIDUAZIONE USE CASE 
 Definizione del contesto 
1. Identificazione attori e responsabilità 
2. Identificazione degli obiettivi da raggiungere per 
ciascun attore 
 Primi approssimazione use case 
3. Valutare attori e use case e raffinarli 
 Divisione e accorpamento 
4. Trovare le relazioni di inclusione 
5. Trovare le relazioni di estensione 
6. Trovare le relazioni di generalizzazione 
 «A use case is something that provides some measurable result to 
the user on an external system» 
Ingegneria del software mod. A 
Riccardo Cardin 31
INDIVIDUAZIONE USE CASE 
 Fino a che livello di dettaglio spingersi? 
 Kite level 
 Livello molto astratto, definisce macro funzionalità 
 Sea level 
 Livello intermedio, utile nella scoperta di funzionalità 
nascoste 
 Fish level 
 Livello di dettaglio, da esso si individuano direttamente i 
requisiti del sistema 
 Vediamo un esempio... 
Ingegneria del software mod. A 
Riccardo Cardin 32
RIFERIMENTI 
 OMG Homepage – www.omg.org 
UML Homepage – www.uml.org 
UML Distilled, Martin Fowler, 2004, Pearson 
(Addison Wesley) 
 Learning UML 2.0, Kim Hamilton, Russell Miles, 
O’Reilly, 2006 
Ingegneria del software mod. A 
Riccardo Cardin 33

Más contenido relacionado

La actualidad más candente

Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialAlexandre Leão
 
Srs template
Srs templateSrs template
Srs templatemuqeet19
 
Engenharia de Software Pressman
Engenharia de Software PressmanEngenharia de Software Pressman
Engenharia de Software PressmanSimoneinfo
 
Solucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.ioSolucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.ioPatrick Monteiro
 
Comparativo entre Processos Ágeis
Comparativo entre Processos ÁgeisComparativo entre Processos Ágeis
Comparativo entre Processos ÁgeisDaniel Ferreira
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaFernando Palma
 
Agile Requirements Gathering Techniques
Agile Requirements Gathering TechniquesAgile Requirements Gathering Techniques
Agile Requirements Gathering TechniquesOnur Demir
 
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressWalmyr Lima e Silva Filho
 
짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례SangIn Choung
 
Rails Engine Patterns
Rails Engine PatternsRails Engine Patterns
Rails Engine PatternsAndy Maleh
 
Chapter 1 - Mobile World - Business and Technology Drivers
Chapter 1 - Mobile World - Business and Technology DriversChapter 1 - Mobile World - Business and Technology Drivers
Chapter 1 - Mobile World - Business and Technology DriversNeeraj Kumar Singh
 

La actualidad más candente (20)

Test plan
Test planTest plan
Test plan
 
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de SoftwareFundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
 
Scrum
ScrumScrum
Scrum
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencial
 
Srs template
Srs templateSrs template
Srs template
 
Scrum events
Scrum eventsScrum events
Scrum events
 
Engenharia de Software Pressman
Engenharia de Software PressmanEngenharia de Software Pressman
Engenharia de Software Pressman
 
Solucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.ioSolucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.io
 
Comparativo entre Processos Ágeis
Comparativo entre Processos ÁgeisComparativo entre Processos Ágeis
Comparativo entre Processos Ágeis
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
 
Hướng dẫn Scrum
Hướng dẫn ScrumHướng dẫn Scrum
Hướng dẫn Scrum
 
Agile Requirements Gathering Techniques
Agile Requirements Gathering TechniquesAgile Requirements Gathering Techniques
Agile Requirements Gathering Techniques
 
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com Cypress
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 
짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례
 
SCRUM căn bản
SCRUM căn bảnSCRUM căn bản
SCRUM căn bản
 
Rails Engine Patterns
Rails Engine PatternsRails Engine Patterns
Rails Engine Patterns
 
Chapter 1 - Mobile World - Business and Technology Drivers
Chapter 1 - Mobile World - Business and Technology DriversChapter 1 - Mobile World - Business and Technology Drivers
Chapter 1 - Mobile World - Business and Technology Drivers
 
Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
 

Destacado

Design pattern architetturali Model View Controller, MVP e MVVM
Design pattern architetturali   Model View Controller, MVP e MVVMDesign pattern architetturali   Model View Controller, MVP e MVVM
Design pattern architetturali Model View Controller, MVP e MVVMRiccardo Cardin
 
Design Pattern Creazionali
Design Pattern CreazionaliDesign Pattern Creazionali
Design Pattern CreazionaliRiccardo Cardin
 
Java - Processing input and output
Java - Processing input and outputJava - Processing input and output
Java - Processing input and outputRiccardo Cardin
 
Java- Concurrent programming - Synchronization (part 1)
Java- Concurrent programming - Synchronization (part 1)Java- Concurrent programming - Synchronization (part 1)
Java- Concurrent programming - Synchronization (part 1)Riccardo Cardin
 
Design Pattern Comportamentali
Design Pattern ComportamentaliDesign Pattern Comportamentali
Design Pattern ComportamentaliRiccardo Cardin
 
Java- Concurrent programming - Synchronization (part 2)
Java- Concurrent programming - Synchronization (part 2)Java- Concurrent programming - Synchronization (part 2)
Java- Concurrent programming - Synchronization (part 2)Riccardo Cardin
 
Java - Generic programming
Java - Generic programmingJava - Generic programming
Java - Generic programmingRiccardo Cardin
 
Java - Concurrent programming - Thread's advanced concepts
Java - Concurrent programming - Thread's advanced conceptsJava - Concurrent programming - Thread's advanced concepts
Java - Concurrent programming - Thread's advanced conceptsRiccardo Cardin
 
Java - Concurrent programming - Thread's basics
Java - Concurrent programming - Thread's basicsJava - Concurrent programming - Thread's basics
Java - Concurrent programming - Thread's basicsRiccardo Cardin
 
Design Pattern Strutturali
Design Pattern StrutturaliDesign Pattern Strutturali
Design Pattern StrutturaliRiccardo Cardin
 
Errori comuni nei documenti di Analisi dei Requisiti
Errori comuni nei documenti di Analisi dei RequisitiErrori comuni nei documenti di Analisi dei Requisiti
Errori comuni nei documenti di Analisi dei RequisitiRiccardo Cardin
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patternsRiccardo Cardin
 
Java Graphics Programming
Java Graphics ProgrammingJava Graphics Programming
Java Graphics ProgrammingRiccardo Cardin
 
Java Exception Handling, Assertions and Logging
Java Exception Handling, Assertions and LoggingJava Exception Handling, Assertions and Logging
Java Exception Handling, Assertions and LoggingRiccardo Cardin
 
Java - Remote method invocation
Java - Remote method invocationJava - Remote method invocation
Java - Remote method invocationRiccardo Cardin
 

Destacado (20)

Diagrammi di Attività
Diagrammi di AttivitàDiagrammi di Attività
Diagrammi di Attività
 
Diagrammi di Sequenza
Diagrammi di SequenzaDiagrammi di Sequenza
Diagrammi di Sequenza
 
Diagrammi delle Classi
Diagrammi delle ClassiDiagrammi delle Classi
Diagrammi delle Classi
 
Design pattern architetturali Model View Controller, MVP e MVVM
Design pattern architetturali   Model View Controller, MVP e MVVMDesign pattern architetturali   Model View Controller, MVP e MVVM
Design pattern architetturali Model View Controller, MVP e MVVM
 
Design Pattern Creazionali
Design Pattern CreazionaliDesign Pattern Creazionali
Design Pattern Creazionali
 
Java - Sockets
Java - SocketsJava - Sockets
Java - Sockets
 
Java - Processing input and output
Java - Processing input and outputJava - Processing input and output
Java - Processing input and output
 
Java- Concurrent programming - Synchronization (part 1)
Java- Concurrent programming - Synchronization (part 1)Java- Concurrent programming - Synchronization (part 1)
Java- Concurrent programming - Synchronization (part 1)
 
Design Pattern Comportamentali
Design Pattern ComportamentaliDesign Pattern Comportamentali
Design Pattern Comportamentali
 
Java- Concurrent programming - Synchronization (part 2)
Java- Concurrent programming - Synchronization (part 2)Java- Concurrent programming - Synchronization (part 2)
Java- Concurrent programming - Synchronization (part 2)
 
Introduzione a UML
Introduzione a UMLIntroduzione a UML
Introduzione a UML
 
Java - Generic programming
Java - Generic programmingJava - Generic programming
Java - Generic programming
 
Java - Concurrent programming - Thread's advanced concepts
Java - Concurrent programming - Thread's advanced conceptsJava - Concurrent programming - Thread's advanced concepts
Java - Concurrent programming - Thread's advanced concepts
 
Java - Concurrent programming - Thread's basics
Java - Concurrent programming - Thread's basicsJava - Concurrent programming - Thread's basics
Java - Concurrent programming - Thread's basics
 
Design Pattern Strutturali
Design Pattern StrutturaliDesign Pattern Strutturali
Design Pattern Strutturali
 
Errori comuni nei documenti di Analisi dei Requisiti
Errori comuni nei documenti di Analisi dei RequisitiErrori comuni nei documenti di Analisi dei Requisiti
Errori comuni nei documenti di Analisi dei Requisiti
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patterns
 
Java Graphics Programming
Java Graphics ProgrammingJava Graphics Programming
Java Graphics Programming
 
Java Exception Handling, Assertions and Logging
Java Exception Handling, Assertions and LoggingJava Exception Handling, Assertions and Logging
Java Exception Handling, Assertions and Logging
 
Java - Remote method invocation
Java - Remote method invocationJava - Remote method invocation
Java - Remote method invocation
 

Similar a Diagrammi Use Case

Introduzione ai Design Pattern
Introduzione ai Design PatternIntroduzione ai Design Pattern
Introduzione ai Design PatternRiccardo Cardin
 
Un'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseUn'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseAlberto Lagna
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGiacomoZorzin
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)DotNetMarche
 
Figure dal libro Facile da Usare
Figure dal libro Facile da UsareFigure dal libro Facile da Usare
Figure dal libro Facile da UsareRoberto Polillo
 
Design Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionDesign Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionRiccardo Cardin
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven DesignAndrea Saltarello
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi DiscussioneYeser Rema
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiMarco Gasparetto
 
Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...
Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...
Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...Marko Paliska
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Gian Maria Ricci
 
Concorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca DatiConcorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca DatiConcorsando.it
 
Slide per installatori
Slide per installatoriSlide per installatori
Slide per installatoriseedelio
 
7. Applicazioni web e CMS
7. Applicazioni web e CMS7. Applicazioni web e CMS
7. Applicazioni web e CMSRoberto Polillo
 
Verifica finale
Verifica finaleVerifica finale
Verifica finalegianter62
 
Market e Tools: Utility per la personalizzazione di applicazioni Android
Market e Tools: Utility per la personalizzazione di applicazioni AndroidMarket e Tools: Utility per la personalizzazione di applicazioni Android
Market e Tools: Utility per la personalizzazione di applicazioni AndroidAndrea Pola
 

Similar a Diagrammi Use Case (20)

Introduzione ai Design Pattern
Introduzione ai Design PatternIntroduzione ai Design Pattern
Introduzione ai Design Pattern
 
Un'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseUn'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterprise
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptx
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
Figure dal libro Facile da Usare
Figure dal libro Facile da UsareFigure dal libro Facile da Usare
Figure dal libro Facile da Usare
 
Tesi3
Tesi3Tesi3
Tesi3
 
Design Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionDesign Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency Injection
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven Design
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessi
 
Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...
Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...
Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011
 
Concorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca DatiConcorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca Dati
 
CrowdMine
CrowdMineCrowdMine
CrowdMine
 
Slide per installatori
Slide per installatoriSlide per installatori
Slide per installatori
 
Software Testing Forum 2012 - Polarion e TRS SpA
Software Testing Forum 2012 - Polarion e TRS SpASoftware Testing Forum 2012 - Polarion e TRS SpA
Software Testing Forum 2012 - Polarion e TRS SpA
 
7. Applicazioni web e CMS
7. Applicazioni web e CMS7. Applicazioni web e CMS
7. Applicazioni web e CMS
 
Iloveyou
IloveyouIloveyou
Iloveyou
 
Verifica finale
Verifica finaleVerifica finale
Verifica finale
 
Market e Tools: Utility per la personalizzazione di applicazioni Android
Market e Tools: Utility per la personalizzazione di applicazioni AndroidMarket e Tools: Utility per la personalizzazione di applicazioni Android
Market e Tools: Utility per la personalizzazione di applicazioni Android
 

Diagrammi Use Case

  • 1. DIAGRAMMI DEI CASI D’USO INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2014 – 2015 rcardin@math.unipd.it
  • 2. SOMMARIO  Cosa sono gli Use Case  Specifica Use Case  Diagrammi dei Casi d’Uso  Use Case: Inclusione  Use Case: Estensione  Use Case: Generalizzazione  Individuazione Use Case Ingegneria del software mod. A Riccardo Cardin 2
  • 3. SOMMARIO  Cosa sono gli Use Case  Specifica Use Case  Diagrammi dei Casi d’Uso Use Case: Inclusione Use Case: Estensione Use Case: Generalizzazione  Individuazione Use Case Ingegneria del software mod. A Riccardo Cardin 3
  • 4. DIAGRAMMI DEI CASI D’USO Ingegneria del software mod. A Riccardo Cardin 4
  • 5. DIAGRAMMI DEI CASI D’USO  Analisi dei Requisiti Ingegneria del software mod. A Riccardo Cardin 5 • Diagrammi Use case • Diagrammi di flusso Revisione dei Requisiti R. Progetto Architetturale Revisione di Qualifica R. di Accettazione • Diagrammi dei package • Diagrammi delle classi • Diagrammi degli oggetti • Diagrammi di attività • Diagrammi di sequenza • Diagrammi delle classi • Diagrammi di attività • Diagrammi di sequenza • Diagrammi di flusso
  • 6. COSA SONO GLI USE CASE  Tecniche per individuare i requisiti funzionali  Descrivono interazioni  Sistema  Utenti (attori)/elementi esterni al sistema  Come il sistema deve essere utilizzato?  Che funzionalità espone? Ingegneria del software mod. A Riccardo Cardin 6 Esempio È richiesto lo sviluppo di un’applicazione che permetta la gestione di un semplice blog. In particolare devono essere disponibili almeno tutte le funzionalità base di un blog: deve essere possibile per un utente inserire un nuovo post e successivamente per gli altri utenti deve essere possibile commentarlo. Queste due operazioni devono essere disponibili unicamente agli utenti registrati all’interno del sistema. La registrazione avviene scegliendo una username e una password. La username deve essere univoca all’interno del sistema.
  • 7. COSA SONO GLI USE CASE  Scenari  Sequenza di passi che descrivono interazioni  Attori (utenti) e il sistema  Rappresentazione di una possibilità  Scenari alternativi  Esempio: la carta di credito non è accettata, il cliente è abituale e il suo profilo è già presente nel sistema, …  Tutti gli scenari (principale e alternativo) condividono uno scopo  Esempio: l’acquisto di almeno un prodotto Ingegneria del software mod. A Riccardo Cardin 7
  • 8. COSA SONO GLI USE CASE  Definizione Un caso d’uso è un insieme di scenari (sequenze di azioni) che hanno in comune uno scopo finale (obiettivo) per un utente (attore).  Informale  Un caso d’uso è una situazione nella quale il sistema viene utilizzato per soddisfare uno o più bisogno dell’utente.  Descrivono l’insieme di funzionalità del sistema come sono percepite dagli utenti  Visione esterna del sistema  Nessun dettaglio implementativo Ingegneria del software mod. A Riccardo Cardin 8
  • 9. COSA SONO GLI USE CASE  Attori  Ruolo dell’ utente nell’interazione con il sistema  Utente: persona, altro sistema esterno  Utente “fisico”  più ruoli (attori)  Più utente  medesimo ruolo (attore)  Svolgono il caso d’uso per raggiungere l’obiettivo  Stesso attore  più casi d’uso  Un caso d’uso  più attori  Buon mezzo di individuazione dei casi d’uso 1. Individuare la lista degli attori 2. Comprendere i loro obiettivi e come interagiscono con il sistema (quale ruolo a quale funzionalità)  Nessun dettaglio implementativo sui modi di interazione! Ingegneria del software mod. A Riccardo Cardin 9
  • 10. COSA SONO GLI USE CASE Ingegneria del software mod. A Riccardo Cardin 10  Identificare gli ATTORI
  • 11. SOMMARIO  Cosa sono gli Use Case  Specifica Use Case  Diagrammi dei Casi d’Uso Use Case: Inclusione Use Case: Estensione Use Case: Generalizzazione  Individuazione Use Case Ingegneria del software mod. A Riccardo Cardin 11
  • 12. SPECIFICA USE CASE  Use Case sono puro TESTO  UML descrive solo gli use case diagram  Specificano l’interazione tra i casi d’uso Caso d’uso: UC1 - Registrazione Attore primario: Utente Precondizioni: L’utente non è ancora autenticato presso il sistema Postcondizioni: L’utente possiede un’account presso il sistema, contraddistinto da una username e da una password Scenario principale: 1. L’utente accede al sistema 2. L’utente seleziona la funzionalità "Registrati" 3. L’utente inserisce una username univoca nel sistema 4. L’utente inserisce una password che rispetta i vincoli imposti Estensioni: a. Nel caso in cui l’utente inserisca una username già censita a sistema: Ingegneria del software mod. A Riccardo Cardin 12 1. L’utente non viene registrato presso il sistema 2. Viene visualizzato un errore esplicativo 3. Viene fornita all’utente la possibilità di scegliere un’altra password
  • 13. SPECIFICA USE CASE  Il valore aggiunto è nel contenuto testuale  Nome/Identificatore  Scenario principale  Scenari alternativi  D’eccezione o errore  Pre-condizioni  Effetti / Garanzia (post-condizioni)  Trigger  Evento scatenante del caso d’uso  Attori principali  Attori secondari Ingegneria del software mod. A Riccardo Cardin 13
  • 14. SPECIFICA USE CASE  Considerazioni  Un solo scenario principale per caso d’uso  Scenari alternativi (0..*)  Prendono in considerazione solo la parte che differisce dallo scenario principale  Granularità  Soddisfa lo scopo di un attore (fare un ordine, …)  Più piccolo di un processo di business  Non fornisce dettagli significativi, non individua le funzionalità del sistema  Kite level  Più grande di una singola operazione su un componente  Dettaglio eccessivo allontana il focus dall’obiettivo  Sea level, Fish level Ingegneria del software mod. A Riccardo Cardin 14
  • 15. SOMMARIO  Cosa sono gli Use Case  Specifica Use Case  Diagrammi dei Casi d’Uso  Use Case: Inclusione  Use Case: Estensione  Use Case: Generalizzazione  Individuazione Use Case Ingegneria del software mod. A Riccardo Cardin 15
  • 16. DIAGRAMMI DEI CASI D’USO  Rappresentazione grafica dei casi d’uso  Mette in evidenza attori e servizi del sistema  Grafo i cui nodi sono  Attori  Use case  Archi del grafo rappresentano  La comunicazione tra gli attori e gli use case  I legami tra gli use case  Relazione di estensione  Relazione di inclusione  Relazione di generalizzazione  Il diagramma individua i confini del sistema nello scenario Ingegneria del software mod. A Riccardo Cardin 16
  • 17. DIAGRAMMI DEI CASI D’USO  Componenti di un diagramma use case Ingegneria del software mod. A Riccardo Cardin 17 Attore Use case Il nome del caso d’uso può essere posizionato dentro o fuori della figura Associazione Inclusione Estensione Generalizzazione «include» «extend» Relazioni
  • 18. DIAGRAMMI DEI CASI D’USO  Esempio Blog  Associazione attore - use case: partecipazione  Comunicazione diretta  Utilizzazione del sistema  DEVE essere descritta anche in versione TESTUALE  Precondizioni e postcondizioni non possono essere desunte Ingegneria del software mod. A Riccardo Cardin 18 UC1 - Registrazione Utente esegue
  • 19. DIAGRAMMI DEI CASI D’USO  Esempio Ingegneria del software mod. A Riccardo Cardin 19 attore soggetto caso d’uso
  • 20. USE CASE: INCLUSIONE  Funzionalità comune fra più use case  Ogni istanza di A esegue B  B è incondizionatamente incluso nell’esecuzione di A  A non conosce i dettagli di B, ma solo i suoi risultati  B non conosce di essere inlcuso da A  Responsabilità esecuzione di B è completamente di A  Evita la ripetizione / Aumenta il riutilizzo Ingegneria del software mod. A Riccardo Cardin 20 A B
  • 21. USE CASE: INCLUSIONE  Esempio Ingegneria del software mod. A Il database deve essere esterno al perimetro del sistema (i.e. Facebook, Twitter)!!! Riccardo Cardin 21
  • 22. USE CASE: ESTENSIONE  Aumento delle funzionalità di un use case A B  Ogni istanza di A può esegue B in modo condizionato  L’esecuzione di B interrompe A  La responsabilità dei casi di estensione è di chi estende (B)  Non rappresenta l’ereditarietà nei linguaggi di progr. Ingegneria del software mod. A Riccardo Cardin 22
  • 23. USE CASE: ESTENSIONE  Estensione  Condizione di estensione  Determina quando l’estensione deve essere utilizzata  Descrizione narrativa e/o icona dello use case  La condizione di estensione è verificata  Può esistere indipendentemente dagli use case estesi  Può estendere più use case base (riuso)  Attenzione al perimetro del caso d’uso esteso  Modifica scenario principale / post condizione  Esempio: gestione dei casi di eccezione Ingegneria del software mod. A Riccardo Cardin 23
  • 24. USE CASE: ESTENSIONE  Esempio Ingegneria del software mod. A Riccardo Cardin 24
  • 25. INCLUSIONE E ESTENSIONE  Aspetti in comune  Fattorizzano comportamenti comuni a più use case  Aumentano il comportamento di un use case base  Differenze  Estensione: l’attore può non eseguire tutte le estensioni  Condizioni non verificate  Inclusione: l’attore esegue sempre tutte le inclusioni  Casi di utilizzo  Inclusione: una funzionalità si ripete in più use case  Estensione: si vogliono descrivere variazioni dalla funzionalità standard Ingegneria del software mod. A Riccardo Cardin 25
  • 26. USE CASE: GENERALIZZAZIONE  Aggiungere o modificare caratteristiche base  Attori  A è generalizzazione di B se B condivide almeno le funzionalità di A  Use Case (più raro)  I casi d’uso figli possono aggiungere funzionalità rispetto ai padri, o modificarne il comportamento  Tutte le funzionalità non ridefinite nel figlio si mantengono in questo come definite nel padre Ingegneria del software mod. A Riccardo Cardin 26 Generalizzazione fra use case Generalizzazione fra attori
  • 27. USE CASE: GENERALIZZAZIONE  Esempio Ingegneria del software mod. A Riccardo Cardin 27
  • 28. USE CASE: ESEMPIO Tripadvisor è un noto sito di viaggi diffuso in tutto il mondo. Per accedervi, è necessario registrarsi fornendo una username e una password. Come in molti altri sistemi, la usename deve essere univoca: il sistema, quindi, non permette ad un nuovo utente di registrarsi utilizzando una username già scelta da un altro utente. All’interno del sito sono presenti le recensioni di numerose attrazioni turistiche, ristoranti, hotel, ecc...Le recensioni sono visibili pubblicamente e possono essere lette anche dagli utenti non registrati. La scrittura delle recensioni è disponibile unicamente per gli utenti registrati. Ogni recensione contiene un giudizio riassuntivo che l’utente inserisce utilizzando le “stelle” (da una a cinque) e da una descrizione di almeno 100 caratteri. Nel caso si cerchi di inserire una recensione di lunghezza inferiore, il sistema avvisa l’utente con un messaggio di errore. È possibile per l’eventuale proprietario dell’attrazione turistica rispondere brevemente ad una recensione, inserendo a sua volta un commento. Il profilo di un utente è caratterizzato oltre che dal suo nome e dalla sua foto, che può essere modificata, dai distintivi che ha ottenuto. I distintivi sono legati al numero di recensioni scritte: ad esempio, dopo 20 recensioni l’utente diviene un “Recensore esperto” e il sistema lo notifica con un messaggio opportuno. È infine possibile collegare il proprio account con il proprio profilo Facebook. In questo caso il sistema notificherà l’utente ogni qualvolta un proprio amico inserisce all’interno di Tripadvisor una recensione. Ingegneria del software mod. A Riccardo Cardin 28
  • 29. USE CASE: ESEMPIO Ingegneria del software mod. A Riccardo Cardin 29
  • 30. SOMMARIO  Cosa sono gli Use Case  Specifica Use Case  Diagrammi dei Casi d’Uso Use Case: Inclusione Use Case: Estensione Use Case: Generalizzazione  Individuazione Use Case Ingegneria del software mod. A Riccardo Cardin 30
  • 31. INDIVIDUAZIONE USE CASE  Definizione del contesto 1. Identificazione attori e responsabilità 2. Identificazione degli obiettivi da raggiungere per ciascun attore  Primi approssimazione use case 3. Valutare attori e use case e raffinarli  Divisione e accorpamento 4. Trovare le relazioni di inclusione 5. Trovare le relazioni di estensione 6. Trovare le relazioni di generalizzazione  «A use case is something that provides some measurable result to the user on an external system» Ingegneria del software mod. A Riccardo Cardin 31
  • 32. INDIVIDUAZIONE USE CASE  Fino a che livello di dettaglio spingersi?  Kite level  Livello molto astratto, definisce macro funzionalità  Sea level  Livello intermedio, utile nella scoperta di funzionalità nascoste  Fish level  Livello di dettaglio, da esso si individuano direttamente i requisiti del sistema  Vediamo un esempio... Ingegneria del software mod. A Riccardo Cardin 32
  • 33. RIFERIMENTI  OMG Homepage – www.omg.org UML Homepage – www.uml.org UML Distilled, Martin Fowler, 2004, Pearson (Addison Wesley)  Learning UML 2.0, Kim Hamilton, Russell Miles, O’Reilly, 2006 Ingegneria del software mod. A Riccardo Cardin 33