Sunteți pe pagina 1din 58

Nr. 17 Noiembrie 2013 www.todaysoftmag.ro www.todaysoftmag.

com

TSM
tio a v o Inn
Inte ban m u r Sc

T O D A Y S O F T WA R E MAG A Z I NE
s

amp C d r Richa u c rviu

ject o r p ig b n i n
bell

root$ info IT Days 5-6 December Cluj-Napoca www.itdays.ro - coming soon Venue: TBD Organizator: Today Software Magazine

De la business la analiza de business Gamification Necesitatea modelrii UML n analiza de business Comuniti de practic The Post Classical HTTP Era: Say Hello to Real-Time Web Obinuina ca aliat Instrument de monitorizare reactiva

Moment.js Ct de toxic este codul tu? Recenzia crii Java Concurrency in Practice De la business la analiza de business Comuniti de practic Interviu cu Bogdan Iordache despre How to Web Performance... what now?!

6 Istoria IT-ului Clujean Limbaje i tehnologii la angajare


Marius Mornea

33 The leading engineering team on SharePoint and Project Server worldwide


Ana Oarga

7 Inovarea n IT - Proiect publicprivat pentru dezvoltarea regiunii Cluj


Andrei Kelemen

35 De la business la analiza de business


Ioana Matei

8 A 4-a ediie de mamui Agili s-a ncheiat la Iai!


Adina Grigoroiu, CAPM

37 Gamification
George Platon

10 TYPO3 East Europe 2013


Daniel Homorodean

39 Interviu cu Bogdan Iordache, CEO How to Web


Ovidiu Man

13 Ct de toxic este codul tu?


Cezar Coca

42 The Post Classical HTTP Era: Say Hello to Real-Time Web


Alexandru Ivan

16 Moment.js - O singur librrie JavaScript pentru toate formatele Date/Time


Cristian Galea

45 ReactiveExtensions pentru sisteme bazate pe evenimente


Tma Ionu

19 Necesitatea modelrii UML n analiza de business


Ania Pcurariu

47 Interviu cu Richard Campbell (I)


Attila-Mihaly Balazs

23 Obinuina ca aliat
Cristina Ilinca

49 Performance... what now?!


Mihai erdean

26 Instrument de monitorizare reactiva


Cornel tefanache

51 Recenzie de carte: Java Concurrency in Practice


Silviu Dumitrescu

29 Comuniti de practic
Alexandru Bolboaca i Adrian Bolboac

54 Innovation in Big Projects


Radu Vunvulea

31 Scrumban
Tudor Tric

56 Gogu: Tat i fiu


Simona Bonghez, Ph.D.

editorial

Ovidiu Man, PMP

ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine

una trecut am participat la evenimentul organizat de ctre EBS pe tema Embedded Systems ce a avut loc la Universitatea Tehnic din Cluj-Napoca. Am avut parte de o prezentare interesant a conceptelor de baz i a modului n care se aplic managementul proiectelor n acest domeniu. Prezentrile au fost nregistrate i le vom publica pe canalul de YouTube al revistei: www.youtube.com/todaysoftmag. Continum organizarea evenimentului IT Days chiar dac ieri s-a decis ca Liberty Technology Park, partener n organizarea evenimentului, s nu mai participe. Motivul a fost unul standard i anume divergenele legate de agenda evenimentului. Implicaiile sunt multiple, de la necesitatea gsirii unui nou spaiu pentru eveniment pn la refacerea identitii vizuale a evenimentului ce le aparine. Promitem s ne inem de treab i s revenim n zilele urmtoare cu site-ul online i agenda complet. IT Days se va desfura pe dou scene: Trends & Innovation i Technical Workshops astfel nct la finalul celor dou zile fiecare participant s fie conectat la ultimele trend-uri i tehnologii din zona IT. n aceast ediie a revistei v propunem un numr mare de articole din diverse domenii. ncepem cu cele de analiza business, management i HR: De la business la analiza de business - un prim articol dintr-o serie din acest domeniu; Necesitatea modelrii UML n analiza de business printr-o abordare inedit; Comuniti de practic ce ne nva cum s le construim; Innovation in Big Projects este o abordare interesant a lui Radu Vunvulea, colaborator permanent TSM, care pn acum a scris o serie lung de articole tehnice; Scrumban, concept rezultat din combinarea de Kanban i Scrum. Gamification este dezbtut n Obinuina ca aliat i Gamification. Trecem la articolele tehnice unde descoperim greelile din codul nostru n Ct de toxic este codul tu?, Moment.js despre o librarie JavaScript pentru date/time, Instrument de monitorizare reactiv este un tool dezvoltat intern de ctre 3Pillar Global, The Post Classical HTTP Era: Say Hello to Real-Time Web, o abordare inedit, att tehnic ct i din perspectiva unui utilizator, ReactiveExtensions pentru sisteme bazate pe evenimente i ncheiem cu recenzia crii realizat de Silviu Dumitrescu: Java Concurrency in Practice.

V dorim o lectur plcut !!!

Fondator al Today Software Magazine

Ovidiu Man

nr. 17/Noiembrie | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Lista autorilor Redacia Today Software Magazine
Fondator / Editor n chief: Ovidiu Man ovidiu.matan@todaysoftmag.com Editor (startups i interviuri): Marius Mornea marius.mornea@todaysoftmag.com Graphic designer: Dan Hdru dan.hadarau@todaysoftmag.com
Attila-Mihaly Balazs Alexandru Bolboaca Ania Pcurariu
Business Analyst @ Arobs

alex.bolboaca@mozaicworks.com Agile Coach and Trainer, with a focus on technical practices @Mozaic Works

anita.pacurariu@arobs.com

Radu Vunvulea

Radu.Vunvulea@iquestgroup.com Senior Software Engineer @iQuest

Cristina Ilinca

Cristina.Ilinca@isdc.eu HR Manager si Product Owner @ ISDC

Copyright/Corector: Emilia Toma emilia.toma@todaysoftmag.com Traductor: Roxana Elena roxana.elena@todaysoftmag.com

dify.ltd@gmail.com

Cristian Galea

cgalea@smallfootprint.com Software Developer @Small Footprint

Code Wrangler @ Udacity Trainer @ Tora Trading

Tudor Tric

Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Reviewer: Adrian Lupei adrian.lupei@todaysoftmag.com

tudor.trisca@msg-systems.com Software Developer @ .msg systems Romania

Adrian Bolboaca

adrian.bolboaca@mozaicworks.com Programmer. Organizational and Technical Trainer and Coach @Mozaic Works

Adina Grigoroiu, CAPM adina.grigoroiu@confucius.ro

Andrei Kelemen
Director executiv @ IT Cluster

andrei.kelemen@clujit.ro

Today Software Solutions SRL


str. Plopilor, nr. 75/77 Cluj-Napoca, Cluj, Romania contact@todaysoftmag.com www.todaysoftmag.ro www.facebook.com/todaysoftmag twitter.com/todaysoftmag

Produs de

Trainer i consultant Colors in Projects

Daniel Homorodean

daniel.homorodean@arxia.com Managing Director @ Arxia

George Platon

George.Platon@catalysts.cc Software developer @ Catalyst

Mihai erdean

ISSN 2284 6352

mihai.serdean@evozon.com QA Test Manager Evozon Systems

Ana Oarga

ana.oarga@umt.com HR Specialist @ UMT Software, Cluj-Napoca

Simona Bonghez, Ph.D.

simona.bonghez@confucius.ro Speaker, trainer i consultant n managementul proiectelor, Owner al Colors in Projects

Cezar Coca

cezar.coca@endava.com Senior Design Lead @ Endava Iai

Copyright Today Software Magazine


Reproducerea parial sau total a articolelor din revista Today Software Magazine fr acordul redaciei este strict interzis. www.todaysoftmag.ro www.todaysoftmag.com

Cornel tefanache
Java Technical Lead @3Pillar Global

cornel.stefanache@3pillarglobal.com

Silviu Dumitrescu silviu.dumitrescu@msg-systems. com Consultant Java @ msg systems Romania

Ioana Matei

Ioana.Matei@tss-yonder.com Requirements Analyst @ TSS Yonder

Alexandru Ivan

ivan.alexandru@evoline.ro Software Engineer @ Evoline

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

analize

Istoria IT-ului Clujean Limbaje i tehnologii la angajare


n contextul general al proiectului Timeline (am vorbit de el n numrul 10), m gndeam de curnd s procesez cele aproape 1000 de mail-uri cu alerte de job-uri, din IT-ul local, pe care le am n Inbox. Rezultatul ar trebui s reflecte evoluia n ultimii trei ani a unor indicatori de genul: tehnologii, tipul job-ului, experiena cerut, numr de aplicani, etc. . Aceasta va fi marcat la nceput, sub forma unor grafice simple, iar ulterior, sub forma unei interfee web care s permit filtre bazate pe tehnologie, companie. Zilele trecute am dat peste un efort similar fcut de Ryan Williams, folosind API-ul de cutare al celor de la HackerNews, dar axat strict pe tehnologiile la mod n ofertele de angajare din ultimele luni. Pentru mai multe detalii am s v rog s accesai pagina: http://www.ryan-williams.net/hacker-news-hiring-trends/. n continuare am s prezint o sintez a ultimelor ase luni. Pe fond albastru avem numrul de gsiri a termenului respectiv n anunuri de angajare, cumulat pe ultimele ase luni. Am adunat datele din top 10 per lun, pstrnd toate tehnologiile aprute (unele tehnologii au fost constante, poziiile 1-8, altele au avut doar un vrf de cerere, poziiile 13-17, iar restul au aprut episodic). De menionat dominaia clar a tehnologiilor orientate pe interfee utilizator, prezena unor tehnologii din zona DevOps (AWS, linux, MySQL) sau chiar business (Machine Learning sugereaz o orientare puternic spre utilizator). Pe fond portocaliu avem tehnologiile cu cea mai mare cretere n ultimele luni. Practic sunt tehnologii care nc nu au reuit s acumuleze suficient mas, ct s intre n top10, dar care au creteri puternice. Primele dou reuesc s se pstreze constant n zona de cretere, restul pstreaz o distribuie similar celei din primul tabel (apariii episodice i vrfuri). Spre deosebire de tehnologiile din primul tabel, observm o dominaie clar a celor din zona DevOps i BigData. Pornind de la Chef i Puppet, care ne permit managementul programatic al infrastructurilor hardware, trecnd prin zona cloud cu AWS, Heroku, S3, i pn la o puternic focalizare pe date cu Mongo, ElasticSearch, statistics i Data Sciences, se contureaz un ecosistem n care accentul cade pe procesri intense de date i prezentarea rezultatelor n interfee utilizator web ct mai simple. Pe viitor mi propun s extind aceast perspectiv, de la forma curent, simplificat i cu o puternic orientare pe ofertele de job-uri din Silicon Valley, i s implic alte surse de date la nivel internaional (gen TIOBE index) pentru a contura o imagine global asupra tendinelor tehnologice. Aceast imagine o voi suprapune situaiile locale pentru a vedea posibilele diferene i asemnri. Ca de obicei, v invit pe toi s trimitei feedback i s v implicai n realizarea analizei de pe piaa local.

Marius Mornea

marius.mornea@todaysoftmag.com Inginer interesat i implicat n diverse activiti IT, de la dezvoltare, management, pn la educaie i jurnalistic n cadrul Epistemio, UTCN i TSM

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

business

Inovarea n IT
Proiect public-privat pentru dezvoltarea regiunii Cluj
a nivel regional i naional, Cluj-Napoca este cunoscut prin industria de servicii, n special cea de IT. Pornind de la aceast premiz, precum i de la faptul c la nivel naional, Clujul este n topul exporturilor n zona de tehnologia informaiei, n octombrie 2012 s-a constituit, dup principiul triple helix, Clusterul Cluj IT. La un an dup nfiinare, asociaia a reuit s se remarce pe harta industriei de profil din Romnia ca fiind una dintre cele mai importante iniiative de cretere a competitivitii n domeniu i un semnificativ pol de susinere a inovrii n vederea dezvoltrii durabile a regiunii. Clusterul Cluj IT, care reunete n acest moment 28 de companii de IT din ClujNapoca, trei universiti publice, autoriti publice locale i alte organizaii catalizator, devine la nivel naional un exemplu al cooperri pentru proiecte majore de interes comun i pentru coagularea comunitii n vederea sprijinirii unei dezvoltri bazate pe sustenabilitate. Toate aciunile de pn acum realizate de Cluster, au dinamizat interesul membrilor implicai, dar i a unor noi organizaii (universiti, organizaii catalizator, firme) care au aderat la proiectele iniiale i cele viitoare. Asociaia Cluj IT consolideaz eforturile comune n vederea poziionrii Clujului ca hub regional IT inovator, dovedindu-se astfel a fi un cadru excelent de cooperare ntre factori decizionali din sectorul privat i cel public.

Privind retrospectiv, acest an a fost marcat de extinderea cooperrilor externe i interne, amintim aici cu titlul de exemplu parteneriatele ncheiate cu organizaii internaionale precum: Fundaia Steinbeis, Cluster 55, German Outsourcing Verband i naionale: Asociaia Cluj Napoca Capital Cultural European 2021, Asociaia Capital European de Tineret 2015. Pe parcursul anului trecut, au fost iniiate diverse proiecte comune n comisiile de lucru ale cluster-ului cum ar fi Education/HR, Brand, E-health, Innovation, Cluj Innovation City. n ceea ce privete proiectul Cluj Innovation City, semnalm participarea la Expo Real Mnchen, proiectul atrgnd interesul mai multor investitori i dialogul tot mai strns cu autoritile publice, naionale i locale, n vederea susinerii iniiativei ca proiect de dezvoltare strategic naional. Pentru realizarea activitilor clusterului pe direciile sale prioritare au fost depuse proiecte de finanare nerambursabile, destinate dezvoltarii resurselor umane i destinate dezvoltarea inovrii precum i generrii de produse proprietare de IT.

Andrei Kelemen
Director executiv @ IT Cluster

andrei.kelemen@clujit.ro

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

evenimente

A 4-a ediie de mamui Agili s-a ncheiat la Iai!

n prima zi, participanii au avut ocazia s dezbat, mpreun cu speakeri naionali i internaionali, despre punctele slabe ale abordrii Waterfall, metode care ar trebui aplicate n funcie de proiect, precum i factorii care ne influeneaz n luarea deciziilor n cadrul proiectelor. Ne-au fost alturi 10 speakeri, fiecare mprtind din experiena proprie: De la Denise Vestin am aflat c factorul cheie pentru o afacere agil este adaptarea metodelor de management de proiect n funcie de specificitile fiecrui proiect. Paul Nagy a cuprins n prezentarea sa fapte reale, istorie i metafore precum i unele ipoteze care stau la baza unor presupuneri greite n ceea ce privete dezvoltarea de software. Ne-am amuzat cu toii la auzul afirmaiei lui Paul: dac ne-ar plcea s lucrm n-am cere bani pentru asta. Andrei Postolache ne-a vorbit despre diferite niveluri de estimri, care este diferena dintre o estimare i un angajament. Ne-a explicat, de asemenea, c modul n care cerem i oferim estimri schimb comportamentul echipei, n bine sau n ru. mpreun cu Roxana Leatu am explorat diferite modele de stabilire a preurilor n angajamentele agile i modul n care relaia cu clientul poate fi transformat de ele. ncheiem o tranzacie sau pornim

