Concetti Chiave

  • I costi del software sono generalmente superiori a quelli dell'hardware, richiedendo una valutazione accurata delle risorse necessarie durante lo sviluppo.
  • Le metriche software, come la Dimensione, la Funzionalità e la Complessità, forniscono misure fondamentali per monitorare il ciclo di sviluppo e la qualità del prodotto.
  • La Function Points Analysis (FPA) è un metodo standard per quantificare il software dal punto di vista dell'utente, fornendo una valutazione oggettiva delle funzioni richieste.
  • La stima dei costi del software dipende da vari fattori, tra cui il tempo di sviluppo e le risorse umane, risultando più complessa rispetto ad altri progetti ingegneristici.
  • La qualità del software è definita da modelli come McCall-Boehm e dalla norma ISO/IEC 9126, che identificano attributi essenziali come usabilità, manutenibilità e portabilità.

Costi del SW → Generalmente maggiori dei costi HW!

Metriche software → Strumenti che forniscono misure quantitative e qualitative del prodotto e delle sue componenti (importanti per produttore e consumatore). Servono a monitorare tutte le fasi del ciclo di sviluppo del software.

Tipi di metriche software

Si basano su:

-Dimensione (es: Line Of CodeLOC);

-Funzionalità (es: Function Points Analysis → FPA);

-Complessità (es: Numero Ciclomatico → consiste nel vedere un programma come un grafo che rappresenta tutte le condizioni if, while, for e analizza la sua complessità);

Le metriche sono usate per quantificare e qualificare:

-Prodotti: prodotti, codice, test ecc…;

-Processi: attività di analisi, progettazione, codifica ecc…;

-“Attori” del software: efficienza collaudatore, produttività progettista ecc…;

1) Primitiva o diretta → misura di attributi direttamente osservabili (es: LOC);

2) Calcolata o indiretta → no misure dirette, ma parte da altre metriche;

Valutazione dei costi del software

Il primo passo per valutare i costi è stimare la quantità di lavoro.

Consiste nel conteggio delle linee di codice di un programma, che però NON tiene conto del linguaggio utilizzato e dell’accavallamento di istruzioni sulla stessa riga.

-NLOC (Non Comment LOC) → Senza spazi vuoti;

-NCNB (Non-Comment Non-Blank) → Senza spazi vuoti e commenti;

-CLOC (Comment LOC) → Solo commenti;

Function Points Analysis (FPA)

È una nuova metrica basata sull’idea di quantificare un software dal punto di vista di un utente → fornisce una misura oggettiva e comparativa che assiste nella valutazione e progettazione della produzione software, ma non tiene conto della difficoltà reale dell’ algoritmo.

Il processo per determinare la mole (quantità) di software è FPA (Function Points Analysis), costituito da due fasi:

Individuazione delle astrazioni significative per l’utente partendo dalle specifiche software;

Partendo da queste, calcolare un numero razionale (FP) che misura la mole;

Gli FP devono valutare il software indipendentemente dalla tecnologia per lo sviluppo (es: linguaggio, tools ecc…), misurando tutte le funzioni richieste.

Conteggio per un progetto di sviluppo;

Conteggio per un progetto di manutenzione;

Conteggio per un’applicazione;

È il metodo standard per la misurazione dei FP. Il calcolo viene effettuato secondo uno schema composto da 7 fasi:

Pianificazione del conteggio degli FP e identificazione del tipo conteggio;

Raccolta della documentazione e identificazione del confine;

Inventario delle funzioni e calcolo degli FP non pesati;

Classificazione dei componenti;

Esaminazione delle 14 caratteristiche generali del sistema (GSC) e determinazione del valore del fattore di aggiustamento (VAF);

Tabulazione dei risultati;

Convalida dei risultati;

Stima dei costi e fattori influenti

La stima dei costi del software si focalizza su:

Tempo di sviluppo;

Lavoro richiesto (anni-uomo MY o mesi-uomo MM);

Persone partecipanti;

Nei software, la stima dei costi è più complicata, perché viene calcolata in modo diverso dagli altri progetti ingegneristici, in cui vi è una semplice formula di costo.

Nei software, il costo di manutenzione è maggiore di quello di sviluppo.

A causa dei numerosi fattori che possono influenzare lo sviluppo di un software, non si è ancora giunti a un unico modello consolidato per la stima dei costi.

La stima dei costi è utile per:

Stipulare contratti di sviluppo sensati;

Prevedere tempi di sviluppo ragionevoli;

Dimensionare il team di sviluppo;

I fattori che influenzano lo sforzo per la realizzazione di un progetto software sono:

Dimensione del software;

Fattori Umani;

Complessità dell’applicazione;

Scalabilità dei requisiti;

Prestazioni e vincoli non funzionali richiesti all’applicazione: maggiori sono i vincoli, maggiori sono i costi;

Ambiente di sviluppo: organizzazione interna dell’azienda e del team;

Dimensioni interne ed esterne

Due tipi di dimensione:

Interna (o strutturale) → Misurata in LOC;

Esterna (o funzionale) → Misurata in FP;

Metriche di dimensione interna.

-Facilmente definibili;

-Facilmente misurabili;

-Facilmente interpretabili;

-Utilizzate in molti modelli esistenti;

-Presenti in tutti gli archivi storici di dati raccolti in passato;

-Nessuna definizione standard per contare le LOC;

-Linguaggio e stile di programmaz. incidono sul numero di LOC;

-Non viene tenuto conto della diversa “potenza” delle istruzioni;

-Non vengono valutate le funzionalità delle LOC;

