Teoria Flashcards
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.
Cosa sai dirmi su XP?
eXtreame Programming (XP) è un metodo di sviluppo software che si basa su valori e principi di base:
1)sviluppo incrementale attraverso piccole e frequenti release;
2)il cliente è parte attiva dello sviluppo;
3) il progetto è supportato da test, refactoring e integrazione continua;
4) si punta a mantenere la semplicità.
Cosa sai dirmi su Scrum?
è un metodo di sviluppo sw che offre un framework per organizzare progetti agili e fornire una visibilità esterna su ciò che sta
accadendo, ossia si occupa dell’organizzazione del lavoro e della gestione dei progetti.
Scrum è un approccio iterativo e incrementale in cui ciascuna iterazione ha una durata fissata denominata
Sprint
Quali sono i tre ruoli presenti in uno sviluppo scrum?
1)Product Owner: rappresenta il cliente, definisce i requisiti e specifica le priorità attraverso il Product Backlog4;
2) Development Team: le persone che sviluppano il software;
3) Scrum Master: garantisce che il team segua le regole di Scrum.
Come avviene la gestione agile della progettazione in scrum?
Il Development Team seleziona dal Product Backlog un insieme di voci da sviluppare durante quell’iterazione
(Sprint Goal), compila lo Sprint Backlog (ossia i compiti dettagliati per raggiungere il goal);
Il risultato di ciascuno Sprint è un prodotto software funzionante chiamato “incremento di prodotto potenzialmente
rilasciabile” (integrato, verificato e documentato);
Nello Sprint Review il Product Owner e il Development Team presentano le parti coinvolte dall’incremento,
ne fanno la dimostrazione, ottengono un feedback e decidono cosa fare nello Sprint successivo;
Si dà enfasi all’adozione di Team auto-organizzati e auto-gestiti.
Cos’è un framework?
Struttura di lavoro che fornisce una guida o una base per lo svolgimento di una specifica attività
Cosa intendiamo per OOA e OOD?
1)OOA (Object Oriented Analysis): studio dei requisiti e delle specifiche del sistema;
2)OOD (Object Oriented Design): progettazione del sistema.
Cosa si usa per studiare OOA e OOD?
Per studiare OOA/D si utilizza Unified Process, un processo di sviluppo software orientato agli oggetti.
Cosa si intende per UP?
Unified Process è un processo iterativo ed evolutivo (incrementale) per lo sviluppo del software per la
costruzione di sistemi orientati agli oggetti. Le iterazioni iniziali sono guidate dal rischio, dal cliente e
dall’architettura.
Quali sono esempi di approcci ai quali può essere applicato up?
Sono approcci agili come scrum o xp
UML descrive software?
NO, uml descrive concetti
UP che linguaggio di modellazione usa?
UML e solo uml
Cos’è UML?
UML è un progetto che serve per aiutare la comprensione nei team di sviluppo.
UML è un linguaggio visuale per la specifica, la costruzione e la documentazione degli elaborati di un
sistema software.
UML è uno standard per la notazione di diagrammi per disegnare o rappresentare figure relative al software
(specialmente OO).
Quando e come usiamo UML?
1)Punto di vista concettuale: modello di dominio, per visualizzare concetti del mondo reale;
2)Punto di vista software: diagramma delle classi di progetto, utilizzata per visualizzare elementi software.
Cosa sono i pattern?
I pattern sono euristiche, best practice, che aiutano a codificare principi di soluzioni.
Da che cosa è guidata OOD?
Dalle responsabilità, ecco perchè è correlata all’analisi dei requisiti:
1) casi d’uso
2) storie utente
grazie a loro possiamo delineare i requisiti del sistema
Quali processi di sviluppo comprendono lo svolgimento dell’analisi dei requisiti e dell’OOA/OOD?
1)sviluppo iterativo
2)approccio agile
3)up
(quindi non un processo di sviluppo a cascata x esempio)
Che cosa sono i requisiti?
Un requisito è una capacità o una condizione a cui il sistema deve essere conforme.
Un processo up cosa comprende?
1)Un’organizzazione del piano di progetto per fasi sequenziali;
2) Indicazioni sulle attività da svolgere nell’ambito di discipline e sulle loro inter-relazioni;
3)Un insieme di ruoli predefiniti;
4) Un insieme di artefatti da produrre
Quali sono le quattro fasi in cui è organizzato un progetto up? Descrivile.
1)ideazione -> milestone: obiettivi
2)elaborazione ->milestone: architetturale
3)costruzione->milestone: capacità operazionale
4)transazione-> milestone: rilascio di prodotto
Ma ideazione e elaborazione (in up) sono fasi di requisiti? motiva la risposta
NO!
1)L’Ideazione non è una fase di requisiti, ma di fattibilità;
2)L’Elaborazione non è una fase di requisiti o di progettazione, ma una fase in cui si implementa in
modo iterativo l’architettura del sistema e vengono ridotti i rischi maggiori.
Cosa si intende per discipline?
Una disciplina è un insieme di attività e dei relativi elaborati in una determinata area, come le attività
relative all’analisi dei requisiti.
Cosa intendiamo per elaborato?
Un elaborato (artefatto o work product) è il termine generico che indica un qualsiasi prodotto di lavoro:
codice, schemi di basi di dati, documenti di testo, diagrammi, modelli, etc.
Discipline principali e di supporto di up?
Principali:
1)Modellazione del business: attività che modellano il dominio del problema e il suo ambito;
2) Requisiti: attività di raccolta dei requisiti;
3)Progettazione (analysis and design): attività di analisi dei requisiti e progetto architetturale;
4)Implementazione: attività di progetto dettagliato e codifica del sistema, test sui componenti;
5) Test: attività di controllo di qualità, test di integrazione e di sistema;
6) Rilascio: attività di consegna e messa in opera.
Di supporto:
1)Gestione delle configurazioni e del cambiamento: attività di manutenzione durante il progetto;
2) Gestione progetto: attività di pianificazione e governo del progetto;
3)Infrastruttura (enviroment): attività che supportano il team di progetto, riguardo ai processi e strumenti
utilizzati.
Differenza in up tra discipline e fasi?
Nonostante le fasi siano sequenziali, le discipline non lo sono (perchè si eseguono in ogni iterazione). Il numero
di iterazioni dipende dal Project Manager.
Quali sono le sorgenti dei requisiti? DI che tipo possono essere i requisiti?
I requisiti derivano da richieste degli utenti del sistema per risolvere dei problemi e raggiungere degli obiettivi.
Possono essere:
1) Requisiti funzionali: descrivono il comportamento del sistema in termini di funzionalità offerte;
2) Requisiti non funzionali: le proprietà del sistema nel suo complesso (sicurezza, prestazioni, etc.).
Cos’è il modello FURPS+?
⇒Funzionali (F): requisiti funzionali e di sicurezza;
⇒ Usabilità (U): facilità d’uso del sistema;
⇒ Affidabilità (R - Reliability): disponibilità del sistema, capacità di tollerare guasti o di essere ripristinato;
⇒ Prestazioni (P): tempi di risposta, throughput, capacità e uso delle risorse;
⇒ Sostenibilità (S): facilità di modifica per riparazioni e miglioramenti, adattabilità, manutenibilità, localizzazione,
configurazione, compatibilità;
⇒ +: vincoli di progetto, interoperabilità, operazionali, fisici, legali, etc.
Quali sono gli elaborati prodotti dalla fase di analisi dei requisiti?
⇒ Modello dei Casi d’Uso: scenari tipi dell’utilizzo di un sistema;
⇒ Specifiche supplementari: ciò che non rientra nei Casi d’Uso, requisiti non funzionali o funzionali non
esprimibili attraverso i Casi d’Uso;
⇒ Glossario: termini significativi, dizionario dei dati;
⇒ Visione: riassume i requisiti di alto livello, un documento sintetico per apprendere rapidamente le idee
principali del progetto;
⇒ Regole di Business: regole di dominio, i requisiti o le politiche che trascendono un unico progetto software
e a cui un sistema deve conformarsi.
Che cos’è l’ideazione? Qual è il suo obiettivo?
l’ideazione permette di stabilire una visione completa e la portata del progetto (studio di fattibilità).
Lo scopo dell’Ideazione non è di raccogliere tutti i requisiti, né di generare una stima o un piano di progetto affidabile. Durante l’ideazione si cerca di capire se il progetto è fattibile e se ha senso.
Ha durata breve. Si prepara l’ambiente di sviluppo.
Cosa produce la fase di ideazione?
La fase di ideazione produce molti artefatti che:
1)non sono definitivi
2) non sono importanti come documento in sè ma è importante il lavoro di pensiero e studio che c’è dietro
Cosa intendiamo per l’elaborato di specifiche supplementari?
Le specifiche supplementari raccolgono altri requisiti, informazioni e vincoli che non sono espressi nei Casi
d’Uso o nel Glossario. Si deve mettere anche la cronologia delle versioni.
Cosa intendiamo per l’elaborato di visione?
Il documento Visione riassume alcune informazioni contenute nel modello dei Casi d’Uso e nelle Specifiche
supplementari. Inoltre descrive brevemente il progetto ai partecipanti per stabilire una visione comune.
⇒ Obiettivi e problemi fondamentali ad alto livello;
⇒ Riepilogo delle caratteristiche di sistema.
Cosa intendiamo per l’elaborato del glossario?
Il Glossario è un documento che definisce i termini significativi del dominio e le relazioni tra di essi. Si
devono eliminare eventuali discrepanze per ridurre problemi di comunicazione e di ambiguità.
In UP il Glossario svolge anche il ruolo di dizionario dei dati: un documento di dati che si riferiscono ad
altri dati, per esempio le regole di validazione.
Cos’è la disciplina dei requisiti?
La disciplina dei requisiti è il processo per scoprire cosa deve essere costruito e orientare lo sviluppo verso
il sistema corretto.
Cosa sono i requisiti di sistema?
I requisiti di sistema sono le capacità e le condizioni a cui il sistema deve essere conforme.
Sono scritti nel linguaggio del cliente
Cos’è la lista dei requisiti?
La lista dei requisiti è usata per stimare la taglia del progetto e per decidere come suddividere il lavoro in
sequenze di iterazioni.
Quali sono le caratteristiche che caratterizzano ogni requisito?
⇒ Breve descrizione;
⇒ Stato (proposto, approvato, incorporato, validato);
⇒ Costi di implementazione stimati;
⇒ Priorità;
⇒ Rischio associato per la sua implementazione.
Quali sono i modi per capire il contesto del sistema?
⇒ Modello di dominio: descrive i concetti significativi del sistema come oggetti del dominio e relaziona i
concetti con associazioni (usa UML);
⇒ Modello di business: un super-insieme del modello di dominio, descrive i processi di business. È un prodotto
dell’ingegneria del business e ha lo scopo di migliorare i processi di business.
Come catturiamo i requisiti funzionali?
⇒ In UP vengono usati i Casi d’Uso;
⇒ Un Caso d’Uso rappresenta un possibile utilizzo del sistema da parte di un utente;
⇒ Sono descrizioni testuali
Come catturiamo i requisiti non funzionali?
⇒ Si utilizzano le Specifiche supplementari;
⇒ Possono anche essere catturati nei Casi d’Uso.
I casi d’uso sono diagrammi?
No, sono documenti di testo