Teoria Flashcards
(161 cards)
Quali sono le caratteristiche essenziali per un software di qualità?
1) Manutenibilità
2)Fidatezza
3) Efficienza
4) Accettabilità
Include, oltre al/ai programma/i, documentazione, test, manutenzione e aggiornamenti
Cosa descrive un processo software?
Descrive chi fa che ose e quando per raggiungere un certo obiettivo. Descrive un approccio disciplinato alla costruzione, al rilascio ed eventualmente alla manutenzione del software
Quali sono le 4 attività di processo comuni?
1) specifiche del software(= specifica dei requisiti)
2) sviluppo del software
3) convalida del software
4) evoluzione del software
Parla ed elenca le fasi principali della fase “specifica dei requisiti”
Attività per definire quali sono i requisiti richiesti dal sistema e identificarne i vincoli. Le fasi principali sono:
1)Deduzione ed analisi dei requisiti
2)Specifica dei requisiti
3)Convalida dei requisiti
Parla ed elenca le fasi principali della fase “sviluppo del software”
Attività di conversione delle specifiche del software in un sistema da consegnare al cliente. (nelle metodologie agili…)
Le fasi principali:
1) Progettazione dell’architettura
2) Progettazione del db
3)Progettazione dell’interfaccia
4)Progettazione e scelta dei componenti
Parla dell’attività di verifica e convalida del software
Serve a dimostrare che un sistema sia conforme alle specifiche e soddisfi le esigenze del cliente. Questa attività richiede controllo, ispezione e revisione ad ogni stadio dello sviluppo. I test sono di tre tipi:
1)test di unità
2)test del sistema
3) test del cliente
Parla dell’attività di evoluzione del sistema.
Attività di modifica durante o dopo lo sviluppo di un sistema software. (distinzione sviluppo e manutenzione??)
Per ridurre i costi di rilavorazione si:
1)anticipazione dei cambiamenti
2)tolleranza dei cambiamenti
due modi x far fronte ai cambiamenti:
1)prototipazione del sistema
2) consegna incrementale
Quale meccanismo è ottimo per supportare la tolleranza ai cambiamenti?
Il refactoring
Cos’è il refactoring?
processo che consiste nel ristrutturare il codice senza modificarne il comportamento esterno. mira a migliorare la struttura interna del software al fine di renderlo più comprensibile, manutenibile ed efficiente, senza alterare la funzionalità visibile dall’esterno
Cos’è un modello di processo software? Fai degli esempi
E’ una rappresentazione semplificata di un processo software Sono strutture di un processo da estendere e adattare per soddisfare le esigenze specifiche di un progetto.
Esiste un modello di processo software universale? Motiva risposta
No, non esiste un modello universale ma la scelta dipende dai requisiti del cliente (fai esempi)
Cos’è il modello a cascata?
Modello di sviluppo sw in cui le fasi di sviluppo sono viste come fasi distinte e non sovrapposte.
Fasi del modello a cascata?
1)All’inizio si definiscono i requisiti;
1)All’inizio si definisce un piano temporale;
2)Si progetta e modella il sistema;
3)Si crea un progetto completo del software;
4)Si inizia la programmazione del sistema;
5)Si testa il sistema, si rilascia e si prosegue con la manutenzione.
In che cosa il modello a cascata si contrappone ai modelli incrementali?
Nei modelli incrementali le fasi di sviluppo sono sovrapposte e iterate mentre nel modello a cascata le fasi sono viste come distinte e non sovrapposte
Cos’è il modello incrementale?
è un modello di processo software in cui il sistema viene sviluppato in incrementi
(o iterazioni). Si effettuano feedback veloci e rilasci
Lo sviluppo incrementale può essere un approccio di che tipo?
1) plan-driven: si pianificano in anticipo gli incrementi;
2)agile: si identificano gli incrementi iniziali ma si dà priorità al rilascio di incrementi che soddisfano i requisiti più importanti
3)una combinazione delle due
Aspetti positivi del modello incrementale?
1) costo di implementazione di modifiche ridotto
2) è facile ottenere un feedback dal cliente
Cosa sai dirmi sul riutilizzo del software? Quali sono le sue fasi?
Pratica che si diffonde dagli anni 2000.
Le fasi principali sono:
1) Specifica dei requisiti;
2)Ricerca e valutazione del software: se esiste un software che soddisfa i requisiti;
3) Perfezionamento dei requisiti: utilizzando le informazioni trovate nella ricerca;
4) Configurazione del sistema di applicazioni;
5) Adattamento e integrazione: si integra il sistema con i componenti riutilizzabili.
Vantaggi e svantaggi del riutilizzo del sw?
Vantaggi: riduce la quantità di software da sviluppare, riducendo i costi e i rischi
Svantaggi: bisogna
scendere a compromessi con i requisiti e si perde il controllo sull’evoluzione del sistema
Il modello di riutilizzo del sw di che tipo è?
1)Incrementale: si incrementa il codice man mano che si sviluppa;
2)Iterativo: si sviluppa il software in cicli (iterazioni);
3)Evolutivo: si sviluppa il software in modo che possa evolvere a ogni iterazione richiedendo un feedback.
Cosa sai dirmi sull’approccio iterativo?
Nell’approccio iterativo:
- lo sviluppo è organizzato in mini-progetti brevi (le iterazioni);
- il risultato di ogni iterazione è un sistema parzialmente funzionante (testato e integrato);
- ogni iterazione dura poche settimane a e comprende le proprie attività di analisi, sviluppo, etc.;
- si ottiene un feedback a ogni iterazione.
Cos’è lo sviluppo agile?
E’ un insieme di metodi di sviluppo software
Quali sono i principi dello sviluppo agile?
Lo scopo della modellazione (UML) è principalmente quello di comprendere e di agevolare la comunicazione,
non di documentare.
1) Adottare un metodo agile non significa evitare del tutto la modellazione;
2) La modellazione non va fatta da soli ma in coppie o in gruppo;
Quali sono le pratiche innovative dello sviluppo agile?
1)Storie utente: scenari d’uso in cui potrebbe trovarsi un utente. Il cliente lavora a stretto contatto con il
team di sviluppo e discute di possibili scenari;
2)Refactoring: il codice va costantemente rifattorizzato per proteggerlo dal deterioramento causato dallo
sviluppo incrementale;
3)Sviluppo con test iniziali: lo sviluppo non può procedere finchè tutti i test non sono stati superati;
4)Programmazione a coppie: i programmatori lavorano a coppie nella stessa postazione per sviluppare il
software.