n perioada 4-5 octombrie, Colors in Projects, n parteneriat cu Arhipelago i Today Software Magazine, au ieit n ntmpinarea ieenilor cu evenimentul ... even mammoths can be Agile, eveniment organizat pentru prima dat n Iai. o relaie cu clientul? a fost invitaia spre reflectare din partea Roxanei. Tudor Pitulac ne-a vorbit despre factorii care determin migrarea managerilor de proiect ntre diferite industrii i forele cu care acetia se intersecteaz de-a lungul acestei cltorii. Metoda Kanban a reprezentat obiectul prezentrii lui Adrian Lupei. El ne-a explicat cum, prin implementarea Kanban-ului n Bitdefender, procesele de lucru au fost mbuntite, vizibilitatea activitii a crescut, iar echipele au nceput s colaboreze mai bine. Dan Berteanu ne-a prezentat dificultatea n care se afl managerul de proiect cnd deciziile pe care trebuie s le ia, au implicaii etice i i pun sistemul de valori la ncercare. Ceea ce va face managerul de proiect n astfel de situaii va influena foarte mult cultura echipei pe care acesta o conduce. ntr-o not similar, Simona Bonghez ne-a explicat cum deciziile reprezint un aspect aparte n domeniul proiectelor, prin consecinele lor asupra evoluiei unui proiect. Am aflat de la Simona care sunt punctele cheie de decizie n timpul ciclului de via al unui proiect, pe ce modele de decizie ne putem baza, dar i care sunt acei factori care influeneaz procesul de luare a deciziilor al unui manager de proiect. George Anghelache i Cristian Cazan ne-au ncntat cu o altfel de prezentare. Imitnd celebrele personaje, Luke Skywalker i Darth Vader, s-au luptat cu sbii laser n provocarea de a transforma galaxia IT conform principiilor Agile. De asemenea, au pus n scen diferite situaii cu care se confrunt un Scrum Master, oferind pentru fiecare dintre acestea soluii pentru mbuntirea comunicrii i a activitilor. Ca un plus fa de evenimentele anterioare, n cadrul acestei ediii ne-am dorit s apelm i la cuntinele participanilor, implicndu-i n trei sesiuni de dezbateri World Caf pe teme diferite. mpreun cu speakerii prezeni la eveniment, au discutat despre Release Planning, introducerea metodei Kanban n organizaii i despre ceea ce definete un Scrum Master bun. A doua zi a avut loc Workshop-ul de pregtire pentru obinerea certificrii PMP/CAPM, workshop susinut de Simona Bonghez. Participanii au aflat care sunt condiiile de eligibilitate pentru obinerea certificrilor PMI (PMP i CAPM), cum se desfoar examenele i care sunt paii ce trebuie urmai n acest proces. De asemenea, s-au discutat cteva dintre conceptele de baz (tips&tricks) necesare pregtirii pentru examinare i au fost prezentate exemple de ntrebri similare celor din examen. Vom reveni cu drag i anul viitor n Iai, am fost ntmpinai de oameni frumoi i calzi, dornici s afle mai multe informaii despre abordrile Agile i s-i mprteasc cunotinele. V invitm s accesai imagini din cadrul evenimentului pe site-ul nostru (http://colorsinprojects.ro/evenimentia%C8%99i-4-5-octombrie-2013) i pe pagina noastra de Facebook! (https://www. facebook.com/pages/Colors-in-Projects/54 7289038620195?ref=hl) V ateptm cu drag la evenimentele noastre din Bucureti, Cluj i Iai anul viitor!
Adina Grigoroiu, CAPM adina.grigoroiu@confucius.ro Trainer i consultant Colors in Projects

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

evenimente

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

evenimente

TYPO3 East Europe 2013


startups
ntr-o lume globalizat i interconectat, am nvat s lucrm cu clieni i cu programatori de pe toate meridianele. O facem pentru c putem i pentru c este oportun. Dar pentru a fi cu adevrat integrai global mai avem de depit un prag cultural: ncrederea c putem - i nelegerea c trebuie - s fim parte integrant, activ, n comunitile care promoveaz inovaia tehnologic i bunele practici n industria noastr. Cultura parteneriatului n Romnia, ca i n majoritatea rilor din Estul Europei, nu are rdcini adnci. Muli dintre noi nutresc o pasiune pentru o anume tehnologie, dar gsim nc puine contexte n care s ne dezvoltm dorina de a da mai mult dincolo de programul zilnic de la serviciu.Dorina de a contribui activ la platforme de care s beneficieze ntreaga lume i chiar dorina de a schimba lumea prin tehnologii i metodologii care aduc valoare adugat proceselor din societatea noastr, la orice nivel, ar putea reprezenta importante impulsuri ale activitii noastre. nc de la nceputul existenei sale, deviza TYPO3 www.typo3.org a fost Inspire people to share. Ca platform CMS Open Source, s-a poziionat de-a lungul anilor ca fiind construit de comunitate, mediu n care oricine este ncurajat s se implice, s contribuie, s ii mprteasc ideile i cunotinele, s dezbat i s caute mpreun soluii pentru a merge mai departe. Sperm ca aceast cultur a comunitii, grupat n jurul unei platforme tehnologice valoroase, s se rspndeasc i s se dezvolte mai departe i n Romnia, iar noi s ne gsim locul pe care competena i pasiunea noastr l merit, alturi de cei asemenea nou, din ntreaga lume. n perioada 14-16 noiembrie, TYPO3 Usergroup Romania organizeaz la Cluj prima conferin international TYPO3 din Centrul i Estul Europei. Sub numele TYPO3 East Europe ( T3EE - www.t3ee.org ) evenimentul va reuni n jur de 100 de specialiti (companii i dezvoltatori) TYPO3 din toat Europa. TYPO3 este o platform Open Source de Content Management (CMS) de nivel ridicat (entreprise level), dezvoltat n PHP. Este platforma preferat pentru dezvoltarea sistemelor CMS n Germania, inclusiv pentru aplicaiile autoritilor publice precum i n mediul universitar, avnd o cota mare de pia i n Olanda, Elvetia, Austria, Canada, n mod special Quebec. Guvernul german sprijin activ, inclusiv prin finanare direct, dezvoltarea platformei, n special n vederea asigurrii accesibilitii aplicaiilor web pentru persoanele cu dizabiliti, conform standardelor stricte existente n Germania, ca i n alte ri din vestul Europei. Cursuri de dezvoltare TYPO3 se predau n multe universiti din Germania, Austria, Danemarca i alte ri europene. Multe dintre acestea au departamente specializate, att pentru predare, ct i pentru dezvoltarea i ntreinerea portalurilor. O serie larg de universiti europene de prestigiu au site-urile dezvoltate n TYPO3, de exemplu: Universitatea Tehnic Berlin (www.tu-berlin.de), Viena (www. univie.ac.at), Aarhus (www.au.dk/en/), Atena (www.uoa.gr),Londra (www.london. ac.uk) i multe altele. TYPO3 este folosit de ctre multe autoriti publice, organizaii internaionale de prestigiu (de exemplu www.unicef. de, eit.europa.eu, www.opcw.org recentul ctigtor al Premiului Nobel pentru Pace, i desigur companii private, precum Lufthansa, Deimler, AirFrance http://corporate.airfrance.com/ , Bayer http://www. bayertechnology.com/ i multe altele. n Romnia, TYPO3 este mai puin cunoscut deocamdat, dar printre implementri sunt de menionat: portaluri de publishing precum Evenimentul Zilei (www.evz.ro), Libertatea (www.libertatea.ro), i mai aproape de noi site-ul Cluj Napoca Capitala Cultural European 2021

Ce este TYPO3 ?

10

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

(www.clujnapoca2021.ro) TYPO3 a crescut urmrind excelena calitii funcionale germane i caracteristici precum flexibilitatea, extensibilitatea i stabilitatea. Mult timp, aceasta putere a venit i cu dezavantajul relativ al dificultii de a nva i stpni o asemenea complexitate. Reacia comunitii a fost clar era nevoie de o revoluie tehnologic, o construcie care s aduc uurina de utilizare i paradigmele programatice moderne alturi de conceptele funcionale cu care TYPO3 i-a cucerit un loc de frunte ca soluie excelent pentru aplicaii CMS complexe. Aceast revoluie se ntmpl acum, prin Flow - un application framework PHP dezvoltat de aceeai comunitate TYPO3, i Neos - primul CMS creat folosind Flow i experiena n enterprise level CMS adunat n anii de dezvoltare a TYPO3. Ageniile web romneti au nceput s foloseasc TYPO3 din 2005, att pentru proiecte implementate n Romnia ct mai ales pentru proiecte realizate n outsourcing pentru piaa vestic. Dintre toate rile din estul Europei, dar i din sud i centru, exceptnd Austria, Romnia are cel mai mare numar de dezvoltatori TYPO3, angrenai ntr-o comunitate activ, care organizeaz ntruniri anuale nc din 2010. Transilvania i n particular Clujul este polul dezvoltrii TYPO3 n Romnia. Romnii i n special clujenii particip activ la evenimentele comunitii internaionale - Conferences, Developer Days, International Camps chiar ca sponsori la unele dintre aceste evenimente. Nivelul dorinei i capacitii de

implicare a dezvoltatorilor romni n comunitatea global T YPO3 crete constant,remarcndu-se n ultimul timp tot mai multe contribuii publicate precum i bug-uri rezolvate. De exemplu, la Cluj se organizeaz n fiecare lun cte un Bug Day, n care ne adunm, rezolvm mpreun bug-uri raportate de comunitate, schimbm informaii i experiene i discutm despre tendinele n evoluia platformei).

dezvoltarea proiectelor web, dezvoltarea comunitilor open source, strategii de intrare i cretere n pia pentru platforme open source, sau studii de caz pentru proiecte speciale.

TYPO3 n Romnia

n perioada 14-16 noiembrie va avea loc la Cluj, conferina T3EE www.t3ee. org , avnd ca scop dezvoltarea legturilor n comunitatea TYPO3 internaional, promovarea culturii de colaborare, a comunitilor tehnologice, a Open Source i a bunelor practici n dezvoltarea software. Pentru prima oar, programatorii TYPO3 din vest ( Germania, Olanda, Suedia ... ) i din est ( Romnia, Polonia, Estonia ... ) se vor ntlni i i vor mprti experienele, iar companiile prezente vor putea pune bazele unor noi colaborri. Urmrim s mprtim idei i s nvm att pe linia tehnologic, dar i despre cum crete i se dezvolt o comunitate tehnologic, cum se organizeaz comunitatea i cum poate fiecare s se implice, s devin contribuitor activ. n 15 i 16 noiembrie, T3EE se va desfura ntr-un format de conferin, cu prezentri pregtite i dezbateri, pe subiecte tehnice specifice TYPO3 dar i pe subiecte generale, despre metodologii de gestiune i dezvoltare a proiectelor web (Scrum, Kanban, BDD, etc.), bunele practici n

TYPO3 East Europe T3EE, prima conferin internaional TYPO3 din Centrul i Estul Europei

Universitatea Tehnic din Cluj-Napoca i Universitatea Babe - Bolyai sunt parteneri ai T3EE. mpreun organizm n ziua de 14 noiembrie o sesiune deschis de prezentri, susinute de invitaii notri din strintate, dar i de romni, pe subiecte precum: Accesibilitatea Web, Construcia i consolidarea comunitilor tehnologice n special Open Source, Introducere n TYPO3. n aceeai dat de 14 Noiembrie, alturi de universitile clujene i reprezentani ai unor universiti din vest, vom susine un workshop pe tema organizrii i optimizrii proceselor de dezvoltare i mentenan a proiectelor web dezvoltate n cadrul universitilor. ntregul eveniment este posibil datorit muncii i colaborrii din cadrul TYPO3 Usergroup Romania, precum i a sponsorilor. n calitate de gold sponsors i avem pe germanii de la DKD http://www.dkd.de/ , JWeiland (jweiland.net ), romnii Arxia www.arxia.com i PWO http://www.pwo. ro/ i Asociaia Internaional TYPO3 ( association.typo3.org )

14 Noiembrie ziua comunitii i a universitilor

Daniel Homorodean

daniel.homorodean@arxia.com Managing Director @ Arxia

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

11

comuniti

Comuniti IT

e ateapt luna noiembrie cu multe evenimente locale n Cluj. V invitm s participai la ct mai multe dintre acestea iar recomandarea lunii este pentru How To Web care nu mai are nevoie de prezentare. Dac suntei curioi s aflai mai multe despre acesta, v recomandm interviul lui Bogdan Iordache pentru cititorii revistei Today Software Magazine.

Transylvania Java User Group Comunitate dedicat tehnologiilor Java. Website: www.transylvania-jug.org Data nfiinrii: 15.05.2008 / Nr. Membri: 550 / Nr. Evenimente: 43 Comunitatea TSM Comunitate construit n jurul revistei Today Software Magazine. Website: www.facebook.com/todaysoftmag Data nfiinrii: 06.02.2012 / Nr. Membri: 964 / Nr. Evenimente: 14 Romanian Testing Community Comunitate dedicata testerilor. Website: www.romaniatesting.ro Data nfiinrii: 10.05.2011 / Nr. Membri: 672 / Nr. Evenimente: 2 GeekMeet Romnia Comunitate dedicat tehnologiilor web. Website: geekmeet.ro Data nfiinrii: 10.06.2006 / Nr. Membri: 567 / Nr. Evenimente: 17 Cluj.rb Comunitate dedicat tehnologiilor Ruby. Website: www.meetup.com/cluj-rb Data nfiinrii: 25.08.2010 / Nr. Membri: 151 / Nr. Evenimente: 36 The Cluj Napoca Agile Software Meetup Group Comunitate dedicat metodelor Agile de dezvoltare software. Website: www.agileworks.ro Data nfiinrii: 04.10.2010 / Nr. Membri: 330 / Nr. Evenimente: 40 Cluj Semantic WEB Meetup Comunitate dedicat tehnologiilor semantice. Website: www.meetup.com/Cluj-Semantic-WEB Data nfiinrii: 08.05.2010 / Nr. Membri: 152/ Nr. Evenimente: 23 Romanian Association for Better Software Comunitate dedicat oamenilor cu experien din IT indiferent de tehnologie sau specializare. Website: www.rabs.ro Data nfiinrii: 10.02.2011 / Nr. Membri: 230/ Nr. Evenimente: 14 Tabra de testare Un proiect care i dorete s strng ct mai muli oameni care lucreaz ca i testeri. Website: tabaradetestare.ro Data nfiinrii: 15.01.2012 / Nr. Membri: 356/ Nr. Evenimente: 20

Calendar
Noiembrie 7 (Cluj) Lansarea numrului 17 al Today Software Magazine www.todaysoftmag.ro Noiembrie 9 (Cluj) Autumn .NET Advanced Workshops Workshop 1: Entity Framework & LINQ it-events.ro/events/autumn-net-advanced-workshops-workshop-1-entity-framework-linq/ Noiembrie 12 (Cluj) BA Cluj Community event w w w. m e e t u p . c o m / B u s i n e s s - A n a l y s t s - C l u j / events/148233602/ Noiembrie 12 (Cluj) OntoWiki - support for agile, distributed knowledge engineering scenarios www.meetup.com/Cluj-Semantic-WEB/events/143379032/ Noiembrie 14 (Cluj) #defineCluj 2013 definecluj.ro Noiembrie 14-16 (Cluj) TYPO3 East Europe 2013 www.t3ee.org Noiembrie 20-21 (Bucureti) How to Web 2013 - recomandarea TSM http://it-events.ro/events/bucharest-java-user-group-17/ Noiembrie 21 (Cluj) Lets meet up and ...Project Management - PMI w w w. m e e t u p. c o m / P M I - R o m a n i a - C l u j Napoca-Project-Management-Meetup-Group/ events/148127302/ Noiembrie 21 (Cluj) Mobile Operating Systems Conference MobOS 2013 it-events.ro/events/mobile-operating-systems-conferencemobos-2013/ Noiembrie 22 (Cluj) Mobile Monday Cluj w w w. m e e t u p . c o m / C l u j - M o b i l e - D e v e l o p e r s / events/144127302/

12

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Ct de toxic este codul tu?

n cadrul acestui articol mi doresc s v ofer o perspectiv asupra calitii codului surs i asupra influenei majore pe care o are aceasta n valoarea final a costului de realizare i mentenan a sistemelor software. n continuare a dori s v prezint avantajele folosirii unei platforme de management a calitii n procesul de Continuous Integration i s v art cum pot fi folosite metricile rezultate n urma analizei statice a codului pentru detectarea zonelor din sistem cu impact negativ major n mentenana acestuia.
Cezar Coca
cezar.coca@endava.com Senior Design Lead @ Endava Iai

De ce calitatatea codului este important? n primul rnd, este important din considerente economice. Pentru calculul costului total al unei aplicatii software se poate aplica urmtoarea formul [Bek071]:
cost_total= cost_develop+ cost_maintain

Motivaie

unde costul de mentenan este compus din:


cost_maintain= cost_understand+ cost_change+ cost_test+ cost_deploy

Deoarece statistic s-a constat c ponderea costului de mentenan o depete cu mult pe cea a costului de dezvoltare (Fig. 1), devine evident faptul c monitorizarea calitii codului n vederea diminurii costurilor de mentenan reprezint un factor cheie n realizarea unui sistem software durabil.

Deloc surprinztor, n ultimii ani, se poate observa o cretere a interesului clienilor n ceea ce priveste evaluarea codului surs din punctul de vedere al deficienelor de
1 h t t p : / / w w w . a m a z o n . c o m / Implementation-Patterns-Kent-Beck/dp/0321413091

Cum putem evalua calitatea unui sistem software?

proiectare i implementare2. Ca o consecin fireasc, oferta de instrumente software de analiz static a codului este extrem de variat. Aceste instrumente acoper o plaj larg de aspecte, pornind de la respectarea conveniilor de scriere a codului (Checkstyle3, Stylecop4), respectarea celor mai bune practici de scriere a codului (PMD5, FxCop6) sau depistarea potenialelor bug-uri (FindBugs7, Gendarme8) pn la identificarea deficienelor de proiectare (inCode 9), depistarea codului duplicat sau evidenierea zonelor insuficient testate i a codului excesiv de complex. n acest ecosistem att de vast, un loc aparte l are platforma de management a calitii dezvoltat de de compania SonarSource10 datorit urmtoarelor atuuri: Suport pentru mai mult de 20 de limbaje de programare (Java, C#, C/C++, PL/ SQL, Cobol, ABAP) Ofer un punct central de vizualizare a calitii prin monitorizarea urmtoarelor aspecte:
2 http://en.wikipedia.org/wiki/Technical_debt 3 http://checkstyle.sourceforge.net/ 4 https://stylecop.codeplex.com/ 5 http://pmd.sourceforge.net/ 6 h t t p : / / m s d n . m i c r o s o f t . c o m / e n - u s / l i b r a r y / bb429476(v=vs.80).aspx 7 http://findbugs.sourceforge.net/ 8 http://www.mono-project.com/Gendarme 9 http://www.intooitus.com/products/incode 10 http://www.sonarqube.org/

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

13

programare
Ct de toxic este codul tau?
respectarea standardelor i urmrirea celor mai bune practici n implementare, eliminarea vulnerabilitilor, documentarea codului, eliminarea codului duplicat, reducerea complexittii, testarea, calitatea proiectrii. Salvarea rezultatelor analizei n baza de date pentru utilizarea ulterioar n evaluarea evoluiei proiectului din punct de vedere calitativ; Integrare foarte bun n procesul de Continuous Integration11 permind astfel depistarea imediat a carenelor de calitate i remedierea lor cu efort minim; Suport pentru code review, integrare bun cu serverele de SCM 12 i navigare uoar de la deficiena detectat la codul surs aferent; Este un proiect Open Source cu o comunitate extrem de activ; Datorit arhitecturii flexibile, extinderea platformei se face foarte uor prin mecanismul de plugin13.

Figura 1

metricilor n scopul evaluarii codului strict Ce se poate face? Care sunt zonele din prodin punctul de vedere al mentenanei. iect care trebuie rescrise/modificate mai nti? Care sunt principalele deficiene de proiectare? Pe scurt, cum se poate mbuIdenticarea metricilor i integrarea cu nti mentenana sistemului? O soluie Sonar Practica a artat c proiectele vechi foarte interesant i pragmatic am gsit(brownfield14) sunt mai dificil de gestionat o descris n articolul How toxic is your dect cele noi (greenfield) datorit gamei code15? scris de Erik Drnenburg. O scurt mult mai variate de probleme ce trebuie descriere a acestei tehnici de vizualizare adresate. Desigur sunt i excepii, dar n este prezentat in continuare. multe cazuri, rezultatele obinute n urma n prim faz au fost identificate n continuarea acestui articol v voi unei analize de calitate pot fi terifiante. metricile care semnaleaz deficienele de prezenta un studiu de caz despre cum Printre cauzele principale menionm: implementare cu impact major n menteputem extinde platforma Sonar prin ad- gradul ridicat de complexitate al proiec- nana codului (Fig. 2). ugarea unui nou mecanism de agregare a tului, modificarea componenei echipei. Lista de mai jos cuprinde o scurt descriere a metricilor alese, evideniind elementele care influeneaz n mod direct mentenabilitatea codului: Long method dac o method este prea lung atunci ea devine dificil de neles, de modificat i de extins. Long class aceast metric poate semnala clasele a cror funcionalitate complex necesit un efort de testare considerabil sau clsele care nu sunt reutilizabile i foarte probabil conin cod duplicat. n cazurile extreme clasele mari pot prezenta deficiena de proiectare cunoscut sub numele God Object16. Cyclomatic Complexity o funcie complex este greu de neles i de testat. Parameter Number dac numrul de parametri folosii n semntura unei metode depeste capacitatea memoriei pe termen scurt, atunci metoda devine dificil de neles i probabilitatea introducerii de defecte funcionale este crescut. Boolean Expression Complexity aceste expresii sunt dificil de testat ide neles. Nested If Depth blocurile de tip if Figura 2 imbricate conduc la cod greu de testat i 11 h t t p : / / e n . w i k i p e d i a . o r g / w i k i /
Continuous_integration 12 h t t p : / / e n . w i k i p e d i a . o r g / w i k i / Source_Control_Management 13 http://en.wikipedia.org/wiki/Plug-in_(computing) 14 h t t p : / / e n . w i k i p e d i a . o r g / w i k i / Brownfield_(software_development) 15 h t t p : / / e r i k . d o e r n e n b u r g . c o m / 2 0 0 8 / 1 1 / how-toxic-is-your-code/ 16 http://en.wikipedia.org/wiki/God_object

14

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


major gradul de reutilizare, mentenana i efortul necesar pentru testarea acesteia. Anon Inner Length dac o clas de acest tip este prea mare atunci afecteaz negativ uurina de a nelege funcionalitatea metodei n care aceasta a fost definit i testarea acesteia. Pasul urmtor a constat n gruparea acestor metrici pe unitate de cod software (clas, metod), calcularea unui scor de toxicitate total i reprezentarea lor ntr-un Stackbar Chart (Fig. 3). Scorul de toxicitate se calculeaz ca raportul dintre valoarea obinut n urma analizei unitii de cod software i valoarea maxim acceptat pentru metrica respectiv. De exemplu dac metrica Method Length are valoarea maxim de 30 i o clas conine 3 metode, una de 25 de linii, a doua de 45 de linii si ultima de 60 de linii, atunci scorul total de toxicitate este 25/30 + 45/30 + 60/30 = 0 + 1.5 + 2 = 3.5 puncte. Ideea scrierii unui plugin pentru Sonar care s implementeze aceast tehnic de vizualizare a venit firesc, datorit anumitor limitri ale soluiei descrise mai sus Colectarea metricilor se face manual. Agregarea msurtorilor se face folosind aplicaia Excel i un macro specific. Integrarea efectiv cu platforma Sonar a fost fcut prin extinderea interfaei Decorator definit de Sonar SPI17, mpa17 h t t p : / / e n . w i k i p e d i a . o r g / w i k i / Service_provider_interface

chetarea implementrii ntr-un plugin Sonar i copierea acestuia n directorul plugins al serverului Sonar. Includerea analizei statice a codului n procesul de Continuous Integration18, monitorizarea rezultatelor obinute pentru metricile de interes i compararea acestora cu valorile standard din industrie [LM0619] ne poate ajuta n combaterea efectului de acumulare a deficienelor de implementare i proiectare. Code review-ul manual este n continuare un pas absolut necesar, deoarece nimic nu se compar cu experiena i intuiia uman, dar timpii dedicai acestui proces pot fi semnificativ diminuai. De asemenea, pentru identificarea i prioritizarea claselor care au acumulat carene tehnice, folosirea metodelor de agregare a metricilor precum Toxicity Chart, reprezint o abordare pragmatic i eficient.

Concluzii

Figura 3

de neles. Nested Try Depth conduc la acelai tip de probleme ca in cazul Nested If Depth. Missing Switch Default aceast metric semnaleaz un potenial defect. Dac n urma procesului de mentenan, se creeaz contexul necesar pentru ca programul s execute logica care ar fi trebuit s fie implementat pe ramura de switch default, atunci efectele sunt impredictibile. Class Fan Out Complexity valoarea acestei metrici msoar gradul de cuplare a clasei evaluate. Are impact direct asupra efortului necesar pentru mentenana clasei (cel puin rdcina ptrat din aceast valoare). Class Data Abstraction Coupling aceast metric msoar numrul de instane ale altor clase declarate ca date membre n clasa analizat i influeneaz

Referine
[Bek07] Beck, Kent. Implementation Patterns -Pearson Education, Inc, 2008 [LM06] M. Lanza and R. Marinescu. ObjectOriented Metrics in Practice - Springer-Verlag, 2006. Toxicity Chart Plugin - http://docs.codehaus.org/ display/SONAR/Toxicity+Chart+Plugin How toxic is your code? - http://erik.doernenburg. com/2008/11/how-toxic-is-your-code/

18 h t t p : / / e n . w i k i p e d i a . o r g / w i k i / Continuous_integration 19 h t t p : / / w w w . a m a z o n . c o m / O b j e c t Oriented-Metrics-Practice-S oftware-Characterize/ dp/3540244298

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

15

programare

programare

Moment.js
O singur librrie JavaScript pentru toate formatele Date/Time

Cristian Galea

cgalea@smallfootprint.com Software Developer @Small Footprint

Orice dezvoltator de software s-a confruntat la un moment dat cu problema operrii cu valori de tip date/time. Acestea ddeau mereu bti de cap cnd venea vorba de a fi folosite n efectuarea unor calcule relativ complexe, de suportat mai multe fusuri orare i formate ce difereau de la o zon la alta. Nu ajut nici faptul c pe lng diferenele de format create de oameni din regiuni diferite de pe glob, fiecare limbaj de programare i sistem de gestiune a bazelor de date ofer o implementare diferit cnd vine vorba de lucrul cu valori de tip date/time, singurul punct comun fiind celebra dat la care a nceput epoca Unix (1 Ianuarie 1970 12:00 AM). n ultimii ani ne gsim mereu n postura n care trebuie s citim i s manipulm aceste valori folosind javascript, limbaj care nu are chiar o implementare exemplar cnd vine vorba de aa ceva. Aici intervine o librrie gen moment.js. Dei ocup (n format minifiat) doar 8.8 kb aceast librrie ofer o suit foarte vast de funcionaliti.

oment.js este o librrie javascript creat cu scopul de a facilita parsarea, validarea, manipularea i formatarea datelor. expunndu-i n acelai timp prototype-ul prin moment.fn pentru cei care doresc s adauge funcii noi. Pentru a crea o dat n moment este necesar un simplu apel moment(String); Dac String nu este pasat, sunt returnate data i timpul curent. Valoarea pasat poate fi un ir de caractere n aproape orice format de pe glob, iar pentru a asigura c este parsat corect, se poate pasa ca parametru i formatul n care valoarea este dat. Acest constructor mai poate primi ca parametru i un obiect de tip Date nativ in javasript, un obiect de tip anonim i chiar i iruri de ntregi reprezentnd diferitele componente sau Unix offset-ul n milisecunde. De asemenea, moment.js trateaz i cazul special al datelor primite n format JSON din ASP. NET.
moment(/Date(1198908717056-0700)/); // December 28 2007 10:11 PM moment(2010 November 29, YYYY MMM DD); moment(2010-10-20 4:30 +2000, YYYY-MM-DD HH:mm Z)//parseaz i timezone-ul

Pentru a asigura uniformizarea la parsare, moment.js expunde i metoda moment.utc() ce parseaz i manipuleaz datele n UTC. De asemenea, n ultimele Parsarea i validarea Moment.js este implementat ca un versiuni s-a adugat metoda parseZone wrapper peste obiectul Date din javascript, care ine cont de informaiile despre fusul

16

nr. 17/Noiembrie | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


orar din stringul parsat i expune i metoda zone() pentru a-l afia sau seta. O adiie interesant este opiunea de a pasa ca parametri doar anumite componente ale date/time-ului, restul fiind setate la valorile curente. n momentul n care este creat, data este automat trecut prin filtrele de validare, inndu-se cont inclusiv dac este vorba despre un an bisect sau nu. Pentru a verifica dac a fost validate, se poate folosi metoda isValid() ce returneaz o valoare boolean, i pentru a afla mai multe informaii despre ce nu a mers bine la validare se poate folosi metoda invalidAt() ce returneaz valori ntre 0 si 6 reprezentnd care dintre componente (descresctor de la an la milisecund) a fost invalid. Din start putem realiza c folosind un astfel de mecanism se pot genera foarte uor mesaje de eroare specifice.
var elem = [year,month,day, hour, minutes, seconds, milliseconds]; var mom = moment(2011-10-10 25:30); if(mom.isValid()){ writeResult(date is valid); }else{ writeResult(invalid value for + elem[mom.invalidAt()]); }

Moment.js ofer getter-i i setter-i pentru fiecare component (an, lun, zi etc.) i pe lng acestea i metode de a returna numrul de ordine al zilei n sptmna respectiv, funcia putnd primi ca parametru i un ntreg negativ. De exemplu moment.day(-7) returneaz duminica trecut. De asemenea, exist i metode ce in cont de faptul c n unele situaii duminica e afiat ca fiind prima zi a sptmnii (prin metoda moment.weekday) dar i de standardul ISO (prin metoda moment.isoWeekday). Alte metode ce merit menionate sunt DayOfYear, WeekOfYear etc. Pentru calculul cu valori de tip date/time moment.js vine cu o serie de metode precum add(c, u), substract(c,u), startOf(u), endOf(u), max(), min() unde c este un ntreg reprezentnd cantitatea iar u este un string ce reprezint unitatea (week day, year etc.). De asemenea, pentru calculul intervalelor de timp exist funciile diff(moment), from(moment) i fromNow(moment) iar pentru compararea uoar isSame(), isAfter(), isBefore(), isLeapYear(). Se poate observa uurina cu care se pot calcula asftel lucruri precum cte zile i ore au trecut de la un anumit moment?, acum ct timp a fost postat un comentariu? , ct mai dureaza pn la momentul cutare i chiar ce zi a sptmnii era cnd m-am nscut?. Afiarea rezultatelor acestor calcule se face foarte uor.
var mom1 = moment(10/22/2013 var mom2 = moment(10/22/2013 var mom3 = moment(10/21/2013 writeResult(mom2.from(mom1)); writeResult(mom3.from(mom1)); writeResult(mom2.from(mom3)); writeResult(mom1.from(mom2)); 16:00); 15:30); 10:00); //30 minutes ago //a day ago //in a day //in 30 minutes

Manipularea datelor

Moment.js ofer suport excelent pentru afiarea datelor n orice format dorit, folosind funcia moment.format() mpreun cu o serie de simboluri predefinite ce reprezint diferite componente n mai multe reprezentri. Asfel combinndu-le se poate obine orice format dorit. De asemenea, sunt oferite i posibiliti de afiare a datei i orei sau intervalului de timp ntr-o manier mai lizibil ca de exemplu Saturday, December 1 1990 sau 15 minutes 13 seconds ago. Trebuie luat n calcul i componenta pentru internaionalizare oferit de moment.js folosind funcia lang(name, obj) unde name este numele limbii ce dorim s o inserm iar obj este un obiect

Aare, formatare i internaionalizare

coninnd cuvintele folosite n afiare. Pentru a schimba metoda de afiare, apelm doar moment.lang(name). Astfel putem vedea ce uor putem afisa pentru clientii vorbitori de limb englez data Saturday, December 1 1990 12:00 AM, pentru cei din Germania Samstag, 1. Dezember 1990 0:00 Uhr iar pentru cei din Rusia 1 1990 ., 00:00. Aceast component vine mpreun cu opiunea de a aduga limbi i formate personalizate. De exemplu exist o extensie pentru moment.js ce adaug formatul folosit de twitter (5 hour, 6d).

Librria moment.js este o librrie distribuit gratuit sub licen MIT. Astfel oricine poate s o extind i s i adauge funcionaliti mai mult sau mai puin convenionale. Pe lng afiarea n diverse limbi au aprut i o serie de extensii precum formatul Twitter, formatul ISO Calendar, o extensie pentru manipularea mai bun a intervalelor i chiar i extensii ce ofer suport pentru formatul MSDate sau calendarul Jalaai folosit n orient n zona Persiei. Creatorii moment.js au creat o extensie numit moment timezone pentru a face uoar conversia dintr-un fus orar n
www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

Extinderea librriei moment.js

17

programare
Moment.js - O singur librrie JavaScript pentru toate formatele Date/Time
altul. Astfel pentru a converti momentul dat n fusul orar al Los Angelesului folosim doar moment(Data).tz(America/ Los_Angeles); . Pentru a demonstra ct de rapid se poate s extinzi moment.js am creat o extensie pentru un format propriu ce parseaz data n formatul folosit n Romnia i o poate afia n dou formate n limba romn.
moment.fn.myFormatDisplay = function(){ var mom = this; var months = [Ianuarie, Februarie ,Martie,Aprilie,Mai,Iunie,Iulie,Aug ust,Septembrie, Octombrie,Noiembrie, Decembrie]; return this.date() + + months[this.month()] + + this.year(); } moment.fn.myFormatDisplayLong = function(){ var mom = this; var months = [Ianuarie, Februarie, Martie,Aprilie,Mai,Iunie,Iulie ,August,Septembrie,Octombrie,Noiembrie, Decembrie]; return this.date() == 1 ? Ziua + this.date() + -a din luna + months[this. month()] + a anului + this.year() : Ziua a + this.date() + -a din luna + months[this.month()] + a anului + this. year(); } } return moment(str, D/MM/YYYY);

va afia October 23 2013 12:30 PM. n u r m a ap e lu lu i s e vor af i a Aceast funcionalitate este foarte puternic deoarece astfel se pot implementa urmtoarele: mecanisme de extragere a datelor din texte scrise in orice limb. Exemplele de Concluzii Librria moment.js a ajuns la un nivel genul dovedesc faptul c atta timp ct se de maturitate la care poate fi folosit n cunoate formatul n care sunt scrise data si singura n orice proiect. n cei 8.8 kb timpul, moment.js poate sa parseze aproape nglobeaz o serie de funcionaliti care orice format scris n orice limb. Am folosit cu succes aceast librarie n uureaz foarte mult munca dezvoltatorilor de produse software cnd trebuie s mani- mai multe proiecte enterprise si o recomand puleze date i s suporte internaionalizare tuturor, fiind de prere c are potenialul mpreun cu formatele i cuvintele spe- s fac pentru manipularea valorilor date/ cifice. Aceasta se afl ntr-un stadiu de time ce a fcut jquery pentru manipularea continu dezvoltare, fiind adugate opiuni DOM-ului. noi la fiecare versiune i asigurndu-i compatibilitatea cu alte tehnologii precum Node.js, Bower sau Require.js. O funcionalitate nou introdus n versiunea 2.0.0 este c formatele de afiare folosind cuvinte n diferite limbi sunt i parsabile dac se parseaz ca parametru i numele limbii, astfel putnd extrage datele direct din texte scrise n diverse limbi. De exemplu:
moment(23 2013 ., 12:30,DD MMM YYYY., HH:mm, ru).lang(en).format(LLL); writeResult(fromOtherLanguage);

moment.fn.myFormatParse = function (str) {

18

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

arhitectur

Necesitatea modelrii UML n analiza de business

Ania Pcurariu
Business Analyst @ Arobs

anita.pacurariu@arobs.com

provocare foarte des ntlnit n cariera unui analist de business care opereaz n domeniul IT const n modelarea scenariilor de utilizare, a proceselor, a domeniului i a interaciunilor dintre procese, sisteme sau actori, n proiectele pe care acesta i desfoar activitatea. De multe ori, exprimarea textual a cerinelor funcionale, chiar dac este structurat corect sub form de epic-uri sau user story-uri, nu este suficient pentru a nelege n ansamblu o anumit funcionalitate sau proces de business. Cu att mai puin devin vizibile lacunele funcionale, blocajele, comunicrile defectuoase sau redundante, dependinele sau chiar posibilitile de optimizare. n aceste situaii, modelarea cerinelor funcionale devine esenial att pentru sponsorii, deintorii sau beneficiarii produsului, pentru analitii de business ct i pentru echipa de livrare. Unul dintre cele mai cunoscute i accesibile standarde pentru modelare este UML (Unified Modeling Language), care pune la dispoziie, n special pentru partea de analiz, diagrame de utilizare, de activitate, de clase i de secven. Aceste diagrame pot fi create cu ajutorul utilitarelor precum MS Visio, Enterprise Architect sau Star UML - dac se dorete o variant gratuit. n cazul sistemelor software deja existente, o analiz de business eficient i corect ntreprins poate evidenia posibile lacune n funcionalitate, funcionaliti duplicate, redundane sau blocaje i de aceea, prin modelarea procesului sau a funcionalitii respective, se pot crea business case-uri valide pentru solicitarea de mbuntiri sau schimbri funcionale. Totodat, pentru sistemele software existente care necesit extinderi sau integrri, este necesar ca funcionalitile deja implementate s fie clar i corect modelate, pentru a putea avea un punct de pornire avantajos n ceea ce privete definirea cerinelor funcionale viitoare sau a integrrii cu sisteme interne i/sau externe. Business case-urile realizate trebuie nsoite de argumente solide referitoare la problemele descoperite n forma actual a sistemului i la mbuntirile aduse de forma propus forme ntlnite n limbajul de specialitate ca as-is system i to-be system. Este cunoscut faptul c disponibilitatea clienilor este mereu limitat i de aceea, business caseurile trebuie prezentate ntr-o manier att intuitiv ct i eficient n ceea ce privete timpul alocat parcurgerii i evalurii lor. n cazul sistemelor noi, aflate n faza de aliniere sau de definire, analiza de business nsoit de modelarea proceselor poate preveni problemele menionate mai sus i poate aciona n vederea reducerii costurilor asociate cu dezvoltarea i testarea, creterii performanei aplicaiei, creterii nivelului de satisfacie a membrilor echipei alocate pentru dezvoltare i testare, eficientizrii etapei de mentenan i suport. Beneficiarii i/sau sponsorii produsului vor avea o imagine de ansamblu mai bun asupra funcionalitilor existente i a cerinelor funcionale solicitate i vor evita

Avantajele modelrii UML

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

19

arhitectur
Necesitatea modelrii UML n analiza de business
confuziile i folosirea termenilor tehnici specifici domeniului IT pe care de multe ori nu i cunosc sau nu i neleg n totalitate. Totodat le va fi mai simplu s monitorizeze i s evalueze dac ceea ce se livreaz este ceea ce ei i-au dorit. Echipa de livrare - cu referire aici att la programatori ct i la testeri - va primi o specificaie funcional clar, modelat ntr-un limbaj universal i inteligibil, fr ambiguitile i interpretrile survenite n urma exprimrilor preponderent textuale. Alte avantaje ale modelrii UML sunt: creterea ncrederii n produs att a sponsorilor ct i a utilizatorilor finali, reducerea intervalelor de nvare a produsului pentru membrii noi care se altur echipelor, facilitarea i eficientizarea comunicrii att cu echipele tehnice ct i cu clienii. n cele ce urmeaz, voi prezenta fiecare dintre cele patru diagrame propuse la nceputul acestui articol pentru a evidenia beneficiile care pot fi obinute prin realizarea lor. Diagrama de utilizare este cea mai intuitiv form de prezentare a funcionalitilor oferite de un sistem, clasificate n funcie de actorii care le ntreprind. De exemplu, putem vorbi aici despre activiti desfurate de diferite persoane cu diferite roluri (administrator, utilizator, student, etc) sau de alte sisteme. Diagrama de utilizare face parte din categoria diagramelor comportamentale i prezint funcionalitile sistemului din perspectiva unui utilizator. De regul, este indicat s realizm astfel de diagrame nc de la nceputul proiectului iar pe msur ce proiectul evolueaz, tot mai multe scenarii de utilizare pot aprea. Pentru a realiza o astfel de diagram, mai nti stabilim contextul de operare al aplicaiei (care poate fi un sistem, un modul, etc), apoi identificm actorii care utilizeaz respectivul sistem iar n final, asociem fiecare scenariu de utilizare cu actorul corespunztor. Un actor poate avea mai multe scenarii de utilizare iar un scenariu poate fi utilizat de mai muli actori. acestea constituie detalii de implementare, nefiind responsabilitatea analistului de business), apoi relaiile dintre aceste entiti precum i ordinul de multiplicitate al relaiei. Putem vorbi aici Diagrame de activitate Diagrama de activitate este tot un tip de diagram compor- despre relaii de motenire, de compoziie, de dependen, de asotamental i este necesar n momentul n care avem de modelat ciere, de agregare, iar ca ordine de multiplicitate putem avea *-*; procese operaionale sau de business formate din stagii succesive, 1-*, n-n, *-m, 0..1-* etc. Diagrama de clase este de uz limitat pentru analistul de busiunde putem ntlni blocuri de decizie sau bifurcaii. Urmrind procesul putem observa tranziiile dintre activiti, activitile ness, ns este necesar pentru a explicita din punct de vedere recurente, activitile repetitive, blocajele, rutele mai scurte sau funcional entitile i relaiile dintre ele ntr-o manier mult mai clar dect s-ar putea face verbal sau textual. rutele alternative, etc. Pentru a realiza o astfel de diagram, mai nti trebuie s identificm setul de activiti realizate de sistem, blocurile de decizie, Diagrame de secven activitile care se desfoar n paralel, activitile care duc la aceDiagrama de secven este util n momentul n care avem eai stare, eventualele bucle i dependine. Apoi, vom plasa ntre de identificat din punct de vedere funcional interaciunile dinun punct de start i unul de stop, fiecare activitate identificat mai tre procese, sisteme sau roluri i ordinea n care aceste entiti sus i o vom relaiona cu celelalte utiliznd conectorii. Se pot crea interacioneaz. Diagramele de secven mai sunt cunoscute i i diagrame de activiti cu swimlane-uri, n care se pot evidenia sub numele de diagrame de evenimente i fac parte din categoria activitile efectuate de fiecare rol implicat n proces. diagramelor comportamentale, de interaciune. Pentru a realiza o astfel de diagram, mai nti trebuie s punem n eviden entitile implicate (actori i/sau sisteme), Diagrame de clase reprezentate sub forma unor linii verticale, apoi mesajele trimise Diagrama de clase este util n momentul n care avem de pus n eviden din punct de vedere funcional i de gestionat enti- de acestea, n ordinea n care apar, reprezentate ca linii orizontale ti multiple, care interacioneaz ntre ele i care sunt relaionate (sgei orientate dinspre emitor ctre receptor). Dac sgeata n baza unor ordine de multiplicitate. Acest tip de diagram face este o linie continu, ea reprezint mesajul iniial, iar dac este o linie ntrerupt, se pune n eviden mesajul returnat. n cazul parte din categoria diagramelor structurale. Pentru a realiza o diagram de clase, mai nti trebuie s iden- proceselor sincrone, sgeata are vrful plin iar emitorul trebuie tificm entitile din domeniu reprezentate sub form de clase s atepte rezolvarea mesajului nainte s treac la urmtoarea (opional se pot aduga membrii i metodele fiecrei clase, dar aciune, pe cnd n cazul proceselor asincrone, vrful sgeii este

Diagrame de utilizare

20

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


gol iar emitorul poate iniia o alt aciune, pn cnd mesajul iniial va fi rezolvat. Se pot modela i scenarii n care o entitate i trimite ei nsei mesaje. S considerm acum un exemplu intuitiv, pentru a pune n eviden fiecare dintre diagramele prezentate mai sus. S presupunem c avem de realizat o aplicaie web prin intermediul creia se administreaz crile din biblioteca unei universiti. Orice student poate mprumuta una sau mai multe cri de la bibliotec dac i creeaz mai nti un cont de utilizator. Apoi, studentul respectiv poate vizualiza toate crile din bibliotec, i poate alege cartea sau crile dorite i poate face o cerere de mprumut. Dac respectivele crti sunt disponibile (exist pe stoc la bibliotec) i studentul nu are contul restricionat (de exemplu - nu a returnat o carte n timp util, a deteriorat un exemplar mprumutat, etc), un administrator va valida cererea sa i o va aproba sau nu. n cazul n care cererea se aprob, studentul poate mprumuta cartea, iar dac cererea nu se aprob (de exemplu, dac studentul mai are deja mprumutat un exemplar din acea carte, etc), el poate ncerca s fac o alt cerere. Primul pas care trebuie fcut pentru a ncepe analiza i modelarea const n identificarea actorilor implicai, care n acest caz sunt studentul i administratorul. Apoi, la pasul a doilea, vom identifica potenialele aciuni pe care le pot face actorii crearea de cont, administrarea de cont, logarea n aplicaie, vizualizarea tuturor crilor mprumutate, vizualizarea tuturor crilor disponibile n bibliotec, alegerea unei cri, cererea de mprumut, aprobarea cererii de mprumut, respingerea cererii de mprumut, mprumutul propriu-zis, returnarea crii. Pasul al treilea const n punerea n eviden a entitilor i anume persoana (individul care folosete aplicaia i despre care se stocheaz informaii precum nume, prenume, CNP, adres, etc), utilizatorul (individul, care n momentul n care folosete aplicaia trebuie s furnizeze informaii precum nume utilizator, parol, tip cont), administratorul (utilizatorul cu rol i cont de administrator), studentul (utilizatorul cu rol i cont de student) i cartea (entitatea gestionat). La pasul al patrulea trebuie s identificm secvenele de mesaje schimbate de entiti cererea de mprumut fcut de student ctre aplicaia web, notificarea fcut de aplicaia web ctre administrator, decizia administratorului, procesarea cererii de mprumut i notificarea trimis de aplicaia web studentului. Al cincilea pas const n crearea efectiv a diagramelor.

Studiu de caz

Fig.2 Diagrama de activitate solicitare mprumut (I)

Fig.3 Diagrama de clase

Fig.4 Diagrama de activitate solicitare mprumut (II)

Fig.1 Diagrama de utilizare

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

21

arhitectur
Necesitatea modelrii UML n analiza de business
Probabil cel mai important livrabil pentru un analist de business este meninerea satisfaciei clientului iar aceasta se poate realiza doar atunci cnd clientul consider c a primit produsul pe care l-a cerut. n consecin, nu doar capacitatea analistului de a obine cerinele corecte este important ci este esenial i capacitatea lui de a le exprima ntr-un limbaj clar i concis. Diagramele au puterea de concentra mai multa informaie dect textul iar folosirea unui limbaj standardizat precum UML asigur aceeai nelegere din partea tuturor participanilor. Modelarea scenariilor de utilizare, a proceselor operaionale sau de business, a domeniului i a interaciunii dintre procese, sisteme sau actori aduce un beneficiu real tuturor persoanelor implicate n derularea unui produs software. Diagramele create, pe lng faptul c aduc un plus de claritate pe durata dezvoltrii, reprezint i un livrabil important al etapei de analiz, ele putnd fi utilizate ulterior n orice faz a ciclului de dezvoltare a produsului, de ctre toi participanii, independent de atribuiuni i de nivelul de experien al acestora.

Concluzii

Fig.5 Diagrama de secven

22

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

HR

Obinuina ca aliat

binuina nseamn diminuarea reaciei la stimuli repetitivi. De exemplu, reacia noastr la fluturaii lunari de salariu, la te iubesc -urile repetate sau la unele sisteme de bonusare. Bagheta magic a zilelor noastre poart numele de gamification - management comportamental - design persuasiv-motivational cum vrem s o numim.
Cristina Ilinca
Cristina.Ilinca@isdc.eu HR Manager si Product Owner @ ISDC

Frecvent citim despre companii care au implementat gamification la locul de munc. Nu din ntmplare lucrez ntr-o astfel de companie. Am promovat i implementat aici un joc menit s schimbe modul n care angajaii i businessurile privesc procesul de integrare a angajailor. Un joc care permite schimbul de cunotine literalmente fr frontiere , oferirea de feedback instantaneu n cadrul companiei , recompensarea pasiunii, a angajamentului i multe altele . Am reuit pe deplin ? Da, am reuit n crearea unui produs , n definirea cerinelor pentru fiecare sprint , n a fi un Product Owner activ i inspirat care a scris, cu mndrie, release notes dup un an de dezvoltare . Suntem live. Este un succes? Cinci luni de la implementare, pot spune c da, ntr-adevr , dar s-ar fi putut face mult mai bine. Nu am reuit s folosesc n propriul meu interes nsi obinuina(habituation). Juctorii concureaz pentru a obine o umbrel personalizat sau voucher-ul dorit, dar nevoia lor de a stpni o abilitate nu este provocat

aa cum ar trebui s fie, curiozitatea lor are prea puin loc de explorare i sentimentul de apartenen lipsete. Tribul nostru ateapt nc s fie format. n unele privine, oamenii nu se maturizeaz pe deplin. De exemplu, plictiseala - ar trebui s fie o non-problem ntr-un mediu de lucru profesionist. Oamenii maturi ar trebui s i stpneasc voina i concentrarea pentru a face fa activitilor i sarcinilor repetitive, finalizndu-le. Cu toate acestea, n realitate nu se ntmpl exact aa. Voina i focusul sunt resurse preioase care merit

Jocul meu se numete Knowledge Seeker

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

23

HR
Obinuina ca aliat
canalizate mai eficient. Multe dintre aceste activiti sunt de fapt plictisitoare deoarece finalizarea lor nu pare s aib un rezultat imediat, tangibil. Aici a intervenit Knowledge Seeker. Asocierea taskurilor cu rezultate imediate i recompense, ofer angajailor att stimuli tangibili ct i motivaia de a finaliza activiti aparent plictisitoare. Am nceput prin a colecta wish-list-urile companiilor i cele ale angajailor i le-am transformat n recompense prin Knowledge Seeker. Listele pot s difere de la o companie la alta, iar soluiile gamificate pot fi adaptate. Timpul de acomodare al nou-veniilor s-a redus; angajamentul i motivarea au crescut i toate acestea pot fi msurate cu ajutorul rapoartelor generate din modulul de administrare (analytics). Jocul a devenit un punct central de conectare pentru aplicaiile noastre interne i canalele de Social Media, oferind angajailor feedback direct i instantaneu i mai mult, permindu-le s fac greeli ntr-un mediu controlat i liber. Colegii nscrii n platforma Knowledge Seeker pot folosi Twitter i Facebook pentru a mprti cu prietenii experienele i realizrile lor, zugrvind pentru potenialii angajai o imagine realist a atmosferei la locul de munc.

Ce s-a ntmplat?

Figura 1.1 Profile page

Curba de nvare a sczut i angajailor le-a fost facilitat familiarizarea cu schimbri n strategia companiei, procese sau proceduri noi, locaii diferite sau culturi diferite. Satisfacia angajailor poate fi msurat, de asemenea, cu ajutorul funcionalitii Mood Meter. Un grafic este generat prezentnd utilizatorului starea sa, prin comparaie cu toi ceilali utilizatori - un mini sondaj ad-hoc de satisfacie.

Detalii privind rezultatele i realizrile juctorilor sunt furnizate prin intermediul ecranului Wall of Achievements (https://know.isdc.eu/web/knowledge-seeker/woa), prin intermediul graficului care indic progresul de pe pagina de profil i prin intermediul diverselor rapoarte (analytics). La finalizarea cu succes a acestor task-uri i quest-uri, juctorii sunt recompensai cu achievements i cu puncte (experience Figura 1.2 Mood meter points) pe care le pot folosi pentru a achiziiona produse din Feedbackul instant ntre angajai este ncurajat i conectat magazinul aflat n cadrul jocului (umbrele, rucsacuri, vouchere, cu sistemul nostru de management al performanei. Angajaii i zile de concediu, etc.). pot acorda reciproc insigne (badges), inspirate din Skill Matrix-ul

24

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Knowledge Seeker ofer contextul pentru creativitate i pasiune n fiecare task abordat de angajat doar printr-o simpl schimbare de perspectiv - rezultatele sunt mereu la ndemn i uor de msurat. Numrul de vizitatori al jocului a crescut cu mai mult de 200% din momentul lansrii; avem mai mult de 100 de juctori activi acum, cu 19 000 de puncte acordate i 200 de achievements primite . Funcionalitile viitoare vor include i un modul de gestionare a cunotinelor (knowledge management - un sistem bazat pe ierarhie i respect care crete viteza transferului de cunotine i evit pierderea cunotinelor) i un modul orientat ctre echipe (stimulnd motivaia de sudare a echipei). Jocului i poate fi atribuit, de asemenea, i un scop mai nalt, legnd strategia de responsabilitate sociala (CSR) a companiei, de numrul total de puncte obinut de ctre toi juctorii. ndemnul meu: faceti exact aa cum am fcut si eu . nvati, experimentai, luptai pentru implementarea soluiei voastre, avei ncredere c va schimba lumea i chiar aa se va ntmpla n cele din urm. Gamification ar putea fi considerat un trend, dar este un trend care ajunge la copilul din noi, aa c va avea ntotdeauna un rspuns mai eficient dect alte tehnici motivaionale 2.0. n cazul n care design-ul jocului vostru va aborda teme universale cum ar fi comunitatea, colectarea de lucruri interesante i rare, juctorii ar putea fi suficient de curioi i suficient de motivai nct s se lase antrenai. Trebuie doar s gsii o modalitate prin care s le meninei atenia i angajamentul. Dac reuii vei avea o comunitate motivat, care v va oferi o perspectiv nebnuit n gndurile, convingerile i preferinele lor. i astfel, vei reui s facei din obinuin aliatul vostru. Game on!

Figura 1.3 Mood meter graph

customizat al companiei. E-mailul trimis de sistem atunci cnd punctele i badge-urile sunt acordate acioneaz ca un appointment mechanic, meninnd astfel toate motoarele jocului n funciune. Toate msurtorile oferite de Wall of Achievements i de modulul de raportare ne ajut la nivel de management i i ajut i pe juctori s (se)calibreze (cu)sistemul, deoarece sunt gndite s ncurajeze comportamentele pozitive. Toi cei cinci motivatori intrinseci sunt atini: Autonomia [I control] Juctorii pot alege ce activiti s desfoare n interiorul Knowledge Seeker. Ei pot decide categoria n care i vor testa cunotinele i abilitile - fiecare alegere este la fel de valabil i echitabil recompensat. Mastery [[I improve] - Nivelurile pentru fiecare categorie confirm perseverena juctorilor iar, prin atingerea lor, sunt deblocate achievement-urile. Scopul [I make a difference] Juctorii se concentreaz s obin puncte, s acorde badges altor juctori i s le primeasc la rndul lor. Administratorul poate acorda, de asemenea, puncte juctorilor pe baza feedback-ului primit. Progresul [I achieve] - Juctorii i pot vedea activitatea n orice moment, i pot urmri progresul pe pagina de profil sau se pot compara cu ceilali juctori accesnd Wall of Achievements. Interaciune social [I connect with others] Juctorii i pot demonstra cu uurin aprecierea lor fa de ali juctori, acordndu-le badges sau puncte prin intermediul Admin-ului, pot folosi reelele sociale pentru a-i publica achievement-urile i, de ce nu, pentru a obine recunoatere. Paii sunt simpli aa cum i putei vedea pe pagina de login: (https://know.isdc.eu) First, log in. Second, seek the information and methods needed to enhance system stability. Third, enjoy rewards and achievements thus unlocked. Fourth , share achievements via Facebook and Twitter systemically.

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

25

programare

Instrument de monitorizare reactiv Reactive Monitoring Tool

eactive Monitoring Tool este un instrument intern dezvoltat ca parte a Centrului de Competen de Java al companiei 3Pillar Global. Instrumentul are un scop foarte bine definit constnd n monitorizarea continu a unui server, reacia imediat la apariia unor evenimente particulare i uurina n utilizare. Prima versiune a aplicaiei utilizeaz tehnologia JMX pentru conectarea la un server i monitorizeaz diverse valori publicate de bean-uri pentru a reciona corespunztor. Datele de intrare ale sistemului vor fi reprezentate de valori jmx bean citite de pe anumite servere jmx specificate la configurarea intrumentului de monitorizare. Pentru a reaciona corespunztor se folosesc diferite handlere de evenimente cum ar fi: log logheaz informaiile corespunztoare evenimentului, rest realizeaz o cerere HTTP la un URL configurat folosind atributele transmise, shell execut un script shell pe un calculator la distan sau local. Arhitectura aplicaiei are un design flexibil, avnd toate modulele dezvoltate ca API-uri cu scopul de a reduce efortul de adugare a noii funcionaliti i de a facilita tranziia ctre noi membri n echipa de dezvoltare. Arhitectura e format din urmtoarelel module: core conine clase de tip entitate, constante, interfee comune i utilitare; config implementeaz logica de configurare, operaiile CRUD de baz p e divers e mo duri de persistare a datelor cum ar fi fiiere XML i baze de date relaionale; connector scopul modulului este acela de a stabili conexiunea cu serverul configurat i citirea atributelor necesare la fiecare trecere. Conectorul este de asemenea responsabil cu restabilirea conexiunii n cazul n care aceasta a czut. Modulul poate fi utilizat ca o aplicaie de sine stttoare deoarece toate informaiile citite sunt inserate ntr-o coad la fiecare trecere, furniznd mesaje ctre toi consumatorii nregistrai. ruleengine conine setul de reguli pentru interpretarea datelor precum i executarea metodelor personalizate. Acest modul este dezvoltat peste JBoss Drols ca platform de intregrare a logicii de business. Funciile API expuse de acest modul permit utilizatorului s execute oricare dintre regulile definite cu o list de parametri. Pentru a face aplicaia flexibil la tratarea diverselor evenimente se folosete introspecia astfel nct utilizatorul poate defini funcii personalizate ce pot fi ncrcate la iniializarea aplicaiei. app conine logica aplicaiei principale ce utilizeaz modulele core, config,

Cornel tefanache
Java Technical Lead @3Pillar Global

cornel.stefanache@3pillarglobal.com

26

nr. 17/Noiembrie | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Pentru a seta complet ntregul mediu, fereastra de configurare connector i ruleengine, responsabilitatea principal constnd n conectarea tuturor acestor module independente asigur permite definirea mai multor aspecte ale mediului de configurare funcionarea ntregului sistem. Modulul aplicaiei princi- cum ar fi: conexiuni, canale, reguli i legturile dintre acestea. pale este responsabil de iniializarea tuturor componentelor independente, iniializarea cozii unde connector-ul trebuie s insereze atributele citite i nregistreaz procesele consumator ce vor executa funcii particulare de tratare a evenimentelor. web aceasta este o component opional ce public o aplicaie web n scopul de a reduce efortul de depanare i configurare. Aceast component este responsabil de pornirea modulului aplicaiei principale i utilizeaz funcii API pentru a expune serviciile REST aplicaiei web. Pe lng faptul c Reactive Monitoring Tool ruleaz ca o aplicaie de sine stttoare, acesta expune o serie de funcii API care ne permit crearea unei interfee utilizator de configurare.

Interfaa utilizator

n ferestrele de configurare Connection i Channels utilizatorul va putea testa corectitudinea configuraiei (prin apsarea butonului reprezentat de o bif verde din toolbar). n fereastra Channels, ca efect al acestei validri, utilizatorul va putea vizualiza toate metodele i atributele expuse i le poate aduga ca elemente de monitorizare pentru actuala configuraie. Urmtorul pas n configurarea aplicaiei de monitorizare const n definirea regulilor ce se vor executa pe server. Fereastra Rule permite utilizatorului s defineasc, verifice i depaneze reguli. Regula poate fi validat i executat (folosind date fictive) pe server aa cum ar procesat n mediul de producie.

Aplicaia web a Reactive Monitoring Tool pornete cu o fereastr foarte simpl ce afieaz toate conexiunile definite curente. Dintr-o list simpl se poate alege definirea configurrii execuiei curente, afiarea rezultatelor din consola aplicaiei de monitorizare, filtrarea job-urilor sau pornirea sau oprirea execuiei acestor job-uri. Fiecare job poate fi oprit/pornit individual sau se poate afia o fereastr ce conine starea curent a job-ului. Fereastra ce conine detaliile de configurare are trei seciuni: Connection: unde se afieaz setrile serverului; Channel: informaii legate de valorile monitorizate; Rule: prezint configuraia actualelor reguli de tratare a evenimentelor.

Odat ce o regul este configurat, ea poate fi conectat la o structur de monitorizare n seciunea Events. Dup ce
Our core competencies include:

Product Strategy

Product Development

Product Support

3Pillar Global, a product development partner creating software that accelerates speed to market in a content rich world, increasingly connected world.
Our oerings are business focused, they drive real, tangible value.

www.3pillarglobal.com

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

27

programare

Instrument de monitorizare reactiv - Reactive Monitoring Tool

configuraia este salvat, conexiunea este disponibil (dar nu i pornit) n lista de conexiuni definite.

Tehnologiile folosite la implementarea aplicaiei web sunt AngularJS i LESS. Aplicaia web este iniializat i executat ntr-un context Jetty Application Server mpreun cu aplicaia Reactive Monitoring Tool. Comunicarea dintre JS i aplicaie server este realizat prin servicii REST care sunt conectate la funciile API publicate de aplicaia de monitorizare. este 0; 2. Aplicaia productor transmite 30 de mesaje ctre coad. Numrul total de cozi curente este 0; 3. La urmtoarea inspectare intrumentul de monitorizare reactiv citete mesajele din coad i pornete dou noi servere pentru procesarea acestora. Deoarece este un singur server consumator pornit, intrumentul de monitorizare reactiv va porni un proces consumator pe primul server pentru a ncepe procesarea mesajelor; 4. La a doua inspectare, dac una dintre mainile consumator finalizeaz estimarea acurateei procesrii, un nou proces consumator va fi pornit pentru a echilibra procesarea pe mainile consumator. Dac nici unul dintre servere nu finalizeaz procesarea, un alt proces consumator va fi pornit pe serverul disponibil iniial. Procesul continu pn cnd toate serverele disponibile sunt iniializate i procesele consumator sunt distribuite n mod egal. 5. Instrumentul de monitorizare reactiv va opri serverele consumer disponibile dac nu mai sunt mesaje de procesat.

Aplicaia Reactive Monitoring Tool a fost utilizat pentru monitorizarea unui sistem de stocare a mesajelor pentru a se asigura procesarea mesajelor n timp real cu costuri reduse. Una dintre cerinele importante de business era scalarea dinamic a infrastructurii curente pentru a satisface nevoia de procesare a consumului intens de mesaje. Pentru satisfacerea nevoilor de scalare automat a sistemului, a fost prezentat urmtoarea arhitectur: Consumatorii monitorizai utilizeaz aplicaia web expus pentru a genera cereri care vor fi transmise ctre server pentur a fi procesate de consumator. Infrastructura este iniializat avnd o singur staie consumator capabil s proceseze cel mult 10 mesaje simultan. Responsabilitaile consumatorilor i a instrumentului de monitorizare sunt enumerate mai jos: Consumator: Execut logica de business bazat pe coada de mesaje. Nu are cunotin de aplicaia de monitorizare. Poate executa un numr configurabil de procese consumator paralele. Sistemul de monitorizare reactiv Monitorizeaz serverul ActiveMQ . Execut funcii specifice atunci cnd dimensiunea cozii depete o anumit valoare. Decide pe care staie consumator se va starta un nou proces consummator. Paii executai pentru scalarea infrastructurii sunt: 1. Aplicaia Reactive Monitor este pornit, conectat la server i pornete consultarea cozilor. Numrul total de cozi curente

Studiu de caz

28

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

management

Comuniti de practic

deea de comuniti de practic deriv de la principiul agile care enun nevoia de mbuntire continu. Una dintre practicile agile pentru mbuntire continu este crearea de comuniti de practic, pe anumite domenii. O comunitate are un scop si este format dintr-un grup de persoane pasionate sau interesate de aceleai subiecte. n agile obiectivul unei comuniti este de a mprti cunotinele i experienele (cu ct mai diferite, cu att mai bine) ale fiecrui participant.
Alexandru Bolboaca
alex.bolboaca@mozaicworks.com Agile Coach and Trainer, with a focus on technical practices @Mozaic Works

Companiile eficiente care aplic filozofia agile creeaz i ntrein aceste comuniti de practic. Ele sunt locul n care specialitii din diverse domenii se ntlnesc, i mprtesc cunotinele, iau decizii coerente la nivelul companiei, afl cele mai bune practici din specializarea lor. Este foarte important ca aceste ntlniri s se ntmple la un interval regulat, s nu fie foarte lungi i s aib un subiect clar definit pentru fiecare ntlnire.

Adrian Bolboaca

adrian.bolboaca@mozaicworks.com Programmer. Organizational and Technical Trainer and Coach @Mozaic Works

O practic foarte bun este s avem comuniti de practic pe specializri: arhiteci, designeri, programatori specializai pe un anumit limbaj de programare, product owners, scrum masters, business analysts, testers, etc. Pentru a crea o comunitate de practic trebuie s existe acel nucleu, format din oameni foarte pasionai de acel subiect. Acetia se ocup cu organizarea primelor ntlniri, caut subiecte incitante pentru a-i invita i pe ali colegi interesai. n aceast faz trebuie ca managementul s acorde sprijinul total grupului care are aceast iniiativ de colaborare.

Ce tipuri de comuniti de practic putem gsi?

dobndite rmn n cadrul unei echipe, sau a unor echipe care colaboreaz pentru un proiect. Dar n software, precum n multe alte domenii, echipele trebuie adesea s rezolve aceleai probleme sau probleme similare. Este mult mai eficient la nivel de companie s avem aceste comuniti de practic, unde se ntlnesc persoane care provin din echipe diferite. companiei. Dei aceste comuniti de practic presupun o investiie de timp, avantajul acestora const i n faptul c ofer soluii, la gsirea crora n mod normal s-ar cheltui mult mai mult timp.

n funcie de tipul de comunitate pot s existe o varietate de tipuri de activiti. Cel mai simplu tip de activitate are fi o discuie, cu o durat fix, cu un subiect bine definit. De exemplu, pentru o comunitate de Scrum Masters am putea avea o discuie despre rezolvarea impedimentelor echipei. Discuia ar avea 45 de minute i ar trebui moderat de cineva experimentat. Scopul acestei ntlniri ar fi de a arta care sunt tehnicile de rezolvare a impedimentelor, ce a funcionat i ce nu a funcionat, din experiena participanilor la ntlnire. Este important ca participanii s vin pregtii, informai n legtur cu temaCare ar rostul acestor comuniti? tica discuiei, pentru a putea aduce ct mai Adesea se ntmpl c informaiile
www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

Ce tipuri de activiti putem avea?

29

programare
Comuniti de practic
mult valoare n timpul ntlnirii. Un alt tip de activitate ar putea fi o prezentare de 20-25 de minute, urmat de o discuie de 10-20 de minute pe tematica prezentat. Acest tip de ntlnire necesit mai mult pregtire din partea prezentatorului, dar aceasta nu nseamn c i ceilali participani nu pot s studieze puin tematica naintea ntlnirii. Pentru comunitile de programare pot s fie sesiuni sptmnale sau bi-lunare de 1-2 ore de coding katas, coding dojos (vezi articolul din numrul 14), jocuri de programare cum ar fi Taking Baby Steps, Brutal Refactoring Game, TDD as if you meant it, etc. Acest tip de ntlnire este ceva mai dificil de organizat pentru c este nevoie de un facilitator experimentat, participanii trebuie s aib calculatoare, trebuie o sal cu mese i cu un proiector. Este foarte important ca aceste jocuri s ajute participanii s nvee cum s rezolve probleme curente cu care se confrunt. De aceea, organizatorii comunitii ar fi bine s se consulte cu echipele nainte de a face ntlnirea, pentru a vedea care ar fi temele care aduc cea mai mult valoare la nivel de companie. Pentru arhiteci exist nite formate speciale, cum ar fi Architectural Kata. Acest joc este conceput special pentru a exersa arhitectura i pentru a avea discuii la nivel nalt, la nivel de concept. Sunt foarte utile pentru c arhitecii software nu au ocazia s construiasc att de multe sisteme de la zero, iar acest format le permite s nvee unii de la ceilali s fie mai rapizi n conceperea unei arhitecturi de calitate. Pentru programatorii i arhitecii care vor s nvee software design foarte eficiente sunt prezentri pe cod, pe proiector. Sau chiar performing katas, cnd un programator sau un arhitect scrie cod de la zero, explicnd deciziile pe care le ia din punct de vedere al design-ului. Aceste ntlniri unde se afieaz cod sunt foarte eficiente i aduc foarte multe beneficii celor prezeni, pentru ca participanii interacioneaz mult mai rapid cu cele afiate, dect la ntlniri unde doar vorbim despre software design sau despre calitatea codului. Exemplele clare sunt eseniale pentru subiecte de acest gen. Acestea sunt evenimente de nvare care transcend comunitile de practic avnd o specializare clar i au rolul de crea un cadru n care se mprtete cunoaterea ntre comunitile interne de practic. Open Space are avantajul c nu are nevoie de foarte mult logistic i pregtire n avans din partea vorbitorilor pentru c agenda conferinei se face pe loc, n funcie de interesul celor prezeni. Acest fapt genereaz cu att mai mult valoare la nivel de companie, pentru c nseamn ca problemele cele mai stringente ale echipelor vor fi rezolvate ct mai curnd i eficiena lor va crete. Totui, un lucru este esenial: pentru o conferin intern de tip Open Space este nevoie de un facilitator experimentat. n cazul n care nu exist o asemenea persoan n interiorul companiei, este esenial s fie gsit un facilitator extern. O alta modalitate prin care comunitile interne de practic nva unele de la altele este prin expunerea informaiei create, dobndite, acumulate de-a lungul sesiunilor periodice. Una dintre cele mai bune modaliti ar fi crearea unui wiki intern unde s fie seciuni cu toate comunitile de practic, sesiunile fiecreia, tipul activitii realizate de fiecare dat i nvmintele luate in cadrul fiecrei ntlniri. Este important ca oricine s se poat nscrie pentru a primi informaii noi din acest wiki intern, atunci cnd sunt publicate. De asemenea, funcionalitatea de cutare trebuie s fie foarte bine pus la punct, pentru c dup un numr de ntlniri nimeni nu va mai ti exact ce informaii exist. Evident c nu. Pe lng aceste comuniti de practic interne este foarte important participarea la comuniti de practic externe companiei. n cadrul comunitilor externe putem sa auzim subiecte noi, idei noi, pe care le putem aplica ulterior n intern. Exist tot mai multe comuniti, care cuprind aproape toate domeniile de activitate din industria software, deci totul este s ne lum timp pentru a vrea s nvam i de la alii. Comunitile organizeaz i evenimente de tipul coderetreat, legacy code retreat, dar i coding dojos, coding katas sau architectural katas si jocuri agile/lean. Prin participarea la aceste evenimente nu avem dect de nvat, prin practic ntr-un mediu unde putem grei fr consecine. Participarea la conferine locale, naionale sau internaionale este un alt aspect. Exist conferine tehnice, pe teme de organizare a companiei, pe teme de management i leadership, etc. Toate aceste conferine nu pot s ne aduc dect beneficii, iar ideile preluate de acolo putem s le discutm n comunitile interne de practic i dac se potrivesc n contextul nostru putem s ncercm s le aplicm. n concluzie, am vrea s v amintesc c software este o industrie a cunoaterii, iar comunitile de practic sunt una dintre cele mai bune modaliti de a crea i de a mprti cunoaterea n cadrul unei companii. Companiile eficiente n industria software nva repede i reuesc s creasc ntr-o industrie care se schimb foarte repede. Voi cnd v creai comuniti interne de practic? Dac nu tii cum, ntrebai pe autorii acestui articol prin intermediul programez.ro sau prin mail.

Comunitile pot doar interne?

n unele companii la perioade mai lungi, 2-3 luni, se organizeaz conferine interne de nvare care dureaz ntre o zi i 2-3 zile. Aceste conferie pot s fie doar prezentri, dar tot mai actuale sunt conferinele interne n format Open Space.

Cum nva comunitile de practic unele de la celelalte?

30

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

management

Scrumban

Tudor Tric

tudor.trisca@msg-systems.com Software Developer @ .msg systems Romania

anifestul pentru Agile Software Development din februarie 2001 s-a dovedit a fi o puternic declaraie de viziune care ine de mai bine de un deceniu i ghideaz inovaii n echipele auto-organizate. Manifestul conine doisprezece principii cu patru atribute refereniate mai des care reflect esena spiritului i a viziunii. Raportndu-se la principiile tradiionale, aceste atribute acord prioritate: Indivizilor i interaciunii fa de procese i unelte. Software-ului functional fa de documentaie complet. Colaborrii cu clienii fa de negocierea de contract. Predispoziei la schimbare fa de urmrirea unui plan. demonstrat dup fiecare iteraie, Mai mult, practicanii Agile au notat dou Optimizarea planului de livrare i axiome care sunt centrale eforturilor de agiup-datarea prioritilor n colaborare cu litate i se rup de la practicile costisitoare din clientul, bazate pe datele obinute dup punct de vedere al timpului din trecut: inspectarea livrrii dup fiecare iteraie, Axioma 1: Este posibil s mpari munca Optimizarea procesului prin inerea n incrementri mici care aduc valoare i care unei retrospective dup fiecare iteraie, pot fi planificate independent. Organizarea: roluri: Product Owner, Axioma 2: Este posibil s dezvoli o un Scrum Master i o echip de dezvoltare incrementare care aduce valoare ntr-un flux cross-funcional, continuu de la cerine pn la livrare. Practici: ceremonii: un daily stand-up, Cu aceste ine de ghidare pe calea spre livrarea unui produs funcional n iteraii de agilitate, selectarea i folosirea unei metolungimi fixe (Sprint-uri), inerea de edine dologii (Scrum) i a unui set de practici de de Sprint planning i de retrospective. management (Kanban) sunt decizii care trebuie luate n contextul angajamentului i cultura organizaiei. Kanban Kanban poate fi caracterizat ca un sistem de munc n curs incremental i evolutiv. Scrum Sunt foarte multe texte i bloguri despre Derivat de la Toyota Production System Scrum, cu detalii pentru practicanii curioi, (TPS) i introdus n lumea dezvoltrii softnceptori sau experimentai. O descriere de ware, un sistem Kanban este n esen un set de practici i tactici simplu, dar puternic. baz ar fi: mprirea organizaiei n echipe mici, Termenul Kanban se refer la o unitate de munc care se mic prin fluxul de munc al cross-funcionale, auto-organizate, mprirea muncii ntr-o list de livra- organizaiei doar atunci cnd exist capacitatea necesar pentru adresarea muncii la acel bile mici, concrete, mprirea timpului n iteraii scurte de pas din proces. Aprope fiecare descriere a Kanbanului lungime fix (de obicei de la una la patru sptmni) cu un potenial cod de livrat ca unealt de administrare i mbuntire a
www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

31

management
Scrumban
fluxului de munc ncepe cu urmtoarele elemente de baz: vizualizarea fluxului de munc: o reprezentare vizual a procesului te las s vezi exact starea activitii muncii (ex.: to do, in progress, done). Se folosete un Kanban board care are un set de coloane ce reflect paii fluxului de munc. Cu aceast unealt, fluxul muncii este fcut vizibil pentru a face activitile i problemele evidente. munca n curs: Kanban limiteaz munca n curs (WIP:

Scrum Vizualizare parial (input, output, i in progress) Backlog

Scrumban Vizualizare total

Kanban Vizualizare total

Backlog

Backlog Flux continuu

Iteraii fixate n timp Depinde de decizia echipei (Scrum / Kanban) Sprint Planning Munca estimat pentru Sprint Depinde de decizia echipei Depinde de decizia echipei Depinde de decizia echipei Depinde de decizia echipei Depinde de decizia echipei

Planning dinamic Munca estimat minim (estimat pentru flux) Board persistent Fluxul acumulat Munca n curs controlat de starea fluxului de munc Schimbrile adugate pe board (to do) Impedimentele sunt evitate

Work in progress) printr-o poli explicit setat de echip pentru a promova calitatea, concentrarea i terminarea muncii (ex.: echipa nu accept mai mult de dou activiti de munc simultane la un singur membru). Ce este Scrumban? Numele pare s ofere un rspuns simplu trebuie s fie o combinaie ntre Scrum i Kanban. Unii oameni sunt de prere c regulile din Scrum sunt puin cam stricte i Kanban-ul nu pare s ofere destul ndrumare n unele lucruri cum ar fi rolurile i momentele cnd planificarea i retrospectiva ar trebui s aib loc. Aa c soluia ar fi mbinarea celor dou. Scrumban reprezint cele mai bune elemente din Scrum i Kanban unde conceptele cheie ale unei echipe care lucreaz mpreun s finalizeze munca (Scrum) i cant it ate a muncii limitat la o valoare optim (Kanban) sunt combinate ntr-o metodologie pentru un randament ridicat i vizibilitate n procesul de dezvoltare. Nu exist nimic n Scrum care s fie incompatibil cu adoptarea Kanban. Nimic exceptnd regula care spune c regulile nu pot fi schimbate. Dac i poi valida faptul c ar fi mai eficient a face planning mai frecvent sau mai rar, Kanban spune c atunci ar trebui s faci acea schimbare. Scrum ar putea spune i el c e ok s faci schimbarea, dar dac o faci, atunci nu mai lucrezi n Scrum. Aceasta este cheia la ceea ce reprezint Scrumban. Este un proces care e mbuntit cu Kanban, care probabil nu mai este strict Scrum. O parte a frameworkului Scrum se vrea modificat (sau poate s nu se ncerce niciodat) pentru c se crede faptul c schimbarea e mai adecvat, aduce mai multe beneficii sau suport costuri mai mici dect Scrum-ul pur. Astfel de procese obinuiau s fie denumite ca i, oarecum derogatoriu, Scrumbut. Scrumban este alternativa mai acceptabil, mai puin peiorativ, i mai pozitiv deoarece implic faptul c foloseti Kanban. Astfel, o definiie acceptabil a Scrumban-ului, pentru a reduce confuzia n discuiile n jurul acestui subiect este: Scrumban este Scrum sau un proces asemntor Scrum-ului care este mbuntit folosind Kanban.

Resetarea Boardului dup Sprint Grafice Burn-down (Burn-up) Munca n curs (WIP) controlat de contextul sprintului Schimbrile tratate doar n Sprint-ul urmtor Impedimentele sunt tratate imediat

Scrumban

Depinde de decizia echipei Depinde de decizia echipei

Condimentnd procesul de Scrum cu elemente din Kanban, rezultnd astfel Scrumban, poate aduce schimbri n randamentul echipei i folosirea board-ului Kanban asigur un nivel mult mai mare de transparen. Dar este Scrumban mai bun dect Scrum? Rspunsul la aceast ntrebare poate varia de la caz la caz, depinznd de natura muncii pe care echipa o face i mediul n care lucreaz. Scrumban poate fi o alternativ a procesului Scrum, dac se aplic mult mai bine pe nevoile organizaiei/echipei tale.

Concluzii

Referine:
What is Scrumban?, Andy Carmichael, 2013 Implementing Scrumban, William Patrick Swisher, 2013 What makes Scrumban, Scrumban?, Thomas Cagley, 2013 Kanban as a Tool in the Agile Toolbox, Cognizant Technology Solutions, 2012

Scrum vs. Scrumban vs. Kanban

32

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

business

The leading engineering team on SharePoint and Project Server worldwide

MT Software reprezint divizia de software engineering din grupul de firme United Management Technologies (UMT) mpreun cu UMT Consulting Group (www. umt.com) i UMT 360 (www.umt360.com). Avem o activitate de peste 20 de ani pe piaa soluiilor de Enterprise Project Management (EPM) i suntem cel mai important partener Microsoft EPM din America de Nord, n ultimii 5 ani fiind nominalizati de dou ori Gartner Cool Vendor* i de asemenea de dou ori Microsoft Partner of the Year*.
Ana Oarga
ana.oarga@umt.com HR Specialist @ UMT Software, Cluj-Napoca

Soluiile noastre inovative i gsesc recunoaterea n poziionarea UMT n Gartner Visionary Quadrant (http://www.gartner. com/DisplayDocument?doc_cd=252457). Istoria UMT n Romnia ncepe n anul 2000 la Bucureti, unde divizia UMT Romnia condus de Ctlin Olteanu dezvolta un produs de pionierat pentru domeniul PPM numit UMT Portfolio Manager. Nivelul de inovatie i flexibilitatea produsului a atras atenia Microsoft, care a achiziionat divizia UMT Romnia la nceputul lui 2006. n 2008 UMT i redeschide divizia de dezvoltare software din Romnia sub numele de UMT Software, la Cluj-Napoca. Produsele i serviciile pe care le cream aici sunt cunoscute la nivel global, completnd suita de EPM a Microsoft cu capabilitii de management financiar al proiectelor i portofoliilor de proiecte. Aveam nevoie de o echip care poate trece dincolo de liniile de cod i care poate nelege conceptele de business din perspectiva clientilor. De aceea ne considerm norocoi c am facut transferul echipei de development n Cluj-Napoca, echipa excelnd

att n privina calitii livrabilelor dar i n managementul proiectelor. Avem certitudinea c produsul nostru este pe mini bune, indiferent dac vorbim de programare, design, testare, suport tehnic sau management de proiect. Ctlin Olteanu - President at UMT360 Suntem printre puinele firme din lume incluse n programul TAP* () pentru SharePoint i Project Server, participnd constant la evenimentele prin care Microsoft se consult cu partenerii si pentru versiunile viitoare ale produselor din suita Office, avnd acces prerelease la ultimele tehnologii. Anul acesta, UMT a fost numit Microsofts Portfolio Management Partner of the Year pentru livrarea celei mai innovative soluii adresat clienilor care folosesc tehnologiile Microsoft i care au un impact major pe aceast ni. nc de la nceput a fost clar c dezvoltarea unui produs cu impact la nivel global implic o serie de responsabiliti att la nivel tehnic ct i al proceselor implicate. Cu att mai mult cu ct aveam n vedere reuita anterioar a echipei de la

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

33

business
The leading engineering team on SharePoint and Project Server worldwide
Software. n urmtoarele numere ale TSM vom reveni cu teme actuale privind dezvoltarea de aplicaii folosind platforma SharePoint.

Bucureti. inta noastr nu putea fi alta dect excelena tehnic i inovaia, pentru a crea i livra un produs ce depeste constant ateptrile clienilor. Cele trei versiuni majore ale produsului nostru pe care le folosesc clieni de pe toate meridianele atest acest lucru. Experiena acumulat i un management deschis ne-a permis s depsim toate provocarile tehnice sau organizatorice aprute pe parcurs - Ionu Nechita GM si Director of Engineering la UMT Software, Cluj-Napoca. UMT360 este cea mai ambiioas variant a produsului nostru, fiind dezvoltat pe platforma SharePoint i integrat cu Project Server. ncercam s oferim clienilor notri vizibiliate n ntreaga organizatie legat de aspecte high level i s le punem la dispoziie date astfel nct s identifice proiectele care vor aduce plus valoare

organizaiei. Aadar urmrim livrabilele pentru a vedea cum se raporteaz fiecare proiect la anumii indici de performan, oferind features pentru cost tracking, project governance i life cycle management i analiza de portofoliu. Echipa a crescut de zece ori n termeni absolui n aceti ase ani. Cele cinci persoane din 2008 au ajuns la peste 50 n 2013, iar numrul disciplinelor i tehnologiilor cerute s-a diversificat. Ne dorim s cretem n continuare, avem n plan atragerea a nc 20 de colegi noi n 2014 i este evident c aceast cretere expune o serie de oportuniti de evoluie profesional spre poziii de leadership. De asemenea, legtura cu mediul universitar din Cluj este important pentru noi, n ultimii ani dezvoltnd un program de internship foarte atractiv afirm Alina Pop, HR Manager, UMT

34

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

De la business la analiza de business


uccesul n business n ziua de astzi este considerat de unii antreprenori drept loterie pur. Privim cu admiraie spre liderii de pia care reuesc s se menin n top, spre cei care au reuit s se reinventeze dar mai ales spre cei noi care au cucerit segmente mari de pia n timp foarte scurt. Care e secretul lor? Care este modelul lor de business? Care este inovaia din spatele ideilor lor? De ce ei au reuit unde alii au euat? Povetile de succes par ntotdeauna intangibile pentru muritorii de rnd. Ne vine greu a-l crede pe modestul om de succes cnd i spune cu sinceritate taina: a studiat, a experimentat, analizat, a luat decizii. Ce pare extrem de complicat este n fapt mult mai simplu. E nevoie doar de multa munc, disciplin si raionament. M pasioneaz domeniul analizei de business de cnd am nceput s lucrez efectiv ca analist de business la o companie de outsourcing. Datorit faptului c vd un potenial uria de valorificat n acest domeniu, doresc s v pun n vedere o perspectiv nou din pozitia unei persoane care a lucrat mai mult cu clientii i mai putin cu dezvoltatorii, fiind interesat mai degrab de nevoile i satisfacia clientului dect de cocktailul de tehnologii utilizate n aplicaia cerut de client. n industria IT care evolueaz spectaculos de la an la an, s ii pasul cu dezvoltarea i modificrile pieei devine o adevarat provocare. Cu noile tehnologi cutting edge folosite n aplicaiile actuale, prezentul devine repede istorie. Analiza rapid a problemelor precum i accesul la informative i aduc mult contribuia. Analiza se definete ca fiind metoda tiinific de cercetare care se bazeaz pe studiul sistematic al fiecrui element n parte. n continuare voi prezenta elementele importante de care un business analyst trebuie s in cont nc de la nceputul proiectului. a cerinelor divergente ale stakeholder-ilor, negociere pentru aplanarea i rezolvarea conflictelor. Agilitate n business, nu perfeciune: organizaia trebuie s fie receptiv la presiunile externe i s poat recunoate importana soluiilor n limita de timp dat. Pentru c am interacionat mai mult cu potentiali clienti, am nvat ct de important este indentificarea corect i rapid a nevoilor acestora astfel nct s le oferim rapid soluiile de care au ei nevoie. Cnd ne referim la client vorbim de fapt despre o organizaie. n organizaie sunt mai multe persoane care contribuie i doresc o schimbare. Pentru acesta e nevoie de o analiz a stakeholder-ilor. Stakeholder-ul se definete ca fiind o persoan, un grup, organizaie, membru din cadrul unui sistem care este afectat sau poate chiar el s afecteze aciunile unei organizaii. Figura de mai jos prezint ciclul de via unui unui proiect din perspectiva managementului stakeholder-ilor:

Analiza stakeholder-ilor

Principiile dup care se ghideaz analiza de business

Identificarea cauzelor i nu a simptomelor: a distinge ntre simptome ale problemelor de business i cauzele lor, investigarea i numirea cauzelor. mbuntirea businessului i nu schimbare n IT : recunoaterea c sistemele IT trebuie s ofere support pentru Un exemplu de stakeholder-i generic e prezentat n diagrama oportunitile de business, analizarea acestor oportuniti n de mai jos: vederea mbuntirii businessului i activarea agilitii. Opiuni i nu soluii: contestarea soluiilor predefinite, identificarea i evaluarea opiunilor pentru ntrunirea nevoilor de business. Doar cerine fezabile, nu toate cererile: se iau in considerare constrngerile financiare i de timp, se elimin cerinele care nu contribuie la obiectivele businessului, se evalueaz cerinele scrise n comparaie cu nevoile de business i constrngerile. ntregul ciclu de schimbare a businessului, business change lifecycle, nu doar cerinele: analiza situaiilor de business, suport pentru dezvoltarea efectiv, testare, implementare, revizuirea soluiilor post-implementare. Odat identificai, analiza lor ine cont de nivelul de interes Negociere, fr ocoliuri: recunoaterea perspectivelor i n proiect i influena pe care o poate avea fiecare stakeholder n
www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

35

business
De la business la analiza de business
parte. n acest ne putem da seama ct de mult poate ajuta sau bloca proiectul fiecare i astfel, vom folosi strategii diferite cu fiecare dintre ei. Spre exemplu, cu stakeholder-ii care nu au interes i nici influen nu vom lua nicio aciune. Stakeholder-ii care nu au interes direct, (n general managerii seniori fac parte din aceast categorie) dar au putere de influen mare vor fi inui sub supraveghere. Cei care au interes moderat i au putere mare, vor fi tinui la un nivel mediu de satisfacie astfel nct s nu simt nevoia de a interveni inopinat n proiect. Pentru stakeholder-ii cu interes i putere ridicat (managerii direct afectai de proiect) prima dat se identific dac au o atitudine pozitiv sau negativ vizavi de proiect. Ei sunt cei care aprob i iau deciziile finale pentru proiect. Pentru a separa ct mai bine apele i a ti exact nivelul de implicare al fiecrui stakeholder, matricea RACI (Responsible, Accountable, Consulted, Informed) este foarte util. Managementul efectiv al stakeholder-ilor este cheia succesului n orice proiect de analiz de business de success. El apare nainte de a ncepe proiectul propriu-zis i se meine pe toat durata proiectului. Una dintre cerine din partea managerilor ndreptate ctre analitii de business este s examineze aria de business pentru a aborda ct mai creativ situaia i a transforma ideile n soluii. Rezolvarea problemelor rapid i ntr-un mod creativ este vital cu toate c puini sunt cei care pot face fa datorit presiunii mari de timp. Mai jos e prezentat modelul de soluionare a problemelor. indic simptomele problemei i nu cauza. Dac rezultatele raportate ale unei echipe nu sunt la nivelul ateptrilor, nu nseamn c echipa nu i-a ndeplinit obiectivele setate. Se poate ca rapoartele extrase s fie eronate sau s difere total fa de obiectivele setate initial. Analistul de business nu se va multumi niciodat cu puin i va ncerca mereu s mearg mai adnc cu investigarea. ntrebarea de aur care trebuie repetat tot timpul este: De ce? Orice afirmaie trebuie argumentat temeinic. Odat identificate problemele, analistul de business va ncerca s genereze idei pentru problem, n pasul de Idea finding. Metoda folosit este cea de brainstorming n cadrul unui grup bine ales. Aici pot aprea propuneri de genul: crearea unui raport care s conin indicatori corelai cu obiectivele setate, evaluarea echipei, aplicaie de raportare a rezultatelor, schimbarea strategiei de vnzri, marketing etc. n urma ideilor colectate se va putea face i o evaluare. Ultimul pas e Solution finding i e ideea care poate fi privit ca soluie la problema identificat. E important ca gsirea unei soluii s se fac aa de trziu n proces. Adesea analitii de business sunt presai s gseasc soluii de la bun nceput i tentaia de a ceda este destul de mare. Cu toate acestea, paii anteriori trebuie parcuri. Ultimul pas este cel de Acceptance finding, n care se trateaz implementarea soluiei, un aspect care este critic pentru succesul oricriu proiect de schimbare. Acestea sunt doar cteva direcii la nivel nalt pe care un analist de business trebuie s le urmeze. Principiile n analiza de business fac diferena ntre novice i senior, ntre o abordare profesionist i una de amatori. Solutionarea problemelor cere mai mult experien din partea analitilor de business dect se poate estima la o prim vedere. Pentru analitii la nceput de drum o baz de cunotine teoretice solide poate ajuta foarte mult. Modelul de soluionare a problemelor cu paii afereni este prezentat n acest scop. Cum problemele sunt de mai multe feluri, aa sunt i stakeholder-ii implicai n proiect, care necesit o atenie special nc de la nceput. Multe dintre problemele identificate pot fi rezolvate foarte uor prin adresarea unei singure ntrebri unei persoane cheie implicate n proces. nchei prin aceast scurt introducere n lumea analizei de business cu meniunea c se adreseaz nu doar analitilor de business ci tuturor celor care si doresc s neleag mai bine nevoile clienilor pentru care lucreaz i deciziile dup care se ghideaz.

Business Analysis Problem Solving Model

Este important de reinut c primul pas, i anume Mess finding ajut analistul s i dea seama de complexitatea situatiei. La nceputul proiectului cnd nu tii de unde s ncepi i ncerci s aduni ct mai multe informaii din locuri diverse, totul pare un haos. Pentru nelegerea problemei sub investigare se folosesc tehnicile de tip rich pictures i mind maps. Odat neleas complexitatea, se caut datele de care e nevoie. Dac la nceputul proiectului, analistul de business vorbete cu managerul i echipa, studiaz rapoarte, particip la prezentri de produse i edine, citete manuale de utilizare, discut cu marketingul, la pasul de Data finding deja el are cunotintele necesare despre firm, domeniu de activitate, produs i mod de lucru al angajailor, profilul clienilor. Acum el va ncerca s analizeze opiniile, ngrijorrile, cunotinele i ideile celor implicai i afectai de proiect. Se pot folosi la fel de bine mind maps i rich pictures ca i n pasul anterior. E necesar separarea opiniilor de faptele propriu-zise. Pentru pasul Problem finding ne vor ajuta datele strnse anterior pentru a ajunge la miezul problemei. Gsirea problemei reale este important n analiza de business deoarece adesea se

Ioana Matei

Ioana.Matei@tss-yonder.com Requirements Analyst @ TSS Yonder

36

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

management

Gamication
nc strin pentru unii, conceptul degamification se refer la utilizarea tehnicilor i mecanismelor specifice jocurilor cu scopul de a ndeplini diferite obiective reale n contexte business, sociale sau de modificare comportamental. Construirea unui game layer on top of social layer poate fi considerat urmtorul mare pas digital dup apariia social media care a construit aa numitul social layer. Gamification funcioneaz folosindu-se de predispoziia psihologic a oamenilor de a se angaja ntr-un joc, de afinitatea natural pentru distracie, jocuri, competiie, statut,cooperare sau expresia de sine. Tehnica poate ncuraja oamenii s efectueze sarcini pe care le consider de obicei plictisitoare sau fr interes. El reprezint ideea de a folosi principiile de joac i mecanismele jocurilor pentru a face activitaiile i aplicaiile reale mult mai interesante i atractive. Probabil v intrebai cum a reusit StackOverflow s motiveze milioane de utilizatori s i ia timp din vieile lor ocupate i s ajute pe alii strini, pentru nimic mai mult dect puncte false pe internet i anumite drepturi. Sau poate ai auzit de celebra platforma fold.it pe care un grup de elevi a decodat structura unei enzime ce cauza SIDA n doar zece zile problem ce sttea nerezolvat de 15 ani. Civa dintre noi poate suntem deja implicai n programul Nike+ sau poate avem propria noastr ferma n cretere pe FarmVille. Aceleai motivaii care stimuleaz pe cineva s joace World Of Warcraft zece ore pe zi pot fi folosite pentru a i motiva s nvee o nou limb, s planteze copaci ntr-un parc, s lucreze responsabil i eficient doar pentru c sunt la fel de motivante i pline de satisfacii cum este un joc. Toate acestea sunt n mare parte un rezultat al Gamification. Pentru a exemplifica mai bine acest concept, vreau s v gandii la momentul n care ai fost prini ntr-un joc. Pentru unii dintre voi a fost probabil golf, pentru alii ah sau Scrabble,iar pentru alii FarmVille sau Counter-Strike. Nu ai fi dorit s avei acelai sentiment captivant de satisfacie i interes i n munca dumneavoastr? Organizaiile ale cror angajai, comuniti si clieni sunt profund implicate vor depi pe cele care nu pot genera motivaia autentic. Ar trebui s invam din jocuri, pentru c n prezent toat lumea obinuiete s joace cel puin un anumit joc. Jocurile nu sunt uoare ele ne testeaz i ne provoc limitele. Aplicnd acelai principiu, aceasta nseamn c putem s gsim i s mbuntim resursele i talentele de care dispunem la maxim lucru exemplificat i de Jane McGonigal n Reality is broken [1]: In a good computer or video game youre always playing on the very edge of your skill level, always on the brink of falling off. When you do fall off, you feel the urge to climb back on. Thats because there is virtually nothing as engaging as this state of working at the very limits of your ability Generaia tnr este deja o generaie nativ digital gamificat - i ei sunt deja clienii i angajaii notri. Majoritatea au jucat jocuri video i deja sunt cufundai n limbajul i metaforele jocului. Deci, ntr- un efort de a stimula i motiva generaia prezent, ne ntrebm care sunt caracteristicile jocurilor care merit un loc n companiile noastre? Vom analiza n continuare trei aspecte : performana, realizri i interaciunea social. ntr-un joc, oricnd facem o aciune, primim feedback instant. Feedback-ul pozitiv consolideaz comportamentul bun , strategia i tactica, n timp ce feedbackul negativ, ne permite s nvm repede din greeli. Ce nseamn pentru locul de munc : Companiile au nevoie de sisteme i procese care permit feedbackul rapid i constructiv ducnd astfel la accelerarea proceselor de nvaare i cretere a angajailor. Jocurile sunt nirvana statistice - juctorii pot oricnd vedea exact unde se afl. Progresele pot fi urmrite i comunicate n timp real, att n momentul jocului ct i perioade de timp mai lungi. Ce nseamn pentru locul de munc : De obiceii angajaii se intreab Cum m descurc ?. Ei pur i simplu nu tiu pentru c nu neleg adeseori cum performana este msurat n general, sau performanele lor n mod individual i n raport cu colegii lor . ntregul rol al unui joc este de a avea un scop care s motiveze jucatorii s depun eforturi pentru atingerea acelui scop, cum ar fi a salva printesa. De multe ori scopul principal are sub-obiective care furnizeaz victorii mici de-a lungul drumului. Ce nseamn pentru locul de munc : O noiune de progres n munc semnificativ, orict de mic ar fi, este vital n meninerea oamenilor angrenati. Cu managementul de cele mai multe ori axat pe obiective de termen lung, posibilitatea de a furniza victorii mici i un sentiment benefic de zi cu zi al progresului sunt adesea trecute cu vederea. Cnd trieti viaa n mediul online, fiecare are nevoie de o identitatea digital. O mare parte a acestei identiti ine de abilitile personale, realizri i reputaie. Trofeele servesc acestui scop. Ele sunt simboluri universal nelese care indic posesiunea unor competene i realizari. Ce nseamn pentru locul de munc: nelegerea capabilitatilor i domeniul de expertiza al angajailor sunt cruciale pentru capacitatea unei companii de a

Transparen

Stabilirea obiectivelor

Performana - Feedback n timp real.

Realizri - Trofee

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

37

management
Gamication
asambla echipe mari i de a realiza obiectivele stabilite. Sistemele care permit unui angajat s ctige recompense, s-i afirme aptitudiniile, ct i s valideze competenele i abilitile altora constitue un avantaj competitiv. n timp ce trofeele sunt indicatori ai unor realizri specifice, nivelurile sunt utilizate ca o prescurtare a unor obiective pe termen lung. Atingnd nivelul 70 n World of Warcraft nseamn c acea persoan a dedicat o anumit cantitate de timp i energie pentru joc, ct i faptul c a atins o anumit calificare. Nivelurile de asemenea, servesc pentru a furniza juctorul cu obiective intermediare victorii micii. Ce nseamn pentru locul de munc : Studiile prezic c generaia curenta schimb locurile de munc mult mai frecvent ca generaiile anterioare. Cnd o anumit persoan prsete o companie, preia cu ea tot capitalul intelectual pe care acea companie l-a construit. n scopul de a atenua aceast tendin i a pstra angajaii implicai n evoluia unei cariere, trebuie s fie mai multe etape intermediare cu victorii mici de-a lungul drumului i mai multe modaliti pentru a ctiga statutul i respectul n grupul de activitate. Rare sunt jocurile care s nu aiba instruciuni cu privire la modul de a juca. i niciodat nu sunt instruciuni gen manual de instruciuni jocurile nsei nva jucatorii cum s joace n cadrul jocului n sine. Participanii obin experien prin interaciunea cu sistemul. n cazul n care intri ntr-un joc cu toate echipamentele la dispoziie, nu ai avea nici o idee ce s faci cu ele. Dar jocurile te nva cum s joci, tot prin joc. Ce nseamn pentru locul de munc : Generaia curent nu allege s citeasc manualele de instruciuni. Oamenii petrec ore ntregi pentru un anumit joc, dar nu vor petrece cteva minute pentru a urma un curs de pregtire profesional. Teoria autodeterminrii (TSD), o teorie creat de profesorii Edward Deci i Richard Ryan, afirm c dorina de a stpni noi abiliti i de a se simi competent este o trstur uman esenial. educaional, locul de munc, relaiile cu angajaii i pentru a stimula comportamentul responsabil. Pr i n a c e s t ar t i c o l am v r ut s creionez pe scurt domeniul i caracteristiciile interesante ale acestei tehnici i cteva exemplificri ale sale. Este o introducere de baz i v ncurajez s v documentai pentru a afla mai multe pentru c este foarte probabil ca cineva s foloseasca Gamification n dreptul dumneavoastr i ntr-un sens negativ. Vreau s v las cu un video inspirativ despre o iniiativ de Gamification : http:// Interaciunea social - Competiia www.youtube.com/watch?v=2lXh2n0aPyw Fie c suntei n competiie cu prietenii pe un Xbox sau cu oameni din ntreaga lume, jocurile promoveaz excelena i [1] - Reality Is Broken: Why Games Make Us diferite realizri prin concurs. Better and How They Can Change the World, Ce nseamn pentru locul de munc: Jane McGonigal, 2011,http://janemcgonigal.com/ Concurena este deja utilizat n diferite my-book/ domenii. Cheia succesului pentru multe companii este s creeze un mecanism de competiie ntr-un mod scalabil si automat. Conform teoriei auto-determinrii, oameni au o nevoie nnscut de a forma conexiunii sociale, i ca atare, motivarea de a concura i de a colabora ca parte a echipelor. Echipa ofer oportunitatea de a se conecta cu persoane asemntoare i a lucra mpreun ca un ntreg pentru a realiza obiectivele stabilite. Ce nseamn pentru locul de munc: Generaia curent locuiete la sensul figurat pe Facebook si Twitter. Ei sunt n mod clar orientai i condui de dorina de a forma conexiuni sociale. Companiile ar trebui s profite de acest fapt i s utilizeze echipele mult mai des pentru a stimula concurena, colaborarea si nvarea. Conceptul de gamification pare s fie soluia pentru a imbunti sistemul

Progresul

Echipele

Acomodarea i nelegerea jocului

George.Platon@catalysts.cc Software developer @ Catalyst

George Platon

38

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

interviu

Interviu cu Bogdan Iordache, CEO How to Web


ntreprenor n tehnologie, geek, fan Star Trek. Aa se descrie Bogdan Iordache, iar activitatea lui n domeniul antreprenorial este cel puin impresionant! Co-Fondator i CEO al How to Web (cel mai important eveniment dedicat antreprenoriatului, inovaiei i tehnologiei din Europa de Sud-Est) & Startup Spotlight (competiie i program de mentorat adresat celor mai performante 32 de startup-uri din SEE), Co-Fondator TechHub Bucharest, Co-Fondator Tech Angels, prima reea a investitorilor privai din Romnia, Co-Fondator TechLounge, Co-Fondator Conectoo, Co-Fondator Stagii pe bune. Bogdan este un promotor al inovaiei i antreprenoriatului n tehnologie i contribuie la dezvoltarea ecosistemului regional, din interior. Today Software Magazine a stat de vorb cu Bogdan Iordache i a aflat ultimele amnunte din culisele How to Web, eveniment care va avea loc pe 20 i 21 noiembrie la Crystal Pallace Ballrooms i va transforma pentru a cincea oar consecutiv Romnia n capitala tehnologiei din Europa de Sud-Est. TSM: Salut Bogdan! Spune-ne cteva cuvinte despre tine n ceea ce privete educaie, carier, hobby. Bogdan Iordache : Am terminat Universitatea Politehnica Bucureti, am fcut un program de master la distan cu un consoriu de faculti din Frana n paralel cu anul V, iar mai apoi am fcut studii aprofundate de e-learning tot n Frana. M-am ntors n Romnia i am nfiinat o firm care se numea Interactive People i care a euat lamentabil dup primul an, iar mai apoi am fondat Conectoo, companie de e-mail marketing, i ulterior How to Web. Hobby-uri teoretice am multe, dar practic nu am timp dect s lucrez. TSM: Am publicat n revista Today Software Magazine o serie de articole preluate de pe blogul http://bogdaniordache. net i tim c eti un avocat al startup-urilor. Cum vezi evoluia acestora n ultimii ani, nainte i dup criz? B.I .: Numrul de startup-uri valoroase care apar nu depinde foarte mult de crizele financiare. E drept c situaia financiar afecteaz numrul de companii care vor reui s scaleze sau care se vnd, ns nu cele care apar. Discuia asta nu se aplic la Romnia, ci la ceea ce se ntmpla nainte de 2008 n Europa de Vest i n Statele Unite. Pe atunci toat zona de startup-uri din Romnia nu era suficient de bine dezvoltat, iar orice startup era un outlier . Nu pot s spun ns prea multe lucruri legat de evoluia startup-urilor prei post-criz pentru c nu m-am ocupat foarte mult de asta nainte de 2008 i nu tiam care e starea startup-urilor din Romnia nainte de criz. TSM: Ce prere ai despre startup-urile romneti fa de cele din vestul Europei sau din SUA? B.I.: Startup-urile romneti i cele din vest nu sunt fundamental diferite. Cu toate acestea, exist un factor de selecie subiectiv care depinde de mediul n care se afl. Inclusiv n Statele Unite este o diferen foarte mare ntre a fi un startup n Silicon Valley sau a fi un startup n Detroit sau Seattle. Mediul selecioneaz aceste companii n moduri foarte diferite. Startup-urile din Romnia sunt nfiinate de oameni ambiioi care i doresc mai mult dect un job de inginer (care este destul de bine pltit n Romnia) i sunt cumini n sensul c ncearc s creeze businessuri medii i mari, ns foate puine ncearc s creeze afaceri foarte mari. n plus, e foarte dificil s faci asta plecnd din Romnia. Sunt businessuri pe care nu le poi construi dect n Silicon Valley, un exemplu simplu fiind fondatorul Hi5 care s-a mutat din Boston n Silicon Valley pentru a putea ridica investiia de care avea nevoie. Pentru toate celelalte startup-uri

ns, Romnia n context european are destul de multe prghii de dezvoltare, dovada fiind faptul c sunt startup-uri care aleg s se relocalizeze aici. TSM: Dac un mare investitor ar dori s finaneze trei startup-uri romneti, ce sugestie i-ai da acestuia? B.I.: Depinde ce nelegem prin investitor mare. Indiferent de ct este de mare investitorul, trebuie s ne uitm la expertiza profesional a acestuia i la valoarea adugat pe care o poate aduce companiei pe lng partea financiar. n momentul sta sunt cteva businessuri foarte interesante care au echipe excelente care lucreaz la ele. Printre ele se numr UberVu, Mavenhut, Soft32 i m opresc aici ca s nu mai dau ponturi TSM: Revenind la How to Web, poi s ne descrii care este evoluia acestui eveniment pn acum? B.I.: Evoluia How to Web a fost foarte interesant, att din punct de vedere cantitativ, ct i calitativ. Ediia de anul acesta va avea cel mai mare numr de participani i

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

39

interviu
Gamication
ne bucurm c reuim s aducem speakeri din ce n ce mai muli i mai buni de la o ediie la alta. Anul trecut ne-am bucurat s l avem alturi de noi pe Phil Libbin, CEO al celei mai mari companii de tehnologie care a venit vreodat n Romnia la un eveniment public. Anul sta pe scena How to Web vor urca Thomas Hartwig (Co-Fondator i CTO al King.com, una dintre cele mai importante companii de social gaming din lume, care se pregtete de listarea pe burs) i Paul Ford (VP i CIO SoftLayer, companie de infrastructur achiziionat de IBM cu 2 miliarde USD la nceputul anului). n acelai timp am crescut numrul de investitori very early stage de la Startup Spotlight i sperm s obinem i mai multe deal-uri la finalul programului. TSM: Anul trecut am vzut nume mari precum CEO-ul Evernot, Phil Libbin, sau CEO-ul Everplaces, Tine Thygesen. Ce ne aduce nou How to Web anul acesta? B.I. Am nceput How to Web cu o prim ediie n 2009, n Politehnica Bucureti, i l-am continuat cu o prim ediie internaional n 2010. An de an, How to Web a crescut ca numr de participani dar, i mai important, s-a maturizat din punct de vedere al structurii agendei i al obiectivelor pe care i le propune. How to Web nu a fost niciodat doar o conferin ne-am dorit mereu s-l facem un instrument util, practic, cu rezultate msurabile pentru cei care i trec pragul. Lista de poveti de succes ale How to Web este o confirmare a acestui lucru. B.I. Startup Spotlight este un program i concurs destinat startup-urilor early stage, care are loc n cadrul How to Web. Startup Spotlight exist pentru c ne-am dorit s oferim ceva mai mult dect ocazia de prezentare i am vrut s dezvoltm un program care are impact asupra dezvoltrii startup-urilor. Anul acesta avem o separare mai clar ntre agenda destinat startupurilor care se ntmpl pe scena Ignite n cadrul Startup Spotlight i prezentrile profesionitilor din domeniul tehnologiei care vor avea loc pe scena Grow i se adreseaz dezvoltatorilor, designer-ilor i comunitilor dezvoltate n jurul produselor tech. formm conexiuni valoroase. Acest material face parte din campania Lets grow together a How to Web1, cel mai important eveniment dedicat tehnologiei si antreprenoriatului din Europa de Sud-Est. How to Web 2013 are loc pe 20 si 21 noiembrie in Bucuresti. n Cadrul conferintei va avea loc si Startup Spotlight2, competitie si program de orientare adresat celor mai performante startup-uri din regiune.
1 http://2013.howtoweb.co/ 2 http://startupspotlight.co/

TSM: Mulumim pentru rspunsuri. n ncheiere, te rog s le dai cititorilor notri trei motive pentru a participa la ediia How to Web de anul acesta. B.I.: Primul motiv ar fi cel pe care l oferim de fiecare dat: facem How to Web pentru c ne dorim s i susinem pe cei care i doresc s nvee mai multe despre cum s fie profesioniti mai buni n domeniul tehnologiei. Al doilea motiv ine de calitatea speakerilor de anul sta. Printre acetia se numr Paul Ford (VP i CIO Softlayer), Marco Cecconi (Core Developer Stack Overflow), Simon Stewart (Software Engineer la Facebook), Cristopher Martin (Senior Manager Bosch) sau Martyn Davies (Developer Evangelist la Sendgrid). Ultimul (ns nu cel din urm) motiv pentru a participa la conferin este faptul c How to Web e ntotdeauna un moment foarte bun de ntlnire cu ali oameni care TSM: Am primit ntrebri despre leg- mprtesc aceleai pasiuni i lucreaz tura dintre How to Web i Startup Spotlight. la probleme asemntoare, iar o astfel de ntlnire nu poate dect s ne ajute s ne Poi s ne dai mai multe detalii?

Ovidiu Man, PMP

ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine

40

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

programare

programare

The Post Classical HTTP Era: Say Hello to Real-Time Web


Perspectiva unui utilizator normal

ie c ne place sau nu, trim un moment de tranziie ntre dou ere - de la era clasic HTTP ctre era web-ului n timp real. Pulsul Internetului a devenit mai rapid i acum acesta nu mai e doar un mediu static de documente, ci reprezint un mediu de comunicare bidirecional, distribuit global i complet real-time. Acest nou tip de comunicare a nceput deja s schimbe lucruri importante pe care le tim despre software development, publicitate, marketing, PR i multe alte domenii. crescut pn s-a ajuns la un interval de timp de ordinul orelor. RSS-ul a reprezentat pasul urmtor eficientiznd procesul prin care eram inui la curent cu aceste actualizri. Dar totui, webul era relativ ncet n comparaie cu ce cee ce este el astzi. n jurul lui 2000 mesageria instant a nceput s fie adoptat de tot mai mult lume. Acest fapt a accelerat i mai mult viteza web-ului, fcndu-l un mediu atractiv pentru toate persoanele, indiferent de vrst, cultur sau situaie social. Facebook a fost lansat n 2004, urmat de YouTube n 2005, Twitter n 2006 i Instagram n 2010. Datorit acestor servicii i a vitezei de comunicare pe care acestea le permit, viteza marketingului digital a sczut de la ore la minute sau chiar secunde. Tot din 2000 o alt tranziie constant mai are loc tranziia de la accesul sporadic i staionar la Internet, la accesul continuu i mobil. Astzi toat lumea e conectat tot timpul, dar un lucru important de notat e faptul c nu suntem conectai doar n calitate de consumatori, ci i n calitate de furnizori. Aceste trenduri i tranziii au demoCreterea liniar a vitezei Internetului n ultimele trei decenii lumea n care trim a devenit mult cratizat Internetul transformndu-l dintr-un mediu static i mai rapid, iar mediul online reprezint locul n care aceast unidirecional ntr-un mediu real i bidirecional. accelerare este cea mai vizibil. nainte de apariia blogging-ului rata de actualizare a site-urilor web era nceat. Acestea erau Mainstream vs. Social Media actualizate odat la cteva zile. Site-urile care prezentau tiri erau Reelele de socializare nu sunt doar o conduct de distribuie, actualizate zilnic, sau poate, de cteva ori pe zi. ntr-un final, ci ele reprezint un nou tip de media care este mult mai rapid odata cu creterea masiv a blogging-ului, rata de actualizare a dect media tradiional. Web-ul a devenit un mediu care favorizeaz mult mai mult conectarea n timp real dect radioul sau televiziunea. De fapt, reelele de socializare ctig n mod constant lupta vitezei. Acest fapt este dovedit de numeroasele tiri importante (breaking news) care de cele mai multe ori apar n mediul online cu zeci de minute, sau n unele cazuri ore ntregi nainte de a fi distribuite la TV. Ritmul i volumul de mesaje de pe reelele de socializare a crescut exponenial, an dup an i nu d semne de ncetinire. Un studiu fcut de Experian Marketing Services arat c timpul petrecut de pe device-urile mobile pe reelele de socializare (15%) se claseaz pe locul doi, fiind precedat doar de timpul petrecut pe e-mail (23%). Aproximativ 99.9% din toate speciile care au existat pe Pmnt au disprut. ntr-un mod similar, peste 90% din companiile care erau n Fortune 500 n anul 1955, nu mai exist azi. i totui, ce ar trebui s ne spun nou aceste lucruri? Noi, ca indivizi, trebuie s nelegem c e bine s tim despre schimbrile majore ale evoluiei pieei, dac nu dorim s devenim nvechii. n schimb, pentru noi, n calitate de companii,nu e suficient doar s tim despre aceste schimbri majore, ci e nevoie s le adoptm dac dorim s reuim pe termen lung. Acum dou decenii s-a petrecut tranziia de la media tradiional la media digital i ntr-un mod similar tranziia care se ntmpl acum reprezint o provocare existenial adapteaz-te sau dispari i probabil o oportunitate care nu se arat prea des. Companiile care se adapteaz i nva mai rapid vor fi liderii de mine, n timp ce restul vor fi nevoii s se adapteze curnd, dac nu vor s dispar.

42

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


i trendurile devin globale n cteva minute. Riscul de a ntrzia este mai mare dect riscul de a grei. Datorit acestui fapt, nume importante din media sunt puse sub presiune i de aceea apar situaii n care anumite tiri sunt publicate fr a avea timp s fie verificate. Este mai bine s publice o corecie la o tire eronat dect s fie percepui ca fiind ncei. n lumea de azi vor aprea mai multe ameninri, erori, confuzii i crize, dar acestea vor ncepe i sfri mult mai rapid. De asemenea i oportunitile vor avea acelai ritm. Pentru a supravieui i prospera n aceste cicluri rapide, organizaiile trebuie s gndeasc i s rspund prompt, chiar dac acest lucru presupune producerea de erori i corecii mult mai frecvente. Prezentul conine mai multe informaii i schimbri dect oricnd i de aceea e mult mai dificil de neles astzi dect a fost nainte.
Internetul ntr-o or (sursa: Experian Marketing Services)

Categorie E-mail Social Networking Entertainment Shopping Travel

Procentaj de timp ntr-o or 23% 15% 13% 11% 9%

Aceste schimbri modific o serie de alte domenii precum marketingul, vnzrile i chiar serviciile. Consumatorii triesc n prezent i ei se ateapt ca i brandurile s triasc de asemenea n prezent. Un nou cuvnt cheie folosit n marketing a aprut datorit acestei obsesii noi legat de prezent i anume, acest cuvnt este numit now-ism. Now-ismul poate fi definit ca pofta nrdcinat a consumatorilor de gratificare instantanee care este satisfcut de o serie de produse, servicii i experiene real-time. Consumatorii, de asemenea, contribuie febril la avalana de coninut real-time care se construiete chiar n aceste momente. Prin urmare, brandurile nu au de ales - trebuie s triasc n haosul splendid, real i ncnttor oferit de prezent. Simplu spus, now-ismul reprezint filozofia care spune c experiena din prezent este fundamental. Viaa se ntmpl acum. Prezentul conteaz cel mai mult.

Now-ismul reprezint o schimbare cultural a crei int este prezentul i nu trecutul sau viitorul. Este ceva nou si fr precendent niciodat nu a existat pe aceast planet o alt civilizaie care s triasc exclusiv n prezent. n era informaiei, datorit reelelor de comunicaii, prezentul a devenit mai extins, mai rapid i un foarte mare consumator de coninut. n ziua de azi ne concentrm pe iminen i odata cu aceasta vin i ateptrile pentru servicii i soluii instante. Trim ntr-o er n care brfele

Numeroase studii arat c o ntrziere de o fraciune de secund reduce implicarea utilizatorilor i scade veniturile siteurilor. Ca rezultat, butonul de refresh ajunge s nu mai fie folositor n aplicaiile web, iar actualizarea datelor n timp real se transform dintr-o caracteristic de confort ntr-o adevrat necesitate pentru cele mai multe site-uri competitive. n mod tradiional aplicaiile web se bazeaz pe un ciclu cerere-rspuns: introducem un URL, iar browser-ul web trimite un reques t server-ului, care rspunde trimind un response coninnd pagina care urmeaz s fie afiat. Acest proces este simplu de neles i e suficient de bun pentru site-uri informaionale care nu necesit mult interaciune cu utilizatorul. Dar odat cu rspndirea smartphone-urilor i a tabletelor, am ajuns s ne ateptm la aplicaii mult mai interactive, iar web-ul nu face excepie. Modificarea acestui ciclu clasic de request-response astfel nct anumite seciuni din pagin s rspunda imediat la interaciunea utilizatorului este posibil. Acest gen de aplicaii web se numesc Single-Page Applications (SPAs) i ele permit modificarea coninutului n timp real. Totui, apare i o provocare tehnic: interaciunea trebuie s fie bidirecional, aceasta nsemnnd c serverul trebuie s trimit date fr a avea nevoie de un request. Pn acum existau cteva metode precum polling, long-polling sau server-sent-events, care simulau o coneciune bidirecional, dar folosind aceste metode browser-ul web nu poate pstra o conexiune stabil cu serverul. n schimb, browser-ul trebuie s interogheze constant server-ul dac exist mesaje noi. Nici implementrile acestor metode nu sunt ntotdeauna uoare i nu exist o soluie la problema traficului suplimentar nedorit generat de multitudinea de interogri. Websocketurile permit stabilirea unei conexiuni stabile i bidirecionale. Odat stabilit aceast conexiune, ea i permite serverului s iniieze comunicarea cu browser-ul. Mesajele sunt trimise n momentul sosirii, fr a mai exista nevoia de ateptare ca n cazul metodelor nainte menionate. Aceasta nseamn c putem folosi aplicaiile web n domenii n care modificarea datelor n timp real este critic i are un impact major (licitaii, tranzacii). Dei aceast afirmaie poate prea absurd ntr-un domeniu precum IT-ul, ea este complet adevrat. n anii `70, softwareul rula n general pe servere masive, la care utilizatorii se conectau utiliznd nite terminale simple, fr o mare putere computaional. Apoi, n anii `80, modelul client-server a prins contur, iar pe baza acestui model Internetul a nceput s fie tot
www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

Perspectiva unui dezvoltator software

Lucrurile vechi revin la mod

43

programare
The Post Classical HTTP Era: Say Hello to Real-Time Web
mai rspndit. Totui, la nceputurile anilor `90, pentru o scurt perioad, aceast cretere a nceput s stagneze, fr a mai aprea mari inovaii n aceast direcie. Aceasta este perioad de boom a aplicaiilor desktop. Din fericire, a spune eu, aceast perioad a fost relativ scurt, i dup civa ani dezvoltatorii software au fost nevoii s rescrie software-ul i s l porteze pe web. Aceast schimbare a readoptat modelul client-server n care utilizatorii comunicau cu un server folosind un terminal, doar c de aceast dat puterea computaional a crescut att la nivelul terminalelor ct i la nivelul serverului. Aplicaiile web au nceput treptat s semene, ba chiar n unele cazuri s arate mai bine dect aplicaiile desktop i datorit acestui fapt au crescut i ateptrile noastre n ceea ce privete interaciunea cu acestea: ne dorim ca totul s se ntmple la fel de rapid precum n aplicaiile desktop. Bineneles, tehnologiile real-time nu sunt ceva nou. De ani buni exist hardware i software care permite dezvoltarea de sisteme n care latena este minim. Totui, pentru un motiv anume, nimeni n afar de domeniul financiar nu le prea folosete. n ultimii ani, conceptul de real-time a ajuns de la o tehnologie de ni, la ceva ce nu e doar realizabil, ci e i foarte uor accesibil pentru comunitatea de dezvoltatori. nainte era suficient ca un programator specializat n backend s lucreze mpreun cu un designer care tia HTML, CSS i puin jQuery, dar acum lucrurile se schimb.Tehnicile de dezvoltare axate pe backend (MVC, MVVM), ncep s migreze pe frontend, n partea de client. Noua paradigm va fi mai degrab familiar programatorilor de backend, dar n anumite privine va fi totodat strin. De exemplu, spre deosebire de codul care ruleaz pe server ntr-un mediu controlat, codul de pe client ruleaz n multe browsere fiecare avnd propriul JavaScript run-time. O alt diferen major o face faptul c de cele mai multe ori codul de pe client este event-driven, iar acest lucru tinde s fie impredictibil i non-linear. Deja exist multe framework-uri care folosesc API-ul oferit de WebSocket-uri precum SignalR, SockJS, Socket.IO. Toate aceste framework-uri sunt construite pentru a uura i a face mai rapid munca programatorilor. Totui, partea de client reprezint doar jumtate din ecuaie. Programatorii nc au nevoie de date de pe server, de tranzacii securizate, etc. Adaptarea infrastructurii sau adoptarea unui framework care s trateze schimbul de date n timp real nu reprezint un angajament trivial. Adevrul e c framework-urile existente nu au fost fcute pentru a suporta aplicaii real-time. Tocmai de aceea, o nou ras de framework-uri ncep s apar framework-uri optimizate pentru SPA-uri i pentru aplicaii real-time precum Derby sau Meteor. ns, doar timpul ne va arta dac aceste framework-uri vor avea succes. JavaScript-ul reprezint singurul limbaj de scripting suportat de ctre toate browser-ele i odat cu creterea numrului de SPAuri a crescut i utilizarea JavaScriptului. Un lucru important de notat e faptul c JavaScriptul i face simit prezena i pe partea de backend prin Node.js. Din pcate acesta este un limbaj destul de capricios pe care programatorii fie l iubesc fie l ursc. Fr cunotine bune de JavaScript va fi imposibil s dezvoli aplicaii web real-time. n domeniul dezvoltrii software, publish-subscribe reprezint un messaging pattern, n care emitorii de mesaje sunt numii publishers i ei se ocup cu transmiterea direct de mesaje ctre anumii destinatari specifici, acetia din urm fiind numii subscribers: Subscribers: Sunt interesat n colecia de date X; trimite-mi un snapshot iniial cu colecia de date, iar apoi trimite-mi orice schimbare petrecut pe colecia urmrit. Publisher: Proprietatea X a entitii Y a fost modificat in Z.

Dezvoltatorii trebuie s se adapteze

Publish-subscribe reprezint, ntr-o form sau alta, messaging pattern-ul care st la baza aplicaiilor real-time. Acesta confer avantaje precum un nivel ridicat de scalabilitate prin operaii paralele i message caching. Webul real-time este deja aici. Acesta nu mai reprezint doar un termen folosit n marketing. Acele zeci de icon-uri care sunt pe ecranurile gadget-urilor noastre i se schimb automat,demonstreaz acest fapt. Web-ul ncepe s devin un flux de informaii continuu pe care noi le colectm i le consumm, iar acest trend de livrare instantanee a mesajelor devine unul dintre cele mai importante aspecte ale experienei noastre online. Totodat, acest trend deschide noi oportuniti pe care noi ar trebui s le fructificm i, probabil n curnd, ne vom aminti despre vremurile n care ncrcam pagini statice de pe server, la fel cum ne amintim acum despre conexiunile dial-up. Programatori, dezvoltatori i utilizatori: Suntei pregtii pentru aceast nou versiune a web-ului?

Concluzii

JavaScript i Publish-Subscribe

Alexandru Ivan

ivan.alexandru@evoline.ro Software Engineer @ Evoline

44

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

ReactiveExtensions pentru sisteme bazate pe evenimente


tilizatorii se ateapt s vad informaii n timp ce se intampl. Vor ca atunci cnd comand un produs pe un site de e-commerce s vad imediat confirmarea comenzii. Atunci, cnd caut informaii ntr-o aplicaie, textbox-ul s le ofere sugestii de cutare n timp real. In acest articol, vom discuta despre o procesarea fluxului de evenimente generat de interaciunea utilizatorului sau de alte servicii externe pentru ca s expunem informaii n timp real utilizatorilor folosind ReactiveExtensions. care pot fi observate de catre nite obiecte reprezentate de IObserver<T>. IObservable<T> ataeaz prin metoda Subscribe un obiect ce trateaz evenimentele generate i returneaz un obiect IDisposable ce poate fi folosit pentru a detaa observatorul pentru ca evenimentele s nu mai fie tratate de acesta. Aceste interfee sunt duale pentru IEnumerable<T> and IEnumerator<T> prin faptul c Observable Collections utilizeaza modelul Push pentru a mpinge datele ctre observatori, pe cnd sursele de date Enumerable sunt interogate de catre enumeratori pentru a primi datele. Modelul Push de procesare a datelor este denumit ca i model reactiv, iar modul prin care este implementat aceast procesare este prin definirea unor set de extensii (disponibile in C#) pentru IObservable<T> i de aici numele de ReactiveExtensions. Arhitectura Rx Pentru a folosi Rx, trebuie adugate librariile System.Reactive Rx pentru .NET se bazeaz pe conceptul de Observable (disponibile aici [4] sau prin NuGet - ReactiveExtensions). Vom Collections (colectii observabile), definit prin interfeele: folosi ca prim exemplu clasa Observable pentru a genera date ce IObservable<int> source; vor fi mpinse ctre un observator pentru a fi procesate. In exemIObserver<int> handler; public interface IObservable<out T> plu de mai jos, vom genera evenimente la anumite interval de timp { IDisposable Subscribe(IObserver<T> observer); i vom ataa un observator ce se va ocupa de datele primite: } ReactiveExtensions pentru .NET (prescurtat Rx) este o librarie pentru a procesa fluxul de evenimente ce apar ntr -un sistem event-based, cum ar fi: Evenimente UI generate de user: mouse-moved, key-pressed, etc. Evenimente care apar datorit programrii asincrone: cum ar fi cererile i rspunsurile venite n urma unor apelri unor servicii web Evenimente venite dintr-un Enterprise Service Bus: JMS, Windows Azure Service Bus, NServiceBus, etc. sau prin integrarea cu un motor de CEP cum ar fi StreamInsight sau StreamBase
public interface IObserver<in T> { void OnCompleted(); void OnError(Exception error); void OnNext(T value); } IObservable<int> source = Observable.Generate(0, i => i < 5, i => i + 1, i => i * i, i => TimeSpan.FromSeconds(i)); using (source.Subscribe(x => Console.WriteLine(OnNext: {0}, x), ex => Console.WriteLine(OnError: {0}, ex.Message), () => Console. WriteLine(OnCompleted))) { Console.WriteLine(Press ENTER to unsubscribe...); Console.ReadLine(); }

Aplicabilitate

Aceste interfee au un rol complementar: IObservable<T> reprezint sursa evenimetelor generate (e.g. mouse-moved)

Clasa Observable genereaz numerele 1,4,9,16 la interval de timp 1,2,3,4 secunde i parametric pasai metodei Subscribe proceseaz datele primite la evenimentele de OnNext (cnd date noi sunt disponibile pentru procesare), OnError (cnd sursa observat arunc o excepie) i OnCompleted (cnd sursa notific observatorul c a terminat de transmis datele).

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

45

programare
ReactiveExtensions pentru sisteme bazate pe evenimente
In cazul procesrii evenimentelor de UI, apar probleme de genul filtrrii unor evenimente sau a dezabonrii de la anumite evenimente. Aceste probleme sunt uor rezolvate prin importarea de evenimente generate de ctre elemente de UI in Rx prin clasa Observable, n exemplul urmtor vom intercepta toate evenimentele de tipul MouseEventArgs i EventArgs pe care fereastra construit le genereaz prin miscarea mouse-ului, respectiv tastarea ntr-un text-box i combin fluxul de evenimente ntr-un Observable C ollection care reprezint practic o baz de date de evenimente de tipul Mou s e Mo v e , re s p e c t i v TextChanged, generate de cursor sau de text-box. Fluxul de evenimente de tip TextChanged pot fi uor filtrate, n scenariul n care nu este nevoie de procesarea tuturor evenimentelor, ci alegem doar datele distincte la un interval de o secund (n scenariul in care utilizatorul scrie foarte repede i fiecare input necesit o procesare complex dorim s nu facem cereri ctre backend ca s proceseze fiecare cerere). Abonrile pot fi combinate, in cazul nostru vom combina evenimentele MouseMove, respectiv TextChanged i vom invoca Garbage Collector-ul pentru ambele subscripii.
var lbl = new Label(); var txt = new TextBox(){Location = new Point(0,20)}; var frm = new Form { Controls = { lbl, txt } }; var moves = Observable.FromEventPattern<MouseEventArgs>(frm, MouseMove); var input = Observable.FromEventPattern<EventArgs>(txt, TextChanged) .Select(x => ((TextBox)x.Sender).Text) .Throttle(TimeSpan.FromSeconds(1)) .DistinctUntilChanged(); var inputSubscription = input.Subscribe(evt => Console.WriteLine(User wrote: + evt.Text)); var movesSubscription = moves.Subscribe(evt => Console.WriteLine(Mouse at: + evt.EventArgs.Location)); using (new CompositeDisposable(movesSubscription, inputSubscription)) { Application.Run(frm); }

Procesarea evenimentelor in Rx

var svc = new DictServiceSoapClient(DictServiceSoap); svc.BeginMatchInDict(reactive, callback => { var words = svc.EndMatchInDict(callback); }, foreach (var word in words) Console.WriteLine(word.Word);

null);

Fragmentul de cod prezentat mai sus se poate rescrie folosind metoda FromAsyncPattern din clasa Observable, unde se specific ca i parametri generic, semnatura metodei ce iniiaz apelul si care se folosete la obinerea rezultatului in urma invocarii serviciului web, i produce un Observable Collection din rezultatele obinute de la serviciul web, la care putem abona un observator care s proceseze rezultatele. In fragmentul de cod de mai jos, este prezentat modul in care transformm apelurile catre serviciul web, pentru a returna ca rezultat cuvintele care ncep cu react ntr-o sursa observabil la care abonm un observator ce afieaz rezultatele primite:
var svc = new DictServiceSoapClient(DictServiceSoap); var matchInDict = Observable.FromAsyncPattern<string, string, string, DictionaryWord[]> (svc.BeginMatchInDict, svc.EndMatchInDict); var res = matchInDict(react); var subscription = res.Subscribe(words => { foreach (var word in words) Console.WriteLine(word.Word); });

Pe lang Rx pentru .NET, modelul reactiv - Push model prezentat, a fost de asemenea implementat in Javascript (pentru browser ct i server-side Node.js), C++, Ruby i Python. De asemenea, o implementare pentru JVM folosind Clojure a fost dezvoltat recent de Netflix [5]. O prezentare a acestor implementri poate fi gasit in [4], [5] i [6]. Mecanismul reactiv de tratare a evenimentelor, n sisteme unde o varietate de evenimente sunt generate in timp real, de catre utilizatori sau prin comunicare cu anumite servicii externe, se dovedete a fi un instrument deosebit de folositor ce uureaza munca programatorului i confer claritate i concizie codului. Rmane la analiza cititorului un numr de aspecte ce nu au fost tratate in acest articol, cum ar fi threading-ul, implementrile disponibile i pentru alte platforme, testabilitatea codului scris cu ajutorul Rx i un numar foarte mare de metode utilitare ca i extensii pentru coleciile observabile, detalii ce pot fi gasite la referine!

Implementari disponibile

Concluzii

Referinte Rx i procesarea asincrona a apelarii serviciilor web


[1]. Rx Design Guidelines.pdf , disponibil la http://msdn.microsoft.com/ en-US/data/gg577612 [2]. Rx HOL .NET.pdf , disponibil la http://msdn.microsoft.com/en-US/data/ gg577612 [3]. http://www.introtorx.com/ [4]. http://rx.codeplex.com/ [5]. http://techblog.netflix.com/2013/02/rxjava-netflix-api.html [6]. https://github.com/Netflix/RxJava Tma Ionu

Apelarea serviciilor web se face in mod tradiional prin doua metode: o metod care iniiaza apelul spre serviciul web i alt metod care primete rezultatul. Aceast tehnic duce, n cazul unor sisteme ce folosesc intens comunicare cu servicii web, la un cod greu de ntreinut - spaghetti code. Procesarea apelrii serviciilor web (cererea catre serviciul i raspunsul returnat) poate fi mult simplificat, prin transformarea acestor perechi de metode de catre Rx. De exemplu, n cazul unui serviciu web, invocat prin SOAP, ce returneaz o lista de cuvinte ce au ca i prefix parametrul transmis, proxy-ul genereaza perechea de metode ce se poate folosi n felul urmator:

tamash_ionut@yahoo.com .Net developer @ Imprezzio Global

46

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Interviu cu Richard Campbell (I)


ichard Campbell are mai mult de 30 de ani de experien high-tech, fiind Director Regional Microsoft i profesionistul cel mai valoros al Microsoft (MVP). El se consult cu mai multe organizaii nord- americane de top. Pe lng faptul c vorbete la conferine peste tot n lume, Richard este una dintre gazdele .NET Rocks! Talk Show-ul audio de pe internet pentru Dezvoltatorii .NET i gazda emisiunii RunAs Radio, Talk Show-ul audio de pe internet pentru Profesionitii IT. Dup Esena DevOps sesiunea pentru invitai RABS, am avut oportunitatea s stm puin cu el i s i punem cteva ntrebri legate de trecutul i viitorul industriei calculatoarelor, dar i s i cerem sfatul cu privire la cum s ncepi i s avansezi n carier n acest domeniu. Attila: Astzi l am cu mine pe Richard Campbell. Richard, poi s ne spui cteva lucruri despre tine, te rog? Richard: Bun ! M numesc Richard Campbell. Sunt dezvoltator de software din 1977, chiar dac trebuie s recunosc c aveam 10 ani atunci i scriam cod pe un TRS-80 model 1 care avea n total 4k sau RAM, dar cam asta era tot ce fceam. M-a fascinat nc de atunci i am rmas n A: Aa ai devenit interesat de acest domeniu? Programnd un TRS-80? R: Da, la 10 ani este o vrst foarte impresionabil. Iar 1977 este de asemenea anul n care a aprut Star Wars. Eram un copil. mi plcea science-fiction i exista un computer n apropiere, la domeniul tehnologiei de atunci. Radio Shack. Prima mea slujb, la 12 ani, a fost s repar computere, inclusiv TRS-80. Tatl meu este inginer n electronice i el m-a nvat elementele de baz n electronic de la o vrst foarte fraged. Cred c printre primele mele amintiri sunt cele legate de folosirea unui ciocan de lipit. Am nceput s repar aparate i s le programez i am tot avansat de acolo. A : Deci la 12 ani aveai deja o slujb pltit legat de computere. R: Da, lucram noaptea i n weekend, mergeam nc la coal. Literalmente, nu am fcut niciodat altceva. A: Cum ai fost acolo cam de la nceput, a vrea s te ntreb dac i aminteti cnd a avut loc ruptura dintre dev / qa / dba i IT? A existat dintotdeauna o separare ntre aceste sub-domenii sau aceasta s-a produs mai trziu? R: Bazele de date au aprut mai trziu, dar chiar dac ne ntoarcem pn la minicomputerele timpurii, existau oameni care se ocupau de hardware i oameni care se ocupau de software. Pentru c necesit seturi de abiliti foarte diferite i mentaliti foarte diferite, de asemenea. ntotdeauna exist o anume separare ntre grupuri. Depinde de ct de constructiv este sau nu aceasta, dar sunt tensiuni benefice. n mod inerent, software-ul pune presiune pe hardware. Iar oamenii care se ocup de hardware ncearc s l menin ct mai stabil. i aceasta este o tensiune natural. Nu a spune c este una rea. Exist nevoia de a pune presiune pe aceste

lucruri. Tindem s facem lucrurile mai bine dac exist o anumit tensiune. A: Exist, bineneles, lucruri interesante care pot s apar dac ei colaboreaz. Au existat aparatele Lisp Machines, care au fost special create pentru a executa Lisp i alte aparate cu hardware special conceput pentru a rezolva o anume problem. Exist o legtur i s-ar putea ajunge la un rezultat mai bun dac s-ar colabora. R: Hardware-ul specializat a fost un produs secundar al limitrilor tehnologiei din acea vreme. Asta se ntmpla n

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

47

programare
Interviu cu Richard Campbell (I)
perioada cnd Cray producea primele lor supercomputere, iar lungimea firelor conta deoarece viteza luminii este important cnd eti la asemenea viteze de calcul. Dar cum siliciul general s-a mbuntit, cred c vedem din ce n ce mai puin echipament specializat deoarece calculatoarele generale sunt att de eficiente acum. A: Discutabil, da. Crezi c datorit micrilor DevOps i Agile cu echipe funcionale ncruciate, separarea dintre DBA/ IT / dezvoltatori va disprea? R : Cred c rolurile nu duc nicieri. Cred c abilitile sunt abiliti i c sunt oarecum specializate. Cred c mai presus este s ne concentrm pe ceea ce este cu adevrat important, adic s slujim afacerii, s o ajutm ntr-adevr s fac bani, s fie mai productiv. tii, este frumos s pstrezi baza de date pregtit, dar un mod prin care poi face asta este s nu accepi s fie introduse date. Dar acest lucru nu este foarte util. Doar ajutnd ntreaga echip s in minte c avem acelai el este partea mai important. i totui, cred n divergene. Mentalitatea c un dezvoltator trebuie s creeze o nou funcionalitate este o mentalitate preioas. Dar este i mai valoroas cnd cineva pune presiune pentru a se asigura c datele au integritate i c utilizeaz hardware-ul n mod eficient. Poi s o priveti ca pe o fierrie: foloseti friciunea pentru a genera suficient cldur pentru a face oel. Scopul este s facem cel mai bun produs pe care l putem face i s avem fiecare dintre acele roluri reprezentate n proces, toate avnd acelai el final, este de fapt cea mai bun metod de a face asta. Este ceva ce am pierdut, am uitat. Ajungem prea absorbii de slujb i nu suntem absorbii de scop. Cred c multe dintre aceste micri sunt menite s ne readuc ctre aceste scopuri reale. A: Crezi c dimensiunea medie a echipelor sau companiilor de dezvoltare software crete sau descrete? Vedem mai multe companii mari, ca Microsoft sau unele mai mici, start-up-uri? R: Cred c lucreaz mai multe fore diferite acum i aceasta este o perioad extrem de interesant. n 2013 de abia ieim dintr-o criz economic mondial destul de urt. i cred c sunt cteva lucruri care s-au ntmplat din cauza asta: atunci cnd ai o criz economic, exist o parte constructiv, i anume, scuturarea celor slabi. Este afacerea ta att de eficient pe ct ar putea s fie? Atunci cnd suntem n perioade lungi de cretere cum a fost timp de civa ani, din 2000 ncoace devii din ce n ce mai puin eficient, deoarece eti ntr-o curs pentru cota de pia. Exist ntotdeauna mai muli bani. Iar apoi, cnd avem un declin, ne uitm din nou la profit i pierderi i devenim mai eficieni. Dar cred c cel mai interesant lucru care a rezultat din anii 2008 2009 a fost scuturarea tinerilor, mai ales n pri ale lumii cum ar fi Europa de est, unde exist mentalitatea c obii o slujb i o pstrezi. Exist o presiune s ai o slujb i s o pstrezi, iar dup un eveniment anormal ca cel din 2008- 2009, cred c aceea ncredere a fost zdruncinat. i astfel, startup-urile, care nainte fuseser vzute ca deosebit de riscante, par mai puin riscante acum, pentru c slujbele stabile nu mai par acum att de sigure. Deci, sentimentul c exist mai mult risc n slujbele stabile a diminuat sentimentul de risc din jurul startup-urilor i cu adevrat pentru prima dat n experiena mea, cltorind n toi aceti ani, vd c se ivesc peste tot mentaliti noi referitoare la start-up. Exista credina c numai americanii pot face startup-uri. Totul se reducea la Silicon Valley. Dovezile pe care le-am primit n ultimii doi ani, de la criz ncoace, arat faptul c asta nu e adevrat. Sunt n cltorie de aproximativ o lun i n diferite pri ale lumii pe unde am cltorit n Regatul Unit, Irlanda, Bulgaria exist startup-uri peste tot! Iar asta mi se pare a fi un produs secundar a ceea ce s-a ntmplat n ultimii civa ani. A: Deci asta ar nsemna echipe mai mici. R: Da. Cred c start-up-urile nseamn echipe mai mici i foarte foarte agile. Dar sistemele se i mresc. Cloud devine din ce n ce mai mare deoarece avem nevoie de o mare putere de calcul i o putem utiliza n feluri foarte interesante. i este ca un efect de prghie nu ai nevoie de foarte muli oameni pentru a face asta. Cealalt mare for care lucreaz n prezent este diaspora clientului. Mai nainte erau doar desktopuri i laptopuri. Acum sunt telefoane i tablete diferii factori de form, diferite Uls. Concepia de client s-a zdruncinat, acum este heterogen i necesit muli oameni pentru a realiza dezvoltarea de care ai nevoie. i de asemenea acum nu mai exist o cale clar nainte. Nu tim sigur c vom mai utiliza tastatura i mouse-ul n urmtorii 20 de ani care ne-au servit foarte bine n ultimii 20 de ani. Acum este nevoie s experimentm mai mult, s atingi seturi de abiliti diferite, iar asta nseamn s adaugi oameni de partea clientului. Am sentimentul c partea de server nu a fost niciodat mai stabil, iar cloud duce asta la un alt nivel. n ceea ce l privete pe client, ateptrile au crescut mult, iar aptitudinile s-au diversificat mult i ai nevoie de mult mai muli oameni pentru a face treaba. A: Am impresia c n prezent ne aflm ntr-o renatere software cunoatem destul de bine o mare parte din tiina calculatoarelor. Poi s tii despre frontend / backend / servere / hardware nu n detaliu, dar destul de bine. Eti de acord? R: Cred c da. i mai cred c suntem n mijlocul unei schimbri radicale, ceva ce nu s-a mai produs de cnd a aprut mouse-ul. Cred c educaia referitoare la informatic ncepe s se schimbe, deoarece este din ce n ce mai puin tiin de calcul. Pentru mine, tiina de calcul este dezvoltarea limbajelor i dezvoltarea sistemelor operaionale, fundamentul, partea tiinific a proceselor de calcul. Cred c ncepem s vedem apariia unui adevrat inginer n informatic nu este vorba despre inventarea unui nou tip de ciment, ci despre cum s construieti eficient un pod. Avem ateptri din ce n ce mai mari de la software, deoarece organizaiile depind att de mult de el. Ne ateptm la un software de calitate mai bun i vedem din ce n ce mai mult sistemul educaional ntrebnduse Cum s facem nite ingineri buni n informatic? mai degrab dect oameni de tiin. Ambii sunt valoroi, dar avem deja civa oameni de tiin avem nevoie de mai muli ingineri.

Attila-Mihaly Balazs
dify.ltd@gmail.com Code Wrangler @ Udacity Trainer @ Tora Trading

48

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

testare

Performance... what now?!


xact! Asta spun cei mai muli clieni cnd aud despre testarea de performan. Ar trebui s fie o component cheie n life cycle-ul dezvoltrii produsului. Cei mai muli oameni se concentreaz pe funcionalitate, dar cnd businessul crete i tot mai muli utilizatori interacioneaz cu sistemul, ncepe s funcioneze din ce n ce mai ncet pn cnd nu mai funcioneaz deloc. Acest lucru se ntmpl din cauz c performana nu a fost unul din target-urile importante cnd s-a nceput proiectul. Testarea de performan este important i trebuie fcut de la nceput. n testare exist nivele de testare i tipuri de testare. Nivelele se refer la testarea pe componente, testarea integrrii mai multor componente, testarea ntregului sistem, testarea de acceptan. Tipurile de testare se refer la testarea funcional i non-funcional. Cea din urm se refer n principal la testarea de performan, load, stress etc. Testarea de performan (performance testing) determin modul cum se comport sistemul sub un load anume. Load testing este testarea cu diferite nivele de load, dar cel mai mult detecteaz care e nivelul maxim de load pe care sistemul l suport. Stress testing este realizat prin meninerea load -ului aproape de nivelul maxim determinat anterior, astfel stresnd sistemul pentru a observa cum se comport. Unul din cele mai bune tool-uri de testare de performan este JMeter. Pentru c e open source nu trebuie s v facei griji de numrul de utilizatori virtuali pe care acesta i suport. Nu trebuie s cumprai o licen. Mai mult, este scris n Java i e foarte configurabil i extensibil. Mai mult? Da, exist i mai mult. Comunitatea a crescut mult fa de acum civa ani i la fel i plugin -urile pentru JMeter. Dac integrezi toate plugin -urile existente, te alegi cu un tool de performan complex si puternic. Recent, Selenium Webdriver poate fi integrat cu JMeter. Aceasta integrare era necesar pentru c JMeter este bazat pe modelul client request - server response, fr a mai ine cont de executarea javascript-urilor sau randarea n pagin. Aadar, prin integrarea Webdriver-ului (n opinia mea, cel mai bun tool open source de testare automat funcional) cu JMeter, putem acum simula mai bine browser-ul i putem scrie cod pentru a msura timpii de rspuns ct mai real. E nevoie de un an sau doi ca s cunoti cu adevrat JMeter-ul, eu lucrnd cu el de patru ani deja, pot spune c merit pentru c e tot ce ai nevoie ca tool pentru testarea de performan. Pentru a putea implementa scripturi de performan, crea teste sau scenarii de performan i a avea o bun nelegere despre cum funcioneaz sistemele, este indicat s ai un background n dezvoltarea aplicaiilor i administrarea sistemelor. Acest background m-a ajutat mult cnd am nceput cu testarea de performan. O alt arie important sunt tool-urile de monitorizare. Cu ct cunoti mai mult tool-uri de monitorizare, cu att mai bine. Pe durata testrii de performan a unei aplicaii, care triete ntr-un environment, este bine s existe tool-uri de monitorizare la fiecare nivel. Nu neaparat tool-uri, pot fi i shell script-uri care nregistreaz utilizarea procesorului, memoriei, disk-urilor, reelei, log-urilor de server i de aplicaie. n acest fel avem un overview clar n timp real asupra ntregului environment. Fiecare nivel se refer la Load Balancer, Apache, Varnish, Tomcat, IIS, JVM, Linux OS, Windows OS, Application, MySQL, MSSQL, Oracle,etc. .S zicem c un an a trecut, ai nvat JMeter-ul i suntei familiari cu cteva tool-uri de monitorizare. Executai toate scenariile. Avei rezultatele, de exemplu un tabel cu numrul de request-uri, media timpilor de rspuns per request , minimul, maximul, mediana, troughpu t sau tranzacii pe secund sau minut etc. Pentru o nelegere mai bun, aceste rezultate trebuie interpretate, corelate cu graficele generate, cu output-ul script-urilor i cu graficele tool-urilor de monitorizare, apoi cu log-urile serverelor i aplicaiei. Apoi trebuie scrise concluziile. Parte distractiv ncepe atunci cnd identificai probleme i ncepei s lucrai la mbuntiri de performan. Problemele de performan pot aprea la oricare din nivele, dar prin monitorizarea specificat anterior i configurarea/ajustarea testelor de performan, putei identifica exact care este sursa.

Exemplul 1
Pe d u r a t a r u l r i i t e s t e l o r d e performan sau a suitei de teste, am observat timpi de rspuns mari i c sistemul nu mai rspundea dup un timp. Uitndu-ne

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

49

programare
Performance... what now?!
la tool-urile de monitorizare i la output-ul script-urilor create, am memoria a sczut treptat pn la 0 i apoi a intrat n swap. Acest putut observa c load-ul pe web server era ridicat, dar baza de lucru se ntampla nainte ca o nou aplicaie s fie lansat live, n date nu era aa de utilizat i putea duce mult mai mult. Apoi, producie. Aplicaia nu mai rspundea. Dac intra n producie fr testare de performan, atunci Downtime Afectat businessul Utilizatori nervosi Altele

Exemplul 4
Cu ajutorul testelor de performan am putut identifica bottleneck-uri ntre aplicaie i baza de date, configurri greite de connection pool, configurri greite sau neoptimizate pentru performan la nivelul bazei de date.

Exemplul 5
Am identificat nevoia de a face scale up, de a face upgrade, a adauga mai mult CPU, RAM, Disk-uri etc sau de a face scale out, de a aduga mai multe web servere sau noduri de DB. Ideea este c avei posibilitatea de a mbuntii performana environment-ului i de a testa i verifica cu adevrat, ceea ce va duce la livrarea unui produs cu o calitate mult mai bun i un success mai mare businessului. am vzut c request-urile de la client, ajungeau n Load Balancer, apoi n Apache, apoi n Tomcat. Aadar, problema trebuia s fie undeva n aplicaie. Am luat thread dump-uri i heap dump-uri i cu ajutorul unui tool de analizare a memoriei, am observat c memoria heap era plin i erau milioane de obiecte n memorie create de o librrie third party care fusese introdus recent pentru urmtorul release.
JMeter Test Plan GUI

Exemplul 2
Executnd suita de teste de performan, am observat c toi timpii de rspuns erau mari. Uitndu-ne la log-urile din Apache i Tomcat, timpii de rspuns corespundeau cu ce vedeam n client, JMeter. Metricile de JVM nu artau un load mare n aplicaie. Tool-ul de monitorizare de baze de date arta foarte multe queryuri slow. Configurarea MySQL era un dezastru. Dupa o total reconfigurare a MySQL-ului, rezultatele de performan artau o cretere de 40%.

Exemplul 3
Rulnd testele de performan pentru o perioad mai lung de timp, am observat pe graficele de memorie ale web serverelor c

Mihai erdean

mihai.serdean@evozon.com QA Test Manager | Functional and Performance Test Automation Selenium Webdriver integration with JMeter @ Evozon Systems | Mihai erdean PFA

50

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Java Concurrency in Practice

roblema concurenei este legat de evoluia sistemelor de operare i din dorina de cretere a performanelor aplicaiilor. Sistemele de operare moderne au mai multe task-uri de executat n acelai timp. Deseori numrul de task-uri este mai mare dect numrul de procesoare. Pentru a rezolva aceast problem, sistemul de operare i aloc fiecrui task un interval de timp pentru a rula pe procesor. Cnd timpul a expirat task-ul este n mod forat scos de pe procesor i un alt task are ansa de a fi executat. nainte de a continua discuia noastr despre fire de execuie i despre programarea concurent, vreau s clarific dou noiuni ce nsoesc conceptele din aceast carte. Un proces este o zon de memorie ce conine cod i date. Un fir reprezint o execuie programat a unui proces. Firele pot fi concurente, adic pot accesa n acelai timp aceleai date. Prin acces nelegem citire sau scriere. Pe lng corectitudinea datelor accesate concurent, acest tip de programare mai este confruntat cu o problem, i anume performana. De aceea, pentru a executa un program ct mai repede cu putin trebuie s evitm blocajele (bottleneck). Blocajele pot aprea n cteva situaii: Conexiuni la resurse, adic dou sau mai multe task-uri ateapt pentru utilizarea exclusiv a unei resurse. Blocarea din cauza operaiilor de I/O. Problema cea mare a acestor operaii este c n timpul execuiei lor task-ul este blocat ateptndu-se transferul de date. Subutilizarea procesorului se manifest atunci cnd o aplicaie ntr-un singur fir utilizeaz un singur procesor. Chiar dac nu scriem explicit cod pentru a crea noi fire de execuie, codul poate rula ntr-un mediu multifir. Trebuie aadar s fim avertizai cum lucreaz firele i cum s scriem cod thread-safe. Putem gsi cel puin dou exemple: cnd scriem cod care ruleaz ntr-un alt mediu de rulare (middleware sau server de aplicaie) trebuie avut n vedere documentaia produsului pentru a descoperi dac firele sunt create automat. ntr-un server de aplicaie Java EE exist o component numit servlet utilizat pentru manipularea cererilor HTTP. Servlet-urile trebuie s fie ntotdeauna thread-safe deoarece serverul pornete un nou fir la fiecare cerere HTTP. n aplicaiile GUI. Unele aplicaii sunt single-threaded i de aceea dac un eveniment dureaz prea mult timp ca s se execute, aplicaia pare blocat. Altele, folosesc un event dispatch thread. Cnd un utilizator apas un buton, spre exemplu, se declaneaz un eveniment iar handler-ul de aplicaie va crea un nou fir. Firul principal i cel nou vor lucra n paralel, putndu-se influena reciproc. Acesta este cadrul general n care se lucreaz cu fire de execuie. Lucrarea pe care v-o supun astzi ateniei , Java Concurrency n Practice , avndu-l pe Brian Goetz n calitate de coordonator, este un tutorial complet de lucru cu fire de execuie. ntreaga munc de design, implementare i testare a unei aplicaii robuste, sigure i performante cu fire de execuie este foarte greu de fcut. De cele mai multe ori programatorii prefer s folosesc framework-uri atunci cnd lucreaz cu fire de execuie, pentru c acestea le ofer soluii integrate. Despre toate acestea se discut n prezentul material. Cartea este structurat n patru pri. Prima parte prezint i definete noiunile fundamentale precum thread-safe , atomicitatea (o operaie atomic) sau locking. Selectm , de exemplu , atomicitatea definit ca fiind o operaie ce se execut toat sau deloc, ea neputnd fi ntrerupt de timpul riguros alocat unui task . De asemenea, se prezint reguli de evitare a hazardului concurenial, construirea claselor thread-safe, a coleciilor thread-safe i a compoziiei thread-safe. Cea de-a doua parte ofer soluii de cretere a gradului de eficientizare a aplicaiilor multifir. Dincolo de soluiile clasice

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

51

programare
Performance... what now?!
astzi fire de execuie? Cu siguran destul de puini programatori, pentru c aa dup cum am mai afirmat folosim medii gazd care gestioneaz automat firele de execuie i problemele fundamentale ale lor. Totui, tot ce nseamn performan este influenat de dezvoltator. O nelegere precar a noiunilor de acces concurenial va conduce la soluii neperformante. n plus, execuiile asincrone ale unor task-uri capt un interes deosebit att pentru platformele enterprise ct i pentru cele standard. Evoluia limbajului Java confirm aceste lucruri. n Java SE7 progresele sunt remarcabile. Framework-ul Fork-Join este doar un exemplu. n Java EE7 a fost creat un API special de lucru cu fire de execuie custom. Pn n acest moment folosirea firelor custom n enterprise era riscant i prohibit. Putem crea, prin noul API, fire de execuie ce duc la oprirea firului de execuie al containerului iar apoi, dup oprire, reluarea firului principal. Java FX este un alt exemplu de utilizare eficient a firelor de execuie i a accesului concurenial la resurse. Cartea nu acoper aceste ultime tendine, dar este un ghid extrem de valoros pentru versiuni ale platformei Java. V doresc lectur plcut!

de pornire i gestiune a firelor, frameworkurile ofer soluii integrate mult mai puternice. Vom gsi consideraii referitoare la frameworkul Executor, ca unul dintre cel mai des utilizate frameworkuri. Problemele opririi sau terminrii firelor de execuie, nainte de execuia integral a acestora, i implicaiile pe care aceste operaii le au asupra celorlalte fire de execuie sunt dezbtute pe larg, cu numeroase exemple. Tot n ideea de performan se aduc n discuie pool-urile de fire de execuie. Seciunea final a acestei pri se refer la sporirea gradului de performan n aplicaiile GUI cu un singur fir de execuie. Partea a treia se refer la performan i testare. Erorile frecvente ce pot aprea ca urmare a proiectrii proaste a firelor de execuie sunt identificate i se dau soluii. Creterea scalabilitii este o alt calitate urmrit pentru aplicaiile multifir. Finalul acestei pri urmrete n special segmentul

de testare a codului concurent, att din punct de vedere al corectitudinii ct i al performaei. Ultima parte se adreseaz programatorilor experimentai i aduce n discuie blocarea explicit, variabilele atomice, algoritmi de neblocare sau sincronizatori custom. Cartea este dificil de parcurs de ctre programatorii neexperimentai. De fapt, cu siguran, nu se pot crea aplicaii concureniale performante fr o baz solid de cunotine de programare Java. Autorii aduc numeroase exemple, prezentate amnunit, oferind pe lng bune practici i operaii ce ar trebui evitate n soluiile de implementare. Dac vei reui s parcurgei i s ntelegei toate capitolele acestei monografii, vei fi cu siguran experimentai n programarea concurent. Exista ns i ntrebarea: cine mai scrie

Silviu Dumitrescu silviu.dumitrescu@msg-systems. com Consultant Java @ msg systems Romania

52

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

management

Innovation in Big Projects

este tot n jurul nostru auzim c se discut despre inovare. Orice companie dorete s fac parte din grupul companiilor care fac ceva inovator. n mod evident, domeniul IT este cel mai marcat de aceast deviz a inovrii.

n urmtoarele rnduri , vom prezenta direciile principale care conduc la inovarea un proiect IT de lung durat. Avem deja cteva exemple de firme din industria IT din Cluj-Napoca care au nceput extrem de bine s se plaseze ca firme inovatoare, care schimb modul n care se dezvolt softul IT. Dup cum prea bine tim, proiectele mari nu sunt mereu cele mai frumoase proiecte pe care am dori s lucrm . De nenumrate ori acestea folosesc stack-uri vechi i nimeni nu are curajul s le aduc la zi. Pe acest gen de proiecte unele persoane pot s se simt cu minile legate, deoarece orice aciune pe care doresc s o fac implic un proces extrem de complex peste care trebuie s treac. Peste aceste probleme au mari anse s fie nevoite s se lupte cu dezvoltatori care s refuze schimbarea i s refuze schimbarea. n funcie de proiect/produs, momentul n care inovaia moare, poate s coincid cu momentul n care proiectul intr in declin. Acesta poate uor s devina obsolute i s fie nlocuit cu alte produse de pe pia.

Introducere

dintr-un numr limitat de oameni care iau toate deciziile acetia fiind pe proiect de la bun nceput. Chiar dac echipa este mare, cei care iau deciziile sunt puini i respect nite abloane deja formate n mintea lor. ntr-un astfel de proiect diversitatea este important. Oamenii ajung s gndeasc n acelai mod, s vin cu aceleai soluii de fiecare dat. Lumea IT este o lume extrem de dinamic, care este mereu n schimbare, iar soluia perfect nu exist. De aceea este important ca membrii echipei s fie de vrste, sex i nivel diferite. Toate aceste diferene conduc la o diversitate mult mai mare a echipei crend condiiile unor idei mult mai creatoare, ieite din ablonul classic, i mult mai eficiente.

timp. Trebuie s fi pregtit s aloci timp oamenilor pentru a putea investiga i cuta soluii. Pe lng timp acetia au nevoie de libertatea prin care pot s ncerce diferite soluii indiferent dac rezultatul o s fie bun sau nu. n caz contrar, acetia vor veni cu aceeai soluie pe care au folosit-o n urm cu 10 ani. Fiecare membru din echip ar trebui s aib posibilitatea s aduc valoare proiectului. Prerea i ideile lor sunt extrem de importante, din aceast cauz acetia au nevoie de timp pentru a putea veni cu soluii inovatoare. Un proiect complex aduce i procese extrem de complexe i bine nrdcinate. Este foarte important s recunoatem c procesele nu sunt btute n cuie, ci trebuie s fie ntr-o continu schimbare i mbuntire. De aceea, cnd un membru din echip propune schimbarea unui proiect, acesta ar trebui s fie ascultat i vzut ce are de zis. De multe ori procesele te fac s gndeti dup un ablon foarte bine definit. Trebuie s acceptm ca procesele sunt fcute s fie nclcate uneori. Nu doar att, dar pe un proiect mare, poate s existe un proces

Procese interne

Pe un proiect mamut este extrem de uor s ajungi s ai oamenii blocai cu diferite task-uri. Acetia vor avea mereu task-uri de mentenan, de bug fixing sau de dezvoltarea de noi funcionaliti. Echipa nu mai are timp deloc s se gndeasc la partea de inovare , s-i pun ntrebri de tipul:Ce am putea face ca s facem proiectul mai bine? Diversitate C s poi s inovezi un lucru trebuie Pe un proiect vechi de 5-10 ani de foarte multe ori se ajunge s existe un core format s fi pregtit s investeti resurse, n special

Resurse

www.todaysoftmag.ro | nr. 17/Noiembrie, 2013

53

management
Innovation in Big Projects
intern dedicat inovrii, unde fiecare mem- cultura unei echipe trebuie s fim pregtii bru din echip trebuie s aib ocazia s fie cu mult rbdare i s fim pregtii s investim mult timp. implicat i s aduc valoare. Nu este de ajuns ca un membru din echip s aib o idee cu care s rup gura trgului. De nenumrate ori, idei foarte bune ajung s se piard i s nu vad niciodat lumina zilei (s fie n producie). O idee bun, o idee inovatoare trebuie s fie susinut de management. Acetia trebuie s fie contieni c trebuie s devina sponsori i s aib grij c ideea nu se pierde. Este de ajuns ca acetia s numeasc o persoan responsabil pentru ca o idee s devina realitate i s ofere resursele necesare. n momentul n care apare ceva inovator pe proiect, managementul trebuie s reacioneze pro-activ i s nu atepte ca acesta idee s ajung n producie fr ca ei s se implice. Fiecare membru din echipa trebuie s se implice ntr-o form sau alta. i aa am ajuns la urmtorul punct. Persoana care vine cu ideea trebuie s fie pregtit s preia ownership-ul. Trebuie s fie pregtit s ia ideea de la bun nceput i s aibe grij de ea pn cnd va ajunge n producie. De foarte multe ori vedem persoane care arunc diferite idei pe mas i doar att. Acetia refuz i nu sunt pregtii s ia nici o idee de pe mas i s o realizeze. Aceast problem poate s apar la membri vechi a echipei, care ajung s se plng extrem de mult, dar nu doresc s fac nici o schimbare. Fiecare echip trebuie s aib cultura inovrii. O cultura care s fie pregtit s primeasc idei noi din exterior, o cultur care este dispus s se supun riscurilor care pot s apar. n general ne identificm cu o anumita cultur. Pentru a putea s schimbm

Management

Ownership

Nu de puine ori se ntmpl ca un om care este implicat ntr- un proiect timp de civa ani, s ajung s nu mai aib timp pentru studiu i pregtire, necesare eoluiei sale profesionale. Pentru a evita astfel de probleme este nevoie s investim n echipa cu fiecare ocazie pe care o avem. Cu ct echipa are un nivel de cunotine mai mare i o arie ct mai diversificat de abiliti, cu att ctigul nostru va fi mai cu desvrire. Introducerea unui astfel mare pe termen lung. de mecanism poate s fie inovator, chiar dac este un lucru extrem de simplu. Un alt exemplu pe partea de inovaie ntr-un Out of the box Pentru a putea veni cu ceva inovator, proiect de tip dinozaur este schimbarea echipa trebuie s gndeasc diferit, s fie modului n care se face kitul de instalare. scoas din zona de confort. Pe proiecte Totodat inovator este i nlocuirea parial mari, unde fiecare component este bine a unei baze de date relaional cu o baz de definit, membri i echipei pot s ajung date de tip NoSQL. Putem s ne imaginm multe exemfoarte uor ntr-o zon de confort foarte ple de acest gen. Dar trebuie s reinem puin deschis la inovaie. n funcie de proiect, acest lucru se c inovaia are multe forme i este la mai poate face n diferite moduri, de la o rotaie multe niveluri. Cel mai important lucru a echipei pe componente pn la alocarea este s o susinem i cnd este nevoie s fim temporar a unor membri din echip pe pregtii s investim n ea. PoC sau pe proiecte care nu au nici o legtur cu aria lor de cunotine. Dac avem foarte muli membri pe un proiect, putem la un moment dat s ne trezim cu foarte multe idei din partea echipei. Toate aceste idei pot s sune foarte bine, dar nu le putem implementa i ncerca pe toate n acelai timp. Prin urmare este nevoie de un mecanism prin care putem fixa diferite prioriti, msura fiecare idee n parte, iar n momentul n care o punem n practic s tim exact care sunt ateptrile.Toate aceste lucruri trebuie s le facem astfel nct s nu omorm ideile inovatoare i s susinem orice idee nou, care ar putea s aduc un beneficiu. De foarte multe ori cnd ne gndim la inovare ne gndim la lucruri mree. Dar inovaia poate s se regseasc n lucruri simple, dar care s aduc schimbri extrem de mari. De exemplu, putem s privim ca inovare introducerea unui mecanism de unit testing pentru codul JavaScript. Pentru un proiect scris in Java sau .NET, testarea codului JavaScript poate s lipseasc

Training

Msurare

Cultura

Cum s inovm

Radu Vunvulea

Radu.Vunvulea@iquestgroup.com Senior Software Engineer @iQuest

54

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

altele

programare

Gogu: Tat i u
- Mi Gluc! copilul se uit la Gogu cu repro, dar acesta se fcu c nu vede. Ia mai zi o dat, dar mai rar de data asta. tia i el c e o stratagem firav, dar era prima idee care i venise i care i mai acorda ceva timp de gndire. Evident c i fiul lui se prinse cci i vzu imediat licrirea de satisfacie din privire. Cu un zmbet victorios pe care nici nu se strdui s-l ascund, ddu curs cererii: - Ascult-m cu atenie, tat. Copilul sta devine din ce n ce mai obraznic, i spuse Gogu, dar respect indicaia primit i se concentr pe cuvintele copilului. - Tat i fiu, spuse acesta grav. Tat i fiu, repet el, grav rnii ntr-un accident lng Sibiu. Tatl este transportat ntr-un spital din Trgu-Mure, fiul este dus cu salvarea n Bucureti. Aici e pregtit de operaie, dar cnd intr medicul copilul fcu o pauz teatral i se uit la Gogu cu subneles i l vede pe pacient, spune: Nu-l pot opera, e fiul meu. Cum e posibil? Dac i trag una, i terg rnjetul la triumftor de pe fa! Desigur, cuvintele rsunar doar n mintea lui Gogu, s le fi spus cu voce tare ar fi nsemnat s intre n contradicie cu toat educaia pe care i-a dat-o copilului. Le gndi doar cu o uoar ciud c nu gsea nici acum soluia problemei, dar i cu mndrie. C doar era copilul lui... Deh, a ajuns oul mai detept dect gina. - Era tatl vitreg, spuse repede. - Nope. - Uhm... aproape c puteai auzi rotiele cum se nvrteau n mintea lui Gogu. Ha!, se lumin deodat: - Erau tat i fiu, dar fiecare era tatl sau fiul altcuiva! - Nope. - Nope, nope, l ngn Gogu cu nduf. Hai, spune tu care e explicaia. - Nope. N-ai spus tu s te las pn gseti singur rspunsul?! i sorbi tacticos ceaiul, i termin micul dejun, fr s i dezlipeasc ns ochii de la Gogu. - Plecm? - Poftim? Tresri Gogu care nc ncerca s gseasc soluia. i reveni ns repede. - Da, sigur. M mai gndesc la problema ta desear, cnd m ntorc acas, hai s plecm acum. Pe drumul spre coal discutar de noua doamn nvtoare, dar mintea lui Gogu era n continuare n cutarea soluiei. Fi-r-ar s fie de tat i fiu! Ls copilul la coal i se grbi la servici. Intr val-vrtej, zise un Neaa! rapid ctre colegi, ignor rspunsurile, se post n faa biroului lui Miu i se repezi ctre el, fr nici un avertisment: - Ia fii atent aici, Miule, am o problem pentru tine. - No, bun dimineaa i ie, Gogule, ridic ochii Miu ctre el. Vorba domoal a acestuia nu reui ns s-l potoleasc pe Gogu. - Eti atent?! - s mi, c nu-mi dai de ales. Da nu vrei s stai jos, c mi respiri n fa i mi-i cald... Gogu se ntrerupse o clip, se uit ntrebtor spre Miu, apoi i ajunse informaia la creier. - Soarele ei de treab, c toi suntei nscui inteligeni azi! Dac eti aa detept, rezolv tu situaia asta: i repet, cuvnt cu cuvnt problema, exact cum o auzise de la copil, inclusiv cu pauzele cu subneles. Miu atept cu rbdare sfritul problemei, se uit impasibil la Gogu i zise calm: - Maic-sa. - Ce maic... se repezi Gogu, dar neuronii prinseser ntre timp ideea. Rezolvarea era de o simplitate covritoare. Mama! Medicul era mama lui. Cum de nu fcuse conexiunea?! n momentul imediat urmtor ns, l fulger un gnd enervant: - Da tu de unde tii? - s detept, m Gogule, se umfl Miu n pene, dup care se hotr s nu ntind totui coarda prea tare. tii trainingul la de soft skills la care am fost luna trecut? Ne-au povestit despre capcanele n luarea deciziilor, ca de exemplu cea de ancorare de o informaie prezentat cu cteva clipe nainte i care i canalizeaz gndirea spre o anumit direcie. Sublinierea Tat i Fiu a avut rolul de a te ancora de ideea de masculin, iar cnd apare medicul, mintea ta este deja limitat, cantonat n model... Ha-ha, cine i-a fcut-o? Fi-tu, nu-i aa?! A ajuns oul mai detept dect gina...

Simona Bonghez, Ph.D.

simona.bonghez@confucius.ro Speaker, trainer i consultant n managementul proiectelor, Owner al Colors in Projects

56

nr. 17/Noiembrie, 2013 | www.todaysoftmag.ro

sponsori

powered by

S-ar putea să vă placă și