Progettazione del software: modelli e fasi
31 Questions
0 Views

Progettazione del software: modelli e fasi

Created by
@MeritoriousOganesson

Questions and Answers

Qual è il principale modello di sviluppo software menzionato nel testo?

  • Modello Incrementale
  • Modello Agile
  • Modello Waterfall (correct)
  • Modello Scrum
  • 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.

    <p>comprensibilità</p> Signup and view all the answers

    Quali sono le fasi del RUP (Rational Unified Process)?

    <p>Concezione, Elaborazione, Costruzione, Transizione</p> Signup and view all the answers

    Cosa rappresenta una milestone in un ciclo del progetto?

    <p>Una milestone rappresenta un insieme di artefatti che possono essere soggetti a un controllo di qualità e termina ogni fase.</p> Signup and view all the answers

    Il RUP è un processo monolitico con fasi rigide e sequenziali.

    <p>False</p> Signup and view all the answers

    Nei metodi agili, la specifica e l'implementazione sono ________________.

    <p>interfogliate</p> Signup and view all the answers

    Abbinare i principi dei metodi agili con la loro descrizione:

    <p>Coinvolgimento del cliente = Clienti strettamente coinvolti nel processo di sviluppo Rilascio incrementale = Frequente rilascio di nuove versioni Enfasi sulle persone, non sui processi = Importanza data alle persone rispetto ai processi Accogliere il cambiamento = Volontà di adattarsi ai cambiamenti Mantenere la semplicità = Semplicità come requisito essenziale</p> Signup and view all the answers

    Cosa consente l'astrazione nel contesto del software?

    <p>Generare modelli per ragionare sul sistema</p> Signup and view all the answers

    Cosa si intende per 'incrementalità' nel contesto del software?

    <p>Un processo che procede per passi per raggiungere un obiettivo.</p> Signup and view all the answers

    La capacità di supportare l'evoluzione del software richiede l'abilità di ____________ i potenziali cambiamenti futuri.

    <p>anticipare</p> Signup and view all the answers

    Correla i seguenti modelli di processo di sviluppo software con le relative descrizioni:

    <p>Modello a cascata = Flusso sequenziale delle attività Modelli evolutivi = Versioni incrementali del prodotto software Modelli a spirale = Modello ciclico per affrontare rischi Unified Software Development Process = Metodologia basata su UML</p> Signup and view all the answers

    Cosa significa UML?

    <p>Unified Modeling Language</p> Signup and view all the answers

    Quanti diagrammi ufficiali definisce UML 2?

    <p>13</p> Signup and view all the answers

    Le associazioni bidirezionali in UML implicano che entrambe le parti devono essere sincronizzate.

    <p>True</p> Signup and view all the answers

    Qual è la differenza tra aggregazione e composizione in UML?

    <p>Nell'aggregazione un'istanza può appartenere a più oggetti, mentre nella composizione un'istanza può appartenere a un solo oggetto.</p> Signup and view all the answers

    Le classi associative permettono di aggiungere attributi e operazioni alle associazioni.

    <p>True</p> Signup and view all the answers

    Le _______ sono utilizzate per modellare tipi che possono assumere solo un insieme finito di valori prefissati.

    <p>enumerazioni</p> Signup and view all the answers

    Cosa rappresenta un diagramma degli oggetti nel contesto UML?

    <p>una fotografia degli oggetti che costituiscono il sistema in un determinato momento</p> Signup and view all the answers

    Qual è la differenza tra i messaggi sincroni e asincroni in UML?

    <p>I messaggi sincroni hanno una freccia con punta a forma di triangolo pieno, mentre i messaggi asincroni hanno una freccia con punta costituita da due linee sottili.</p> 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>

    <p>Estensione = Si riporta la condizione determinante l'interazione diversa dallo scenario principale Inclusione = Un passo complicato di un caso d'uso può essere espressa come un altro caso d'uso completo Dipendenza = Rappresentata da una linea tratteggiata terminante con una freccia e indica una relazione di dipendenza tra scenari</p> Signup and view all the answers

    Cosa è un package diagram in UML?

    <p>Un package diagram in UML è un diagramma che permette di raggruppare un insieme di elementi UML in unità di livello più alto.</p> Signup and view all the answers

    Quali sono i due principi di suddivisione di classi in package?

    <p>Common Closure e Common Reuse</p> Signup and view all the answers

    Cosa indica un'importazione di tipo public tra package secondo il testo?

    <p>Gli elementi importati sono resi visibili all'esterno del package</p> Signup and view all the answers

    Nell'esempio fornito, le classi di presentazione dipendono dalle classi del dominio. (Vero/Falso)

    <p>False</p> Signup and view all the answers

    I diagrammi di ___________ documentano la distribuzione fisica di un sistema illustrando l'allocazione dei componenti software sulle macchine.

    <p>deployment</p> Signup and view all the answers

    Quali sono le estensioni utilizzate per i 'piatti automi' per modellare situazioni complesse?

    <p>Transizioni di gruppo</p> Signup and view all the answers

    Cosa accade quando si entra in uno stato di uno Statechart?

    <p>Vengono eseguite le entry action e fatta partire l'attività interna.</p> Signup and view all the answers

    Le guardie delle transizioni sono racchiuse tra parentesi graffe [ ]?

    <p>True</p> Signup and view all the answers

    Il connettore H* indica storia ______.

    <p>profonda</p> 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.

    Quiz Team

    Description

    Verifica la tua conoscenza dei modelli di sviluppo software, delle fasi del RUP e delle caratteristiche della progettazione del software.

    More Quizzes Like This

    Scrum Framework in Software Engineering
    3 questions
    Introduction to Software Engineering
    12 questions
    Use Quizgecko on...
    Browser
    Browser