Tudor Gîrba este cercetător și consultant software. El a devenit recent cunoscut prin câștigarea premiului anual la categoria Junior oferit de către AITO (Association Internationale pour les Technologies Objets), organizație ce promovează cercetarea din aria tehnologiilor orientate pe obiect. El va fi prezent în 13 decembrie la Cluj, la evenimentul Be Fast & Curios organizat de către compania 3Pillar Global.
[Ovidiu Mățan] Descrie pentru cititorii revistei noastre capabilitățile engine-ul Mondrian care a primit premiul al II-lea la ESUG 2006 Innovation Awards și totodată a contribuit pentru cel oferit de către AITO.
[Tudor Gîrbă] Mondrian este o platformă de vizualizare a datelor. Particularitatea lui constă în faptul că s-a numărat printre primele astfel de platforme care a oferit o modalitate de "scriptare" succintă. De exemplu, vizualizarea unei ierarhii de clase arată așa:
view nodes: classes.
view edgesToAll: #directSubclasses.
view treeLayout
Dacă dorim să extindem vizualizarea în așa fel încât fiecare clasă să fie reprezentată de un dreptunghi ale cărui dimensiuni să fie date de metrici de cod, putem scrie:
view shape rectangle
height: #numberOfMethods;
width: #numberOfAttributes.
view nodes: classes.
view edgesToAll: #directSubclasses.
view treeLayout
Mondrian a deschis un nou drum în domeniul vizualizărilor arătând cum se pot exprima succint vizualizări complicate.
Platforma de analiză a software-ului și a datelor Moose a parcurs din 2003 sub îndrumarea ta trecerea de la o platformă academică la una ce poate fi folosită cu ușurință și în mediul comercial. Așa cum este descris în The Moose Book avem un proces bine definit prin module de achiziție a datelor, descriere a modelelor și engine-uri de prelucrare a datelor și tool-uri. Poți să ne dai câteva exemple de folosire a sa în aplicații software sau de analiză a datelor ?
[Tudor] Moose este un proiect open-source larg care a început acum 17 ani în Elveția la Universitatea din Berna. Eu îl conduc de 12 ani, iar în prezent e susținut de mai multe companii și grupuri de cercetare din lume. Scopul platformei Moose este acela de a face cât mai ușoară programarea analizelor. Această abilitate conferă programatorilor posibilitatea de a combina servicii de analiză generice pentru a le adapta la contextul sistemelor.
O clasă mare de astfel de utilizări e dată de "testarea" arhitecturii sistemelor software. De exemplu, într-un sistem client-server JEE poate fi de dorit să nu se folosească @Stateful beans. Un astfel de test ar arăta așa:
allTypes noneSatisfy: [ :type | type isAnnotatedWith: 'Stateful' ]
Acesta a fost un exemplu oarecum simplu. O regulă puțin mai complicată ar putea să specifice ca apelurile dinspre codul interfeței cu utilizatorul către server să se realizeze doar prin interfețe care sunt implementate de @Remote beans. Un "test" în direcția aceasta ar arăta așa:
(((allTypes select: #isUIType) flatCollect: #clientTypes) select: #isServerType)
allSatisfy: [ :type |
type isInterface and: [ type directSubclasses anySatisfy: [:class | class isAnnotatedWith: 'Remote' ]]]
Aplicațiille Moose nu se limitează doar la astfel de testări, ci la tool-uri de analiză de date care pot avea interacțiuni sofisticate.
De exemplu, în poza de mai jos putem vedea o sesiune de analiză formată din patru pași. În primul panou se construiește o vizualizare a claselor, iar vizualizarea e arătată în al doilea panou; selectarea unei clase din această vizualizare duce la deschiderea unui nou panou cu detalii ale clasei. În acest al treilea panou, se mai poate construi o altă vizualizare care arată în partea dreaptă cum sunt utilizate atributele de către metodele clasei curente.
Acesta este doar un exemplu care arată cum se pot combina și contextualiza analizele într-un mediu vizual și interactiv. Mai multe informații despre Moose pot fi găsite la: http://moosetechnology.org
Tema pe care o vei aborda la evenimentul Be Fast & Curios este Humane Assessment ce reprezintă o nouă metodă de software engineering cu scopul de a ajuta în luarea deciziilor. Poți să ne descrii în linii mari despre ce este vorba?
Inginerii software petrec mai mult de jumătate din timp evaluând starea curentă a sistemelor pentru a înțelege cum să purceadă mai departe. Cu alte cuvinte, evaluarea sistemelor software (software assessment) e cea mai costisitoare activitate din cadrul dezvoltării software-ului. Cu toate acestea, nimeni nu vorbește despre această activitate. O consecință a acestui fapt e că inginerii software ajung să consume cea mai mare parte din timpul alocat evaluării citind cod. Din păcate, cititul codului e practic cea mai puțin scalabilă modalitate de a înțelege codul și nu e metoda adecvată pentru înțelegerea sistemelor mari. Ca un exemplu, dacă un om care citește rapid are nevoie de 2 secunde pentru a citi o linie de cod, el ar avea nevoie de aproximativ o lună de lucru pentru a citi 250'000 de linii de cod (dimensiunea unui sistem mediu). Având în vedere faptul că inginerii software au nevoie de a înțelege starea sistemului în fiecare zi, în cele din urmă deciziile se iau pe baza unor impresii parțiale și de multe ori incorecte despre realitate.
Dar lucrurile nu trebuie să stea așa. Humane Assessment este o metodă care oferă o abordare sistematică a luării deciziilor și la baza ei stă ideea că adunarea de informații poate fi realizată de către tool-uri automate. În același timp, astfel de tool-uri trebuie să fie contextualizate pentru că un sistem are multe detalii specifice. De aceea e necesar ca inginerii software să poată să construiască astfel de tool-uri in timpul dezvoltării software.
Pentru a face acest lucru practicabil avem nevoie de un nou gen de platforme care să ofere posibilitatea programatorilor de a construi tool-uri contextuale rapid și necostisitor. Aici intervin abilitățile platformei Moose. Prin Moose, noi arătăm că acest lucru este într-adevăr posibil, iar eu susțin că tipul de funcționalități oferite de platformă ar trebui să devină comune în tool-urile de dezvoltare (IDE-uri). Tool-urile sunt necesare, dar nu sunt suficiente. De aceea, Humane Assessment oferă un ghid atât în ceea ce privește tipurile de abilități pe care inginerii ar trebui să le posede, cât și în ceea ce privește modificarea proceselor de dezvoltare. De exemplu, având în vedere faptul că structura sistemului se modifică permanent, este nevoie să se urmărească și ajusteze zilnic arhitectura sistemului. În acest scop Humane Assessment recomandă o ședință zilnică scurtă care să includă doar ingineri și în cadrul căreia se abordează doar probleme care au fost evidențiate printr-o analiză automată dezvoltată în înaintea ședinței.
Mai multe informații despre Humane Assessment se pot găsi la: http://humane-assessment.com
Dacă mâine ar trebui să scrii un articol despre software, care ar fi titlul acestuia ?
[Tudor] Software environmentalism.
Care este perspectiva ta asupra evoluției tehnologiei peste 10 ani și impactul acesteia în viața de zi cu zi a oamenilor?
[Tudor] Tehnologia va avea un rol din ce în ce mai pregnant în viața noastră de zi cu zi. Acesta este o direcție evidentă. Mai puțin evident e ceea ce implică acest lucru.
Viteza cu care producem sisteme noi crește pe zi ce trece. Pe de o parte, acesta e un lucru bun. Pe de alta parte, abilitatea noastră de a ne debarasa de sisteme vechi nu a ținut pasul. Să luam un exemplu: un studiu Gartner arată ca în lume mai există în uz circa 10.000 de sisteme de tip mainframe. Acestea sunt sisteme care pot ajunge chiar mai în vârstă decât majoritatea programatorilor din ziua de astăzi. Aceasta ne arată că software-ul nu e chiar atât de "soft" pe cât am putea crede. Odată creat un sistem, el produce consecințe și dependențe inclusiv la nivel economic și social care îi cimentează poziția și îl face aproape imposibil de "aruncat". Singurele opțiuni rămân "recondiționarea și reciclarea".
Datorita proporției și impactului industriei software, e nevoie să privim producția de sisteme software ca pe o problemă de importanță și dimensiune ecologică. Orice sistem trebuie să fie construit în așa fel încât în viitor să poată fi ușor de dezasamblat. Aceasta e o responsabilitate pe care noi, ca ingineri ai lumii de mâine, trebuie să ne-o însușim.