La Qualita' del Software ZEFI LEDIO 5B 2016/2017

INDICE

  • Il Processo della progettazione
  • Progettare significa prendere una serie di decisioni
  • Prendere decisioni
  • Design space: lo spazio delle possibili scelte
  • Progettazione Top-down e bottom-up
  • La Qualita' del Software
  • ISO 9126
  • Fattori di Qualita'
  • Funzionalita' (Functionality)
  • Affidabilita' (Reliability)
  • Usabilità (Usability)
  • Efficienza (Efficiency)
  • Manutenibilità (Maintainability)
  • Portabilità (Portability)
  • Qualità in uso (Quality in use)
  • Approfondimenti aggiuntivi
Il Processo della progettazione

Progettare significa eseguire un processo di risoluzione di un problema il cui obiettivo è trovare e descrivere un modo che permetta di implementare i requisiti funzionali rispettando i vincoli imposti dai requisiti non funzionali inclusi i vincoli sul budget In conformità con una serie di principi di buona qualità.

Progettare significa prendere una serie di decisioni

Un progettista affronta una serie di problemi di design. Essi sono sotto-problemi specifici del problema complessivo della progettazione e ciascun problema ha normalmente una serie di soluzioni alternative (design options).

Il progettista effettua una serie di design decisions per risolvere ciascun problema ovvero sceglie la migliore fra le alternative possibili.

Prendere decisioni

Per prendere una decisione di progetto, l’ingegnere del software usa la conoscenza:

  • Dei requisiti
  • Del progetto realizzato fino a quel punto
  • Delle tecnologie disponibili
  • Dei principi di progettazione software e di ‘best practices’ di ciò che ha funzionato bene in passato
Design space: lo spazio delle possibili scelte
Lo spazio dei possibili progetti che saranno implementabili scegliendo tra le varie alternative viene spesso chiamato design space.
Progettazione Top-down e bottom-up

Top-Down Design

Si parte col progettare la struttura di altissimo livello del sistema, Esempio:

Si definisce l’architettura del software e il tipo di database che sarà impiegato. Quindi si procede gradualmente con decisioni più dettagliate riguardanti aspetti di più basso livello, quali i formati di particolari dati e gli algoritmi che saranno usati.

Bottom-Up Design

Si parte progettando i componenti basilari di basso livello e si decide poi come collegarli insieme per ottenere i componenti di più alto livello.

Si procede dunque per livelli di astrazione (layers of abstraction). In genere è normale usare un misto dei due approcci:

  • La progettazione Top-down è necessaria per definire una buona struttura del sistema;
  • La progettazione Bottom-up serve a progettare componenti riusabili in altri punti del sistema.
La Qualita' del Software

La qualità di un prodotto software si caratterizza

Attraverso un insieme finito e definito di attributi ragionevolmente esaustivi in modo che per una qualsiasi richiesta di caratteristica di qualità, sia possibile associarvi un sottoinsieme degli attributi definiti in modo da poterla valutare privi di reciproche sovrapposizioni:

Per evitare che più attributi riguardino la stessa caratteristica del software un tale insieme forma un Modello di Qualità (MQ) del software: schema di riferimento che, con una opportuna distribuzione di pesi per ciascun attributo, va adeguato e tarato per la rappresentazione dei requisiti di qualità desiderati dal committente o posseduti dal software.

Il modello piu' utilizzato è l' ISO 9126.

ISO 9126

Il modello ISO 9126 e' suddiviso in 4 parti:

Quality Model

un insieme di caratteristiche di qualità esterne che possano essere in grado di descrivere I principali fattori di qualità di un prodotto software;

External Metrics

Un insieme di metriche indirette attraverso le quali sia possibile valutare la conformità di un prodotto software al modello di qualità;

Internal Metrics

Un insieme di metriche direttamente misurabili che possano essere utilizzate allo scopo di valutare le External Metrics;

Quality In Use Metrics

Metriche dirette rivolte alla valutazione del sottoinsieme di caratteristiche di qualità legate all’utente.

Fattori di Qualita'

Esistono sei fattori di qualità esterna:

  • Functionality
  • Reliability
  • Usability
  • Efficiency
  • Maintainability
  • Portability

Per ogni fattore di qualità esterna viene definito un insieme di fattori di qualità interni.

Funzionalita' (Functionality)

