quali sono i vari elementi ingegnerirstici di cui si compone un progetto? | 1) Target: ci si prefigge un obiettivo da raggiungere.
2) Metric: una metrica per misurare la qualità del software (quanto si avvicina al target).
3) Method, Process, Tool: metodi, processi e strumenti provati per avvicinarsi all’obiettivo.
4)) Measurements: vengono valutate le strategie implementate.
A seconda dei risultati :
- risultati soddisfacenti - accettati come buoni metodi utilizzati.
- risultati insoddisfacenti - bisogna modificare il lavoro qualcosa: target o metrica oppure bisogna rivedere i processi e metodi usati. |
in ambito di un approccio ingegneristico nella costruzione di un software, che cosa si intende per target , di che tipi può essere? | per target generalmente si intende l'obiettivo che ci si propone all'inizio del progetto, questo può essere di due tipi:
- la risoluzione dei problemi nella progettazione del software
- il raggiungimento di una qualche qualità che il software dovrà avere |
che tipi di qualità può avere un progetto?
di che tipo possono essere? | le qualità definiscono proprietà desiderabili del prodotto, queste possono essere:
qualità esterne: vengono colte dal cliente
qualità interne: colte dallo sviluppatore (es requisiti o specifiche) |
quale è la differenza fra requisiti e specifiche? | - I requisiti sono quello che il cliente vuole che il software faccia. Spesso sono cambiati in corso d’opera oppure sono espressi in modo sbagliato, per cui è necessaria un’interazione continua.
- Le specifiche sono ciò che è stato formalizzato dal programmatore a partire dai requisiti: si tratta di una definizione più rigorosa di che cosa dovrà fare il software. Si noti però che se i requisiti sono stati espressi in modo non corretto anche le specifiche risulteranno inesatte |
quali sono le varie qualità che un software deve avere per "funzionare"? | - Correttezza: Un software è corretto se soddisfa la specifica dei suoi requisiti funzionali. proprietà generalmente dimostrabile in modo formale.
- Affidabilità: Un software è affidabile quando ci si può aspettare che faccia ciò che gli è stato chiesto. l'affidabilità è relativa: un software può essere affidabile anche quando contiene qualche errore.
- Robustezza: Un software è robusto se si comporta in modo accettabile anche in circostanze non previste nella specifica dei requisiti. |
quali sono i vari modi in cui un software può "essere bello"? | - Usabilità: se i suoi utenti lo ritengono facile da utilizzare. generalmente viene verificato con dei test a campione.
- Prestazioni ed Efficienza:
-- L'efficienza è una qualità interna e misura come il software utilizza le risorse del computer;
-- la performance è una qualità esterna basata sui requisiti dell'utente, ha effetto sull'usabilità e viene verificata alla fine del processo.
- Verificabilità: se le proprietà correttezza e performance sono verificabili facilmente.
La verifica può essere fatta con metodi formali o informali ed è considerata una qualità interna, ma alcune volte può diventare una qualità esterna: per esempio, in ambiti in cui la sicurezza è critica il cliente può chiedere la verificabilità di certe proprietà. |
quali sono i vari modi in cui un software può
"farmi diventare ricco"? | - Riusabilità: Le componenti del software che costruiamo dovrebbero essere il più riutilizzabili possibile: ciò può essere fatto non legandole troppo allo specifico contesto applicativo del software.
- Manutenibilità: Per manutenzione software si intendono tutte le modifiche apportate al software dopo il rilascio iniziale. Questa proprietà può essere vista come due :
--> Riparabilità: un software è riparabile se i suoi difetti possono essere corretti con una quantità di lavoro ragionevole.
--> Evolvibilità: indica la capacità del software di poter evolvere aggiugendo funzionalità. È importante considerare questo aspetto fin dall'inizio. l'evolvibilità decresce con il passare delle release |
che cosa prevede la qualità di robustezza di un progetto? | Un processo deve poter resistere agli imprevisti, come la mancanza improvvisa di personale o il cambiamento delle specifiche. Esistono certificazioni (CMM: Capability Maturity Model) che valutano la robustezza di alcuni processi aziendali e che vengono per esempio considerate nei bandi pubblici. |
la qualità di produttività di un progetto è misurabile? | La produttività di un team è molto meno della somma della produttività individuale dei suoi componenti. È una metrica difficile da misurare: conteggi come il numero di linee codice scritte o la quantità di tempo-uomo richiesta per un lavoro si rivelano spesso un po' fallaci (per esempio, la gravidanza umana non è un'attività parallelizzabile, ma si potrebbe dire che servono 9 mesi-donna per creare un bambino). |
che cosa prevede la qualità di tempismo di un progetto? | Un processo deve consegnare il prodotto nei tempi stabiliti, in modo da rispettare i tempi del mercato. È spesso conveniente la tecnica dello sviluppo incrementale, ovvero la consegna frequente di parti sempre più grandi del prodotto (es. compilatore ADA): essa permette infatti di conquistare il cliente ancor prima di avere il prodotto finito. |
quali sono le varie fasi di sviluppo di un software? | 1) Studio di fattibilità
2) Analisi e specifica dei requisiti
3) Progettazione (design)
4) Programmazione e test di unità
5) Integrazione e test di sistema
6) Consegna, installazione e manutenzione
7) Attività ausiliarie |
che cosa prevede la fase di studio di fattibilità? | Questa fase viene svolta prima ancora che il processo di sviluppo inizi.
L’obiettivo è quello di produrre un documento in linguaggio naturale presentante diversi scenari di sviluppo con soluzioni alternative, con una discussione sui trade-off in termini di benefici e costi attesi
in particolare:
> studio dei diversi scenari di realizzazione (architetture e hardware necessari, sviluppare in casa o subappaltare)
> stima dei costi, dei tempi e delle risorse necessarie |
che cosa prevede la fase di analisi e specifica dei requisiti? | fatta dopo la fase di studio di fattibilità, il suo obiettivo è la stesura di un documento di specifica
in specifico prevede le fasi di :
> comprensione del dominio applicativo del prodotto (dialogazione con il cliente)
> identificazione degli stakeholders e dei loro interessi
> identificazione delle funzionalità richieste (o specifiche)
> stabilire un dizionario comune tra cliente e sviluppatore
> definizione di eventuali qualità del prodotto |
che cosa prevede la fase di progettazione? | prevede la strutturazione del progetto sotto diversi livelli di dettaglio attraverso un documento di specifica del progetto
fasi :
> scelta di una architettura e software di riferimento
> scomposizione in moduli o oggetti per la spartizione dei compiti
> identificazione dei pattern: ovvero problemi comuni che hanno spiriti di risoluzione simili nel corso del progetto |
che cosa prevede la fase di programmazione e test di unità? | vengono realizzati i moduli definiti nella fase di progettazione e vengono scritti tutti i test necessari per dimostrarne la correttezza.
i moduli sono testati individualmente e eventuali dipendenze esterne vengono risolte con moduli stub che emulano le funzionalità mancanti
i moduli driver hanno il compito di utilizzare il modulo che si sta testando come se fossero esterni |
che cosa prevede la fase di integrazione e test del sistema? | i moduli singolarmente implementati e testati vengono integrati insieme a formare il software finito
(nel modello incrementale questa fase è incorporata nella fase di programmazione)
vengono effettuati dei test di integrazione che verificano la buona integrazione dei vari moduli (sostituendo quelli stub)
infine si fa l'alpha testing con condizioni realistiche |
che cosa prevede la fase di consegna, installazione e manutenzione? | > beta testing con un gruppo di utenti con lo scopo di raccogliere feedback
> installazione di eventuali componenti aggiuntivi (come periferiche di rete o altre)
> la manutenzione può essere definita come l’insieme delle attività finalizzate a modificare il sistema dopo essere stato consegnato al cliente:
-- correttiva : correzione di errori
-- adattiva : adattare il software a nuovi requisiti
-- perfettiva : modificare aspetti ma non le funzionalità |
quali sono altre attività aggiuntive alla progettazione? | > la documentazione : è una fase trasversale
viene spesso tralasciata per il frequente cambio dei requisiti o specifiche
> verifica del controllo qualità: nella maggior parte dei casi, la verifica è svolta attraverso review e ispezioni. L’obiettivo è anticipare il prima possibile la scoperta e la sistemazione degli errori in modo da evitare di consegnare sistemi difettosi
> Gestione del processo: gestione incentivi (premi di produzione), responsabilità, formazione del personale, perfezionamento del processo con l’esperienza guadagnata...
> Gestione delle configurazioni: magari la modifica di componenti già posseduti in house |