Industria automotive este un domeniu cu reguli și cerințe stricte. Într-adevăr, nu la același nivel cu industria aeronautică sau serviciile de sănătate sau financiare, dar foarte aproape. Vehicule autonome vor circula pe străzi în viitorul nu foarte îndepărtat, iar autovehiculele de azi sunt mai mult roboți sau calculatoare pe roți decât mașinile 'simple' care ne-au ajutat în ultima sută de ani să ne mișcăm mai repede și mai departe, cu bagaje din ce în ce mai grele. Vom vedea mai jos câteva cerințe pe care furnizorii de software pentru industria automotive trebuie să le îndeplinească și cum echipa de Quality Assurance poate să ajute la îndeplinirea acestui scop.
În zilele noastre distanțele sunt relative iar costurile trebuie gestionate cu grijă. Producătorii de automobile au optat pentru externalizarea activităților ne-esențiale și preferă să își cumpere componente sau servicii disponibile pe piață, la costuri reduse, în loc să și le producă intern.
Aceleași considerente se aplică și softului (împreună cu echipamentul hardware pe care acesta rulează) încorporat într-un autovehicul. Companiile producătoare de autovehicule și-au dat seama repede că nu pot concura cu firmele producătoare de software în domeniul de expertiză al acestora din urmă. La externalizarea dezvoltării componentelor electronice a contribuit și progresul înregistrat în acest domeniu, fie că vorbim despre software sau hardware (din punctul de vedere al puterii de calcul, al capacității de stocare sau de conectivitate). În combinație cu costurile de achiziție în scădere, aceasta a condus la democratizarea domeniului IT-C și l-a transformat într-o utilitate, asemenea electricității sau apei curente în viața omului modern.
Industria IT este recunoscută ca fiind foarte dinamică și se afla încă la începuturile istoriei sale, în opoziție cu industria auto, ce se mândrește cu mai mult de un secol de experiență. Producătorii de automobile au acum posibilitatea să aleagă dintre mai mulți posibili subcontractori, iar în unele cazuri sunt nevoiți să își schimbe furnizorii de servicii IT. Acest din urmă lucru i-a obligat să inventeze metode uniforme de evaluare pentru posibilii furnizori, astfel încât să accelereze procesul de selecție și, în același timp, să rămână în conformitate cu regulile impuse industriei de către autorități.
Prin definiție un standard este o colecție de bune practici recomandate pentru atingerea unui scop specific, o colecție compilată de către diferite grupuri de interese. Trebuie amintit că un standard reprezintă un framework uniform compus din cerințe minime ce, odată respectate, demonstrează capacitatea unei entități de a atinge un scop. În niciun caz nu este vorba de un șablon aplicabil ca atare și nici nu impune nimănui, individ sau organizație, să urmeze orbește proceduri sau un set de reguli arbitrare.
Standards are the distilled wisdom of people with expertise in their subject matter and who know the needs of the organizations they represent - people such as manufacturers, sellers, buyers, customers, trade associations, users or regulators.
https://www.iso.org/standards.html
ISO (International Organization for Standardization) este o organizație neguvernamentală la nivel internațional, alcătuită din reprezentanți ai organismelor de standardizare din 165 de țări. Standardele acestei organizații sunt publicate și gestionate ulterior prin consens de grupuri de voluntari, experți într-un anume domeniu.
Alte grupuri de interese ce merită menționate sunt: AUTOSAR partnership (o alianță a producătorilor de echipamente - OEM, furnizori 'Tier 1', producători de componente electronice sau echipamente de producție, dezvoltatori software, și alții cu activitate în industria automotive); Automotive Special Interest Group, MISRA (Motor Industry Software Reliability Association); IATF (International Automotive Task Force) sau CMMI Institute. Producătorii individuali de automobile pot constitui, de asemenea, un grup de interese dacă cer sau recomandă furnizorilor proprii anumite practici specifice. VAG (VW) este un exemplu din această categorie, prin al lor KGAS (Konzerngrundanforderungen, Group Basic Requirements).
Fig.1: o imagine simplificată asupra ecosistemului de standarde în industria automotive
Unele standarde au caracter obligatoriu, fiind incluse în legislația națională sau internațională, iar consecințele neîndeplinirii condițiilor cerute pot fi de natură penală. Altele sunt impuse furnizorilor de către marile companii auto și au devenit standarde de industrie. Acestea din urmă sunt opționale, bineînțeles, dar pot fi impuse prin acorduri comerciale. Nerespectarea cerințelor duce, în principal, doar la pierderi financiare, deși se poate ajunge și la consecințe legale pentru neîndeplinirea obligațiilor contractuale.
Cele mai cunoscute exemple de standarde obligatorii, legate de dezvoltarea software, sunt cele ce se referă la securitatea informației și, mai recent, la protecția datelor cu caracter personal. Cerințele specifice acestor scopuri sunt acoperite de familia de standarde ISO/IEC 27000 și GDPR. Atenție! Regulile nu se referă explicit la sisteme software, ci la informații sau date, însă în zilele noastre acestea sunt prezente, de cele mai multe ori, în format digital.
Din categoria standardelor de industrie putem menționa AUTOSAR (Automotive Open System Architecture), ISO 26262 (Road vehicles - Functional safety), familia ISO/IEC 25000 (System and Software Quality Requirements and Evaluation - SQuaRE), ISO/SAE DIS 21434 (Road vehicles - Cybersecurity engineering, deocamdată doar versiune draft), seria ISO/IEC 33000 (SPICE - Software Process Improvement and Capability Determination) împreună cu versiunea specifică industriei automotive (Automotive SPICE). Bineînțeles, lista poate continua și trebuie reamintit că alte domenii sau industrii (aeronautică, domeniul medical sau financiar) au setul lor specific de reglementări, inclusiv pentru produsele software destinate lor.
Din punct de vedere tehnic standardele se pot împărți în două mari categorii: standarde tehnice, ce conțin recomandări pentru a crea sisteme, produse specifice din perspectivă tehnică și standarde generice, cu un scop mai larg, propunând practici ce acoperă mai multe arii de activitate într-o organizație.
Din prima categorie, a standardelor tehnice, menționăm MISRA C, ISO/TS 16949 (care a fost înlocuit de IATF 16949 - Quality management systems - Particular requirements for the application of ISO 9001:2008 for automotive production and relevant service part organizations), AUTOSAR (Automotive Open System Archirecture), ISO 26262, ISO 25000 (SQuaRE), cele ce descriu arhitectura unui ECU, arhitectura de rețea sau protocoale de comunicație (de ex. CAN - Controller Area Network, 5G).
Cele mai cunoscute și des folosite standarde din a doua categorie a modelelor generice sunt ASPICE (Automotive Software Process Improvement and Capability Determination) sau CMMI (Capability Maturity Model Integration), ce acoperă activități atât la nivel de echipă de proiect, cât și la nivel organizațional sau de suport, sau suita ISO 31000 (Risk management, cu aplicabilitate la orice nivel, în diferite departamente dintr-o organizație).
O trăsătură comună multor standarde este cerința explicită de evaluare și îmbunătățire continuă a implementării acestor modele în cadrul organizației. Se impun astfel verificări periodice în care să se evalueze alinierea proceselor sau activităților cu eventualele schimbări inerente de-a lungul timpului. Schimbările pot să apară în contextul organizațional, în scopurile de business, în eficacitatea unor activități și, foarte important, ca urmare a unor acțiuni luate în vederea corectării sau prevenirii eventualelor deviații ori neconformități ce pot să apară în cursul execuției.
În ultimul rând, documentele ce definesc unele standarde includ metode specifice de evaluare a conformității activităților implementate la nivel organizațional în raport cu practicile propuse de către respectivul standard. ASPICE (ce se concentrează pe activități la nivel de echipă de proiect), CMMI (cu centrare asupra proceselor la nivel de departament) sau ISO 9001 (la nivelul întregii organizații) sunt exemple de standarde ce includ astfel de metode de evaluare. Termeni cum ar fi 'capability level' sau 'maturity level' sunt folosiți pentru a descrie măsura în care o organizație (echipă de proiect, departament sau companie) reușește să execute activitățile propuse de standardul ales. Altele, cum ar fi ISO 31000 (Risk management), nu includ metode de evaluare și nu există certificări sau o altfel de confirmare oficială a alinierii activităților la modelul propus. Totuși, prin implementarea unor astfel de metode de standardizare a activităților zilnice, se pot crea diferite avantaje.
Asigurarea calității sau quality assurance acoperă toate activitățile ce au ca scop final calitatea produsului pe care îl construim. Dar ce este, până la urmă, calitatea? Cea mai simplă și concisă definiție ar fi următoarea: calitatea este percepția pe care clientul, utilizatorul final, o are asupra produsului nostru. Nu e vorba doar despre un produs fără defecte sau la care s-au folosit materiale scumpe (deși în unele cazuri contează și acest aspect), cât despre satisfacția ce o are un client folosindu-ne produsul, făcându-l să treacă din nou pragul magazinului nostru.
Crearea unui produs de calitate este un efort colectiv ce presupune implicarea tuturor celor ce contribuie, oricât de puțin, pe toată durata proiectului de dezvoltare și producție: analiștii de business și requirements engineers care înțeleg nevoile utilizatorului; programatorii care traduc specificațiile în cod pe care un calculator îl execută și întoarce rezultatele așteptate, testerii care se asigură că sistemul a fost construit corect, echipa de management care asigură resursele necesare sau urmărește planificarea, colegii de la HR care au grijă ca echipa să fie mulțumită și că are cunoștințele teoretice necesare, departamentul IT care asigură infrastructura și lista poate continua.
Dar unde se încadrează inginerul de calitate în imaginea de mai sus? Dacă standardele descriu deja cele mai bune practici din industrie putem presupune că fiecare rol ar trebui să știe exact ce are de făcut, nu? Să vedem ce spune standardul ASPICE la aria de proces SUP.1 - Quality Assurance:
The purpose of the Quality Assurance Process is to provide independent and objective assurance that work products and processes comply with predefined provisions and plans and that non-conformances are resolved and further prevented.
Automotive SPICE® Process Reference and Assessment Model v3.1
Din rândurile de mai sus observăm că responsabilitățile inginerului de calitate, persoana din spatele ariei de proces sau auditorul intern al sistemului de management al calității, merg dincolo de cele șase practici de bază cerute explicit în aria de proces SUP.1 - Quality Assurance. Un inginer de calitate este responsabil să aducă, independent și obiectiv, dovezi asupra conformității tuturor activităților și livrabilelor (rezultate, intermediare sau finale, ale activităților zilnice)! Mai mult, în cazul identificării unor deviații sau neconformități, inginerul de calitate propune soluții pentru corectare și prevenirea reapariției acestora, pe care le monitorizează apoi până la corectarea deviațiilor respective și se asigură de eficacitatea acestor măsuri.
Aceasta înseamnă că un inginer de calitate (și lista e departe de a fi completă):
este independent de echipa de proiect. Poate fi privit ca un consultant extern dar care lucrează împreună cu echipa pe toată durata de viață a proiectului.
este obiectiv. Nimeni nu se așteaptă ca un inginer de calitate să cunoască în detaliu fiecare aspect sau proces de dezvoltare, dar are cunoștințe solide asupra metodelor recomandate pentru definirea, planificarea, monitorizarea sau raportarea activităților descrise într-un standard sau altul.
cooperează cu toate rolurile implicate în dezvoltarea produsului, pentru definirea obiectivelor de calitate specifice fiecărei arii de proces și în planificarea activităților specifice pentru atingerea acestor obiective. Prin aceasta acționează ca un negociator, câteodată ca un mediator, între diferitele roluri ale echipei de proiect.
propune indicatori de calitate și proceduri de măsurare a acestora, asigurând feedback continuu (pe baza rezultatelor măsurătorilor) asupra eficienței activităților efectuate în vederea asigurării obiectivelor de calitate.
Decizia de a folosi un nou standard într-o organizație se poate lua oricând, pentru a îndeplini un contract cu un client nou, când atacăm un nou segment de piață sau pentru a rămâne aliniați cu ultimele tendințe din industrie. Bineînțeles, decizia se ia la nivelul managementului superior și implică o investiție inițială (de exemplu, pentru achiziția documentației) precum și o evaluare a utilității, a costurilor de mentenanță sau, de ce nu, a eventualelor costuri generate de nefolosirea acestuia.
Un Sofware Quality Engineer sau un grup din cadrul departamentului de asigurare a calității poate ajută echipa responsabilă cu această schimbare în multe moduri, de la primii pași până la publicarea noului mod de lucru în cadrul organizației.
În primele faze, inginerul de calitate poate participa la evaluarea noului standard, fiind posibil să fie deja familiar cu anumiți termeni sau metode, precum și la estimarea impactului asupra situației curente din perspectiva faptului că este familiar cu activitățile de zi cu zi din responsabilitatea tuturor rolurilor ce compun o echipă de proiect.
În cursul etapei de formalizare a strategiei de asigurare a conformității la nivelul organizației a noilor activități specifice standardului ce se dorește a fi implementat, inginerul de calitate poate veni în ajutorul experților și al echipei de management prin identificarea obiectivelor specifice precum și a indicatorilor și măsurătorilor necesare, în conformitate cu cerințele noului standard.
La final, inginerul de calitate poate contribui la implementarea propriu-zisă a activităților la nivelul echipelor de proiect cu care colaborează, asigurând sesiuni de training formal sau prin participarea la efortul de monitorizare a acestora prin colectarea și raportarea măsurătorilor (în mod independent și obiectiv) sau a feedbackului de la nivel de echipă. În acest fel, acesta ajută echipa responsabilă cu mentenanța standardului să își atingă obiectivul de îmbunătățire continuă a activităților cerute de noul standard.
Departamentul de asigurare a calității produselor software nu ar trebui să fie strict limitat la activități în care se menționează explicit cuvântul calitate. Toate departamentele contribuie în mod egal la încorporarea calității în produsul final. Iar dacă sintagme ca siguranța în funcționare sau securitate cibernetică (functional safety, cybersecurity) apar în cererile clienților, noi sau vechi, contribuind la impresia de calitate a produsului pe care îl caută, atunci dovezi independente și obiective de conformitate cu standarde cum sunt ISO 26262 sau ISO/SAE 21434 ar putea fi răspunsul din partea organizației noastre. La acest nivel, departamentul de asigurare a calității software poate interveni prin inginerii de calitate, chiar dacă aceștia din urmă nu au cunoștințe tehnice despre 'Failure Modes and Effects Analysis' (FMEA), 'Threat Analyses and Risk Assessments' (TARA) ori tehnici de penetration testing.