La capacità del prodotto software di fornire funzioni che soddisfano esigenze stabilite ed implicite quando il software è usato sotto condizioni specificate:

  • Appropriatezza (suitability): la capacità del prodotto software di fornire un appropriato insieme di funzioni all’utente per i compiti e gli obiettivi specificati.
  • Accuratezza (accuracy): la capacità del prodotto software di fornire i giusti o concordati risultati o effetti.
  • Interoperabilità (interoperability): la capacità del prodotto software di interagire con uno o più sistemi specificati.
  • Sicurezza (security): la capacità del prodotto software di proteggere informazioni e dati in modo che persone o sistemi non autorizzati non possano leggere o modificarli e che a persone o sistemi autorizzati non sia negato l’accesso ad essi.
  • Conformità (compliance): la capacità del prodotto software di aderire a standard, convenzioni o regolamentazioni in leggi e prescrizioni similari.
Affidabilita' (Reliability)

La capacità del prodotto software di mantenere uno specificato livello di prestazioni quando usato sotto condizioni specificate.

  • Maturità (maturity): la capacità del prodotto software di evitare malfunzionamenti, quali risultati di anomalie nel software.
  • Tolleranza all’errore (fault tolerance): la capacità del prodotto software di mantenere uno specificato livello di prestazioni in caso di anomalie software o di violazione delle sue specificate interfacce.
  • Recuperabilità (recoverability): la capacità del prodotto software di ristabilire uno specificato livello di prestazioni e di ripristinare i dati direttamente intaccati in caso di malfunzionamenti.
  • Conformità (compliance): la capacità del prodotto software di aderire a standard, convenzioni o regolamentazioni relativamente all’affidabilità.
Usabilita' (Usability)

La capacità del prodotto software di essere capito, appreso, usato e gradito all’utente, quando usato sotto condizioni specificate.

  • Comprensibilità (understandability): la capacità del prodotto software di mettere in grado l’utente di comprendere se il software è appropriato, e come esso possa essere usato per particolari compiti e condizioni d’uso.
  • Apprendibilità (learnability): la capacità del prodotto software di permettere all’utente di imparare la sua applicazione.
  • Operabilità (operability): la capacità del prodotto software di permettere all’utente di operare con esso e di controllarlo.
  • Attrattività (attactiveness): la capacità del prodotto software di essere attraente all’utente (cioè avere un livello di gradimento nell’utilizzo).
  • Conformità (compliance): la capacità del prodotto software di aderire a standard, convenzioni, stili guida o regolamentazioni relativamente all’usabilità.
Efficienza (Efficiency)

La capacità del prodotto software di fornire appropriate prestazioni relativamente alla quantità di risorse usate, sotto condizioni stabilite.

  • Comportamento rispetto al tempo (time behaviour): la capacità del prodotto software di fornire un appropriato responso e tempi di elaborazione e velocità di ‘attraversamento’ nell’eseguire le sue funzioni sotto specificate condizioni.
  • Utilizzo di risorse (resource utilisation): la capacità del prodotto software di usare appropriate quantità e tipo di risorse quando il software esegue le sue funzioni sotto specificate condizioni.
  • Conformità (compliance): la capacità del prodotto software di aderire a standard, convenzioni o regolamentazioni relativamente all’efficienza.
Manutenibilita' (Maintainability)

La capacità del prodotto software di essere modificato. Le modifiche possono includere correzioni, miglioramenti o adattamenti del software per cambiamenti nell’ambiente operativo, nei requisiti e nelle specifiche funzionali.

  • Analizzabilità (analysability): la capacità del prodotto software ad essere diagnosticato per deficienze o cause di malfunzionamenti nel software o per l’identificazione delle parti da modificare.
  • Modificabilità (changeability): la capacità del prodotto software di permettere l’implementazione di una specificata modifica.
  • Stabilità (stability): la capacità del prodotto software di evitare effetti inaspettati derivanti da modifiche ad esso.
  • Testabilità (testability): la capacità del prodotto software di permettere a software modificato di essere validato.
  • Conformità (compliance): la capacità del prodotto software di aderire a standard, convenzioni o regolamentazioni relativamente alla manutenibilità.
Portabilita' (Portability)

La capacità del prodotto software di essere trasferito da un ambiente ad un altro.

Adattabilità (adaptability): la capacità del prodotto software di essere adattato per differenti e specificati ambienti senza dover applicare altre azioni o mezzi diversi da quelli forniti per tale scopo per il software considerato.

Installabilità (installability): la capacità del prodotto software di essere installato in uno specificato ambiente.

Coesistenza (co-existence): la capacità del prodotto software di coesistere con altri software indipendenti in un ambiente comune condividendo risorse comuni.

