Ingegneria del software
Vetrella Sergio
Docente: Lezione 002
Che cos'è, nel contesto dell'ingegneria del software, una metodologia?
In che cosa si differenzia da un metodo? Una metodologia è una collezione di metodi per risolvere una classe di problemi specifica come e quando ogni metodo debba essere usato. Le metodologie di sviluppo software decompongono il processo in attività. Per ogni attività la metodologia identifica uno o più metodi. Il metodo è una tecnica ripetibile che specifica i passi richiesti per risolvere un dato problema.
Che cos'è, nel contesto dell'ingegneria del software, una notazione?
Fornisci un esempio. Una notazione è un insieme di regole grafiche o testuali usate per rappresentare un modello. Le notazioni sono importanti perché ci permettono di esprimere dei concetti complessi in modo sintetico e preciso. Le notazioni adottate in un progetto devono avere una semantica ben definita, essere adeguate a rappresentare aspetti specifici del sistema, ed essere ben comprese dai partecipanti al progetto. UML (Unified Modeling Language) è un esempio di notazione usata per rappresentare i modelli orientati ad oggetti.
Lezione 009
Nell'ambito delle notazioni adottate nei diagrammi UML, che cos'è una nota?
Fornisci un esempio. Una nota è un commento annesso a un diagramma. Le note sono usate dagli sviluppatori per aggiungere informazioni ai modelli e agli elementi del modello. Questo meccanismo serve ad esplicitare aspetti importanti per un modello, chiarire un punto complesso, indicare elementi che richiedono ulteriori elaborazioni (to-do), registrare promemoria... Le note non hanno una semantica propria, ma sono talvolta usate per rappresentare vincoli che non possono essere espressi altrimenti in UML.
Nell'ambito delle notazioni adottate nei diagrammi UML, che cos'è un package?
Fornisci un esempio. Un package è un raggruppamento di elementi di un modello, come casi d’uso o classi, che definisce un ambito di compressione. I packages sono, quindi, usati per ridurre la complessità di un modello, nello stesso modo in cui un utente organizza file e sotto-cartelle nel file system del proprio pc. I packages, comunque, non sono necessariamente organizzati in una struttura gerarchica: la stessa classe può apparire in più packages. Per ridurre le inconsistenze, ogni elemento del modello appartiene esattamente ad un package, e gli altri packages possono fare riferimento a tale elemento.
Nell'ambito delle notazioni adottate nei diagrammi UML, che cos'è un vincolo (constraint)?
Fornisci un esempio. Un vincolo è una regola che collegata ad un elemento di modello UMD restringe la semantica. Possiamo quindi rappresentare fenomeni che sarebbero impossibili da esprimere in UML. Per esempio un incidente può essere associato a più di un report di emergenza, da sottoporre però all’attenzione che in questo esempio il controllore possa visualizzarli in ordine cronologico. Si può, quindi, rappresentare l’ordine cronologico come un vincolo, espresso come stringa linguaggio naturale.
Nell'ambito delle notazioni adottate nei diagrammi UML, che cos'è uno stereotipo?
Fornisci un esempio. Uno stereotipo è un meccanismo di estensione che consente di classificare gli elementi dei modelli in UML. Esso è rappresentato con una stringa di caratteri racchiusa tra virgolette basse, dette anche francesi, «». Lo stereotipo è collegato all’elemento del modello al quale si applica, ad es. una classe o un’associazione. In fase di analisi è possibile classificare gli oggetti in tre categorie: entity, boundary e control:
- Gli oggetti di tipo Entity, rappresentano le informazioni persistenti che il sistema mantiene.
- Gli oggetti di tipo Boundary, rappresentano le interazioni tra gli attori e il sistema.
- Gli oggetti di tipo Control, implementano i casi d’uso.
Lezione 010
In merito al tema dell'elicitazione dei requisiti, che cosa si intende con affidabilità di un sistema?
L’affidabilità (reliability) è la capacità di un sistema o di un componente di eseguire le funzioni per le quali è stato progettato sotto determinate condizioni e per uno specifico lasso temporale. I requisiti di affidabilità includono, ad es., un accettabile tempo di funzionamento esente da guasti (MTBF, Mean Time Between Failures), la capacità di rilevare automaticamente particolari guasti, o di resistere a specifici attacchi di sicurezza. Una forma più generale di affidabilità, identificata dal termine inglese dependability, è la proprietà di un sistema computerizzato di estendere la propria affidabilità ai servizi che esso offre. La dependability contiene la reliability, la robustness (funzionare correttamente con input non validi o condizioni ambientali avverse) e la safety (non poter causare effetti catastrofici per l’ambiente).
In merito al tema dell'elicitazione dei requisiti, che cosa si intende con usabilità di un sistema o di una sua componente?
L’usabilità è la facilità con cui un utente può imparare ad operare con, preparare i dati di input per, e interpretare gli output di, un sistema o una sua componente. I requisiti di usabilità includono, ad es., le convenzioni e le metafore adottate per l’interfaccia utente, l’ampiezza di copertura dell’help online, i livelli di documentazione per l’utente ecc. Spesso il committente richiede che l’interfaccia del sistema venga sviluppata secondo specifiche linee guida, schemi di colore, includa un particolare logo, usi determinati font ecc.
In merito al tema dell'elicitazione dei requisiti, i requisiti relativi alle prestazioni (performance) coinvolgono attributi quantificabili del sistema. Cita almeno tre esempi di tali attributi.
I requisiti relativi alle prestazioni (performance) coinvolgono attributi quantificabili del sistema, come ad es.:
- Il tempo di risposta (response time): quanto velocemente il sistema reagisce all’input dell’utente.
- La capacità di produzione (throughput): quanto lavoro il sistema può svolgere nell’unità di tempo.
- La disponibilità (availability): la misura con cui il sistema o una componente sono operativi e accessibili quando se ne richiede l’uso. Esempio: «SatWatch deve essere disponibile 24 ore al giorno eccetto dalle 2:00am alle 2:01am, quando effettua l’allineamento automatico».
- L’accuratezza (accuracy): il livello di precisione ed esattezza (sul piano quantitativo o qualitativo) dell’output prodotto dal sistema o da una componente. Esempio: «SatWatch deve visualizzare l’ora con un errore massimo di 1 secondo».
Durante la progettazione del sistema i requisiti sono frequentemente validati con il committente e con gli utenti. La validazione dei requisiti si articola in controlli di completezza, consistenza, non-ambiguità e correttezza. Descrivi il significato di queste categorie di validazione.
- Completezza: tutte le caratteristiche del sistema sono descritte nei requisiti.
- Consistenza: nelle specifiche non devono esserci due requisiti in reciproca contraddizione.
- Non-ambiguità: un requisito non può essere interpretato in due modi mutuamente esclusivi.
- Correttezza: i requisiti descrivono le caratteristiche del sistema e dell’ambiente di interesse per il committente e gli sviluppatori, ma non descrivono altre caratteristiche non desiderate.
In merito al tema dell'elicitazione dei requisiti, che cosa si intende con supportabilità di un sistema?
La supportabilità (supportability) è la capacità di garantire assistenza e mantenimento al sistema e la facilità di apportare cambiamenti al sistema stesso dopo il suo rilascio:
- L’adattabilità (adaptability): la capacità di modificare il sistema per integrare ulteriori concetti del dominio dell’applicazione.
- La manutenibilità (maintainability): la capacità di modificare il sistema per integrare nuove tecnologie o correggerne i difetti.
- L’internazionalizzazione (internationalization): la capacità di modificare il sistema per integrare nuove convenzioni internazionali, come linguaggi, unità di misura, valute monetarie, formati numerici.
- La portabilità (portability): la facilità con cui un sistema o una componente possono essere trasferiti da un ambiente hardware-software ad un altro.
Tre proprietà desiderabili della specifica dei requisiti sono che essa sia realistica, verificabile e tracciabile. Descrivi queste tre proprietà.
La specifica è realistica se il sistema può essere realizzato nel contesto dei vincoli considerati. I requisiti sono verificabili se, una volta costruito il sistema, test ripetibili possono essere usati per dimostrare che il sistema soddisfa i requisiti. Una specifica dei requisiti è tracciabile se per ogni requisito è possibile, durante tutto il processo di sviluppo, identificare le corrispondenti funzionalità del sistema, e se da ogni funzionalità è possibile risalire a ritroso ai corrispondenti requisiti.
Che cosa si intende con il termine greenfield engineering?
Nell’ingegnerizzazione ex-novo (greenfield engineering) lo sviluppo parte da zero: non esiste un sistema precedente da integrare o sostituire. I requisiti sono forniti dal committente e dagli utenti. Il progetto è innescato da un’esigenza degli utenti, dalla creazione di un nuovo mercato, ecc.
Lezione 012
Descrivi la struttura del documento di analisi dei requisiti (RAD).
Il Documento di Analisi dei Requisiti (RAD) descrive completamente il sistema in termini di requisiti funzionali e non-funzionali, e si rivolge ai committenti, agli utenti, al project manager, agli analisti e ai progettisti del sistema. È suddiviso in 4 sezioni:
- La prima sezione del RAD, Introduzione, si propone di fornire una breve panoramica sulle funzionalità del sistema, le ragioni per il suo sviluppo, la sua area di copertura, i riferimenti al contesto (studi di fattibilità ecc.), gli obiettivi e i criteri per determinare il successo del progetto.
- La seconda sezione, Analisi dell’esistente: il sistema attuale, descrive lo stato corrente della problematica. Se il sistema in via di realizzazione sostituirà un sistema esistente, questa sezione descrive le funzionalità e i problemi del vecchio sistema. Altrimenti la sezione descrive come vengono realizzati ora i compiti che il nuovo sistema supporterà.
- La terza sezione, Il sistema proposto, documenta i requisiti elicitati e il modello dell’analisi del nuovo sistema. È articolata in quattro sottosezioni:
- Una Panoramica funzionale del nuovo sistema.
- I Requisiti funzionali di alto livello.
- I Requisiti non-funzionali espressi dagli utenti e non direttamente correlati alle funzionalità.
- Modelli del sistema descrive gli scenari, i casi d’uso e i modelli, sia degli oggetti che dinamici, del nuovo sistema. Questa sotto-sezione contiene la specifica funzionale completa, compresi i prototipi dell’interfaccia utente e i percorsi di navigazione (sequenze di videate).
- La quarta sezione formata dal Glossario, il quale identifica ogni oggetto partecipante nei vari casi d’uso, ai quali gli sviluppatori danno un nome ed una descrizione non ambigua per avere una chiara e condivisa terminologia.
Lezione 013
Nel contesto dell'analisi dei requisiti, che cosa intendiamo per generalizzazione?
Fornisci un esempio. La Generalizzazione è l’attività di modellizzazione che identifica concetti astratti partendo da concetti di più basso livello. Ad es. in un sistema di gestione delle emergenze dovremo gestire sia incidenti del traffico, sia incendi. Questi due eventi hanno alcune caratteristiche in comune, che possiamo astrarre: creeremo un concetto astratto Emergenza che descrive gli attributi e le operazioni in comune sia agli incidenti del traffico, sia agli incendi.
Nel contesto dell'analisi dei requisiti, che cosa sono gli oggetti control?
Fornisci una definizione ed un esempio. Il modello degli oggetti dell’analisi consiste in tre tipi di oggetti, di cui fanno parte gli oggetti Control, ossia l’implementazione dei vari casi d’uso. Ad esempio nel caso di un orologio con gestione a due bottoni, l’oggetto Control è la funzione CambiaData che rappresenta l’attività di cambiare la data premendo una combinazione di bottoni.
Nel contesto dell'analisi dei requisiti, che cosa sono gli oggetti boundary?
Fornisci una definizione ed un esempio. Il modello degli oggetti dell’analisi consiste in tre tipi di oggetti, di cui fanno parte gli oggetti Boundary, ossia le interazioni tra gli attori e il sistema. Ad esempio nel caso di un orologio con gestione a due bottoni, gli oggetti Boundary sono i bottoni con il display i cui creano un interfaccia tra il sistema e l’utente.
Nel contesto dell'analisi dei requisiti, che cosa sono gli oggetti entity?
Fornisci una definizione ed un esempio. Il modello degli oggetti dell’analisi consiste in tre tipi di oggetti, di cui fanno parte gli oggetti Entity che rappresentano le informazioni persistenti che il sistema mantiene. Ad esempio nel caso di un orologio con gestione a due bottoni, gli oggetti Entity sono l’anno, il mese, il giorno e l’ora.
Nel contesto dell'analisi dei requisiti, che cosa intendiamo per specializzazione?
Fornisci un esempio. La Specializzazione è l’attività che identifica concetti più specifici a partire da un concetto di alto livello. Ad esempio, supponiamo di discutere con il committente le funzionalità di un sistema di gestione delle emergenze. Il committente, per prima cosa descrive il concetto di Incidente, quindi spiega che ci sono tre tipi di incidente:
- i Disastri, che richiedono la collaborazione di diverse agenzie;
- le Emergenze, che richiedono intervento immediato da parte di una singola agenzia;
- gli incidenti a Bassa Priorità, che possono non essere gestiti immediatamente se le risorse sono impegnate in eventi più gravi.
Lezione 018
Descrivi le architetture a strati aperte. Fornisci un esempio.
Una decomposizione gerarchica di un sistema, produce un insieme ordinato di strati (layers). Un layer è un raggruppamento di sotto-sistemi che offrono servizi correlati, spesso realizzati usando i servizi di più basso livello offerti dallo strato sottostante (insieme ordinato di strati). In un’architettura aperta, uno strato può accedere a tutti gli strati sottostanti. Un esempio di architettura aperta è costituito dal toolkit per interfacce utente Java Swing. Il livello più basso è rappresentato dal sistema operativo, e offre servizi di base per la gestione di interfacce a finestra. Lo strato immediatamente superiore, AWT, è un’interfaccia astratta che Java offre per schermare le applicazioni da specifiche piattaforme a finestra. Swing è una libreria di oggetti che permette di realizzare numerose componenti dell’interfaccia utente. Un’applicazione in genere accede solo all’interfaccia di Swing. Tuttavia il top layer può aggirare lo strato Swing ed accedere direttamente all’AWT, per poter ottimizzare alcuni aspetti legati alle prestazioni.
Fornisci una definizione del concetto di coesione relativamente a un sotto-sistema software.
La coesione è la misura quantitativa delle dipendenze internamente a un sotto-sistema. Se un sotto-sistema contiene molti oggetti che sono collegati l’uno all’altro ed eseguono compiti simili, il suo livello di coesione è alto. Se un sotto-sistema contiene numerosi oggetti non reciprocamente correlati, il suo livello di coesione è basso. Una proprietà desiderabile della decomposizione in sotto-sistemi è che essa produca sotto-sistemi con alto livello di coesione.
La riduzione del coupling in sede di progettazione dei sotto-sistemi è sempre un valore da perseguire in assoluto?
In quali casi le controindicazioni prevalgono? Ridurre a tutti i costi il coupling non è sempre consigliato. Per ridurre il coupling, gli sviluppatori sono portati ad introdurre vari livelli di astrazione, che tendono ad aumentano la complessità generale del sistema, consumano tempo di sviluppo e tempo di esecuzione. Un elevato livello di coupling, è un problema solo quando la probabilità che un sotto-sistema cambi è elevata: in questi casi il costo dell’introduzione di un livello di de-coupling (disaccoppiamento) può essere effettivamente inferiore a quello causato dalla propagazione delle modifiche a numerosi sotto-sistemi.
Descrivi le architetture a strati chiuse. Fornisci un esempio.
Una decomposizione gerarchica di un sistema, produce un insieme ordinato di strati (layers). Un layer è un raggruppamento di sotto-sistemi che offrono servizi correlati, spesso realizzati usando i servizi di più basso livello offerti dallo strato sottostante. In un’architettura chiusa, ogni strato può accedere solo allo strato immediatamente sottostante. Un esempio noto di architettura chiusa è costituito dal modello di riferimento ISO-OSI, che descrive i servizi di connessione via rete, ed è strutturato in 7 strati. Ogni strato sfrutta i servizi resi disponibili dallo strato immediatamente sottostante.
Che cosa si intende, in ingegneria del software, con il termine coupling?
Il coupling è la misura quantitativa delle dipendenze tra due sotto-sistemi. Se due sotto-sistemi sono accoppiati in modo lasco (basso livello di coupling) essi sono relativamente indipendenti, e le modifiche apportate ad uno di essi non risultano in cambiamenti significativi all'altro.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Paniere con risposte chiuse- Ingegneria del software (2021/2022)
-
Risposte aperte paniere di Ingegneria del software
-
Antropologia - Paniere risposte aperte
-
Aperte paniere Fisica tecnica