ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 165
Numărul 164 Numărul 163 Numărul 162 Numărul 161 Numărul 160 Numărul 159 Numărul 158 Numărul 157 Numărul 156 Numărul 155 Numărul 154 Numărul 153 Numărul 152 Numărul 151 Numărul 150 Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 165
Abonamente

Impactul Inteligenței Artificiale în Reducerea Complexității Proiectelor Software

Dan Suciu
Lector, PhD @ Facultatea de matematică și informatică, UBB



MANAGEMENT


În ultimii ani, inteligența artificială (IA) a devenit unul dintre subiectele cele mai discutate din industria software. De cele mai multe ori, conversația este orientată către automatizare, productivitate sau generarea de cod. Mult mai rar însă discutăm despre un aspect fundamental, și anume cel legat de rolul pe care IA îl poate avea în gestionarea complexității proiectelor software.

Pentru a înțelege acest impact este necesar să pornim de la o distincție esențială, dar adesea ignorată în practică: diferența dintre complicat și complex.

Complicat sau complex?

Folosim frecvent, în conversațiile de zi cu zi, termeni precum complicat sau complex, de multe ori ca și cum ar însemna același lucru. În realitate însă diferența dintre cele două concepte este una fundamentală. Mai mult decât atât, modul în care interpretăm această diferență influențează direct deciziile pe care le luăm în proiecte: modul în care planificăm, estimăm, organizăm echipele sau alegem tehnologiile.

Pentru a înțelege mai bine această diferență putem apela la trei perspective cunoscute.

Ralph Stacey propune o matrice în care două dimensiuni, stabilitatea cerințelor și maturitatea tehnologiei, determină natura unui proiect (Figura 1.a).

Figura 1. a) Matricea Stacey

În zona în care cerințele sunt complete, clare și stabile (chiar dacă una dintre aceste proprietăți nu este întrutotul îndeplinită), iar tehnologia este în general cunoscută, ne aflăm într-un context complicat. Într-un astfel de caz, problema poate fi dificilă, dar este, în esență, rezolvabilă prin analiză, expertiză și planificare.

Dar pe măsură ce ne deplasăm în această matrice, lucrurile încep să se schimbe. Dacă cerințele devin instabile (de exemplu, pentru că produsul este nou sau pentru că piața se schimbă) și/sau dacă tehnologia este imatură (de exemplu, utilizăm un framework nou sau o arhitectură experimentală) intrăm treptat în zona complexă.

În acest context, nu mai putem vorbi despre o planificare predictivă în sens clasic. Chiar dacă avem expertiză, aceasta nu este suficientă pentru a anticipa toate problemele care vor apărea. Cu alte cuvinte, în sistemele complicate putem reduce incertitudinea prin analiză. În sistemele complexe, incertitudinea este structurală și nu poate fi eliminată.

Dave Snowden abordează problema dintr-o altă perspectivă, poate și mai subtilă: relația dintre cauză și efect (Figura 1.b).

b) Frameworkul Cynefin

În sistemele complicate această relație există și este, în principiu, identificabilă. Poate nu este evidentă pentru toată lumea, dar un expert o poate identifica și explica. Dacă apare o problemă într-un sistem complicat, putem analiza situația și găsi cauza.

Figura 2.

În sistemele complexe însă lucrurile stau diferit. Aici relația cauză - efect nu este evidentă în avans și, de multe ori, nu este nici măcar stabilă. Putem înțelege ce s-a întâmplat doar retrospectiv, după ce analizăm efectele. Mai mult, aceeași acțiune poate produce rezultate diferite în contexte sau momente de timp diferite. Aceasta se întâmplă din cauza numărului mare de interdependențe și a faptului că sistemul evoluează continuu.

Nassim Nicholas Taleb oferă probabil cea mai intuitivă și mai pragmatică explicație atunci când spune că tot ceea ce seamănă cu o mașină de spălat este complicat, iar tot ceea ce seamănă cu o pisică este complex. O mașină de spălat poate avea mii de componente, dar comportamentul ei este predictibil. O pisică însă este imprevizibilă, adaptivă și reacționează diferit în funcție de context.

Dacă aplicăm această analogie în industria IT, apare o observație interesantă.

Hardware-ul, în ciuda evoluției sale spectaculoase (cu o creștere exponențială a anumitor performanțe, conform legii lui Moore), rămâne în esență un sistem complicat. În schimb, software-ul este profund complex. El evoluează într-un context dominat de incertitudine, schimbări de cerințe, tehnologii noi și interdependențe numeroase între componente și echipe.

Această complexitate este una dintre principalele provocări ale proiectelor software moderne. În mod interesant, apariția instrumentelor de inteligență artificială ar putea schimba într-o anumită măsură modul în care gestionăm această complexitate.

Profilul exponențial al creșterii complexității

