Într-un articol publicat în numărul 99 al revistei Today Software Magazin, am încercat să expunem câteva argumente legate de faptul că 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. Am menţionat că atunci când ne referim la calitatea 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.
În acest context, aplicarea Regulamentului general privind protecția datelor (General Data Protection Regulation) (GDPR) face parte din etapele urmate pentru asigurarea calităţii unui produs software. Vom folosi abrevierea GDPR în întregul articol atunci când vom face trimitere la regulament.
Articolul de faţă îşi propune să prezinte câteva aspecte legate de ceea ce reprezintă GDPR pentru asigurarea calităţii în dezvoltarea software.
Nu vom insista foarte mult pe definiţia GDPR, dat fiind că sunt foarte multe articole scrise de cei care se ocupă de implementarea GDPR, ci vom viza doar câteva aspecte privitoare la ce înseamnă pentru organizaţiile IT, conformarea cu GDPR (GDPR Compliant) din punct de vedere al dezvoltării aplicaţiilor software. Ne vom referi la câteva articole din GDPR care se evidențiază printr-o mai mare atenţie acordată arhitecturii software.
Uniunea Europeană (UE) a adoptat Regulamentul general privind protecția datelor (General Data Protection Regulation) (GDPR) pe 14 aprilie 2016.
Începând cu data de 25 mai 2018, orice companie care colectează informații cu caracter personal de la orice persoană fizică trebuie să respecte un set de reguli impuse de GDPR [1].
Setul de reguli se referă, în general, la modul de colectare, de utilizare și protecție în fața accesului neautorizat, precum și la timpul de păstrare și termenul de distrugere al datelor cu caracter personal.
Orice organizaţie, în particular, orice organizaţie IT, pentru că la acestea ne referim, trebuie să fie conformă cu GDPR. În felul acesta, orice organizaţie IT ar trebui să parcurgă un set de paşi pentru a respecta regulele impuse de GDPR în procesele de dezvoltare software.
Date cu caracter personal
Pentru a evalua impactul acestui regulament asupra dezvoltării software trebuie să înţelegem ce sunt datele cu caracter personal.
Orice organizaţie IT, care produce orice fel de software, trebuie să înţeleagă toate aspectele legate de datele personale pentru evalua modul în care le gestionează.
Pentru a gestiona datele personale şi a implementa funcţionalităţi specifice este util să ştim care sunt datele personale în ansamblu, apoi care sunt datele personale necesare produsului software pe care îl dezvoltăm.
Conform definiţiei din Regulament, date cu caracter personal "înseamnă orice informații privind o persoană fizică identificată sau identificabilă ("persoana vizată"); o persoană fizică identificabilă este o persoană care poate fi identificată, direct sau indirect, în special prin referire la un element de identificare, cum ar fi un nume, un număr de identificare, date de localizare, un identificator online, sau la unul sau mai multe elemente specifice, proprii identității sale fizice, fiziologice, genetice, psihice, economice, culturale sau sociale".
Figura 1. prezintă o imagine extrem de relevantă legată de date personale [2].
Figura 1: Date personale
Dacă privim acesta diagramă, vom înţelege că datele personale presupun mult mai multe informații decât ne-am imaginat şi că trebuie să tratăm cu foarte multă seriozitate datele utilizate în procesul de dezvoltare software.
Asa cum se vede şi în Figura 1, datele personale sunt clasificate în date de identificare ale persoanei vizate, informaţii financiare, informaţii legate de comunicare, informaţii despre relaţii personale, financiare, informaţii medicale, informaţii legate de activitatea persoanei şi informaţii legate de portofoliul online şi înregistrări guvernamentale.
Prelucrarea datelor cu caracter personal "înseamnă orice operațiune sau set de operațiuni efectuate asupra datelor cu caracter personal sau asupra seturilor de date cu caracter personal, cu sau fără utilizarea de mijloace automatizate, cum ar fi colectarea, înregistrarea, organizarea, structurarea, stocarea, adaptarea sau modificarea, extragerea, consultarea, utilizarea, divulgarea prin transmitere, diseminarea sau punerea la dispoziție în orice alt mod, alinierea sau combinarea, restricționarea, ștergerea sau distrugerea". [1]
Articolul 9 din GDPR menţionează şi categorii speciale de date care nu se pot procesa decât în situaţii specifice. Situaţiile specifice sunt cele în care persoana vizată și-a dat consimțământul explicit sau atunci când procesarea este necesară din motive care țin de un interes public major, definit de legislația europeană sau națională. Aceste date sunt: originea rasială sau etnică, orientarea sexuală, opiniile politice, convingerile religioase sau filosofice, apartenența sindicală, datele genetice, biometrice sau medicale.
Pe durata prelucrării, datele cu caracter personal pot fi accesate de companii sau organizații. În acest proces, apar două entități importante:
Operatorul de date este cel care decide scopul prelucrării datelor cu caracter personal şi modul în care sunt prelucrare datele cu caracter personal.
Persoana împuternicită de operator prelucrează date cu caracter personal numai în numele operatorului de date. De obicei, persoana împuternicită de operator este un terț din afara organizaţiei.
Fiecare modul software trebuie să fie conform cu GDPR. Pentru a asigura calitatea software, cerinţele legate de GDPR trebuie să fie definite la începutul dezvoltării aplicaţiei software. Pentru a înţelege care sunt cerinţele (specificaţiile) necesare este important să avem în vedere câteva aspecte din regulament legate de drepturile persoanei vizate. Vom parcurge în continuare aceste aspecte [3].
Dreptul de a fi informat este prezentat în articolul 13 şi stabileşte faptul că persoana vizată trebuie să fie informată cu privire la tipul de date colectate, scopul pentru care se colectează, modul în care se gestionează.
Dreptul de a fi uitat este prezentat în articolul 17. Fiecare cetățean al Uniunii Europene are "dreptul de a fi uitat". La cerere, companiile sunt obligate să şteargă toate datele personale legate de o anumită persoană. Prin urmare, software-ul sau baza de date ar trebui să includă instrumente care permită izolarea și ștergerea datelor personale, în funcţie de cerinţe.
Dreptul de a avea acces la date este menţionat în articolul 15 şi presupune dreptul persoanei vizate de obţine din partea operatorului o confirmare legată de prelucrarea datelor cu caracter personal şi informaţii legate de acestea.
Dreptul de a rectifica datele, prezentat în articolul 16, reglementează faptul că persoana vizată are dreptul să solicite modificare datelor în cazul în care constată că au fost procesate greşit.
Dreptul la portabilitatea datelor este expus în articolul 20. Conform acestuia, persoana are dreptul de "a primi datele cu caracter personal care o privesc și pe care le-a furnizat operatorului într-un format structurat, utilizat în mod curent și care poate fi citit automat și are dreptul de a transmite aceste date altui operator, fără obstacole din partea operatorului căruia i-au fost furnizate datele cu caracter personal".
Un exemplu elocvent în acest sens este transferul datelor între furnizorii de servicii de telefonie mobilă. Software-ul destinat furnizorului de servicii de telefonie mobilă trebuie să fie configurat într-un mod în care să permită utilizatorilor să-și porteze numărul de telefon la un alt furnizor de servicii.
Raportarea obligatorie privind încălcarea datelor este un alt aspect foarte important al regulamentului. Articolul 34 menţionează: "În cazul în care are loc o încălcare a securității datelor cu caracter personal, operatorul notifică acest lucru autorității de supraveghere competente în temeiul articolului 55, fără întârzieri nejustificate și, dacă este posibil, în termen de cel mult 72 de ore de la data la care a luat cunoștință de aceasta, cu excepția cazului în care este puțin probabil să genereze un risc pentru drepturile și libertățile persoanelor fizice. În cazul în care notificarea către autoritatea de supraveghere nu are loc în termen de 72 de ore, aceasta este însoțită de o explicație motivată pentru întârziere."
Acest lucru presupune existenţa unui mecanism de detectarea a încălcării securităţii datelor într-un timp foarte scurt. Din punct de vedere al analizei şi proiectării aplicaţiei software trebuie să avem mecanisme de maximizare a măsurilor de securitate și trebuie să includem un instrument de detectare și raportare a încălcărilor de securitate care poate trimite notificări echipei care se ocupă de securitatea sistemului.
Confidențialitate prin design (Privacy by Design) este impusă de GDPR. GDPR necesită confidențialitate în mod implicit, ceea ce înseamnă că orice aplicaţie software dezvoltată de către o organizaţie IT trebuie să ofere implicit utilizatorilor cel mai înalt nivel de securitate și confidențialitate.
Să analizăm un exemplu clasic: Foarte multe aplicaţii software cer utilizatorului crearea unui cont. În general, pentru crearea contului e nevoie de numele persoanei, adresa de e-mail şi o parolă. Pentru a fi conform cu GDPR, ar trebui să analizăm posibilitatea de a oferi un nume de utilizator complet aleator în timpul procesului de creare a contului.
Consimțământul informat este dreptul persoanei vizate de a avea posibilitatea să furnizeze consimțământul informat pentru colectarea și prelucrarea datelor personale.
Atunci când dezvoltăm orice aplicaţie care prelucreză date cu caracter personal trebuie să oferim în mod transparent utilizatorului posibilitatea de a-şi da consimţământul pentru prelucrarea datelor. Utilizatorul trebuie să ştie pentru ce şi-a dat consimţământul.
Pseudonimizarea "înseamnă prelucrarea datelor cu caracter personal într-un asemenea mod încât acestea să nu mai poată fi atribuite unei anume persoane vizate fără a se utiliza informații suplimentare, cu condiția ca aceste informații suplimentare să fie stocate separat și să facă obiectul unor măsuri de natură tehnică și organizatorică care să asigure neatribuirea respectivelor date cu caracter personal unei persoane fizice identificate sau identificabile".
Pseudonimele trebuie create pentru fiecare persoană, iar datele despre identitatea persoanei trebuie stocate într-o zonă care este complet separată de alte date ale utilizatorului, cum ar fi informațiile din contul persoanei respective într-o aplicație sau o platformă software.
Din punct de vedere al calităţii software acest termen de "conform cu" îl întâlnim foarte des şi atunci când un anumit software trebuie să respecte anumite standarde. Prin procesele de asigurare a calităţii trebuie să aduc argumentele necesare ca un software este conform cu un anumit standard. Aceeaşi situaţie se aplică în cazul GDPR.
GDPR impune şi necesitatea unor modificări în procesele de dezvoltare software pentru a introduce paşii necesari pentru designul unor aplicaţii cu un nivel mare de securitate.
Pentru a dezvolta aplicaţii de calitate care să fie conforme cu GDPR trebuie să analizăm cu atenţie câteva aspecte [4]. Vom încerca să enumerăm în continuare aceste aspecte, fără a avea pretenţia că le-am analizat pe toate:
Trebuie să identificăm utilizatorii finali ai aplicaţiei pentru a înţelege care sunt datele personale pe care le vom colecta şi prelucra.
Confidenţialitatea trebuie încapsulată în produsul software de la început pentru a fi în conformitate cu GDPR. Este nevoie de o arhitectură software corespunzătoare pentru încapsularea confidenţialităţii în aplicaţie. Confidenţialitatea se introduce înainte ca datele personale să facă parte din sistem şi trebuie să facă parte din aplicaţie, fără a se apela ulterior la un plugin pentru instalare.
Vom identifica acele caracteristici (features)/funcţionalităţi ale aplicaţiei care au legătură cu procesarea datelor pe care utilizatorii finali le vor folosi. Pentru fiecare funcţionalitate trebuie să analizăm tipul de date pe care le vom folosi pentru a avea o arhitectură software corespunzătoare. În acest sens este nevoie de la începutul etapei de analiză, de un registru de date cu caracter personal. Acest instrument este utilizat pentru a păstra evidența datelor cu caracter personal pe care le colectăm, indicând locurile în care sunt stocate, proprietarul responsabil al fișierului, nivelul de acces, perioada de stocare, accesibilitatea datelor. Se poate folosi orice instrument care se utilizează cel mai des la nivel de companie, nu este nimic impus pentru a ține evidența datelor cu caracter personal pe care le prelucrăm (diagrame de flux de date, registre de procesare, inventare de date, indexuri de date etc.).
Este indicat ca în etapa de analiză să realizăm un fel de inventar al datelor necesare, să facem o evaluare şi apoi stabilim un set minim de date. Este necesară această evaluare pentru a determina nivelul minim de date necesare pentru a atinge scopul prelucrării pentru dezvoltarea software. Minimizarea identificării utilizatorului se face ori de câte ori este posibil. Un alt aspect foarte important care trebuie analizat pentru minimizarea datelor personale este încapsularea unei funcții de ștergere a datelor inutile și neutilizate.
Orice software dezvoltat trebuie să ofere utilizatorului setări cu intimitate maximă. Aplicația nu ar trebui să ceară acțiuni suplimentare ale utilizatorilor pentru a obține un nivel maxim de protecție a datelor cu caracter personal.
Aşa cum am menţionat şi în secţiune anterioră, pentru prelucrarea datelor e nevoie de consimțământul prealabil al utilizatorilor. Pentru a obţine consimţământul, producătorul de software-ul trebuie să furnizeze informații cuprinzătoare cu privire la prelucrarea datelor cu caracter personal ale utilizatorului: ce date, când, de către cine, unde, pentru ce? Textul trebuie să fie lipsit de ambiguitate și foarte concis.
Utilizatorii trebuie să bifeze elementul de acceptare al prelucrării datelor cu caracter personal daca sunt de acord cu acest lucru. În caz contrar, datele nu se pot prelucra.
O activitate foarte importantă în dezvoltarea software este atenţia acordată sistemului de securitate a datelor. Criptarea datelor este sugerată de GDPR. Producătorii de software pot alege orice măsuri de securitate cu menţiunea că trebuie să poată demonstra că sunt implementate şi că informaţiile sunt protejate.
Certificarea ISO 27001 este una dintre măsurile care vor permite organizaţiei dezvoltarea unui sistem solid de securitate a datelor.
Documentaţia ocupă un loc important în asigurarea calităţii produselor software. Elaborarea documentaţiei pentru GDPR este o cerinţă clară. Nu este suficient să am un produs software conform cu GDPR, deoarece trebuie să am posibilitatea de a genera şi exporta o documentaţie care poate "dovedi" că produsul software este conform cu GDPR.
Pentru a ne asigura că datele de testare ale unei aplicaţii software sunt conforme cu GDPR se folosesc două modalităţi:
Utilizarea tehnicilor de mascare a datelor din producţie;
Respectarea GDPR interzice utilizarea datelor reale ale clienților în scopuri de testare, cu excepția cazului în care acestea sunt redate anonim prin mascare. Datele se pot masca astfel încât să nu mai poată fi atribuite proprietarului inițial. Cel mai bun mod de a respecta GDPR este de a utiliza datele de test sintetice. Datele sintetice sunt utile în testarea funcțională ca înlocuitor pentru datele personale reale. Avantajele utilizării datelor sintetice sunt că pot fi utilizate cu ușurință pentru a testa scalabilitatea sau în scopuri de vizualizare şi că pot fi partajate în mod liber rezultatele ca date deschise.
Complexitatea datelor sintetice crește în acelaşi timp cu complexitatea sistemului testat și a bazei de date din spatele acestuia. Acest lucru necesită un efort suplimentar pentru generarea datelor care să ofere posibilitatea unei testări corecte a aplicației.
Am prezentat doar o parte a aspectelor legate de cerinţe suplimentare în procesele de dezvoltare software pentru a fi conforme cu GDPR.
În fiecare etapă de dezvoltare software există acţiuni specifice necesare pentru a fi conform cu GDPR şi pentru a oferi clienţilor un software de calitate.
Din păcate, nu există o soluţie generală pentru un set de acţiuni necesare care să asigure conformitatea cu GDPR. Aceste soluţii depind foarte mult de industria pentru care dezvoltăm software şi de tipul de date prelucrate.
Sperăm că acest articol a adus puţină claritate în acţiunile pe care trebuie le desfăşurăm în procesele de dezvoltare software pentru a obţine produse de calitate conforme cu GDPR.