ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 99
Abonament PDF

Asigurarea calităţii software: de la teorie la practică

Monica Chiș
Freelancer IT Software Consultant și Trainer



TESTARE


Asigurarea calităţii software (Software Quality Assurance) este un concept fundamental pentru livrarea unui software care să satisfacă cerinţele clientului şi care să fie uşor de întreţinut şi de adaptat. În cele mai multe cazuri, în activitatea de elaborare a produselor software, folosim conceptul de asigurarea calităţii (Quality Assurance) referindu-ne doar la testarea produsului software.

Indirect, sunt foarte multe activităţi pe care le facem fără a conştientiza că ele fac parte dintr-un set de acţiuni de asigurare a calităţii produsului software pe care îl vom livra clientului final. Activităţile de asigurarea a calităţii trebuie să fie sistematice şi planificate.

Menţionăm de la început faptul că atunci când ne referim la calitate produselor trebuie să urmăm un set de paşi pentru asigurarea calităţii pe parcursul întregului proces de dezvoltare software (Software Development Life Cycle - SDLC) indiferent de modelul folosit sau metodologia folosită pentru dezvoltarea produsului. Este foarte important să se înţeleagă de la începutul dezvoltării unui produs software conceptul de calitate, să se elaboreze procese şi reguli clare pe care întreaga echipă să le cunoască şi să le aplice.

Mai menţionăm faptul că fiecare proiect are nevoie de o analiză clară concretă şi un plan de calitate şi că în acest articol oferim câteva informaţii cu caracter general.

Aplicarea unor standarde sau concepte de calitate nu înseamnă că suntem rigizi în procesele pe care le aplicăm. Aceste procese se adaptează pe măsură ce identificăm probleme. Plan - Do - Check - Act (ciclul PDCA) este o metodă folosită şi de standardul de calitate ISO 9001:2015 pentru îmbunătăţirea continuă a calităţii.

Calitatea trebuie să facă parte din cultura organizaţiei de dezvoltare software şi să fie un mod de gândire pe care să îl implementăm. Pentru înţelegerea conceptelor de calitate este important să se parcurgă toate definiţiile de bază legate de: Software Quality, Software Quality Assurance, Software Metrics, Software Verification, Software Validation, Audit, Review.

Diferenţa dintre Quality Assurance şi Quality Control

Aşa cum menţionam şi la începutul articolului, uneori se face confuzie între anumiţi termeni legaţi de calitate. Această confuzie restrânge foarte mult activitatea de asigurare a calităţii software.

Motivul pentru care insistăm asupra stabilirii clare a diferenţei dintre concepte este acela că în secţiunea următoare vom enumera aspecte legate de asigurarea calităţii altele decât activităţile de testare.