Un sistem complicat devine mai complicat într-un mod relativ liniar. Dacă adăugăm componente într-un mecanism, nivelul de "complicățenie" crește, dar într-un mod predictibil.

În sistemele complexe însă lucrurile stau diferit. Interdependențele dintre componente cresc într-un mod aproape exponențial. Pe măsură ce o aplicație software devine mai mare, numărul interacțiunilor dintre module, servicii sau echipe crește într-un ritm care poate depăși capacitatea noastră de a le controla.

Foarte probabil că orice echipă care a lucrat pe un produs software matur a avut acea senzație că sistemul devine "prea complex pentru a fi înțeles". În mod tradițional, încercăm să controlăm această situație prin arhitecturi mai riguroase, șabloane de proiectare specifice, procese sau reguli de dezvoltare. Manifestul Agile are chiar un principiu special care se referă la importanța implementării de soluții cât mai simple pentru a păstra un nivel ridicat de agilitate.

Inteligența artificială aduce însă un avantaj interesant: capacitatea de a identifica rapid tipare în sisteme complexe. De fapt exact asta fac modelele IA: descoperă șabloane în volume mari de informații. În contextul dezvoltării software acest lucru se poate traduce prin:

Cu alte cuvinte, AI poate deveni un instrument care ne ajută să observăm, să înțelegem și să controlăm mai bine sisteme software de o complexitate ridicată.

De la "specialiști" la "generaliști"

Industria software, și nu numai, a trecut în ultimele decenii printr-o evoluție interesantă în ceea ce privește profilul profesional al angajaților. Inițial companiile căutau specialiști foarte buni într-un domeniu îngust — așa-numiții I-shaped professionals. Ulterior, a apărut conceptul de T-shaped professionals: oameni cu o specializare principală, dar și cu o bună înțelegere a domeniilor conexe.

Mai recente, se vorbește despre comb-shaped professionals, persoane care au mai multe domenii de competență relativ solide.

Inteligența artificială ar putea accelera această evoluție. Dacă instrumentele AI pot acoperi o parte din expertiza foarte specializată — generarea de cod, analiza securității sau optimizările tehnice — rolul oamenilor se poate muta mai mult spre înțelegerea ansamblului. Este posibil ca în viitor profilul profesional dominant să fie cel al unui generalist capabil să înțeleagă sistemul în ansamblu, folosind IA ca suport pentru expertiza punctuală.

Într-un fel, inteligența artificială ar putea deveni "specialistul" dintr-o echipă formată exclusiv din "generaliști".

Echipe mai mici

O altă consecință posibilă a IA este legată de dimensiunea echipelor. Mult timp literatura despre dezvoltarea software a considerat că dimensiunea optimă a unei echipe este de aproximativ 7 ± 2 persoane.

Această dimensiune reflectă atât nevoia de multi-disciplinaritate (programatori, testeri, designeri, specialiști DevOps, analiști etc.), cât și limita până la care o echipă ce se auto-organizează poate funcționa eficient fără riscul de a deveni haotică.

În ultimii ani însă instrumentele IA au început să preia o parte din aceste specializări sau expertize astfel încât echipele să devină mai mici fără a pierde capacitatea de auto-organizare și de a livra funcționalități complete.

Henrik Kniberg sugerează că dimensiunea optimă a unei echipe depinde în mare măsură de numărul de competențe necesare pentru a livra valoare. Dacă inteligența artificială poate acoperi o parte din aceste competențe, nu este exclus ca în viitor să vedem echipe de proiect formate din sub-echipe multidiciplinare de 3 ± 1 persoane.

Concluzii

Proiectele software sunt sisteme complexe, caracterizate de incertitudine, variabilitate și interdependențe numeroase.

Inteligența artificială nu elimină această complexitate. În schimb, ar putea contribui la gestionarea ei în trei moduri importante:

Probabil că în anii următori cea mai importantă contribuție a inteligenței artificiale în dezvoltarea software nu va fi generarea de cod, ci capacitatea de a ne ajuta să navigăm mai eficient complexitatea sistemelor pe care le construim.

Referințe

  1. David C. Brock, Gordon E. Moore, Understanding Moore's Law: Four Decades of Innovation, Chemical Heritage Foundation, 2006

  2. Henrik Kniberg, Generative AI in a Nutshell: How to Survive and Thrive in the Age of AI, 2025

  3. Dave Snowden, Cynefin - Weaving Sense-Making into the Fabric of Our World, Cognitive Edge, 2020

  4. Ralph D. Stacey, Strategic Management and Organisational Dynamics, Financial Times Management, 1999

  5. Nassim Nicholas Taleb, Antifragile: Things That Gain from Disorder, Random House, 2012

Conferință TSM

NUMĂRUL 165 - CyberSecurity & AI

Sponsori

  • BT Code Crafters
  • Betfair
  • MHP
  • .msg systems
  • P3 group
  • Cognizant Softvision
  • BMW TechWorks Romania

INTERVIURI