1&2_INTRO_PRO_SOFT Flashcards

(21 cards)

1
Q

Cos’è processo software e quali sono le fasi

A

Con processo software si intende il modo con cui produciamo il software
* Comincia quando iniziamo ad esplorare il problema
* Finisce quando il prodotto viene ritirato dal mercato
* Strutturato in fasi:
* Analisi dei requisiti
* Specifica
* Progettazione
* Implementazione
* Integrazione
* Mantenimento
* Ritiro
* Riguarda tutti gli strumenti, le tecniche e i professionisti coinvolti nella varie fasi
Definizione -> Approccio sistematico per sviluppo, operatività, manutenzione e ritiro software / Sequenza di attività necessarie a sviluppare un sistema software

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Cosa sono robustezza e Faul tolerance?

A

Robustezza → capacità di far funzionare sistema software correttamente anche con comportamenti errati dell’utente. Un software robusto è capace di gestire errori, input errati senza interrompere il suo funzionamento.

Fault tolerance → capacità di riprendere funzionamento correttamente dopo un crash.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

In cosa si differenzia il software da altri prodotti ingegnerizzabili?

A

Un sistema software è diverso da altri prodotti ingegnerizzabili
* Non è necessariamente vincolato da materiali
* Non è governato da leggi fisiche o da processi manufatturieri
* Non ha costi marginali (costo di un’unità aggiuntiva prodotta)
* Non si «consuma»
* Spesso si «assembla»

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Cosa significa modellare un processo software?

A

Il modello di un processo software fornisce una rappresentazione astratta del processo stesso
* Suddivisione in attività (cosa fare, quando, chi, e cosa si ottiene)
* Organizzazione delle attività (ordinamento, criteri per terminare un’attività e passare alla successiva)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quali sono le fasi comuni a tutti i modelli di processi software?

A
  • specifica, aka. definizione di cosa deve essere fatto
  • progettazione e implementazione
  • validazione, aka. verifica che il sistema faccia quanto richiesto
  • evoluzione, aka. modifica/aggiornamento del sistema
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quali sono i grandi macro gruppo di modelli di ciclo di vita del software?

A

Modelli prescrittivi, Unified Process, Modelli Agili

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Elenca modelli prescrittivi

A
  • Cascata
  • Modello a V
  • Rapid Prototyping
  • Modello incrementale
  • Modello a spirale
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Modelli agili

A
  • Extreme Programming
  • Scrum
  • Continuous Delivery
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Parla della fase di specifica

A

Stabilisce quali servizi sono richiesti e i vincoli sul funzionamento del sistema.
Processo di ingegneria dei requisiti:
* Estrazione e analisi dei requisiti
* Specifica dei requisiti
* Convalida dei requisiti

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Parla della fase di progettazione

A

Definizione di una struttura software che realizzi la specifica
* Architectural design: identificazione della struttura del sistema (in termini di componenti, relazioni e loro distribuzione)
* Database design: definizione delle strutture dati e della loro rappresentazione in database
* Interface design: Definizione delle interfacce tra i componenti del sistema
* Component design: Definizione (di dettaglio) dei componenti del sistema, eventualmente identificando quelli realizzabili mediante riuso di componenti esistenti

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Parla della fase di sviluppo

A

La struttura software progettata nella fase di design è realizzata implementando uno o più programmi e/o configurando sistemi applicativi esistenti
Attenzione:
* Le fasi di progettazione e sviluppo sono spesso eseguite in interleaving nella produzione di sistemi software
* La fase di sviluppo include:
* Programmazione: attività individuale (eventualmente svolta in cooperazione) senza un processo standard
* Debugging: attività volta ad identificare e correggere eventuali errori/bug introdotti durante la programmazione

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Fase di validazione

A

