Testing del Software
rif. slide: https://docs.google.com/presentation/d/1aNT0f9muWKgcv0XTkk3qDAA0ktBupSYMU6uRBv1LTwg/edit?usp=sharing
1. Qual è l'importanza del testing del software secondo l'Institute of Electrical and Electronics
Engineers (IEEE)?
2. Quali sono i benefici del testing del software per la qualità e la soddisfazione del cliente?
3. Quali sono le best practice per il testing del software?
4. Che cos'è un unit test e qual è il suo obiettivo principale?
5. Quali sono i framework di testing comunemente utilizzati per gli unit test in Java?
6. Qual è l'importanza del testing preventivo nel ciclo di vita del software?
7. Quali sono le fasi del ciclo di vita del test del software?
8. Qual è la differenza tra verifica e validazione nel testing del software?
9. Cos'è l'inspection nel testing del software e quali sono i suoi obiettivi?
10. Quali sono le tecniche di ispezione utilizzate nel testing del software?
11. Qual è l'importanza della verifica statica nel processo di sviluppo del software?
12. Qual è la differenza tra test statici e test dinamici nel testing del software?
13. Quali sono i livelli di test del software e quali sono le loro caratteristiche principali?
14. Cos'è il debugging del software e qual è il suo processo tipico?
15. Qual è la differenza tra testing e debugging del software?
16. Cosa si intende per black-box testing e white-box testing?
17. Qual è il modello di sviluppo a V e come si differenzia dal modello a cascata?
Programmazione Concorrente
rif. slide: https://docs.google.com/presentation/d/16MTUH6GMYHkO35eISDqkFMBm2nIdXgY4MNGVItWAzC0/edit?usp=sharing
1. Quali sono le principali differenze tra i sistemi operativi single-tasking e multi-tasking?
2. Qual è il ruolo del time slicing nel parallelismo dei processi e dei thread?
3. Come viene gestita la concorrenza tra processi in un sistema con più core o processori?
4. Quali sono le principali caratteristiche di un processo e quali risorse può condividere?
5. Come vengono rappresentati gli stati di un processo nel ciclo di vita?
6. Quali sono le fasi attraverso cui passa un processo nel suo ciclo di vita?
7. Cosa succede durante un interrupt software e uno hardware?
8. Cos’è e qual è il ruolo del Process Control Block (PCB) nella gestione dei processi? (definire la
struttura - rif. slide n. 18)
9. Cos’è una System call?
10. Come avviene la creazione di un nuovo processo e quali sono le sue caratteristiche?
11. Che cosa succede quando si chiama la funzione fork() in un programma? Quali valori
restituisce?
12. Quali sono le principali funzioni per la gestione dei processi? (rif.
13. Quali sono i comandi per la gestione dei processi nei sistemi UNIX? (rif. slide n.20)
14. Quali sono le funzioni principali utilizzate per la gestione dei processi in un sistema Unix-like?
15. Che cosa significa un processo "zombie" e perché si verifica?
16. Come funziona la funzione wait() in C e quale è il suo scopo principale?
17. Qual è l'importanza della gestione efficiente delle risorse in un sistema operativo?
18. Cosa si intende per risorsa e quali possono essere le loro caratteristiche?
19. Come vengono classificate le risorse in base alle loro caratteristiche?
20. Qual è il processo di richiesta e assegnazione di risorse da parte dei processi?
21. Qual è la relazione tra il numero di processi e la molteplicità di una risorsa?
22. Come avviene la condivisione delle risorse tra i processi e quali sono i suoi vantaggi?
23. Come viene classificata la richiesta di risorse da parte dei processi?
24. Quali sono le differenze tra richiesta bloccante e non bloccante?
25. Cosa si intende per assegnazione statica e dinamica delle risorse?
26. Def. mutua esclusività
27. Come vengono classificate le risorse in base alla mutua esclusività e alla modalità di utilizzo?
28. Che cosa sono le risorse private e come vengono gestite dal sistema operativo?
29. Qual è la struttura del Grafo di Holt e quali sono le sue proprietà? Per quale scopo viene
utilizzato?
30. Come viene gestita la riducibilità di un Grafo di Holt e qual è il concetto di riducibilità?
31. Qual è la differenza tra un processo e un thread? Perchè i processi sono definiti “pesanti”?
32. Quali sono le caratteristiche principali di un thread o processo leggero?
33. Quali sono i vantaggi e gli svantaggi nell'utilizzare i thread rispetto ai processi?
34. Cosa si intende per "context switch" e qual è il suo impatto sui processi e sui thread?
35. Def. Overhead di sistema
36. Quali sono le strutture di dati associate ai processi e ai thread?
37. Come vengono gestiti i thread a livello utente e a livello kernel?
38. Cosa si intende per multi-threading e in quali contesti è utilizzato?
39. Quali sono i vantaggi e gli svantaggi del multithreading a livello utente e a livello kernel?
40. Cosa si intende per "thread safety" e perché è importante?
41. Quali sono gli stati di un thread e cosa rappresentano?
42. Come avviene il comportamento in caso di blocco per I/O di un thread?
43. Quali sono le principali applicazioni dei thread? (fornire degli esempi)
44. Qual è la differenza tra single threading e multithreading? (Rif. all’immagine)
45. Quali sono gli scenari possibili basati sulla combinazione di processi e thread singoli o
multipli?
46. Cos’è lo standard POSIX e come vengono gestiti i thread in tale modello?
47. Def. attività foreground e attività in background (esempi)
48. Def. processo concorrente
Nuove:
49. Quali sono le due principali tecniche di sincronizzazione e come vengono implementate?
50. Quali sono i principali benefici dell'esecuzione parallela in termini di prestazioni, scalabilità e
gestione di compiti complessi?
51. Come funzionano le tecniche di sincronizzazione attraverso memoria condivisa?
52. Cosa significa "parallelismo virtuale" e come viene gestito nei sistemi monoprocessori
multiprogrammati?
53. Quali sono i linguaggi di programmazione concorrente e quali costrutti offrono per gestire la
concorrenza?
54. Def.
a. processi totalmente ignari
b. processi indirettamente a conoscenza uno dell'altro
c. processi direttamente a conoscenza uno dell'altro
55. Qual è l'uso dei costrutti fork-join e cobegin-coend nella programmazione parallela?
56. Come viene rappresentata la fork nel Grafo delle Precedenze e cosa rappresenta
nell'esecuzione parallela?
57. Qual è il ruolo della join nel Grafo delle Precedenze e come viene eseguita nell'ambito della
sincronizzazione tra processi paralleli?
58. Qual è l'uso dell'istruzione join(count) e in quali situazioni viene utilizzata?
59. Che cos'è il costrutto cobegin-coend e quali sono i suoi scopi nella programmazione
parallela?
60. Qual è la definizione di cammino parallelo e come può essere utilizzato nella
programmazione concorrente?
61. Quali sono i benefici e le limitazioni nell'utilizzo di fork-join rispetto a cobegin-coend nella
descrizione della concorrenza?
62. Quali sono i requisiti affinché un grafo possa essere descritto solo con istruzioni
cobegin-coend?
63. Qual è la differenza nell'approccio di codifica tra istruzioni fork-join e istruzioni cobegin-coend
quando si tratta di programmi paralleli?
64. Qual è l'importanza dell'analisi del Grafo delle Precedenze nella scrittura di programmi
paralleli e come può essere semplificato il grafo per rendere più chiara la relazione tra
operazioni?