Documente Academic
Documente Profesional
Documente Cultură
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
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?!
37 Gamification
George Platon
23 Obinuina ca aliat
Cristina Ilinca
29 Comuniti de practic
Alexandru Bolboaca i Adrian Bolboac
31 Scrumban
Tudor Tric
editorial
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.
Ovidiu Man
alex.bolboaca@mozaicworks.com Agile Coach and Trainer, with a focus on technical practices @Mozaic Works
anita.pacurariu@arobs.com
Radu Vunvulea
Cristina Ilinca
dify.ltd@gmail.com
Cristian Galea
Tudor Tric
Adrian Bolboaca
adrian.bolboaca@mozaicworks.com Programmer. Organizational and Technical Trainer and Coach @Mozaic Works
Andrei Kelemen
Director executiv @ IT Cluster
andrei.kelemen@clujit.ro
Produs de
Daniel Homorodean
George Platon
Mihai erdean
Ana Oarga
Cezar Coca
Cornel tefanache
Java Technical Lead @3Pillar Global
cornel.stefanache@3pillarglobal.com
Ioana Matei
Alexandru Ivan
analize
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
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
evenimente
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
evenimente
evenimente
Ce este TYPO3 ?
10
(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 )
Daniel Homorodean
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
programare
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
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
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/
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
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/
15
programare
programare
Moment.js
O singur librrie JavaScript pentru toate formatele Date/Time
Cristian Galea
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
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
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
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);
18
arhitectur
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
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
Studiu de caz
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
22
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
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?
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
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.
25
programare
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
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
27
programare
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
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.
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
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.
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.
30
management
Scrumban
Tudor Tric
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:
Backlog
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
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
32
business
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
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
programare
Analiza stakeholder-ilor
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.
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
36
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
Realizri - Trofee
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
George Platon
38
interviu
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
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?
40
programare
programare
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
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
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.
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
44
programare
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).
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
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:
46
programare
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
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
testare
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
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
programare
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
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
52
management
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
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
54
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...
56
sponsori
powered by