# Control de qualitat del programari

El control de qualitat del software o Software Quality Assurance (SQA) consisteix en un conjunt de tècniques i mètodes utilitzats per assegurar la qualitat en els processos d'enginyeria de programari. Els mètodes pels quals això s'aconsegueix són molts i variats, i poden incloure la conformitat amb un o més standards (com ara la norma ISO 9000) o models (com el CMMI). SQA abasta tot el procés de desenvolupament de programari, que inclou processos com ara la definició de requeriments, disseny de programari, codificació, control de codi font, revisions de codi, gestió de canvis, gestió de configuració, proves, gestió de versions, i la integració de productes. SQA s'organitza en objectius, compromisos, habilitats, activitats, mesures i verificacions.

## Motivació

"Una ciència és tan madura com les seves eines de mesura." (Louis Pasteur en Ebert Dumke, pàg. 91). Mesurar la qualitat del programari està motivat per almenys dues raons:
* Gestió de Riscs
Els errors del programari causen més que molèsties, en determinades situacions poden dur a pèrdues humanes.
* Gestió de costos
Igual que en qualsevol altre camp de l'enginyeria, una aplicació amb la bona qualitat del programari estructural costa menys de mantenir i és més fàcil d'entendre i/o canviar en resposta a les necessitats urgents de negoci. La falta de qualitat en les aplicacions empresarials bàsiques (com ara l'ERP o el CRM) es tradueix en sobrecostos (fins al 45% del temps de desenvolupament en algunes organitzacions). D'altra banda, la mala qualitat de l'estructura està fortament correlacionada amb alt impacte de les interrupcions en el negoci causades per les dades malmeses, talls de l'aplicació, bretxes de seguretat i problemes de rendiment.

## Definició de qualitat del software

Hi ha moltes definicions diferents de qualitat. Per a alguns és la "capacitat d'un producte de programari per complir amb els requisits." (ISO / IEC 9001), mentre que per a altres pot ser sinònim de "valor per al client" (Highsmith, 2002) o fins i tot a nivell de defectes.

### Kitchenham, Pfleeger i Garvin - les 5 perspectives sobre la qualitat

Kitchenham i Pfleeger i David Garvin identifiquen cinc perspectives diferents sobre la qualitat:
* La perspectiva transcendental s'ocupa de l'aspecte metafísic de la qualitat. En aquest punt de vista de la qualitat, es tracta de " una cosa cap a la qual ens esforcem com un ideal, però mai es pot implementar completament".
* La perspectiva de l'usuari es refereix a la conveniència del producte per a un determinat ús. Atès que el punt de vista transcendental és eteri, la vista de l'usuari és més concreta. Es centra en les característiques que ha de tenir el producte per satisfer les necessitats dels usuaris.
* La perspectiva de fabricació representa la qualitat com la conformitat amb els requisits. Aquest aspecte de la qualitat es destaca per normes com l'ISO 9001, que defineix la qualitat com "el grau en què un conjunt de característiques inherents compleix amb els requisits" (ISO/IEC 9001).
* La perspectiva del producte implica que la qualitat pot ser apreciat per la mesura de les característiques intrínseques del producte.
* La perspectiva final de la qualitat es basa en valors. Aquesta perspectiva reconeix que les diferents perspectives de la qualitat poden tenir diferent importància o valor, a les diverses parts interessades (o stakeholders).

### La qualitat del programari segons Deming

"El problema inherent als intents de definir la qualitat d'un producte, gairebé qualsevol producte, ja va ser declarada pel mestre Walter A. Shewhart. La dificultat en la definició de la qualitat és traduir les necessitats futures dels usuaris en característiques mesurables, per tal que un producte pugui dissenyar i que el resultar satisfagui el preu que l'usuari pagarà. Això no és fàcil, i tan aviat com un sent l'èxit de l'esforç, descobreix que les necessitats dels consumidors han canviat, els competidors han mudat, etc."

### La qualitat del programari d'acord amb Feigenbaum

"La qualitat és una valoració del client, no la pot determinar d'un enginyer, ni màrqueting, ni pot ser una determinació general. Es basa en l'experiència actual del client amb el producte o servei, mesurada contra els seus propis requeriments - establertes o no, conscient o de pur instint, tècnicament operacionals o enterament subjectives - i sempre representen sun objectiu en moviment en un mercat competitiu".

### La qualitat del programari segons Juren

" La paraula qualitat té múltiples significats; Dos d'aquests significats dominen l'ús de la paraula: 1) Qualitat consisteix en aquelles característiques dels productes que responen a les necessitats dels clients i, per tant, proporcionen satisfacció del producte y 2) Qualitat consisteix en l'absència de deficiències, però, en un manual com aquest, és convenient estandarditzar una breu definició de la paraula qualitat com "l'aptitud per a l'ús"."

### Model de qualitat de CISQ

Tot i que "la qualitat és un atribut de la percepció, condicional i subjectiu que pot ser entès de manera diferent per diferents persones" (com s'indica en l'article sobre la qualitat en els negocis), programari de característiques de qualitat estructural han estat clarament definits pel Consorci per TI de Qualitat de Software (CISQ). Sota la direcció de Bill Curtis, coautor del marc Model de Maduresa de Capacitat (CMMI) i primer director del CISQ i Tàperes Jones, assessor Distingit del CISQ, CISQ ha definit cinc característiques principals desitjables en tota peça de programari i necessitaries per proporcionar un valor empresarial.
* Fiabilitat : Un atribut de resistència i solidesa estructural. Fiabilitat mesura el nivell de risc i la probabilitat de fallades de les aplicacions potencials. També mesura els defectes injectats a causa de les modificacions introduïdes en el programari (l'estabilitat, com el va anomenar ISO). La meta per al control i seguiment de Fiabilitat és reduir i prevenir el temps d'inactivitat d'aplicacions, les interrupcions de l'aplicació i els errors que afecten directament als usuaris i millorar la imatge de les TI i el seu impacte en el rendiment del negoci d'una empresa.
* Eficiència : El codi font i altres atributs de l'arquitectura del software són els elements que asseguren un alt rendiment una vegada que l'aplicació està en execució. L'eficiència és especialment important per a aplicacions en entorns d'alta velocitat d'execució, com ara processament algorítmic o transaccional on el rendiment i l'escalabilitat són primordials. Una anàlisi de l'eficiència del codi font i la capacitat d'ampliació proporciona una imatge clara dels riscos de negoci latents i el mal que poden causar a la satisfacció del client a causa de la degradació del temps de resposta.
* Seguretat: És una mesura de la probabilitat de possibles bretxes de seguretat a causa de les pràctiques de codificació pobres i de l'arquitectura. Això quantifica el risc de trobar vulnerabilitats crítiques que danyen el negoci.
* Manteniment: inclou la noció d'adaptabilitat, portabilitat i capacitat de transferència (d'un equip de desenvolupament a un altre). Mesura i seguiment de manteniment és una necessitat per a les aplicacions de missió crítica on el canvi és impulsat per necessitats urgents del negoci. També és essencial per mantenir els costos de manteniment sota control.
* Mida (adequada): Encara que no és un atribut de qualitat en si, la mida del codi font és una característica de programari que, òbviament, impacta. En combinació amb les característiques de qualitat anteriors, la mida del programari es pot utilitzar per avaluar la quantitat de treball produït.
La qualitat funcional del programari es defineix com la conformitat amb els requisits funcionals, identificats per exemple, usant l'anàlisi del client (part del conjunt d'eines de disseny per Six Sigma i/o documentada a través de Casos d'Ús) i el nivell de satisfacció que experimenten els usuaris finals. Aquest últim es coneix com la usabilitat i té a veure amb l'intuïtiu i sensible de la interfície d'usuari, la facilitat amb què es poden realitzar operacions simples i complexes, i com els missatges d'error útils són. En general, les pràctiques de proves de programari i eines garanteixen que una peça de programari es comporta d'acord amb el disseny original, l'experiència de l'usuari i la capacitat de prova previst desitjat, és a dir, un tros de la disposició del programari per donar suport als criteris d'acceptació.

## Normativa

IEEE 730 (o també SQA Software quality assurance) és una norma del IEEE que especifica els requeriments per a la planificació, control i execució del control de qualitat en el desenvolupament o manteniment d'un projecte de programari. Aquesta normativa està harmonitzada (és equivalent) amb el cicle de vida de programaris de ISO/IEC/IEEE 12207:2008 i amb els requeriments de continguts de ISO/IEC/IEEE 15289:2011.

## Pla SQA

Es pot desglossar en els següents punts :
* Propòsits (abast del pla SQA, llista dels components del programari i cicles de vida).
* Documents de referència (llista de documents a emprar).
* Gestió (organització, tasques, rols i responsabilitats, recursos estimats i garantia de qualitat).

## Referències

* ↑ Nielsen, David CMM and Project Quality Management
* ↑ name="Deming1988">W. E. Deming, "Out of the crisis: quality, productivity and competitive position". Cambridge University Press, 1988.
* ↑ name="Feigenbaum">A. V. Feigenbaum, "Total Quality Control", McGraw-Hill, 1983.
* ↑ name="Juran1988">J.M. Juran, "Juran's Quality Control Handbook", McGraw-Hill, 1988.
* ↑ «IEEE SA - 730-2014 - IEEE Standard for Software Quality Assurance Processes» (en anglès). https://standards.ieee.org. Arxivat de l'original el 2017-10-13. [Consulta: 13 octubre 2017].
* ↑ «IEEE 730-2014» (en anglès). https://www.techstreet.com.+[Consulta: 13 octubre 2017].
* ↑ «[http://sqgne.org/presentations/2014-15/Heimann-Apr-2015.pdf IEEE Standard 730-2014 Software Quality Assurance Processes]» (en anglès). http://sqgne.org.+[Consulta: 13 octubre 2017].
* ↑ «[http://users.csc.calpoly.edu/~jdalbey/308/Resources/IEEE7301989.pdf IEEE Standard for Software Quality Assurance Plans]» (en anglès). http://users.csc.calpoly.edu.+[Consulta: 13 octubre 2017].

## Vegeu també

* Control_de_qualitat
* Qualitat_del_software
* CMMI