SOFTWARE - Complexitatea ©


Din punctul meu de vedere, complexitatea unui produs software este esenţială în:
- construirea devizului,
- stabilirea duratelor,
- dimensionarea resurselor,
- precizarea apartenenţei la anumite clase de calitate,
- în studierea riscurilor,
- estimarea costurilor,
- recuperarea investiţiei,
- determinarea exigenţelor grupului ţintă.
Există produse software simple, de complexitate mică, produse realizabile chiar de programatori debutanţi, care depun eforturi să construiască o aplicaţie operaţională, care să-i mulţumească pe utilizatori şi care să nu-i lase cu ochii-n soare prin terminarea brutală cu erori neînsoţite de mesaje proprii.
Software pentru calculul mediei aritmetice a cel mult 100 de termeni, este de complexitate mică.
Software pentru produsul a două matrice cu 30 linii şi 30 coloane cel mult, este de complexitate mică.
Software pentru calculul stocului folosind fişiere, este de complexitate mică.
Dacă se vorbeşte de produse software ceva mai sofisticate, deja complexitatea creşte, fiind necesar lucru fie pentru o singură persoană pe o durată ceva mai mare, fie mai multe persoane lucrează un timp ceva mai redus.
Software pentru implementarea unui algoritm de programare liniară cu cel mult 100 de variabile şi sub 100 de restricţii, are complexitate mari ridicată, dar sub medie.
Software pentru rezolvarea sistemelor de ecuaţii liniare cu cel mult 100 de variabile şi 100 de ecuaţii, este de asemenea, din punct de vedere al complexităţii sub medie.
Produsele software de contabilitate, care funcţionează independent de dezvoltator, sunt de nivel mediu al complexităţii.
Produsele software destinate estimării coeficienţilor pentru modelele de regresie liniară folosind metoda celor mai mici pătrate în două sau trei trepte, dar şi cele destinate analizei dispersionale multifactoriale cu număr oarecare de experienţe în celulă, sunt produse de complexitate medie.
Dacă ne ocupăm de produse software care operează cu matrice rare pentru a creşte dimensiunile problemelor de rezolvat, complexitatea creşte semnificativ, fiind peste medie.
Atunci când se doreşte realizarea unui produs software destinat implementării unui ERP, deja complexitatea este mare. Multe dintre instrumentele software cu funcţii de prelucrare bine conturate şi care au rolul de a asista la implementarea unor tehnologii noi de dezvoltare software, sunt de mare complexitate şi se realizează în echipe de peste 30 persoane de foarte înaltă performanţă.
Un sistem de operare, un sistem de gestiune a bazelor de date, un sistem informatic, un mediu de dezvoltare pentru un limbaj şi alte produse software similare, care nu sunt la îndemâna oricui pentru a le realiza, sunt produse software de mare complexitate.
Intuitiv, complexitatea se apreciază prin:
- numărul de componente,
- numărul de linii sursă,
- diversitatea instrucţiunilor folosite,
- efortul de realizare,
- diversitatea profesiilor implicate,
- tehnicile utilizate,
- nivelul de calitate impus.
Complexitatea trebuie măsurată cât mai riguros şi în momentul de faţă sunt mulţi indicatori care se utilizează în acest scop. Unii dintre ei se calculează având textul sursă ca intrare, altele se calculează prin numărarea tipurilor de componente incluse în produs.
Ceea ce este foarte clar, se leagă de faptul că un manager de proiect nu trebuie să ardă etape, adică să treacă la realizarea de proiecte de mare complexitate dacă experienţa proprie l-a calificat pentru proiecte de complexitate sub nivelul mediu.
Este la fel de periculos dacă un manager care a lucrat la proiecte de mare complexitate şi a avut succes, trece la realizarea de proiecte simple, căci acel manager va face tot ce este posibil să complice lucrurile atât de mult încât va rezulta un produs complex, deşi complexitatea aceea este nenecesară. Se înzestrează produsul cu funcţionalităţi care nu vor fi folosite niciodată. El va scrie un program de calcul pentru media aritmetică a seriei de lungime infinită, folosind o interfaţă extrem de sofisticată, cu opţiuni pe care nici un utilizator nu le va activa, căci acel produs software este destinat calcul mediilor aritmetice ale notelor elevilor dintr-o clasă din liceu, unde seriile nu depăşesc 20 de termeni.