Sostituibilità (replaceability): la capacità del prodotto software di essere usato al posto di un altro specificato prodotto software per gli stessi scopi e nello stesso ambiente.

Conformità (compliance): la capacità del prodotto software di aderire a standard, convenzioni o regolamentazioni relativamente alla portabilità.

Qualita' in uso (Quality in use)

La capacità del prodotto software di abilitare specificati utenti ad ottenere specificati obiettivi con efficacia, produttività, sicurezza (safety) e soddisfazione in uno specifico contesto.

Efficacia (effectiveness): la capacità del prodotto software di mettere in grado gli utenti di raggiungere gli obiettivi specificati con l’accuratezza e la completezza in uno specificato contesto d’uso.

Produttività (productivity): la capacità del prodotto software di mettere in grado gli utenti di spendere una quantità di risorse appropriate in relazione all’efficacia ottenuta in uno specificato contesto d’uso.

Sicurezza (safety): la capacità del prodotto software di raggiungere accettabili livelli di rischio di danni a persone, al software, ad apparecchiature od all’ambiente operativo in uno specificato contesto d’uso.

Soddisfazione (satisfaction): la capacità del prodotto software di soddisfare gli utenti in uno specificato contesto d’uso.

Approfondimenti aggiuntivi

Per saperne di piu' puoi seguire questi video:

Lezione 1: Introduzione alla progettazione del software

Lezione 2: La qualita' del software

Lezione 3: Il processo di sviluppo del Software

Lezione 4: Qualita' del Software - Parte I

Lezione 5: Qualita' del Software - Parte II

SITOGRAFIA E INFORMAZIONI

Testi

http://www.federica.unina.it/ingegneria/ingegneria-del-software-ingegneria/progettazione-qualita-software/

http://www.cs.unibo.it/cianca/wwwpages/ids/12.pdf

http://www.zerounoweb.it/approfondimenti/software-application-quality/sviluppo_software_economics_qualita.html

Video

https://www.youtube.com/watch?v=wE-8pEmeG7A

https://www.youtube.com/watch?v=Gc5Bcdsaejs

https://www.youtube.com/watch?v=WTI0-_dpdvw

https://www.youtube.com/watch?v=vAZQ-tyMlwk

https://www.youtube.com/watch?v=a84rXit6b7A

https://www.youtube.com/watch?v=x5oXS9SOJH0

Immagini

https://previews.123rf.com/images/marigranula/marigranula1506/marigranula150600303/40760531-What-Contributes-to-Software-Quality-Factors-Stock-Photo.jpg

https://newsignature.com/wp-content/uploads/2017/02/project-management.png

http://www.harrybakertraining.com/wp-content/uploads/2015/02/shutterstock_204295852__opt-e1424164737713.jpg

http://columbiabusinesstimes.com/wp-content/uploads/2016/04/OrganizationalHealth-TonyRichards-DecisionMaking.jpg

http://www.effectiveui.com/blog/wp-content/uploads/2015/03/ux-design-process-ideate.jpg

http://www.evolveea.com/wp-content/gallery/topdown/banner%20%2810%3A30%3A15%2C%202%3A45%20PM%29.gif

http://www.anwarbosbool.com/wp-content/uploads/2016/01/Focus-on-Quality-940x445.png

https://upload.wikimedia.org/wikipedia/it/c/c2/Modello_ISO-IEC_9126.png

http://csis.pace.edu/~marchese/cs615sp/L8New/fg1.gif

https://previews.123rf.com/images/opicobello/opicobello1505/opicobello150500077/40230197-colored-gears-row-for-cooperation-or-teamwork-symbolism-Stock-Vector.jpg

https://images.vexels.com/media/users/3/130855/isolated/preview/dd17403b2259ae1b29d53eeadf7e9641-handshake-circle-icon-by-vexels.png

http://isccinvestments.com/wp-content/uploads/2014/12/usability-1024px-1024px.jpg

https://cdn.simplivity.com/wp-content/uploads/IDC-operational-efficiency-blog.jpg

http://osqr.com/software-detective.jpg

http://www.newmediarights.org/files/u955/Domenieks%20Data%20Portability%20Logo.jpg

https://image.slidesharecdn.com/software-quality-metrics-dosanddonts-140411064548-phpapp01/95/software-quality-metrics-dos-and-donts-qaiquest-1-hour-presentation-20-638.jpg?cb=1397198858

Report Abuse

If you feel that this video content violates the Adobe Terms of Use, you may report this content by filling out this quick form.

To report a Copyright Violation, please follow Section 17 in the Terms of Use.