ABONAMENTE VIDEO REDACȚIA
RO
EN
×
▼ 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

LANSAREA NUMĂRULUI 100

Prezentări articole și Panel:
AI & Fintech

Joi, 29 Octombrie, ora 18:00

Înregistrează-te

Facebook Meetup StreamEvent.ro

Conferință

VIDEO: NUMĂRULUI 99

Sponsori

  • comply advantage
  • ntt data
  • Betfair
  • Accenture
  • Siemens
  • Bosch
  • FlowTraders
  • MHP
  • Connatix
  • Cognizant Softvision
  • BoatyardX
  • Colors in projects