Ingineria software

Prin firea lucrurilor, multi dintre prietenii mei sînt, sau măcar au fost, programatori. Unul dintre ei a fost desemnat într-o bună zi director al unei companii de software, devenind astfel seful unei echipe de programatori de cea mai bună calitate. Dintr-o dată, dincolo de problemele tehnice pe care le avea de rezolvat, au apărut cîteva noi responsabilităti: avea acum de gestionat niste resurse (desigur: oameni, bani timp si echipamente) pentru a duce la bun sfîrsit niste contracte (implicînd termene de predare si conditii calitative). Probleme cu totul prozaice, dar de care depindea în cele din urmă pîinea de fiecare zi a unor oameni, ca să nu mai pomenesc de banii investitorilor.

Una dintre primele actiuni pe care le-a întreprins în noua sa calitate a fost investigarea posibilitătilor cîtorva programe de administrare a proiectelor. Zilele următoare, pereti s-au acoperit cu o multime de planse, reprezentînd tabele de esalonare a sarcinilor, diagrame PERT si GANTT. La început socotelile se făceau regresiv: dacă versiunea alfa trebuie terminată la data X, atunci testele trebuie să înceapă la data Y, etc. Dar administrarea proiectelor cere ca date de intrare estimări cît mai precise ale alocării resurselor pentru diversele etape ale procesului. Pe de altă parte, calitatea produsului final se cere si ea cuantificată si exprimată într-o formă cît mai putin dependentă de aprecierile subiective ("Mda, merge", "E grozav", s.a.m.d.).

Multă vreme ne-am amăgit cu ideea că această meserie se bazează pe un soi de "magie", că programele sînt opera unor tipi geniali butonînd nopti întregi cu stacane de cafea tare la îndemînă... Dar adolescenta acestei profesiuni nu poate dura la nesfîrsit, epoca productiei artizanale a trecut. A produce software este acum o activitate industrială pe cale de a se maturiza.

Pe de altă parte este evident că dezvoltarea de software se deosebeste radical de industriile considerate "mature" prin faptul că munca pe care o implică este eminamente de natură intelectuală. Multiplicarea mecanică a unui model, preponderentă în aceste industrii, reprezintă o activitate minoră în contextul realizării programelor, ceea ce face ca marea majoritate a metodelor de conducere si organizare propuse de industriile clasice să se dovedească inadecvate productiei de software.

Articolele care formează acest grupaj nu acoperă decît o mică parte a unui domeniu ce s-a consacrat sub denumirea de "inginerie software". Problema pe care o abordează ar putea fi enuntată astfel: Cum se pot măsura, într-o manieră cît mai obiectivă, elemente ale unei activităti de natură intelectuală, în spetă dezvoltarea de software? O introducere în sfera metricelor software va oferi o perspectivă asupra fundamentelor, iar o incursiune printre metodele de evaluare a produselor software va oferi o perspectivă mai pragmatică. Multe dintre aspectele tratate sînt controversate iar solutiile propuse nu sînt unanim acceptate.

Chiar dacă nu ne face prea multă plăcere, să acceptăm că programarea nu este totusi o artă, ci doar un mestesug. Vă propunem, deci, o scurtă evadare din sfera lui Cum? pentru a arunca o privire în sfera lui Cît?


(C) Copyright Computer Press Agora