-Il valore delle LOC è difficile da stimare nelle fasi iniziali del ciclo;

Metriche di dimensione esterna.

- Stessi vantaggi delle metriche di dimensione interna, ad eccezione che NON sono facilmente definibili.

-Difficile definire in modo generale la funzionalità (non sempre condivisa);

-La determinazione degli FP è piuttosto soggettiva;

-Lo schema dei pesi usato per il calcolo di FP è soggettivo;

-Gli FP trovano la miglior applicazione per la stima dei Management Information System, ma non sono molto performante degli altri sistemi informatici;

Modelli di stima dei costi

I metodi basati su modelli generici si dividono in:

-Proprietari: i dettagli delle modalità di stima non sono pubblici, ma dell’organizzazione che ha utilizzato il metodo;

-Non proprietari: la metodologia è pubblica e può essere usata da tutti;

I metodi basati su modelli specifici si dividono in:

-Metodi data driven: vengono derivati a partire dai dati con tecniche statistiche

-Parametrici;

-Non parametrici;

-Metodi composti: sono realizzati in base all’opinione di esperti;

I metodi non basati su modelli si basano sull’esperienza di un esperto che effettua direttamente una stima. Lo sforzo ottenuto è soggettivo, ed è sempre necessario il confronto tra più specialisti.

Le tecniche utilizzate dagli esperti sono di tipo top down (scomposizione dei componenti) o bottom up (analizzando il sistema per attività).

In questi modelli, l’algoritmo non è noto all’utente. I metodi basati su modelli proprietari hanno più difficoltà ad essere accettati.

Qualità del software e modelli

Occorre identificare gli attributi del software e le specifiche funzionali di interesse per l’utente, e includere nei requisiti tutti gli aspetti di qualità ritenuti essenziali per l’applicazione.

Due tappe fondamentali per la definizione della qualità del software:

1) Modello di McCall-Boehm;

2) Norma ISO/IEC 9126;
Prodotto software: programmi, regole pertinenti all’uso di un sistema informatico.

Qualità del software: insieme delle caratteristiche che incidono sulla capacità del prodotto di soddisfare requisiti.

I modelli di qualità del software sono generalmente strutturati a livelli. I modelli di McCall e Boehm hanno un’architettura a 3 livelli:

-Fattori → descrivono il SW dal punto di vista esterno;

-Criteri → elementi su cui agiscono gli sviluppatori per soddisfare i requisiti;

-Metriche → controllano che i criteri corrispondano ai fattori specificati;

Il modello di McCall, migliorato poi da Boehm, suggerisce una visione gerarchica e un approccio top-down alla sua definizione (parti alte visibili all’utente, parti basse visibili al produttore).

McCall trovò 11 fattori, suddivisi in 3 categorie:

1. Usabilità

-Correttezza;

-Affidabilità;

-Efficienza;

-Integrità;

-Soddisfazione;

2. Manutenibilità

-Manutenibilità;

-Flessibilità;

-Testabilità;

3. Portatilità

-Portatilità;

-Riusabilità;

-Interoperabilità;

Norma ISO/IEC 9126

La norma, scritta in collaborazione con la IEC (International Electrotechnical Commission), descrive un modello di riferimento per definire la qualità del software.

Definisce i seguenti punti:

-Il modello delle caratteristiche e sotto-caratteristiche di qualità del software;

-Tre tipologie di qualità del software:

->Esterna → valuta le prestazioni del prodotto dal punto di vista funzionale;

->Interna → viene misurata sul codice sorgente. Si ottiene la qualità interna

soddisfacendo i requisiti e le specifiche tecniche;

->In uso → quanto il software riesce a soddisfare l’utente;

-Per ciascuna delle caratteristiche sono riportate le sotto-caratteristiche;

-Per ciascuna sotto-caratteristica sono indicati i descrittori in base ai quali effettuare le misure;

-Errore (error) → commesso da un essere umano;

-Difetto (fault o defect) → caratteristica fisica di un fattore del progetto;

-Malfunzionamento (failure) → la conseguenza di un difetto durante l’utilizzo;

Domande da interrogazione

  1. Quali sono le principali metriche utilizzate per valutare il software?
  2. Le metriche software si basano su dimensione (es. Line Of Code), funzionalità (es. Function Points Analysis) e complessità (es. Numero Ciclomatico), e servono a quantificare e qualificare prodotti, processi e attori del software.

  3. Come si stima il costo del software?
  4. La stima dei costi del software si basa su fattori come il tempo di sviluppo, il lavoro richiesto e le persone coinvolte, e risulta più complessa rispetto ad altri progetti ingegneristici a causa della variabilità dei fattori influenti.

  5. Qual è la differenza tra dimensione interna ed esterna del software?
  6. La dimensione interna è misurata in LOC (Line Of Code) e si riferisce a attributi strutturali, mentre la dimensione esterna è misurata in FP (Function Points) e si concentra sulle funzionalità percepite dall'utente.

  7. Quali sono i modelli di stima dei costi del software?
  8. I modelli di stima dei costi possono essere proprietari o non proprietari, e si dividono in metodi data driven, parametrici, non parametrici e metodi composti, oltre a stime basate sull'esperienza di esperti.

  9. Quali sono i fattori che influenzano la qualità del software secondo il modello di McCall?
  10. I fattori di qualità del software secondo McCall includono usabilità, manutenibilità e portabilità, con criteri specifici come correttezza, affidabilità, flessibilità e riusabilità, che devono essere soddisfatti dagli sviluppatori.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community