Questions and Answers
Qual è il principale modello di sviluppo software menzionato nel testo?
Cosa definisce la fase di 'Analisi e specifica dei requisiti' nel modello a cascata?
Definire gli elementi chiave del progetto in confronto con il cliente.
La correttezza di un software riguarda solo i requisiti funzionali.
False
La _______ di un sistema software dipende principalmente da come è stato progettato.
Signup and view all the answers
Quali sono le fasi del RUP (Rational Unified Process)?
Signup and view all the answers
Cosa rappresenta una milestone in un ciclo del progetto?
Signup and view all the answers
Il RUP è un processo monolitico con fasi rigide e sequenziali.
Signup and view all the answers
Nei metodi agili, la specifica e l'implementazione sono ________________.
Signup and view all the answers
Abbinare i principi dei metodi agili con la loro descrizione:
Signup and view all the answers
Cosa consente l'astrazione nel contesto del software?
Signup and view all the answers
Cosa si intende per 'incrementalità' nel contesto del software?
Signup and view all the answers
La capacità di supportare l'evoluzione del software richiede l'abilità di ____________ i potenziali cambiamenti futuri.
Signup and view all the answers
Correla i seguenti modelli di processo di sviluppo software con le relative descrizioni:
Signup and view all the answers
Cosa significa UML?
Signup and view all the answers
Quanti diagrammi ufficiali definisce UML 2?
Signup and view all the answers
Le associazioni bidirezionali in UML implicano che entrambe le parti devono essere sincronizzate.
Signup and view all the answers
Qual è la differenza tra aggregazione e composizione in UML?
Signup and view all the answers
Le classi associative permettono di aggiungere attributi e operazioni alle associazioni.
Signup and view all the answers
Le _______ sono utilizzate per modellare tipi che possono assumere solo un insieme finito di valori prefissati.
Signup and view all the answers
Cosa rappresenta un diagramma degli oggetti nel contesto UML?
Signup and view all the answers
Qual è la differenza tra i messaggi sincroni e asincroni in UML?
Signup and view all the answers
Associa i seguenti termini UML alle loro definizioni:<br><br>1. Estensione<br>2. Inclusione<br>3. Dipendenza<br>
Signup and view all the answers
Cosa è un package diagram in UML?
Signup and view all the answers
Quali sono i due principi di suddivisione di classi in package?
Signup and view all the answers
Cosa indica un'importazione di tipo public tra package secondo il testo?
Signup and view all the answers
Nell'esempio fornito, le classi di presentazione dipendono dalle classi del dominio. (Vero/Falso)
Signup and view all the answers
I diagrammi di ___________ documentano la distribuzione fisica di un sistema illustrando l'allocazione dei componenti software sulle macchine.
Signup and view all the answers
Quali sono le estensioni utilizzate per i 'piatti automi' per modellare situazioni complesse?
Signup and view all the answers
Cosa accade quando si entra in uno stato di uno Statechart?
Signup and view all the answers
Le guardie delle transizioni sono racchiuse tra parentesi graffe [ ]?
Signup and view all the answers
Il connettore H* indica storia ______.
Signup and view all the answers
Study Notes
Ciclo di vita di un software - Modello Waterfall
- Il ciclo di vita del software è costituito da varie fasi, ognuna con un inizio e una fine ben definiti.
- Ogni fase termina con la produzione di un artefatto che viene trasferito alla fase successiva.
Fasi del modello Waterfall
- Analisi e specifica dei requisiti:
- Confronto tra cliente e progettista per definire gli elementi chiave del progetto.
- Formalizzazione e passaggio alla fase successiva.
- Progettazione di sistema e sua specifica:
- Definizione dell'organizzazione del sistema in termini di componenti di alto livello e delle loro interazioni.
- Progettazione architetturale e dettagliata.
- Descrizione di ogni livello di progettazione in un documento di specifica.
- Codifica e test di modulo:
- Produzione del codice che implementa ciò che è stato progettato nella fase precedente.
- Test dei singoli moduli creati in questa fase.
- Integrazione e test di sistema:
- Assemblaggio dei moduli sviluppati nella fase precedente.
- Test del sistema come unico prodotto.
- Consegna e manutenzione:
- Consegnato al cliente e entra nella fase di manutenzione.
- Incorporazione di modifiche apportate al sistema dopo la prima consegna.
Qualità del software
- Correttezza:
- Soddisfa i requisiti funzionali e non funzionali.
- Equivalenza tra il software e la sua specifica.
- Affidabilità:
- Probabilità che il software si comporti come atteso per un certo intervallo di tempo.
- Un software non corretto può essere considerato affidabile.
- Robustezza:
- Comportamento accettabile in circostanze non previste dalle specifiche.
- Prestazioni:
- Influenzano l'usabilità del sistema.
- Capacità di funzionare con input di dimensioni più grandi.
- Usabilità:
- Facilità di utilizzo dagli utenti.
- Adattabilità all'ambiente hardware.
Principi dell'Ingegneria del Software
- Modularità:
- Suddivisione del sistema in parti più semplici.
- Composizione di un sistema complesso a partire dai moduli esistenti.
- Astrazione:
- Identificazione degli aspetti fondamentali del fenomeno e ignorare i dettagli.
- Generazione di modelli per ragionare e simulare il sistema.
- Anticipazione del cambiamento:
- Capacità di supportare l'evoluzione del software.
- Predisporre il sistema all'evolvibilità e alla riusabilità.
Processo di produzione del software
- Modello 1: Code and Fix
- Scrittura del codice e correzione degli errori.
- Crisi del software per la mancanza di struttura e gestione.
- Modello 2: Modello di processo di sviluppo
- Determinazione dell'ordine degli stadi e i criteri di transizione.
- Utilizzo di modelli di processo di sviluppo per garantire la qualità del prodotto.
Attività principali del processo di sviluppo
- Studio di fattibilità:
- Valutazione del problema a livello globale.
- Decisione se procedere con lo sviluppo.
- Acquisizione, analisi e specifica dei requisiti:
- Comprendere gli obiettivi del sistema e documentare i requisiti.
- Modularizzazione orizzontale: strutturare il sistema come una collezione di viste allo stesso livello di astrazione.
- Definizione dell'architettura software:
- Descrizione del sistema in termini di componenti, delle loro interfacce e delle relazioni tra di esse.
- Produzione di codice e test dei moduli:
- Produzione di moduli implementati e testati.
- Seguimento di standard aziendali.
- Integrazione e test del sistema:
- Assemblaggio dell'applicazione a partire dai singoli componenti sviluppati e testati separatamente.
- Test dell'intera applicazione (Alpha test).
- Rilascio, installazione e manutenzione:
- Consegnato ai clienti in due fasi: Beta test e rilascio ufficiale.
- Manutenzione: fase più costosa.
Modelli di processo di sviluppo
- Modello a cascata:
- Organizza le attività in un flusso sequenziale.
- Non flessibile a modifiche.
- Consente di introdurre del feedback in modo disciplinato.
- Modelli evolutivi (o incrementali):
- Ideati per rifare la prima versione di un prodotto errorata.
- Permettono di introdurre migliorie e cambiamenti durante lo sviluppo.### Modelli di processo evolutivo
- Un modello di processo evolutivo è composto da fasi che consistono in versioni incrementali di un prodotto software operazionale con una direzione evolutiva determinata dall'esperienza pratica.
- Le versioni incrementali possono essere rilasciate al cliente mano a mano che sono sviluppate.
Modelli a spirale
- È un modello ciclico che consiste di quattro fasi, ciascuna corrispondente a un quadrante del diagramma cartesiano.
- Il raggio della spirale corrisponde al costo accumulato.
- La dimensione angolare rappresenta il progresso nel progetto.
Unified Software Development Process (UP o RUP)
- È una metodologia basata sul linguaggio di modellazione UML.
- Il principio di base è che un progetto molto grande dovrebbe essere scomposto in iterazioni controllate (mini progetti) che forniscono versioni incrementali del prodotto.
- Le fasi del RUP sono:
- Concezione → analisi di fattibilità
- Elaborazione → si identificano i casi d'uso e si specifica l'architettura software (baseline)
- Costruzione → Si implementa arricchendo la baseline sviluppando e testando il codice fino a supportare un insieme di qualità sufficiente per poterlo rilasciare
- Transizione → include varie attività finali condotte iterativamente (beta test)
Agile Software Development
- I metodi di sviluppo agile cercano di andare in contro ai requisiti dei clienti.
- Le fasi sono interfogliate e il sistema è visto come una serie di incrementi.
- Gli stakeholder devono essere coinvolti attivamente in almeno le prime fasi di specifica.
- Documentazione minima.
Principi dei metodi Agili
- Coinvolgimento del cliente
- Rilascio incrementale
- Enfasi sulle persone, non sui processi
- Accogliere il cambiamento
- Mantenere la semplicità
Extreme Programming
- L'extreme programming (XP) fu una delle prime tecniche sviluppate.
- Le versioni incrementali devono essere rilasciate al cliente ogni 2 settimane.
- Per ogni versione (build) si devono effettuare tutti i test e una versione è rilasciata solo se passa tutti i test.
Scrum
- È un processo agile che permette di focalizzarsi sulla consegna nel minor tempo possibile.
- Concetti chiave:
- Il team si auto-organizza per la pianificazione.
- Lo sviluppo del progetto è una progressione (sprint) organizzata in cicli (sprint cycle).
- I requisiti sono definiti in una lista, chiamata product backlog.
- Ruoli:
- Product Owner
- Scrum Master
- Team
Problemi dei metodi agili
- L'aspetto informale delle tecniche di sviluppo agili sono in contrasto con i vincoli di tipo legali.
- Sono più adatti alla creazione di nuovi software piuttosto che alla revisione di vecchi.
- Tutta la conoscenza è affidata al team: se il team cambia, i tempi rallentano.
UML (Unified Modeling Language)
- È un linguaggio di modellazione, ha quindi una sua sintassi e semantica.
- È una famiglia di notazioni grafiche, dette diagrammi.
- Può essere usato come bozza, per documentare alcuni aspetti del sistema, sia in fase di costruzione di un sistema (forward engineering) che nella comprensione di alcuni aspetti di un sistema esistente (reverse engineering).### Class Diagram
- Mostra il tipo degli oggetti che fanno parte del sistema e le relazioni statiche tra di essi.
- Rappresenta le proprietà e le operazioni (metodi) delle classi.
- Le classi sono rappresentate tramite rettangoli (box) contenenti all’interno nome della classe, attributi e operazioni.
Proprietà
- Rappresentano le caratteristiche strutturali di una classe (istanza della classe in java).
- Sono rappresentate tramite attributi o associazioni.
- Un attributo è descritto con il seguente formato: visibilità nome: tipo molteplicità = default {stringa-di-proprietà}.
Associazioni
- Un’associazione che modella una proprietà è rappresentata come una linea continua che collega due classi.
- Il nome della proprietà e la molteplicità sono indicati vicino all’estremità dell’associazione relativa alla destinazione.
Molteplicità
- La molteplicità di una proprietà indica quanti oggetti possono entrare a farvi parte.
- Le più comuni sono: 1, 0..1, , dove * è un’abbreviazione per 0...
Operazioni
- Sono le azioni che la classe esegue, solitamente corrispondono ai metodi della classe.
- La sintassi è: visibilità nome (lista-parametri): tipo-di-ritorno {stringa-di-proprietà}.
Relazione di Generalizzazione
- Dal punto di vista concettuale esprime la relazione che esiste tra concetti più generici e concetti più specifici.
- Dal punto di vista software l’interpretazione più comune è quella che implica il meccanismo dell’ereditarietà.
Note e Commenti
- Le note sono commenti aggiuntivi che possono apparire in qualunque tipo di diagramma UML.
- Possono essere collegate con una linea tratteggiata agli elementi cui fanno riferimento o essere disegnate isolate.
Dipendenze
- Tra due elementi di un diagramma esiste una relazione di dipendenza se una modifica alla definizione di uno (fornitore o supplier) può comportare un cambiamento all’altro (il client).
Operazioni ed Attributi Statici
- UML chiama static un’operazione o un attributo che si applica ad una classe anziché ad una sua istanza.
Proprietà Derivate
- Sono quelle che possono essere calcolate a partire da altri valori.
- “Derivata” (/) vuol dire che o viene calcolata in tempo di esecuzione in funzione di altre proprietà oppure indica una specifica, un vincolo.
Aggregazione
- La relazione di aggregazione indica un’appartenenza (relazione più forte dell’associazione).
Composizione
- La composizione è una forma forte di aggregazione.
- Sebbene una classe possa essere componente di molte altre, ciascuna sua istanza può essere componente di un solo oggetto.
Relazione di Realizzazione
- Le classi astratte si indicano scrivendone il nome in corsivo.
- Anche le operazioni astratte sono scritte in corsivo.
Associazioni Qualificate
- Un’associazione qualificata è l’equivalente UML di concetti quali array associativi (tabelle hash, mappe, dizionari).
Classi Associative
- Le classi associative permettono di aggiungere attributi, operazioni ed altre caratteristiche alle associazioni.
Classi Parametriche
- Queste classi vengono solitamente usate per modellare classi che lavorano con dati parametrici.
Enumeration
- Le enumerazioni sono utilizzate per modellare tipi che possono assumere solo un insieme finito di valori prefissati.
Classi Attive
- Ogni istanza di una classe attiva esegue e controlla il proprio thread.
Object Diagram
- Se i class diagram definiscono delle relazioni statiche tra gli oggetti, gli object diagram rappresentano il sistema mentre è in esecuzione ma non la loro evoluzione.
Sequence Diagram
- I diagrammi di sequenza appartengono alla categoria dei diagrammi di interazione, i quali descrivono la collaborazione di un gruppo di oggetti che devono implementare un certo comportamento.
- Un diagramma di sequenza documenta tipicamente il comportamento di un singolo scenario.
- Il diagramma include un certo numero di oggetti e i messaggi scambiati tra di essi durante l’esecuzione del caso d’uso.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
Verifica la tua conoscenza dei modelli di sviluppo software, delle fasi del RUP e delle caratteristiche della progettazione del software.