În zilele noastre software-ul nu mai este închis în calculatoare. Tot mai multe dispozitive au incluse microprocesoare capabile să ruleze programe complexe și să se conecteze în ceea ce se numește Internet of Things. Mașinile noastre sunt astfel de dispozitive ce profită de avantajele democratizării și de omniprezența puterii de calcul. Software-ul este unul dintre cele mai importante și inovatoare caracteristici ale mașinilor de azi.
Dacă numele din industria auto sunt cam aceleași de acum 20 sau 50 de ani - cu excepția notabilă a Tesla, dacă automobilele prezintă în mare aceleași caracteristici în ultimii aproximativ 100 de ani, ceea ce a împins industria auto în secolul XXI a fost dezvoltarea și disponibilitatea puterii de calcul și a programelor ce se folosesc de această putere. Mici calculatoare ascunse sub capotă controlează amestecul combustibil ce ajunge în cilindrii motorului, temperatura aerului în cabină, monitorizează presiunea în pneuri sau avertizează șoferul despre obstacolele de pe carosabil. Pot chiar să conducă mașina - să nu uităm de această noutate!
A fi un furnizor de software (câteodată chiar și al hardware-ului pe care rulează) pentru un producător de automobile nu e un lucru ușor. În afara competiției la nivel mondial, clienții - acele nume cu 50-100 de ani de prezență pe piață- sunt greu de mulțumit. Un producător de automobile își permite să aleagă furnizorii de produse sau servicii software de oriunde din lume. Această flexibilitate a producătorilor în alegerea furnizorilor este un factor de risc suplimentar pentru organizațiile dezvoltatoare de soft.
Pentru a-și ușura deciziile de alegere sau schimbare a furnizorilor de produse software și din necesitatea de a răspunde numeroaselor cerințe legale, marii producători de automobile au dezvoltat un set de cerințe standardizat pentru evaluarea acestor furnizori. Așteptările sunt mari de la marile nume din industria auto și în consecință aceștia au așteptări mari de la furnizorii lor de componente. Capacitatea de a livra conform așteptărilor trebuie dovedită unui client. Trebuie dovedită capacitatea de execuție la un nivel superior (mai matur, mai competent) decât concurența. Acesta e răspunsul la întrebarea fundamentală "de ce avem nevoie de un sistem de management a calității în industria software?"
Standardul de facto în grupul larg al furnizorilor de software pentru producătorii de automobile este Automotive SPICE - Automotive Software Process Improvement and Capability Determination (sau ASPICE). Este "o inițiativă a Automotive Special Interest Group (SIG) în colaborare cu Quality Management Center in the German Association of Automotive Industry (VDA QMC)".
Originile acestui model se regăsesc în ISO/IEC 15504 (SPICE) ce a fost adaptat nevoilor specifice industriei auto. Este format din două componente importante: modelul de referință a proceselor (Process Reference Model - ASPICE PRM) și modelul de evaluare a proceselor (Process assessment model - ASPICE-PAM). Acest model standard este practic o metodă obiectivă de evaluare independentă a furnizorilor. Ultima versiune disponibilă este 3.1 și a fost publicat în luna noiembrie 2017.
Capitolul dedicat modelului de referință al proceselor descrie fără prea multe detalii procesele ce trebuie implementate. Un proces este identificat printr-un ID unic, un nume însoțit de o descriere sumară și o listă de rezultate așteptate în urma realizării procesului respectiv.
Să luăm exemplul procesului numit "Software Architectural Design" așa cum este definit în documentația AutomotiveSPICE (v3.1):
Fig. 1 - Software Architectural Design process: purpose and outcomes
Prin implementarea și realizarea/execuția acestui proces va fi creat un document care:
identifică elementele componente ale produsului (software) ce va fi construit: layers, componente / module;
specificațiile (high level) pentru fiecare din aceste componente;
descrie interfețele, comportamentul dinamic și eventualele resurse necesare fiecărei componente;
Bineînțeles, rezultatele execuției procesului (process outcome) nu trebuie să fie apară sub forma a șase documente diferite. Totuși rezultatele, așa cum sunt ele definite în model, trebuie să fie identificabile în documentul / documentele de arhitectură a produsului. Alte detalii de "implementare" nu sunt prezentate, fiecare organizație este liberă să își aleagă propriul set de tools pentru trasabilitate sau formatul specific pentru documente. De exemplu, documentul "Software Architectural Design" poate fi un fișier .doc, .pdf, o colecție de înregistrări (records) într-o bază de date sau chiar scris de mână pe foi de hârtie adunate într-un dosar cu șină.
Indiferent sub ce formă vor fi realizate, va trebui ca rezultatele execuției procesului să fie comunicate tuturor celor interesați. O listă care să cuprindă părțile interesate trebuie să fie creată și actualizată pe toată durata de viață a proiectului, iar dovezile comunicării trebuie salvate, fie că este vorba de email-uri, minute ale ședințelor sau orice alt document care poate confirma informarea celor interesați. Lista cu "părțile interesate" cuprinde atât reprezentanți ai clientului cât și reprezentanți ai organizației - din management sau din echipa de proiect ce va contribui la realizarea produsului.
A doua parte din descrierea unui proces în modelul de referință AutomotiveSPICE conține ceea ce se numește process performance indicators (indicatori de execuție sau practici de bază): o listă de activități, taskuri, recomandate a fi executate pentru a atinge scopul propus în definiția procesului și a ajunge la rezultatele dorite (process outcomes). Indicatorii de execuție nu se mapează 1:1 cu lista de rezultate așteptate (outcomes). Un task poate avea rezultate multiple sau un outcome poate fi rezultatul mai multor activități.
Să analizăm un astfel de indicator de execuție propus în model pentru procesul "Software Architectural Design":
SYS.3.BP5: Evaluate alternative system architectures. Define evaluation criteria for the architecture. Evaluate alternative system architectures according to the defined criteria. Record the rationale for the chosen system architecture. [OUTCOME 1]
NOTE 3: Evaluation criteria may include quality characteristics (modularity, maintainability, expandability, scalability, reliability, security realization and usability) and results of make-buy-reuse analysis.
Practic modelul de referință recomandă ca, pentru a obține un document de arhitectură valid, trebuie luate în considerare mai multe variante ce vor fi evaluate pe baza unui set de criterii predefinite. Procesul de evaluare trebuie documentat în vederea unor reevaluări ulterioare sau, de ce nu, chiar a reconsiderării unor aspecte ce pot duce la modificări ample.
Indicatorii de performanță reprezintă axa "X" a absciselor, în funcție de care se evaluează execuția unui proces. Mai multe detalii despre cum se evaluează un proces în conformitate cu modelul AutomotiveSPICE vor fi prezentate mai jos în acest articol.
Pe lângă "Software Architectural Design", modelul de referință ASPICE mai propune încă 31 de arii de proces, definite în aceeași manieră. Modelul în integralitatea lui reprezintă un set minim recomandat unui furnizor de produse și servicii software către membrii VDA ((Verband der Automobilindustie / Asociația Germană a Industriei Automotive).
Indicatorii de capabilitate descriu în detaliu în ce măsura este executat un proces din cele descrise de modelul de referință ASPICE. Cu alte cuvinte, cât de bine ne facem activitățile zilnice. Orice activitate umană poate fi evaluată din acest punct de vedere. De exemplu, sunt oameni ce pot alerga 42km în mai puțin de doua ore în timp ce alții nu pot acoperi nici jumătate din această distanță iar alții nu pot susține ritmul pentru atât de mult timp. Chiar dacă, din punct de vedere strict anatomic, fiecare dintre noi are mijloacele (oase, mușchi, plămâni pe care le folosim toți la fel) și teoretic capacitatea să realizeze asta.
Indicatorii de capabilitate în modelul AutomotiveSPICE sunt aceiași din modelul ISO/IEC 33020 (un standard mai general decât ISO/IEC 15504). Reprezintă axa Y (ordonata) în funcție de care se evaluează procesele modelului și arată cât de bine se execută activitățile recomandate.
Sunt șase nivele de capabilitate, identificate cu cifre de la 0 la 5. Nivelul 0 indică un proces incomplet, care nu își atinge scopul declarat; nivelul 1 de capabilitate descrie un proces executat integral; la nivelul 2, procesul este gestionat (managed) și la nivelul 3 un proces este instituționalizat - practic un standard intern organizației. La nivelul 4 de capabilitate un proces este predictibil pe baza unor analize cantitative iar specificațiile modelului pentru un proces la nivelul 5 cer organizației care l-a implementat să asigure un cadru pentru îmbunătățire continuă a acestuia, aliniat continuu cu direcția de dezvoltare asumată în cadrul organizației.
Indicatorii de capabilitate se evaluează incremental pentru fiecare arie de proces propusă în modelul de referință: un proces nu poate atinge nivelul 3 fără a fi integral conform cu specificațiile (evaluate prin intermediul indicatorilor corespunzători) pentru nivelele 1 și 2!
Pentru a se asigura un cadru unitar de evaluare a capabilității de execuție a proceselor descrise modelul AutomotiveSPICE propune un set de atribute fiecărui proces. Aceste atribute sunt caracterizate printr-un set de practici (activități) generice însoțite de un set de resurse generice recomandate. Diferența între practicile generice și cele de bază este următoarea: practicile de bază sunt specifice fiecărei arii de proces în timp ce cele generice sunt aceleași, aplicabile identic tuturor ariilor de proces.
Conform cu modelul de evaluare a proceselor, nivelul 1 de capabilitate este atins/realizat dacă procesul își atinge scopul pentru care a fost creat. Concret, în cazul ariei de proces SWE.2 - Software Architectural Design, nivelul 1 de capabilitate înseamnă că s-a realizat un document care descrie designul arhitecturii produsului iar acest document a fost evaluat în conformitate cu un set de criterii predefinite.
În general, pentru a demonstra execuția unui proces la nivelul 1 de maturitate se evaluează atributul de proces "PA 1.1 Process performance process attribute" prin "măsurarea" practicii generice "GP 1.1.1 Achieve the process outcomes" - adică practicile de bază au fost executate și rezultatele, în forma definită prin work products/outcome, sunt disponibile; de asemenea, resursele generice propuse pentru atingerea obiectivului procesului sunt disponibile.
Pentru a atinge nivelul de capabilitate 2, un proces trebuie să fie evaluat întâi la nivelul 1 (procesul și-a atins scopul sau, în terminologia AutomotiveSPICE, atributul de proces PA 1.1 este integral atins).
Nivelul 2 de capabilitate a proceselor este evaluat prin două atribute de proces: PA 2.1 Performance management process attribute și PA 2.2 Work product management process attribute. Aceste atribute descriu un proces de nivel 1 (care și-a atins rezultatul propus) ce este executat în mod gestionat (managed): sunt definite obiective, execuția este planificată, progresul este măsurat, rezultatele măsurătorilor sunt evaluate și execuția este ajustată la nevoie, resursele sunt identificate și disponibile, responsabilitățile sunt cunoscute iar comunicația între părțile interesate este de asemenea gestionată. Mai mult, rezultatele execuției procesului sunt și ele gestionate: cerințele sunt definite, rezultatul este creat în conformitate cu acestea, este controlat, identificat și revizuit.
Voi descrie în continuare numai două dintre cele șapte practici generice propuse de către modelul ASPICE pentru măsurarea atributului de proces PA 2.1; restul pot fi consultate online.
GP 2.1.1 Identify the objectives for the performance of the process. Aceasta înseamnă că obiectivele execuției unui proces trebuie identificate și sunt disponibile pentru consultare în orice moment. Obiectivele proceselor pot fi ( enumerarea nu este completă): rezultatul execuției procesului (work products), criteriile de calitate ce trebuie îndeplinite, scopul procesului, ciclul de viață al produsului, resurse necesare, eventuale limite sau constrângeri de orice natură - cum ar fi cerințe legale.
GP 2.1.2 Plan the performance of the process to fulfill the identified objectives: execuția procesului este planificată, activitățile sunt definite integral iar frecvența sesiunilor de revizuire a rezultatelor sau a procesului în sine este de asemenea planificată.
Alte practici generice ce definesc atributul de proces PA 2.1 se referă la necesitatea monitorizării execuției procesului în conformitate cu planificarea inițială sau la necesitatea actualizării periodice a planificării sau a mecanismelor de monitorizare; definirea responsabilităților în execuția fiecărei activități; identificarea, pregătirea și asigurarea disponibilității resurselor necesare execuției; managementul interfețelor și a comunicației între toate părțile interesate în bunul mers al procesului.
Atributul de proces PA 2.1 Performance management identifică practic activitățile ce trebuie executate pentru a avea un proces de nivel de capabilitate 2.
În completarea PA 2.1, atributul de proces PA 2.2 Work product management descrie modul în care rezultatele execuției procesului ar trebui gestionate corect. Sunt identificate patru practici generice: definirea specificațiilor pentru fiecare work product; definirea cerințelor pentru documentația și controlul produselor- documentația este necesară și este altceva decât produsul final; identificarea și mecanismele de control ale rezultatelor; mecanismele și metodele de revizuire pentru asigurarea conformității cu specificațiile convenite.
Nivelul 3 de capabilitate al unui proces ("established process") este definit din nou prin două atribute: PA 3.1 Process definition (descris de cinci practici generice) și PA 3.2 Process deployment (cu șase practici generice propuse).
Un proces established -consacrat sau convențional- este un proces gestionat (atestat la nivelul 2 de capabilitate) ce a fost implementat pornind de la un proces definit generic și care își atinge scopul pentru care a fost creat. Cu alte cuvinte, procesul (procesele) urmate zilnic de către echipa de proiect sunt instanțieri ale unor procese standard, generice.
Acest proces standard descris de atributul de proces PA 3.1 ("process definition") este definit de obicei la nivel organizațional - mai este numit si standard intern. Acest proces generic trebuie definit complet: activitățile sunt descrise, interacțiunile cu alte procese sunt de asemenea identificate, competențele necesare responsabililor cu execuția sunt descrise, la fel și rolurile din echipa de proiect. Infrastructura necesară realizării procesului este descrisă, iar măsurătorile și metodele de evaluare sunt detaliate pentru a permite evaluarea execuției.
Atributul de proces PA 3.2 ("process deployment") definește metoda prin care procesul standard descris mai sus este "instanțiat" în rutina zilnică a unei echipe de proiect. Rolurile și responsabilitățile descrise la realizarea atributului PA 3.1 sunt alocate și comunicate echipei; resursele sunt de asemenea alocate și folosite; colectarea datelor (măsurători) a început atât pentru activități (tasks) cât și pentru rezultatele procesului (work products) iar execuția procesului este evaluată și ajustată la nevoie, fie prin identificarea unor metode de îmbunătățire, fie prin acțiuni corective.
Vă las dumneavoastră plăcerea să descoperiți atributele de proces și practicile generice necesare atingerii nivelelor superioare de capabilitate: nivelul 4 ("predictable process") și nivelul 5 ("innovating process").
Acest subcapitol din AutomotiveSPICE - Process Assessment Model prezintă specificațiile și recomandările pentru o evaluare obiectivă a capabilității execuției unui proces. Fiecare atribut de proces necesar atingerii unui anumit nivel este evaluat în conformitate cu scala definite de standardul ISO/IEC 33020. Un atribut de proces se evaluează astfel la unul din următoarele nivele: N (not achieved - neîndeplinit), P (partially achieved - îndeplinit partial), L (largely achieved - îndeplinit în mare măsură) sau F (fully achieved - îndeplinit complet). Fig. 2 - Rating scale according ISO/IEC 33020
Nivelul de capabilitate al unei arii de proces dat de scorul obținut de fiecare atribut de proces. Pentru ca o arie de proces să fie evaluată la nivelul de capabilitate X, ratingul atributelor de proces la nivelul X trebuie să fie cel puțin L (largely achieved) iar scorul obținut pentru atributele de proces la nivelele inferioare (de la 1 la X-1) să fie F (fully achieved). Aceasta se poate observa clar în imaginea de mai jos:
Fig. 3 - Process capability level model according to ISO/IEC 33020
În concluzie, implementarea unui model standard de tipul AutomotiveSPICE nu necesită competențe speciale sau alt fel de superputeri. Totuși nu este o muncă ușoară: fiecare aspect, fiecare activitate a unei organizații sau a unei echipe de proiect trebuie formalizată, standardizată. Modelul descrie în detaliu tot ce se face (sau cel puțin ar trebui să se facă) oricum într-o organizație. Beneficiile aduse prin implementarea unui model ca ASPICE sunt numeroase: vor ajuta la o mai bună organizare internă, iar experiența câștigată în timp nu va fi pierdută. Măsurătorile colectate în timp vor deveni dovezi ale succesului în realizarea produselor și pot ajuta la câștigarea unor clienți noi iar un proiect nou va fi mai ușor de realizat decât dacă procesele de urmat vor trebui reinventate de fiecare data. Sunt avantaje și pentru membrii echipei de proiect - inginerii pot să se mute mai ușor de la o echipă la alta în funcție de nevoile proiectului sau, de ce nu, din motive personale iar timpul necesar învățării particularităților noii echipe va fi mult scurtat, nefiind nevoie ca noi proceduri sau metode de lucru să fie reluate de la zero.