Pentru a utiliza conceptele corect şi pentru a le separa vom face câteva precizări. Asigurarea calităţii (Quality Assurance-QA) este parte a sistemului de managementul calităţii care generează încrederea ca o entitate care va satisface cerinţele referitoare la calitate (conform ASQ/ANSI/ISO 9000:2015: Quality Management Systems - Fundamentals and Vocabulary

Extrapolând puţin, Asigurarea Calităţii Software (Software Quality Assurance) este un set de acţiuni planificate şi sistematice, partea a sistemului de managementul calităţii (Quality Management - QM), care furnizează încrederea că software-ul produs respectă cerinţele referitoare la calitatea unui produs software.

Controlul Calităţii (Quality Control - QC) reprezintă tehnicile și activitățile operaționale utilizate pentru a îndeplini cerințele calității. Nu se poate pune un semn de egalitate între Software Quality Assurance şi Software Quality Control.

În Figura 1, se poate observa relaţia dintre Managementul calităţii, Asigurarea calităţii şi Controlul calităţii. Putem observa că nu nu se poate să avem controlul calităţii fără a avea un sistem de managementul calităţii la nivelul organizaţiei şi un set de acţiuni de Asigurarea calităţii.

Figura 1. Relaţia dintre QM-QA-QC

Pentru a înţelege mai bine faptul că e nevoie de un set de acţiuni pentru asigurarea calităţii în livrarea unui produs software, se poate observa în Figura 2 că acţiunile legate de Quality Assurance se referă şi la procese şi la produs, pe când cele legate de Quality Control se referă doar la produs.

Quality Control presupune testarea produsului şi review.

Figura 2 - Ierarhia Quality Control - Quality Assurance - Total Quality Management

Subliniem faptul că doar procesul de testare înainte de livrarea finală (release-ul) sau intermediară a unui produs software nu înseamnă că asigur calitate produsului.

Modele de asigurare a calităţii

Modelele de asigurare a calităţii software sunt realizate pentru a permite echipelor care dezvoltă produse software să înţeleagă mai bine legătura dintre calitate internă şi externă a produsului. Aşa cum ştim calitatea externă este cea observată de utilizator, care este testată și care va sta la baza acceptanţei produsului de către client. Calitate internă este acea componentă a calităţii produsului software care nu se poate observa, fiind reflectată de structura codului, de regulile de codificare, testare şi mentenanţă a produsului.

Scopul aplicării unor modele de calitate include evaluarea software-ului din diverse perspective legate de specificaţii, dezvoltare, utilizare, mentenanţa, support, asigurare calitate şi audit.

Modul de abordare a calităţii presupune considerarea anumitor standarde. Un exemplu elocvent este Standardul internaţional ISO 9001:2015 pe care majoritatea companiilor IT îl au implementat la nivel de companie. Este standardul care reuneşte un set de bune practici pentru managementul calităţii totale, la nivel de organizaţie.

Există foarte multe standarde şi la nivel de organizaţie şi de proiect. De aceea trebuie să existe o decizie de la început care sunt standardele utilizate pentru asigurarea calităţii.

Standardul ISO/IEC 25001:2014 - Systems and software engineering - Systems and software Quality Requirements and Evaluation (SQuaRE) este utilizat pentru planificare şi management.

Standardul ISO/IEC 25010:2011 - Systems and software engineering - Systems and software Quality Requirements and Evaluation (SQuaRE) - System and software quality models - defineşte un model de calitate al produsului compus din opt caracteristici de bază (care sunt împărţite în subcaracteristici). Acest standard a fost revizuit şi confirmat în 2017.

Figura 3 prezintă modelul calităţii conform ISO 25010, așa cum este specificat în site-ului oficial al ISO. Sunt cele opt caracteristici de bază care trebuie analizate şi care au la rândul lor un set de sub-caracteristici.

Un set minim de bune practici pentru asigurare calităţii

Figura 3. Modelul Calităţii conform ISO 25010 (Sursă: https://iso25000.com/index.php/en/iso-25000-standards/iso-25010)

Bazându-ne pe recomandările standardelor, trebuie să elaborăm la nivel de management al produsului software, planul de asigurare al calităţii.

Aşa cum ştim, ciclul de viață al dezvoltării software-ului (Software development lifecycle - SDLC) este un proces utilizat de industria software-ului pentru a proiecta, dezvolta și testa produse software de înaltă calitate. SDLC își propune să producă un software de înaltă calitate care să îndeplinească sau să depășească așteptările clienților, să ajungă la finalizare în timp și estimări ale costurilor. Există mai multe tipuri (modele) de SDLC. Enumerăm doar câteva:

Menţionăm însă faptul că în funcţie de domeniul pentru care dezvoltăm software trebuie să respectăm anumite cerinţe suplimentare de calitate. De exemplu: în cazul în care dezvoltăm safety critical software, asigurarea calităţii presupune respectarea unor standarde suplimentare care să asigure conformitatea şi siguranţa produsului.

Aşa cum afirmam, asigurarea calității software-ului este un concept care ar trebui să se întindă pe întregul ciclu de viață al dezvoltării software-ului și pe întregul proces de dezvoltare continuă. Indiferent de metodologia adoptată pentru dezvoltare sunt câteva etape comune.

Vom prezenta câteva aspecte ale asigurării calităţii produsului pentru fiecare etapă de dezvoltare, cu menţiunea că nu sunt acoperite toate cerinţele de calitate în expunerea de faţă.

Enumerăm mai jos câteva aspecte care contribuie la asigurarea calităţii produsului şi sunt necesare în etapa de Planning:

Analizăm acum câteva aspecte care contribuie la asigurarea calităţii produsului și necesare în etapa de Analiza.

Un element foarte important în asigurarea calităţii software este modul în care sunt definite şi structurate specificaţiile (requirements) la orice nivel.

Pentru a livra un software de calitate în etapa de analiza trebuie să mă asigur că:

Enumerăm câteva aspecte care contribuie la asigurarea calităţii produsului şi sunt necesare în etapa de Design:

Enumerăm câteva condiții care contribuie la asigurarea calităţii produsului, necesare în etapa de Development:

Subliniem câteva aspecte care contribuie la asigurarea calităţii produsului şi sunt necesare în etapa de Testing:

Enumerăm câteva elemente care asigură calitatea produsului, vitale în etapa de Deployment:

Menţionăm câteva aspecte care contribuie la asigurarea calităţii produsului şi sunt necesare în etapa de Maintenance:

Nu am făcut referire la nici o metodologie anume. Ştim că multe dintre organizaţii au adoptat modelul Agile, cel mai des frameworkul Scrum.

Metodologiile moderne de dezvoltare software, ca modelul Agile, necesită foarte multe şabloane/cerinţe de standardizare pentru diverse activităţi, presupunând utilizarea unor instrumente uşor de utilizat. Există metrici şi metode de analiza care sunt folosite şi care dau o viziune mai clară asupra proiectului şi permit îmbunătăţiri semnificative. Etapele de dezvoltare sunt aceleaşi chiar dacă ele sunt parte a unui proces iterativ şi incremental.

Concluzii

De cele mai multe ori atunci când se discuta despre un standard de calitate echipele se gândesc la nişte reguli rigide şi greu de implementat. Standardele dau nişte indicaţii coordonate care ne pot ajuta să ne organizăm activitate în aşa fel încât să producem software de calitate.

Depinde de noi, la nivel de organizaţie şi proiect, modul în care ne definim procedurile pentru a produce un software de calitate. Acest lucru se poate face în primul rând prin auditarea proceselor existente , în aşa fel încât să avem procese uşor de înţeles şi acceptat la nivel de companie.

Elaborarea unor procese în dezvoltare, utilizarea unor tooluri, automatizarea proceselor şi a acţiunilor repetitive va permite asigurarea calităţii.

O altă condiție foarte importată este să planific toate acţiunile necesare pentru asigurarea calităţii şi să auditez intern permanent proiectele pentru a mă asigura că toate procesele sunt înţelese.

Elaborarea a unui plan de asigurare a calităţii software corespunzător este absolut necesar.

Indiferent de modelul de dezvoltare software abordat e nevoie de soluţii punctuale pentru organizaţie şi departamente.

Toate instrumentele folosite pentru dezvoltarea produsului software asigură calitatea produsului doar în cazul în care au la baza procese clare şi bine specificate.

Referinţe:

  1. Galin D., Software Quality Assurance: From Theory to Implementation, Pearson Education, 2004.

  2. Software Quality Assurance Handbook, Kansas City Division, https://www.osti.gov/servlets/purl/6584873 (report)

  3. Schulmeyer G.G. (Eds.), Handbook of software Quality assurance, Artech House, Boston, 2008.

  4. Internaţional Standard ISO/IEC 25010 - System and software quality models.

  5. https://iso25000.com/index.php/en/iso-25000-standards/iso-25010

  6. ISO 9001:2015. Quality management systems ISO 9000:2015: Quality Management Systems - Fundamentals and Vocabulary.

  7. https://www.monterail.com/blog/software-qa-standards-iso-25010

  8. https://asq.org/quality-resources/quality-assurance-vs-control

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects