Ingegneria del software Flashcards
Definizione di ingegneria del software secondo l’IEEE
L’approccio sistematico allo sviluppo, all’operatività, alla manutenzione e al ritiro del software
Come si suddivide la manutenzione di un software?
-Manutenzione correttiva 20% (lascio intatta la specifica)
-Manutenzione migliorativa 80%:
-Perfettiva 60% (aggiungere nuove funzionalità e migliorare il software)
-Adattiva 20% (adattare aspetti legislativi o dell’hardware)
Quali sono i principali modelli di ciclo di vita?
Build and fix, modello a cascata, modello a V, rapid prototyping, modello incrementale, modello a spirale, unified Process, e modelli agile
Descrivi brevemente il modello build and fix
E’ un modello di ciclo di vita che prevede una continua modifica al progetto finché il committente non è soddisfatto
Descrivi brevemente il modello a cascata di Royce
E’ un modello lineare che prevede analisi dei requisiti di sistema e software, il coding, una fase di testing e una di messa in prova. C’è poca interazione con l’utente
Descrivi brevemente il modello a V
Il modello a V prevede nel lato sinistro tutte le analisi dei design (sistema, architettura, modulo), al centro la verifica dei prodotti della colonna di sinistra (progettazione di test) e nella colonna di destra tutti i testing effettivi di questi pezzi che soddisfano le esigenze degli utenti
Descrivi brevemente il modello Rapid Protptyping
E’ un modello che prevede la creazione di un prototipo che vine sistemato più volte per arrivare alle specifiche del cliente (molta interazione col cliente)
Descrivi brevemente il modello incrementale
Prevede la creazione di una versione incompleta per soddisfare le esigenze del cliente, se progettato male è un build and fix
Descrivi brevemente il modello a spirale
E’ un modello che prevede 4 fasi:
1) determinare obiettivi e vincoli
2) valutazione dei rischi
3) sviluppo e verifica
4) pianificazione della fase successiva
Descrivi brevemente l’Unified Process
Modello incentrato su casi d’uso e analisi dei rischi ma in particolare sull’architettura, lasciando dettagli superflui
Cosa sono i metodi Agile e quali sono i pro e i contro
Le metodologie agile inseriscono il committente al centro del processo di creazione del software.
Pro:
-Collaborazioni con i clienti al di là del contratto
-Software funzionante e documentazione precisa ma semplice da leggere
-Rilascio costante di nuove versioni
Contro:
-Non adatto a molti sviluppatori
Che cos’è SCRUM?
E’ un progetto Agile incrementale iterativo che fornisce ad ogni iterazione nuove funzionalità rilasciabili
Quali sono le fasi di SCRUM?
Le fasi sono 3:
-Pre game phase: definizione del sistema, dei requisiti e dell’architettura
-Development phase: sviluppo attraverso degli sprint
-Post game phase: Rilascio del prodotto e consegna della documentazione al cliente
Cos’è uno SPRINT?
E’ un ciclo iterativo durante lo sviluppo di un software nel quale si introducono nuove funzionalità. Si divide in:
-planning
-daily meeting
-review
Quali sono i ruoli coinvolti in uno SCRUM?
I ruoli sono 3:
-Product owner: gestisce tutte le figure coinvolte e si relaziona con l’utente finale
-Membro del team: Decidono gli sprint e costruiscono il prodotto
-Scrum master: figura di supporto al team per migliorare l’ambiente di di lavoro
Cos’è una SCRUM kanban
Lavagna fisica o virtuale dove si suddividono le attività da fare, in svolgimento o terminate. Viene posto un WIP limit ovvero un numero massimo di attività in contemporanea
Cosa si intende per studio di fattibilità?
E’ quella fase preliminare all’analisi dei requisiti che determina se il progetto è fattibile oppure no. Vengono controllate le necessità utente e si fa un analisi di mercato e tecnica
Cosa si intende per analisi dei rquisiti?
Analisi delle esigenze del committente e della creazione del dominio e dei requisiti di sistema
Cosa è un dominio e cosa è importante valutare?
Un dominio è l’ambito o il contesto nel quale il software opera. Per eliminare l’ambiguità si costruisce un glossario, arricchito via via. Si costruiscono anche modelli statici e dinamici
Cos’è un requisito e che tipologie abbiamo studiato?
Un requisito è una proprietà che deve essere garantita dal sistema per soddisfare una richiesta utente.
Esistono:
-funzionali: funzionalità del sistema
-non funzionali: affidabilità, interfaccia utente, usabilità, sicurezza
Come possono essere definiti i requisiti?
Attraverso il linguaggio naturale nel documento dei requisiti, attraverso grafici UML nei diagrammi dei casi d’uso o attraverso le user stories (foglietti di carta che possono essere compilati da chiunque)
Quante sono le fasi dell’analisi dei requisiti?
Sono 5: Acquisizione, Elaborazione, Convalida, Negoziazione e Gestione
Che cos’è la tecnica MoScoW?
E’ una tecnica di negoziazione che prevede la suddivisione dei requisiti in obbligatori, desiderabili, opzionali e postponibili
Che cos’è un modello?
Astrazione del sistema (o del dominio) usato per specificarne struttura e il comportamento
Che tipo di diagrammi abbiamo visto?
Modelli statici:
-casi d’uso
-classi
-oggetti
Modelli dinamici:
-attività
-macchine a stati
-sequenze
Cos’è un diagramma dei casi d’uso?
E’ un diagramma che permette di raccogliere ed elaborare i requisiti funzionali
Cos’è un attore e quali sono le tipologie:
Un attore è un entità esterna al sistema che interagisce direttamente con questo. Ci sono 3 tipologie:
-essere umano
-altro sistema
-tempo (attore principale)
Cos’è un caso d’uso?
E’ un compito che un attore può svolgere con l’aiuto del sistema e viene espresso come un insieme di scenari (ovvero istanze del caso d’uso)