Verifica e validazione (V&V) hanno lo scopo di dimostrare che un sistema è conforme alle sue specifiche e soddisfa i requisiti del cliente
* Spesso fatta mediante test del sistema
* Il test del sistema prevede l’esecuzione del sistema con casi di test derivati dalla specifica
dei dati reali che devono essere elaborati dal sistema
Component testing, system testing, Customer testing

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Fase di evoluzione

A

Cambiamenti ed evoluzioni sono inevitabili nei sistemi moderni:
1. Cambio requisiti -> nuove esigenze di business
2. Nuove tecnologie
Necessità di anticipare i cambiamenti per ridurre i costi del rework

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Differenze tra plan-driven e Agile

A

Plan driven -> sequenziale
Agile -> iterativo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Principi fondamentali met. Agile

A
  1. Coinvolgere il cliente (anche nel nostro esame)
  2. Consegna incrementale: versione incrementali con il cliente che specifica i requisiti da soddisfare in ciascuna versione
  3. Persone non processi: Abilità del team devono essere riconosciute e sfruttate, lasciando team di sviluppo liberi di sviluppare
  4. Abbraccia il cambiamento: i requisiti del sistema cambieranno nel tempo e progettare il sistema in modo da favorire tali cambiamenti
  5. Mantieni semplicità: semplicità nel software e nel processo di sviluppo
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Agile e CI/CD

A
  • CI/CD sono pratiche specifiche focalizzate sull’integrazione, il testing e il rilascio continuo del codice, spesso automatizzate.
  • DevOps è un insieme di principi culturali e organizzativi che ingloba CI/CD e promuove la collaborazione tra sviluppo e operazioni per accelerare il ciclo di vita del software e migliorare la qualità del prodotto.
17
Q

Extreme programming

A

XP è un approccio «estremo» allo sviluppo iterativo e agile del software
* Nuove versioni di un sistema software sviluppate più volte in un giorno
* Versioni incrementali rilasciate al cliente ogni 2 settimane
* Tutti i test sono eseguiti per ogni build e una build è accettata solo se tutti i test sono passati con successo

18
Q

Scrum definizione e figure coinvolte

A

Scrum è un metodo agile per lo sviluppo iterativo e incrementale di un sistema software
* Il nome deriva dalla terminologia usato per «mischia» nel gioco del rugby
* L’idea è quella di ottenere un processo in cui un insieme di persone si muove all’unisono per raggiungere un obiettivo che garantisce la soddisfazione di
* ambizioni di squadra e
* ambizioni personali

Figure:
1. Product owner
2. Scrum master
3. Dev Team

19
Q

Quali sono le fasi Scrum

A

1) Pre-game phase (pianificazione «di massima»)
* Planning sub-phase: Definizione del sistema che deve essere sviluppato, in termini di
product backlog (contiene tutti i requisiti attualmente conosciuti)
* Architecture sub-phase: Design di alto livello del sistema, inclusa l’architettura, in base
agli elementi contenuti nel product backlog
2) Game phase (sviluppo)
* Il sistema viene sviluppato attraverso una serie di sprint (cicli iterativi nei quali vengono sviluppate o migliorate una serie di funzionalità)
* Uno sprint si svolge in un intervallo di tempo che va da una settimana ad un mese
* Ciascuno sprint include le tradizionali fasi di sviluppo del software
* L’architettura del sistema evolve durante lo sviluppo negli sprint

20
Q

Parla degli sprint nella met. scrum

A

Gli sprint hanno durata prefissata (~2-4 settimane)
1. definizione product Backlog
2. Pianificazione dello sprint
3. Inizia sprint
4. Termine sprint e revisione

Tra uno sprint e successivo evento di retrospettiva

21
Q

Cos’è Kanban

A

Organizzazione di un progetto // obiettivo: ridurre il tempo richiesto dall’inizio alla fine
* Visualizzazione, tramite board Kanban
* Limitazione del lavoro in corso (WIP – work-in-progress)
* Ottimizzazione dell’efficienza