Page 1

Nr. 16 • Octombrie 2013 • www.todaysoftmag.ro • www.todaysoftmag.com

TSM

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

ile g A n es î c i t c gnalR a i r S p d losin Best o f e UA im C real t n OP i i r i ț p a Aplic triale s u d n zări i i t a m Auto

Automatizări industriale prin OPC UA Dezvoltarea de jocuri cross-platform Agilitatea Presupune Craftsmanship Promovarea fără costuri a organizațiilor non profit Scurtă introducere în mediul SAP (II) SAP User Experience

Recenzie de carte: NoSQL Distilled Spre comunitatea IT – via HR (3) SmartWebConf 2013 Analitica Big Data în aplicațiile moderne Gogu și comunicarea Leadership către liderul tău


6 Perspective Marius Mornea

7 Conectarea tehnologiilor inovative la piața globală Ana Răducanu

8 Concurs de programare Catalysts CCC George Platon

9 Inovaţie, antreprenoriat şi tehnologie la How to Web 2013 Irina Scarlat

10 SmartWebConf 2013 Radu Popescu

13 Best Practices în Agile Dan Suciu

16 Agilitatea Presupune Craftsmanship

26 Spre comunitatea IT – via HR (3) Dan Ionescu și Cristina Nicule

29 Automatizări industriale prin OPC UA Waldemar Knopp

32 Aplicații real-time folosind SignalR Radu Vunvulea

36 Scurtă introducere în mediul SAP (II) Victor Ionescu

39 Automatizează toate lucrurile! Attila-Mihaly Balazs

42 NoSQL de Pramad J. Sadalage şi Martin Fowler Silviu Dumitrescu

43 Dezvoltarea de jocuri cross-platform

Alexandru Bolboaca și Adrian Bolboacă

Cristian Bidea

18 HR în Agile

45 DoItFor.co

Andreea Pârvu

20 Analitica Big Data în aplicațiile moderne Adrian Margin și Andras Gyalai

24 Promovarea fără costuri a organizațiilor non profit Radu Popescu

Teodor Olteanu

47 Leadership către liderul tău Antonia Onaca

49 Gogu și comunicarea Simona Bonghez, Ph.D.


editorial

D

Ovidiu Măţan, PMP

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

emult, în timp ce lucram la o companie multinațională, CEO-ul companiei a introdus un termen referitor la un mod de a lucra fără a face uz de poziția curentă. Acel termen era modestia (e.n. humble) și a avut efecte imediate datorită exemplului. Dintr-o dată nu mai conta neapărat titlul fiecăruia, ci puterea de a îi asculta pe ceilalți și de a găsi împreună soluții. De altfel, dacă vă uitați în jur, cei mai apreciați lideri sunt cei care știu să asculte și au un grad ridicat de modestie. Am asistat de curând la o întâlnire a reprezentanților IT din România care a avut loc în Cluj, unde, din păcate, ultimul lucru pe care l-am văzut a fost modestia. Din cauza trend-urilor actuale care spun să fim din ce în ce mai buni și să impresionăm pe toată lumea, omitem câteva lucruri de bază. Uităm că dorința de a empatiza, de a pătrunde în orizontul de așteptare al celor din jurul nostru și de a-l înțelege se poate impune ca o condiție de bază a unei bune colaborări, care este prioritară în industria actuală producătoare de software. Eficiența comunicării și colaborării între entitățile companii - universități - startup-uri - angajați este de cele mai multe ori efectul aplicării acestui principiu al modestiei și al abandonării ideii că doar numele unei funcții cu rezonanță poate impune respect și autoritate. Revenind la evenimentele zilnice, îmi face plăcere să vă spun că am avut prima lansare în București a revistei, eveniment găzduit de Gemini Solutions. Au fost prezenți colegii din București ai revistei precum și susținători ai acesteia. Ne-am bucurat de un eveniment plin de profesionalism desfășurat într-o atmosferă prietenească. Promitem să revenim cât de curând în capitală pentru lansarea unui nou număr TSM. Toamna a venit cu mai multe evenimente dedicate IT-ului. Am participat la SmartWeb Conf, un eveniment dedicat dezvoltatorilor web care va fi descris pe larg în paginile următoare. De asemenea, în Iași am participat ca parteneri la deja clasicul eveniment ..even mammoths can be Agile . Tot în acest oraș vom fi prezenți ca parteneri media la CodeCamp Iași. Un element de noutate este proiectul unui mare eveniment, despre care nu vă dezvăluim încă foarte multe, decât că este dedicat trend-urilor din IT și că va avea loc în Cluj la începutul lunii decembrie. Dar vom reveni cu detalii în următoarele săptămâni. Tema acestui număr este server-side și agile, domenii interesante dezbătute pe larg în cadrul revistei. Tema agile este prezentă într-o serie de articole: Best Practices în Agile, Agilitatea Presupune Craftsmanship și HR în Agile , în vreme ce server-side apare în Analitica Big Data în aplicațiile moderne, Aplicații real-time folosind SignalR, DoItFor.co și review-ul cărții NoSQL de Pramad J. Sadalage şi Martin Fowler. Partea a III-a a studiului de HR privind companiile de IT din Cluj este publicată în acest număr în titlurile: SPRE COMUNITATEA IT – via HR (3). Mai doresc să menționez prezența a două articole inedite: Automatizării industrialeprin OPC UA precum și Dezvoltarea de jocuri crossplatform semnat de studioul de jocuri King. Închei printr-o invitație la un concurs de programare/algoritmică organizat de Catalyst CC. Acesta va avea loc vineri 11.10, simultan la Cluj (sediul FSEGA) și Viena. Participarea este gratuită, pe viitor vom încerca să aducem aproape de voi mai multe concursuri de acest fel. Vă dorim o lectură plăcută !!!

Ovidiu Măţan

4

Fondator al Today Software Magazine nr. 16/Octombrie - www.todaysoftmag.ro


TODAY SOFTWARE MAGAZINE Lista autorilor Redacţia Today Software Magazine Fondator / Editor în chief: Ovidiu Mățan ovidiu.matan@todaysoftmag.com Editor (startups și interviuri): Marius Mornea marius.mornea@todaysoftmag.com

Alexandru Bolboaca

Dan Suciu

Agile Coach and Trainer, with a focus on technical practices @Mozaic Works

Director of Engineering @ 3Pillar Global

Radu Vunvulea

Cristian Bidea

alex.bolboaca@mozaicworks.com

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

dan.suciu@3pillarglobal.com

Lead developer @ King

Graphic designer: Dan Hădărău dan.hadarau@todaysoftmag.com Copyright/Corector: Emilia Toma emilia.toma@todaysoftmag.com

Attila-Mihaly Balazs

Victor Ionescu

Code Wrangler @ Udacity Trainer @ Tora Trading

SAP IT Consultant @ msg systems Romania

dify.ltd@gmail.com

Traducător: Roxana Elena roxana.elena@todaysoftmag.com

Adrian Bolboaca Teodor Olteanu

Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com

victor.ionescu@msg-systems.com

Teodor.Olteanu@betfair.com End User Computing Lead @ Betfair Romania

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

Reviewer: Adrian Lupei adrian.lupei@todaysoftmag.com Produs de

Today Software Solutions SRL str. Plopilor, nr. 75/77 Cluj-Napoca, Cluj, Romania contact@todaysoftmag.com www.todaysoftmag.ro www.facebook.com/todaysoftmag twitter.com/todaysoftmag ISSN 2284 – 6352

Waldemar Knopp

knopp.waldemar@evoline.ro

Andras Gyalai andras.gyalai@isdc.eu

Software Engineer @ Evoline

Software architect @ ISDC

Dan Ionescu

George Platon

Director Executiv @ Danis Consulting

Software developer @ Catalyst

Cristina Nicule

Antonia Onaca

dan.ionescu@danis.ro

cristina.nicule@danis.ro

George.Platon@catalysts.cc

Consultant @ Danis Consulting

anto@aha-ha.com de aproape 10 ani trainer, psiholog, consultant sub formă de antreprenor, intraprenor şi antreprenor din nou

Simona Bonghez, Ph.D.

Irina Scarlat

Speaker, trainer şi consultant în managementul proiectelor,

PR Manager @ How To Web

simona.bonghez@confucius.ro

irina.scarlat@howtoweb.co

Owner al Colors in Projects

Copyright Today Software Magazine Reproducerea parțială sau totală a articolelor din revista Today Software Magazine fără acordul redacției este strict interzisă. www.todaysoftmag.ro www.todaysoftmag.com

Adrian Margin adrian.margin@isdc.eu Software architect @ ISDC

Radu Popescu

rpopescu@smallfootprint.com QA şi Web designer @ Small Footprint

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

Andreea Pârvu

andreea.parvu@endava.com Recruiter în cadrul Endava

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

5


analize

Perspective

P

e măsură ce devenim tot mai specializați, se întâmplă frecvent să ne izolăm într-un mediu în care suntem înconjurați de oameni, idei, informație, specifice domeniului în care ne specializăm. Acest lucru îl resimt frecvent când fac tranziția de la interacțiunea cu colegii de birou, profesioniștii de la evenimente de profil, prietenii de la facultate, spre cea cu familia, oamenii din medii diferite, iar cel mai puternic contrast îl resimt când interacționez cu grupuri la fel de specializate, dar în alt domeniu, de exemplu medicii specialiști. De la subiectele specifice dintr-un domeniu străin, pline de termeni stranii și curioși, până la amuzamentul tipic al specialistului pus în fața unei interpretări fanteziste a unei tehnologii din rutina sa zilnică, se conturează un spectru de perspective total diferite de cele cu care suntem obișnuiți în mediul nostru izolat. Un astfel de spectru construiește Nicholas Carr în „The Big Switch – Rewiring the World, From Edison to Google”. Există multe motive, recenzii și argumente pentru a recomanda această lectură, dar eu am să insist pe acela al perspectivelor variate. Încep această recenzie informală, printr-o comparație cu o altă lectură pe care o recomand cu căldură: „Manna”, de Marshall Brain. O nuvelă care combină contrastant o viziune distopică și una utopică asupra evoluției societății tehnologizate. Într-o formă succintă, poate ușor prea optimist și simplificat, sunt comparate două extreme, binele și răul. Iar tocmai aici se diferențiază Carr, insistând să înlocuiască acest tablou alb-negru cu unul plin de nuanțe de gri. Jurnalist de meserie, Carr începe cu fapte și prezintă o paralelă între apariția rețelei de distribuție curent electric și cea de calculatoare. Este fascinant să descoperi că această revoluție tumultoasă, generată de apariția calculatorului, internetului și al Facebook-ului, este doar o nouă instanță a unei istorii vechi. Tehnologii care au schimbat complet viața umanității, au dus la dispariția unor întregi industrii și moduri de viață, se întâmplă mai des decât realizăm, la doar o generație distanță. Plină de date și argumente, partea de început a cărții pare un studiu de caz, foarte detaliat, al cărui rezultat este de mult cunoscut de întreaga lume, dar ale cărui detalii îl fac extrem de actual și pertinent. Motiv pentru care, toate perspectivele mistice și apocaliptice asupra efectelor curentului electric asupra societății, așa cum

6

era perceput acum un secol, par amuzante și nefondate. În partea a doua a cărții, Carr adună tocmai astfel de perspective mistice și apocaliptice, dar de această dată legate de „the World Wide Computer”, le temperează cu pragmatismul specialiștilor IT, politicienilor și oamenilor de afaceri, le condimentează cu euforia filozofilor, revoluționarilor și a jurnaliștilor de senzație, și construiește un caleidoscop în care perspectiva noastră, a profesioniștilor IT, devine greu de recunoscut. Se pierde între tranzacțiile pe bursă, scenariile de distrugere a web-ului de către armata americană, teorii ale echilibrului sistemelor naturale, pierderea intimității, identității și diversității, libertatea de exprimare și manipularea, roboti și tranziția spre o inteligență comună, de roi, în care individul este subordonat inteligenței colective. Toate par ușor nerealiste și exagerate, amuzante și nefondate, la fel ca și cele de acum un secol, când curentul electric revoluționa umanitatea. Și totuși, când privind ca un specialist IT, regăsești în paginile unei cărți din 2008, realități din ziua de azi, argumente care dovedesc o bună înțelegere a conceptului de „cloud computing” și cu

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro

greu descoperi mici inconsistențe la nivel de detaliu tehnic, merită să te întrebi dacă toate celelalte perspective sunt la fel de bine studiate și imparțial prezentate. Este tentant să dai vina pe autor pentru stilul ușor senzațional al diverselor viziuni, până ce realizezi că nu sunt ale lui proprii, el doar le culege și le retransmite din viața celor din jur. Iar în acel moment, nu mai există bine și rău, optimism și pesimism, viziuni utopice sau distopice, doar foarte multe fețe ale industriei IT, ale internetului și ale modului în care este perceput de toți cei din jur. Iar eu ca specialist am fost fascinat să descopăr cât de diverse pot fi perspectivele altora asupra muncii mele de zi cu zi. Găsiți un loc între lecturile tehnice și profitați de ocazia să citiți despre IT și istoria lui cu ochii celor din jur. Marius Mornea

marius.mornea@todaysoftmag.com Inginer interesat și implicat în diverse activități IT, de la dezvoltare, management, până la educație și jurnalistică în cadrul Epistemio, UTCN și TSM


startups

TODAY SOFTWARE MAGAZINE

Conectarea tehnologiilor inovative la piața globală

A

ntreprenorii în tehnologii inovative din România se confruntă cu provocări precum lipsa accesului la capital, a informațiilor despre piață și a conexiunilor la rețele globale în vederea comercializării. Pentru a răspunde acestor provocări, un model de asistență antreprenorială vine în completarea ecosistemului românesc de inovare. Programul de Asistență în Comercializarea Inovării din România (RICAP) este complementar altor inițiative de sprijin antreprenorial, abordând componenta de comercializare a inovării. Utilizând modelul și resursele Institutului Larta, din în Los Angeles, SUA, programul conectează întreprinderile bazate pe tehnologie la o rețea globală de potențiali parteneri, expertiză și capital. Facilitând tranzitul produselor inovatoare din laborator către piață, RICAP urmărește construirea unei rețele de întreprinderi inovatoare și mentori locali și conectarea acesteia la o rețea globală. RICAP se adresează antreprenorilor și cercetătorilor români inovatori în tehnologie, cu potențial de comercializare. Aplicanții pot proveni din orice domeniu de activitate, inclusiv IT&C, mecanică, mecatronică, tehnologii agricole, biotehnologii, precum și altele. Dacă sunteți selectați pentru a participa la RICAP, veți beneficia de programe de mentorat personalizat cu experți din România și din SUA, training-uri în comercializarea inovării și întâlniri cu potențiali parteneri și finanțatori pe plan internațional. Inovatorii interesați vor putea să aplice la program până pe 15 noiembrie 2013. Aplicarea se face prin completarea unui scurt formular online, care cuprinde informații de bază despre profilul organizației, tehnologia, încadrarea pe piață și obiectivele de comercializare. Pentru mai multe informații, cei interesați sunt invitați să participe la evenimentele RICAP Innovation Info. Aici se va discuta despre program și comercializarea inovării împreună cu Rohit Shukla, CEO Larta Institute, Dragoș Pîslaru, manager general GEA Strategy & Consulting și director de program RICAP, precum și cu restul echipei de proiect. Evenimentele vor avea loc la: • București - Tech Hub, 22 octombrie, 18:30 • Cluj - Universitatea Tehnică din Cluj-Napoca, 23 octombrie, 14:00 • Iași - Tehnopolis, 25 octombrie, 9:30

Înscrierea se poate realiza pe blogul www.ricap.ro/blog sau printr-un e-mail la contact@ricap.ro până joi, 17 octombrie. RICAP este rezultatul unui parteneriat între Centrul Român pentru Inovație în Dezvoltare Locală (CRIDL) și Institutul Larta, localizat în Los Angeles, SUA. Programul este finanțat de Romanian-American Foundation (RAF) și implementat cu sprijinul GEA Strategy & Consulting. RICAP se bazează pe rețeaua internațională și expertiza acumulată timp de douăzeci de ani de Larta Institute prin susținerea a circa 3.500 de inovatori din șaptesprezece țări, precum și pe experiența membrilor CRIDL și GEA Strategy & Consulting în sprijinirea antreprenoriatului din România.

Ana Răducanu

ana.raducanu@cridl.org Communication manager @ RICAP

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

7


evenimente

Concurs de programare Catalysts CCC

Î

n urma succesului concursului organizat în data de 26 aprilie în Cluj-Napoca (România) și Linz (Austria), am decis să organizăm ediția 17 a evenimentului din nou în Cluj. Vă invităm vineri pe 11 octombrie la ora 14:00 (ora de incepere este 15:00) în campusul universității Babeș-Bolyai, FSEGA, etajul 3, strada Teodor Mihali, nr. 58-60, Cluj-Napoca!

Catalysts Coding Contest (vezi http:// contest.catalysts.cc ) a fost organizat prima dată în anul 2007 în Austria. Datorită feedback-ului pozitiv primit, de atunci s-au organizat câte trei concursuri în fiecare an, cu un număr crescând de participanți din toată lumea la fiecare ediţie. Catalysts Coding Contest constă în trei concursuri care au loc în paralel: • în locații specifice cum ar fi ClujNapoca, Linz, Vienna sau Hagenberg. • online la care participă concurenți din Franta, Spania, Grecia, Anglia, Ungaria etc. • între școli, numit CCC-School, care momentan este disponibil doar în Austria. Evenimentul adună în fiecare an persoane de toate vârstele, începând de la elevi talentați de liceu, studenți remarcabili care vor să își testeze limitele până la programatori experimentați – toți având în comun pasiunea pentru programare și probleme de logică. Datorită faptului că participarea este gratuită și limbajul de programare este la libera alegere a concurentului, există o mare varietate de tehnologii implicate și persoane concurente. De aceea, la aceeași masă a concursului poți găsi un tânăr programând în Java, C++ sau Pascal, pe altul bucurându-se de noile facilități aduse de limbaje mai noi cum ar fi Scala, Groovy sau Haskell și nu în cele din urmă un fan înrăit iOS care își foloseste cunoștințele pentru a rezolva cerințele… și exemplele

8

pot continua. De fapt, acesta este unul dintre lucrurile noi pe care le aduce concursul nostru față de toate celelalate olimpiade de informatică sau alte competiţii de programare - unitate în diversitate. Unitate prin faptul că toți participanții trebuie să rezolve aceeași problemă formată din cele 6, 7 niveluri și diversitate prin toate celelalte aspecte – fie prin concurenţi, fie prin tehnologiile folosite. De-a lungul celor 16 concursuri am colectat statistici despre varietatea limbajelor de programare, media de vârstă a participanţilor, nivelurile la care s-a ajuns cu fiecare limbaj de programare și diferitele versiuni de implementare în limbajele folosite. Aceste statistici sunt disponibile la cerere pe site-ul concursului. Pentru a familiariza concurenţii cu modul de desfăşurare şi tipurile de probleme întâlnite, se oferă posibilitatea antrenamentului pe platforma CatCoder (vezi https://catcoder.catalysts.cc ). Concursul constă dintr-o problemă de logică/algoritmică care are șase sau șapte niveluri și trebuie rezolvată în patru ore. Aceasta are o temă specifică, care se schimbă la fiecare ediție a concursului. Astfel, concurenții sunt prinși în rezolvarea problemei prin trecerea fiecarui nivel care aduce noi cerințe și noi indicii folositoare. De aceea, concursul se poate asemăna cu o călătorie în care în primul nivel se dau cerințele inițiale, iar cu fiecare nivel rezolvat se adaugă cerințe, noi dificultăți, precum și noi informații folositoare.

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro

Pe parcursul concursului se oferă băuturi și mâncare, iar după concurs va avea loc ceremonia de premiere în cadrul căreia se oferă pizza și băuturi. După aceea, se asigură timp pentru socializare și schimb de idei, unde concurenții pot lua legatura cu alte companii și cu persoanele pasionate de informatică. Pentru condiții de participare vezi regulile oficiale și manualul la http://bit. ly/14HrTA8 .

Blog - http://contest.catalysts.cc/ Facebook - http://www.facebook.com/ CatalystsCodingContest

George Platon

George.Platon@catalysts.cc Software developer @ Catalyst


TODAY SOFTWARE MAGAZINE

evenimente

Inovaţie, antreprenoriat şi tehnologie la How to Web 2013

B

ucurești, 11 septembrie 2013 – Pe 20 şi 21 noiembrie Crystal Palace Ballrooms găzduieşte a patra ediţie a How to Web, cel mai important eveniment dedicat inovaţiei, antreprenoriatului şi tehnologiei din Europa de Sud-Est. Vorbitori internaţionali de calibru vin în premieră în România pentru a împărtăşi bune practici unei audienţe formate din peste 800 de persoane. În paralel competiţia şi programul de orientare Startup Spotlight aduce faţă în faţă cele mai bune 32 de echipe din regiune cu mentori de excepţie şi reprezentanţi ai celor mai apreciate acceleratoare din lume. Să creştem împreună în 2013! Aceasta este tema principală a How to Web, eveniment care va aduce de această dată în discuţie modul în care pot fi dezvoltate produse de succes la scară globală. Subiectele acoperite vor include inovaţie şi scalabilitate, aplicaţii pentru dispozitive mobile, software-as-a-service şi jocuri sociale, big data şi interfeţe inteligente, hardware şi IoT, dar şi localizare şi paticularităţile caracteristice pieţei est-europene. Cei peste 800 de participanţi aşteptaţi vor avea ocazia să urmărească studii de caz practice, să descopere puterea inovaţiei de a schimba lumea, dar şi să cunoască reprezentanţi importanţi ai scenei tech la nivel global. La final, audienţa va avea ocazia sa aplice lecţiile învăţate pentru a-şi dezvolta în continuare produsele şi a-şi scala propriile companii. Şi de această dată How to Web se remarcă prin calitatea invitaţilor care vor fi prezenţi pe scena conferinţei. Printre vorbitorii confirmaţi până în acest moment se numără Thomas Hartwing (CTO şi Co-Fondator al King.com, una dintre cele mai importante companii de gaming din lume), Christian Reber (CEO şi Fondator al 6Wunderkinder, unul dintre cele mai de succes start-up-uri europene), Paul Ford (VP şi CEO SoftLayer, companie de infrastructură achiziţionată de IBM cu 2 miliarde USD la începutul anului), Adii Pienaar (Co-Fondator şi ex-CEO Woo Themes, liderul mondial în crearea de teme şi plugin-uri pentru Wordpress), Kei Shimada (Director of Business Development Dentsu, antreprenor originar din New York care, după ani de experienţă în companii de top la nivel mondial, a decis să îşi dedice timpul pentru a susţine companiile japoneze să dezvolte produse şi servicii globale), Tal Siach (Co-Fondator şi CMO Visual.ly, cea mai mare comunitate de

infografice şi vizualizare de date din lume), Philipp Kandal (Co-Fondator şi CTO Skobbler, start-up care a câştigat premiul pentru cea mai inovatoare companie din Europa la Navteq LBS Challenge în 2009 şi care are în prezent peste 3.5 milioane de utilizatori la nivel mondial), sau Michael Levit (Fondator Spigot şi Managing Partner Founders Den, incubator exclusivist din San Francisco). În paralel, Startup Spotlight aduce împreună cele mai inovatoare 32 de startup-uri din regiune, acceleratoare de talie mondială, investitori, experţi în tehnologie la nivel internaţional şi programe de suport. Echipele cu cele mai bune rezultate vor avea ocazia să îşi prezinte produsele pe scena principală a How to Web, iar câştigătorii vor fi răsplătiţi cu premii cash în valoare de 20.000 USD. Participanţii vor primi feedback şi vor interacţiona cu reprezentanţi ai celor mai apreciate acceleratoare din lume. Printre aceştia îi amintim pe Jon Bradford (Managing Director TechStars London, UK, program de 13 săptămâni care oferă echipelor finanţare seed, spaţiu de lucru şi acces la mentori şi alţi antreprenori), Carlos Espinal (Partener Seedcamp, UK, liderul european al programelor de mentorat şi finanţare micro-seed) sau Rune Theill (Director Program Rockstart Accelerator, Olanda, program care oferă investiţie de tip seed, spaţiu de birouri, acces la 99 de mentori, coaching şi o vizită de 3 săptămâni în Silicon Valley). Acestora li se adaugă Lyuben Belov (Co-Fondator LAUNCHub, Bulgaria), Dylian Dimitrov (Fondator Eleven Startup Accelerator, Bulgaria) sau Sitar Teli (Managing Partner Connect Ventures, UK). Biletele de tip „early bird” pentru How to Web 2013 sunt disponibile până pe 12 noiembrie şi pot fi achiziţionate online pe site-ul evenimentului http://howtoweb.co.

Echipele inovatoare care îşi doresc să participe la Startup Spotlight pot aplica online la http://startupspotlight.co. Participarea la competiţia şi programul de orientare pentru start-up-uri este gratuită pentru cei 32 de finalişti care vor fi selecţionaţi de un juriu format din experţi internaţionali. How to Web este un eveniment dezvoltat cu susţinerea IXIA şi X3.

Mediatizarea evenimentului este asigurată de parterii media principali Prove PR, Digi TV, Adevărul, Forbes România, Capital, Wall-Street.ro, Evenimentul Zilei, DAS Cloud, Revista Cariere, Ctrl-D, Start-ups.ro şi Entrpreneur. bg, si de partenerii media Economy.bg, Newtrend.bg, Digijtale, IT Dogadjaji, CEE Startups, Invendor.hu, Goal Europe, Akcees, IQ Ads, Computer World, PC World, Business Cover, Tech Cover, Business Woman, Gadget & Trends, Comunicaţii mobile, Market Watch, Business Review, Manager Express, România Liberă, Comunicatedepresă.ro, Zelist, Ejobs şi Today Software Magazine.

Irina Scarlat

irina.scarlat@howtoweb.co PR Manager @ How To Web

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

9


evenimente

SmartWebConf 2013 startups

Î

n 24 septembrie a avut loc la Bucureşti, în elegantul JW Marriott Grand Hotel, prima ediţie a SmartWeb Confrence 2013, un eveniment dedicat web-designerilor din România şi din Europa de Est, la care revista Today Software Magazine a fost partener media. Prezentările din cadrul conferinţei au acoperit o serie de subiecte aflate într-un trend ascendent în ultima vreme, precum Responsive Web Design, HTML5/CSS3 dar şi care sunt cele mai bune practici de lucru sau tips and tricks. Având în vedere că a fost un eveniment internaţional, întreaga conferinţă s-a desfăşurat în limba engleză.

Cel care a început seria prezentărilor a fost proprietarul și fondatorul nGEN Works, Carl Smith care conduce o echipă neconvenţională ce lucrează cu diferite companii pe care le ajută să iși redefinească identitatea, idealurile și să creeze echipe de dezvoltare solide. Unul dintre lucrurile pe care pune accent foarte mare este continuitatea proiectelor. Sub nicio formă nu este de acord cu oprirea echipelor de dezvoltare înainte de terminarea proiectului. Acest lucru ar scădea moralul lor şi ar încetini progresul în momentul readucerii în lucru a proiectului. Dând un exemplu, el a povestit cum a finanţat terminarea unui proiect în momentul în care clientul nu a mai putut să plătească. În construirea unor echipe, Carl se concentrează mult şi asupra părții de comunicare sau chiar inside jokes. Acest lucru sudează foarte bine relaţiile dintre colegi. O altă schimbare cu care vine foarte des, este aceea prin care dă echipelor posibilitatea de a angaja candidatul pe care îl vor, astfel deciza aceasta nu mai este luată, într-o mare masură, de HR sau manager. Peter Gasston este un web developer cu o experiență de peste doisprezece ani, acumulată în numeroase agenţii, start-upuri și corporații, iar în prezent este Creative Technologist la RehabStudio. Este autorul cărților The Book of CSS3 și The Modern Web. În prima parte a prezentării ne-a vorbit despre Shadow DOM şi încapsulare. Pornind de la exemplul unui simplu

10

viitorului magazin virtual să nu fie pe placul clientului. Practic un design care va genera conversii mai multe, nu trebuie neapărat să arate bine, ci să respecte anumite regului de user experience.El ne-a dezvăluit şi modul prin care poate convinge un client că o anumită modificare e necesară. Pur si simplu îi spune că aceasta îi va aduce mai HTML5 video player, el ne-a arătat cum mulţi bani. este creat acesta şi cum putem să îl edităm. Un alt subiect abordat de Peter a fost custom elements; acestea oferă web designer-ilor posibilitatea de a crea noi tipuri de elemente reutilizabile precum butoane de share sau chiar video playere custom. Nişte colecţii foarte bune se pot găsi pe CustomElements.io sauhtml5rocks.com. Prezentarea sa a fost una foarte tehnică şi bazată pe exemple. Designer, fotograf și expert UX, Dan Rubin este un speaker obișnuit la conferințe și ateliere de lucru din întreaga lume pe diverse teme legate de web, împărtăşindu-şi experienţa din companii precum MailChimp, Google, Yahoo!, Microsoft sau Meebo. Prezentarea sa a avut în centru un studiu de caz, care ne-a arătat metoda prin care a reuşit să ofere un prototype testing foarte rapid unui client din Statele Unite. După un scurt coffee break, sponsorizat Primul pas pe care ne recomandă să îl de celebrul site IconFinder.com a urmat facem este să găsim lucrurile care funcţiprezentarea singurului speaker român onează bine în actualul site. Aceste lucruri din cadrul evenimentului. Clujeanul Radu nu trebuie schimbate pentru a nu îndepărta Chelariu, Art Director în cadrul Busteco utilizatorii. Un alt lucru interesant este fapGlobal Brain şi Adobe Certified Expert în tul că, în acest tip de testare, grupurile mici Photoshop, ne-a vorbit despre provocă- oferă o valoare foarte mare. În exemplul rile pe care le are zi de zi în relaţia client său, grupul care a testat prototipurile situ– designer. În prezentarea sa a fost foarte lui a fost alcătuit din numai 12 persoane categoric spunând că, atunci când vine (aflate în target bineînțeles). Abordarea sa vorba de e-commerce şi despre dorinţa legată de crearea prototipurilor nu a fost clientului de a genera un profit cât mai nouă sau ieşită din comun. Pentru a oferi mare, nu se poate vorbi de sentimente. Din o experienţă cât mai bună persoanelor care cauza acestui lucru s-ar putea ca designul participau la test, el a folosit o imagine

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro


TODAY SOFTWARE MAGAZINE

îmbunătăţită a site-ului clientului (bazată pe un PSD) peste care a adăugat câteva funcţionalităţi esenţiale cu ajutorul HTML/ CSS şi Java Script. Acest mod de lucru oferă mai mult decât nişte eventuale wire frames, iar timpul de realizare este aproape la fel de mic.

Jonathan Snook, autor al The Art And Science of CSS şi Accelerated DOM Scripting,a vorbit audienţei despre CSS. Întrebarea care a generat unele discuţii a fost cea referitoare la CSS code review. Se face aşa ceva? Deşi pare un lucru neimportant, pe care aproape nimeni nu îl face, revizuirea şi optimizarea codului CSS este esenţială în acest moment în care toată lumea aleargă după performanţe crescute pe device-uri mobile. Snook a prezentat pe scurt cei trei pași pe care îi recomandă în momentul în care începem să scriem cod CSS. Primul pas ar fi crearea unor categorii (Base, Layout, Module, State etc.) în care să introducem fiecare clasă. Categoria Base s-ar ocupa de CSS reset, spre exemplu, iar categoria Module de butoane, liste, taburi sau elemente reutilizabile. Al doilea pas se referă la naming convention. Numele claselor trebuie să clarifice intenţia lor,la care el mai recomandă și folosirea CamelCase. Al treila pas constă în decuplarea HTML şi CSS prin folosirea child selector(>).

Bruce Lawson, evanghelist pentru Open Web Standards în cadrul Opera, a susţinut o prezentare uşor neconvenţională, prin subiectul abordat. El a exemplificat mai multe moduri prin care putem distruge web-ul sau mai exact cum încearcă anumite site-uri să distrugă web-ul. Printre aceste exemple, care nu sunt de urmat şi nu sunt recomandate, ar fi de amintit aici:

evenimente

• folosirea frame-urilor; • afişarea web site-ului doar pe anumite device-uri, folosind userAgent; • crearea elementelor mici cu ajutorul multor div-uri (ex. un buton realizat din 5 div-uri imbricate); • realizarea întregului website în Flash; • păstrarea unui <body> gol şi introducerea conţinutului şi a layout-ului din Java Script; • crearea link-urilor folosind <span> (împreună cu Java Script) şi nu prin tagul <a>; • împiedicarea prin User Agreement de la vederea sursei HTML (cybertriallawyer.com); • adăugarea unui copyright, prin User Agreement, asupra unor librării precum jQuery (cybertriallawyer.com); • împiedicarea prin TOS de a adăuga de linkuri spre site (New York Stock Exchange web site).

Vasilis Dimos este unul dintre fondatorii Skroutz, o companie ce operează cel mai mare comparator de preţuri din Grecia,a explicat audienţei ce înseamnă cu adevărat responsive. În momentul în care dorim să avem un site responsive trebuie să ne stabilim niște obiective (ex. unul dintre obiectivele Skroutz a fost acela de a avea un timp de încărcare a site-ului în browser sub 2.5 secunde). După stabilirea obiectivelor, toţi membrii echipei vor trebui să contribuie la realizarea acestora, nu doar web designerul. Acesta ar trebui să se ocupe de realizarea unei interfeţe responsive în timp ce programatorii vor trebui să găsească cea mai rapidă şi optimă metodă prin care să implementeze o funcţionalitate.Inginerii de sistem trebuie să găsească şi să aplice soluţiile pentru conexiuni directe între ţările în care site-ul este prezent pentru optimizarea vitezei de încărcare, iar database developeri-i ar trebui să găsească moduri în care să analizeze date foarte mari pentru a oferi utilizatorilor cele mai bune oferte. Binecunoscutul Vitlay Frideman, cofondatorul SmashingMagazine.com, unul dintre cele mai bloguri de web-design

din lume a susţinut o prezentare despre responsive web design, arătând câteva tehnici mai puțin cunoscute prin care putem micşora timpul de încărcare a paginilor. Când vorbim despre acest timp, ne gândim automat la Java Script. O metodă inedită de îmbunătățire a vitezei este încărcarea funcţionalitaţii JS în momentul în care user-ul este cu pointer-ul mouse-ului în apropierea unui buton care necesită respectiva funcţionalitate.Vitaly a mai prezentat un studiu care arată că existența unui loading bar animat, care nu trebuie să aibă o funcţionalitate reală (ex. să arate în procente încărcarea paginii) poate convinge utilizatorul că pagina s-a încărcat mai repede cu 11%. Când vine vorba de interfaţă, o propunere interesantă este crearea unor aşa-zise ‘proficency profiles’. Aceste profile înmagazinează date despre recurenţa vizitelor unui utilizator. Avându-le, putem să afişăm utilizatorului care vizitează site-ul zilnic o interfaţă mai simplă şi mai rapid de încărcat. În momentul în care acesta face o pauză de câteva săptămâni, îi putem afişa interfaţa originală din nou (mai complex şi cu mai multe hint-uri) pentru a-l refamiliariza cu site-ul. În cazul optimizării icoanelor dintr-un site Vitaly a sugerat folosirea unui stack SVG (un mod asemănător spriturilor PNG), iar in cazul imaginilor ar opta pentru o librărie JS precum picturefill sau pentru progressive JPEG. Întreaga conferinţă a fost un succes din punctul meu de vedere. Fiecare speaker a prezentat lucruri concrete şi aplicabile, multe dintre ele noi pentru majoritatea participanţlor. Toate aceste pot confirma faptul că în 2014 vom avea o a doua ediţie a SmartWeb Confrence.

Radu Popescu

rpopescu@smallfootprint.com QA şi Web designer @ Small Footprint

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

11


comunități

Comunităţi IT

R

ecomandările Today Software Magazine pentru această lună sunt Internet & Mobile World 2013 care se anunță un eveniment de amploare considerând numărul de persoane cunoscute ce vor participa la acesta. Al doilea eveniment recomandat este Code Camp Iași, acesta fiind un eveniment dedicat strict programatorilor.

Transylvania Java User Group Comunitate dedicată tehnologiilor Java. Website: www.transylvania-jug.org Data înfiinţării: 15.05.2008 / Nr. Membri: 545 / Nr. Evenimente: 43 Comunitatea TSM Comunitate construită în jurul revistei Today Software Magazine. Website: www.facebook.com/todaysoftmag Data înfiinţării: 06.02.2012 / Nr. Membri: 894 / Nr. Evenimente: 13 Romanian Testing Community Comunitate dedicata testerilor. Website: www.romaniatesting.ro Data înfiinţării: 10.05.2011 / Nr. Membri: 656 / Nr. Evenimente: 2 GeekMeet România Comunitate dedicată tehnologiilor web. Website: geekmeet.ro Data înfiinţării: 10.06.2006 / Nr. Membri: 565 / Nr. Evenimente: 17 Cluj.rb Comunitate dedicată tehnologiilor Ruby. Website: www.meetup.com/cluj-rb Data înfiinţării: 25.08.2010 / Nr. Membri: 150 / Nr. Evenimente: 35 The Cluj Napoca Agile Software Meetup Group Comunitate dedicată metodelor Agile de dezvoltare software. Website: www.agileworks.ro Data înfiinţării: 04.10.2010 / Nr. Membri: 329/ Nr. Evenimente: 37 Cluj Semantic WEB Meetup Comunitate dedicată tehnologiilor semantice. Website: www.meetup.com/Cluj-Semantic-WEB Data înfiinţării: 08.05.2010 / Nr. Membri: 152/ Nr. Evenimente: 23

Calendar Octombrie 6 Tabara de Testare Weekend - Autumn Camp (Cluj) w w w . m e e t u p . c o m / Ta b a r a - d e - Te s t a r e - C l u j / events/131118462/ Octombrie 8 Lansarea numărului 16 TSM (Cluj) www.todaysoftmag.ro Octombrie 9-10 (București) Internet & Mobile World 2013 - recomandarea TSM www.imworld.ro/ Octombrie 10 Let’s meetup and launch the UI/UX Cluj Community ! www.meetup.com/UXUICluj/events/143620322/ Octombrie 10 Arguing about code www.meetup.com/cluj-rb/events/143782662/ Octombrie 12 CodeCamp/Iasi 2013 - recomandarea TSM iasi.codecamp.ro Octombrie 14 Inovația în IT&C Ediția a III-a (2013) it-events.ro/events/inovatia-itc-editia-iii-2013/ Octombrie 16 The Startup Kids - A documentary about startups www.meetup.com/The-Startup-Lab/events/139813132/

Romanian Association for Better Software Comunitate dedicată oamenilor cu experiență din IT indiferent de tehnologie sau specializare. Website: www.rabs.ro Data înfiinţării: 10.02.2011 / Nr. Membri: 225/ Nr. Evenimente: 14

Octombrie 17 Let’s 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/140762552/

Tabăra de testare Un proiect care își dorește să strângă cât mai mulți oameni care lucrează ca și testeri. Website: tabaradetestare.ro Data înfiinţării: 15.01.2012 / Nr. Membri: 356/ Nr. Evenimente: 20

Octombrie 17 Bucharest Java User Group #17 http://it-events.ro/events/bucharest-java-user-group-17/

12

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro

Octombrie 22 Business Analysts Meetup #1 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/144323262/


management

TODAY SOFTWARE MAGAZINE

Best Practices în Agile

I

Dan Suciu

dan.suciu@3pillarglobal.com Director of Engineering @ 3Pillar Global

deea acestui articol mi-a venit cu mai multe luni în urmă, atunci când pregăteam o prezentare pentru conferința “…și mamuții sunt Agile” ce a avut loc la Cluj-Napoca în această primăvară. Se întâmplă uneori ca anumite lucruri să pară a fi foarte clare și evidente la un moment dat, însă atunci când le studiezi mai îndeaproape ai surpriza să constați contrariul. Așa s-a întâmplat și atunci, când dorind să studiez eficiența și beneficiile aderării la bunele practici Agile adoptate în anumite organizații sau echipe de proiect, am ajuns la concluzii ce sunt departe de a le considera optimiste.    Voi încerca în cadrul acestui articol să identific principalele elemente ce duc la ideea că a aplica practici de succes în implementarea Agile ale altor organizații/echipe în propria echipă de proiect poate să aibă mai multe dezavantaje decât avantaje.  

Evident în modul Waterfall probabilitatea de eșec este semnificativă, lucrurile ameliorându-se în funcție de cât de repede ne ”trezim” și ne coordonăm mișcările cu cele ale adversarului.   Consider că aceasta este o vedere idilică a proiectelor IT deoarece pleacă de la ideea  Vederea idilică asupra proiectelor IT   că dacă stăpânești foarte bine procesele ce O comparație care mie mi se pare foarte guvernează “jocul” și dacă ai mai văzut un sugestivă este aceea dintre un proiect infor- stil de joc asemănător cu al adversarului în matic și un joc de șah. Suntem tentați să trecut, șansele de succes sunt mari. Strategia spunem că ambele au câteva caracteristici de de succes s-ar axa pe aceste două compobază pe care le cunoaștem de la bun început:    nente esențiale care te conduc la algoritmi • știm care sunt jucătorii,    (aproape) infailibili în situaţii date şi care • știm care sunt rolurile ”pieselor” pe îţi şi permit să faci predicţii cât se poate de care le utilizăm,  realiste. • știm care sunt procesele și regulile ce Multitudinea de cărţi de IT project manatrebuie urmate.    gement se referă, în mare parte, la astfel de proiecte şi iau în considerare un “numiDacă mergem mai departe cu această tor comun” al proiectelor IT, un context comparație, putem spune că o abordare Agile aproape ideal sau care se îndepărtează întra jocului de șah este una în care reacționăm o manieră decentă, benignă, de acest ideal, corespunzător la fiecare mutare a partene- specificându-se de fiecare dată că anumite rului de joc, în timp ce Waterfall-ul clasic  lucruri pot fi adaptate în practică în funcţie este mai degrabă o încercare de a anticipa de specificul unui proiect sau altul. Project din start cât mai bine mișcările adversaru- Managementul clasic se referă la proiecte ca lui, urmând să mutăm piesele pe baza unei la un context în care există un set minim de strategii proprii şi ignorând ce se întâmplă procese şi reguli şi sunt îndeplinite anumite de cealaltă parte a mesei până când apare o rolurile concrete, fiind pus accent pe cicluri, ”coliziune” (mod de lucru care, de multe ori, mai lungi sau mai scurte, de monitorizare, are loc și la “adversar”). coordonare şi control.  www.todaysoftmag.ro | nr. 16/Octombrie, 2013

13


management Best Practices în Agile În realitate însă proiectele IT sunt mult mai imprevizibile decât ar putea fi un joc de şah. Acest lucru se întâmplă pentru faptul ca regulile se schimbă (de multe ori în timpul derulării proiectului), procesele sunt mai mult sau mai puţin respectate, iar unele roluri pot lipsi complet din “peisaj”. Spunem adesea că proiectele IT nu sunt fair, surprinzându-ne cu elemente ce le scot din sfera a ceea ce cunoaştem sau am mai întâlnit deja. Aş dori să fiu bine înţeles: pornim deja de la premisa că proiectele, prin definiţia lor, sunt întreprinderi unice, care au elemente ce nu au fost întâlnite până atunci, însă caracteristicile specifice proiectelor IT (despre care am vorbit în detaliu în numărul 8 al Today Software Magazine) fac ca numărul diferenţelor într-un astfel de proiect să fie covârşitor. Iar acest lucru nu se întâmplă în cazul unor excepţii nedorite, ci în marea majoritate a proiectelor IT. Iar unul dintre motivele principale pentru care project managementul clasic nu s-a dovedit a fi eficient în cadrul proiectelor IT este tocmai faptul că nu acoperă aceste excepţii majoritare. 

Este Agile ”glonțul de argint” al proiectelor IT?  

Metodologia Agile a apărut ca o necesitate în a accepta şi trata “excepţiile” pomenite mai sus și fiind în primul rând, o schimbare de atitudine. Abordarea clasică “forţează” setarea unui anumit context rigid care “garantează” succesul unui proiect și oferă sugestii cu privire la modul în care ar trebui să fie tratate situațiile de excepție pentru  reintra în ”normal”.  Filozofia Agile pornește de la ideea că aceste excepții sunt firești, și nu trebuie

neapărat să adaptăm contextul la condițiile noastre, ci mai degrabă să ne adaptăm noi la condițiile impuse de context. Însă noi suntem diferiți. Modul în care reușesc eu să mă transpun și să gestionez o anumită situație cheie diferă de modul în care o fac ceilalți. Sfaturile lor și ideile lor despre cum ar trebui să abordez o anumită problemă îmi sunt folositoare atâta timp cât le trec prin filtrul personal și reușesc să le adaptez la context.  Prin urmare Agile trebuie privit ca o stare de spirit, ca un mod de abordare, ca un mindset.   Pentru a mă face mai bine înțeles voi da câteva exemple despre cum nu ar trebui să procedăm în anumite situații.  Conferințele de profil abundă uneori în descrierea unor studii de caz și ale unor povești de succes despre aplicarea Agile. Foarte mulți dintre cei prezenți la astfel de conferințe vin cu speranța că vor găsi sfaturi utile pentru proiectele în care sunt implicați la momentul respectiv. Întrebările sunt foate diverse: ”Cât de mare e echipa?”, ”Echipa este colocată sau nu?”, ”Product Owner-ul este la client sau din propria organizație?”. Toate aceste întrebări au doar darul de a găsi un șablon cât se poate de potrivit care să fie aplicat propriului proiect pentru a garanta succesul. De cele mai multe ori însă acest lucru nu se întâmplă, și este normal să fie așa: sunt atât de multe configurații posibile și situații aparte în proiectele IT, încât este foarte greu să găsești două proiecte similare. Prin urmare, în loc să încercăm să găsim proiecte de succes similare cu ale noastre, principala întrebare pe care ar trebui să o adresăm este: ”Cum reușesc să aplic și să adaptez unele dintre lucrurile auzite în rezolvarea propriilor

probleme pe care le am în proiect?”  Un alt exemplu este dat de cei care, în diverse situații, spun: ”Proiectul pe care lucrez nu este Agile”, referindu-se în general la faptul că anumite roluri nu sunt îndeplinite corespunzător, că anumite documente nu au o structură ideală sau că anumite ședințe (sau ceremonii cum sunt ele denumite în Agile Scrum) nu se desfășoară așa cum scrie la carte, uitând faptul că rolurile, documentele sau ceremoniile sunt doar instrumente de lucru Agile. Nu proiectul este Agile, ci modul în care îl abordăm poate fi Agile. Și acest mod de abordare este și cel pe care va trebui să îl aplicăm pentru a adapta aceste instrumente (când e cazul) sau pentru a ne adapta noi la intrumentele pe care le avem la dispoziție. Nu cădeți în capcana de a stabili o singură cale adevărată de abordare Agile a unui proiect!   

În sfârșit, o altă greșeală frecventă este aceea de a aplica în mod identic o abordare de succes dintr-un proiect anterior în proiectul curent. Acest lucru este o greșeală deoarece, după cum am mai subliniat, proiectele IT diferă foarte mult unele de celelalte. Într-o companie ce oferă servicii software, așa cum este și 3Pillar Global, acest lucru este dureros, pentru că în cazul fiecărui client pornești aproape de la zero. Fără doar și poate există o experiență în spate care s-a format, însă contextul va fi Our core competencies include:

Product Strategy

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

www.3pillarglobal.com

14

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro

Product Development

Product Support


TODAY SOFTWARE MAGAZINE

de fiecare dată altul și multe dintre concluziile trase în trecut nu mai sunt valabile în noua variantă. 

Concluzii 

O primă concluzie pe care o putem trage este faptul că ideea de best practices în gestiunea proiectelor software nu doar nu ajută foarte mult, dar poate chiar dăuna. Un set de worst practices ar fi mult mai util oricui este responsabil de gestionarea unui proiect IT.  O a doua concluzie este doar o reiterare

a unui fapt pe care multă lume pare să-l fi uitat: nu există o formulă Agile. Agile este în principal un set de valori și principii, iar dacă cineva nu își poate imagina modalități de organizare unei echipe de proiect în jurul acestor valori și principii atunci putem spune că acea persoană nu este Agile. Aceast lucru este foarte important de înțeles într-o perioadă în care mulți devin rigizi în susținerea unui mod unic de a fi Agile.  Aș mai sublinia în încheiere că adoptarea unei metodologii Agile poate da naștere în general unei mișcări de rezistență puternice, deoarece afectează toată activitatea unei persoane implicate. În general, din ceea ce am constat eu, lumea nu se plânge de schimbarea stilului de dezvoltare ci de faptul că acesta nu se schimbă. Exista în acest moment o dorință mare de a fi Agile pe toate nivelele de senioritate și în toate categoriile de oameni implicați întrun proiect. Toti vor să devină Agile, dar Agile în sensul în care fiecare dintre ei îl văd. Fiecare are o viziune proprie despre ce înseamnă a fi Agile, fiindu-i adeseori

greu să împărtășească această strategie cu ceilalți, dar manifestă o rezistență mare la schimbări în momentul în care direcția de agilitate nu este cea anticipată. 

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

15


management

programare

Agilitatea Presupune Craftsmanship

Î

n 2001, un grup de oameni nemulțumiți de starea lucrurilor din industria de software development s-a adunat într-o stațiune de schi din Utah. Dintr-una în alta, au ajuns să discute despre metodele industriale aplicate la vremea respectivă pentru gestiunea programatorilor și despre metodele așa-numite lightweight pe care mulți dintre ei le foloseau informal. Rezultatul acestei întâlniri, cum probabil știți, a fost The Agile Manifesto.

Alexandru Bolboaca

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

Adrian Bolboaca

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

16

nr. 16/Octombrie - www.todaysoftmag.ro

Conversațiile despre Agile Manifesto se concentrează de obicei pe conținut. Dar ce putem spune despre autori? • Mike Beedle - a publicat articole despre Object-Oriented Programming (OOP), pattern-uri, reutilizarea componentelor și framework-urilor, limbaje de programare. • Ward Cunningham - a fost Principal Engineer la Tektronix, compania care a creat Smalltalk, primul limbaj object oriented utilizat pe scară largă. A participat la crearea Extreme Programming (XP), a creat metoda de software design cu CRC și a contribuit activ la comunitatea de patterns Patterns Language of Programming (PLoP). • Martin Fowler - este un binecunoscut autor în subiecte de software design și refactoring. • Andrew Hunt - partener la editura “Pragmatic Programmer” care ne-a dat multe cărti utile pentru programatori și co-inițiator al mișcării Software Craftsmanship. • Ron Jeffries - consultant și programator foarte experimentat în Extreme Programming. • Jon Kern - evanghelist OOP, începand cu C++ și continuând cu Java • Brian Marick - tester și programator specializat în limbaje functionale. • Robert C. Martin - binecunoscut autor al unor cărți despre design și despre programare, promotor al mișcării Software Craftsmanship.

Acestea sunt doar câteva nume din lista de autori. Ceea ce putem observa este că fiecare dintre ei avea o baza solidă în programare, inclusiv pe proiecte foarte complexe. Astăzi agile este cel mai adesea considerat sinonim cu Scrum, fiind cea mai răspândită metodă agilă. Pe bună dreptate: Scrum poate îmbunătăți productivitatea unei echipe într-un mod fundamental. Dar dacă am compara Scrum cu Extreme Programming, vom observa ceva interesant. Modalitatea de lucru în Scrum și XP e foarte similară. Rolurile și structura unui sprint sunt mai bine definite în Scrum decât în XP. Diferența majoră între ele constă însa în faptul că XP cerea un set de practici tehnice, de la collective code ownership, continuous integration, coding standard până la pair programming, refactoring, TDD și simple design. Motivul este simplu și corect: Scrum s-a dorit a combina setul de practici agile care se pot aplica la orice tip de “knowledge work”. De aceea, Scrum lasă la latitudinea echipei practicile pe care le vor folosi pentru a livra software de calitate în fiecare sprint. După cum Ken Schwaber a spus la conferința OpenAgile 2009 București, “Scrum se bazează pe craftsmanship”, fie el în software, marketing sau crearea unei emisiuni radio. Setul de practici tehnice diferă în funcție de tipul de muncă. Companiile care aleg să adopte Scrum trec prin câteva etape. Mai întâi, echipa e formată. Apoi planul și starea curentă sunt


TODAY SOFTWARE MAGAZINE făcute vizibile. Câteva lucruri se pot întâmpla de acum încolo: • Echipa nu știe să lucreze incremental, drept urmare apar story-uri care nu pot fi terminate într-un sprint. E nevoie de îmbunătățirea modului de a face story slicing. • Dezvoltarea se termină în cadrul sprintului, dar nu e timp pentru testare. Testarea se mută în alt sprint (sau sprinturi). E nevoie de: testare încrucișată, pairing între programator și tester și automatizarea testelor. • Story-urile sunt în general dezvoltate și testate în cadrul sprintului, dar punerea în productie durează foarte mult și reduce semnificativ viteza de dezvoltare. E nevoie de continuous integration pentru automatizarea incrementală a deployment-ului. • Viteza de dezvoltare crește, se stabilizează, dar apare un story care modifică fundamental o parte din design-ul aplicației și durează mai mult de un sprint. E nevoie de refactoring și de design mai bun care urmărește principiile SOLID. • Dacă aplicația este dezvoltată pentru un mediu mai complex, de obicei enterprise, anumite modificări sunt foarte dificil de împărțit în story-uri care încap într-un sprint. Uneori este un semn de architectural debt, și e nevoie de gândire arhitecturală pe termen mediu și lung. Iată cum agilitatea presupune aplicarea unor practici precum: • Pair programming pentru prevenirea greșelilor și obținerea unui design mai flexibil; • Unit testing pentru scurtarea timpului necesar validării produsului; • Refactoring continuu pentru păstrarea unui design flexibil; • TDD (Test Driven Development) sau

BDD (Behavior Driven Development) pentru definirea clară a problemei și găsirea soluțiilor celor mai simple; • Urmărirea unor principii de design și folosirea de design patterns pentru a păstra deschiderea la modificari; • Gândirea strategică pe termen lung a arhitecturii pentru micșorarea riscurilor tehnice și de dezvoltare.

utile, ci pentru că a vrut să fie mai general și pentru că se bazează pe echipă să le selecteze pe cele care au sens în context. Dar agilitatea este imposibil de atins fără un set de practici tehnice pe care să se poată adaugă organizare și, în final, business agility.

Mai mult, agilitatea presupune că toți membrii unei echipe, fie ei testeri, programatori, designeri, analiști de business învață permanent noi metode de a lucra mai bine împreună, pe baza impedimentelor întâlnite. Acest lucru presupune fie planificarea sesiunilor de învățare în cadrul sprintului, fie învățarea în “communities of practice”. Acesta este software craftsmanship: combinația între practicile care ajută în mod pragmatic la aducerea de valoare de business mai repede și mai eficient și dezvoltarea personală continuă într-o comunitate de oameni care au aceleași valori. Agilitatea presupune craftsmanship, pentru că nu se poate altfel. A nu se înțelege de aici că abordarea Scrum este greșită. Dimpotrivă, ea permite adoptarea incrementală a practicilor tehnice care sunt de ajutor în contextul dat. Una este dacă trebuie să faci un release la șase luni deoarece clienții nu vor mai des (exemplul tipic fiind spitalele sau băncile) și alta să trebuiască să faci release de 15 ori pe zi precum aplicațiile web pentru consumatori care au adesea nevoie. Selecția practicilor tehnice depinde fundamental de nivelul de agilitate dorit. Cei care au pornit pe acest drum pot să le descopere singuri sau să ceară ajutor expert pentru a învăța mai rapid. În concluzie, practicile tehnice au fost de la început parte din agile. Scrum le-a eliminat din model nu pentru că nu sunt

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

17


HR

HR în Agile

C

red că nu există persoană sau companie din zona de IT care să nu fi auzit măcar o dată despre Agile -Scrum. Pentru cei care încă nu sunt familiarizați cu acest concept, pe scurt. Agile Scrum poate fi definită ca o metodologie de management a dezvoltării priectelor IT, care asigură livrarea la timp și încadrarea în termenele stabilite de către client, optimizând atât munca în echipă cât și rezultatele obținute. Andreea Pârvu

andreea.parvu@endava.com Recruiter în cadrul Endava

18

nr. 16/Octombrie - www.todaysoftmag.ro

Acest articol nu va prezenta rolurile în Scrum: product backlog sau sprint-uri, ci va prezenta câteva soluții și bune practici pentru a implementa eficient procese de resurse umane care să răspundă atât nevoilor clienților, cât și organizației. Pentru că într-un mediu dinamic și agil, așa cum este piața de IT, inclusiv departamentul de HR este necesar să aibă o altă abordare. Articolul se va concentra pe a prezenta o paralelă între ”modelul vechi HR” (en. ”the old HR model”) implementat de majoritatea companiilor și ”modelul nou HR” (en. ”the new HR model”), care este un trend adoptat mai ales în Europa de Vest și Statele Unite. Sunt numeroase corporații, care au înțeles că pentru a supraviețui într-un mediu dinamic, inclusiv mentalitatea și abordarea HR-ului trebuie schimbată.

percepția asupra conceptului de ”resursă umană” prin evidențierea valorii oamenilor ca resursă vitală. Natura strategică a MRU are la bază o filosofie orientată managerial și economic. Se susține că MRU înseamnă o activitate esențială care ar trebui să răspundă intereselor organizației printr-o aliniere a obiectivelor angajațiilor la cele ale companiei. HR strategic desemnează o abordare integrată a elaborării strategiilor de resurse umane, care vor permite organizației să-și atingă scopurile, prin luarea deciziilor în privința definirii și integrării planurilor care fac referire la raporturile de muncă, strategiile de recrutare, formare profesională, dezvoltare profesională, managementul performanței, recompensare și managementul relației cu angajații. În ansamblu, ia în considerare orice chestiune importantă care influențează planul de dezvoltare al companiei. HR operațional traduce strategia în programe cu obiective și sarcini precis formulate. În ”vechiul model HR” nevoile Fig 1. ”Modelul vechi HR” clientului și ale organizației erau luate în considerare în definirea și implementarea Managementului resurselor umane strategiilor de resurse umane, însă lipsea (MRU) are un rol cheie într-o companie, flexibilitatea și adaptarea lor în funcție de datorită faptului că a schimbat cel puțin context și de situații, pentru a răspunde


TODAY SOFTWARE MAGAZINE prompt cerințelor celor două entități companiile să pună un accent deosebit pe menționate mai sus. ”capitalul intelectual” – care este singura sursă de avantaj competitiv pentru acestea. Provocarea constă în a face ca firmele să Fig 2. ”Modelul nou HR” aibă capacitatea de a găsi, a integra, a remunera și a păstra capitalul uman sub forma Concurența globală în sectorul IT angajațiilor pregătiți, care să poată susține este din ce în ce mai mare. Transferul de evoluția organizației, care este receptivă tehnologie și diminuarea barierelor de atât la cerințele clienților, cât și la nevoile comunicare internațională contribuie la angajaților. dezvoltarea acestui fenomen. Exigențele Astfel în noua abordare, HRul este un clienților cresc, pe măsură ce se ating stan- partener de afaceri (en: business partner), darde noi grație rivalității internaționale un partener strategic de încredere pentru între mai multe concerne. Companiile liderii afaceri și liderii proiectelor. Are rolul răspund acestor cerinte, devenind ”ori- de a traduce nevoile clientului în obiective entate către client” în primul rând prin de resurse umane și planuri de acțiune care reducerea timpilor de reacție, punând să asigure capacitatea organizațiilor de a accent pe calitate și îmbunătățire continuă, anticipa schimbările de pe piață. În același iar în al doilea rând prin accelerarea intro- timp oferă soluții durabile și pe termen ducerii de noi tehnologii. O reacție des lung care sunt aliniate cu strategia compaîntâlnită la presiunea forțelor concurențiale niei pentru a aborda, atrage și reține cele este reproiectarea organizatorică a sisteme- mai bune talente. Așadar ca pași concreți lor din întreprindere (proces cunoscut ca este necesar: Business process re-engineering), care cer• Descentralizarea și delegarea la nivecetează și evaluează pașii necesari definirii lurile inferioare a luării deciziilor; strategiilor ce cuprind și leagă între ele • Structuri organizatorice plate și orifuncțiile firmei. Analiza studiază procesele entate pe orizontală mai mult decât pe operaționale desfășurate pe orizontală, penverticală, care oferă autonomie în luarea tru a vedea cum ar putea fi înglobate mai deciziilor; bine pentru a răspunde nevoilor clienților. • Crearea unei forțe de muncă flexibilă Dintr-o perspectivă agilă, efectul acestui și agilă, care să aibă un grad ridicat de demers poate să fie necesitatea de a atrage autogestiune și responsabilitate pentru și de a dezvolta personal cu aptitudini noi, echipe și membrii lor; precum și îmbunătățirea muncii în echipă. • Încurajarea inițiativei și munca în De asemenea, se accentuează importanța echipă, lucrul pe proiecte și implicare și unei abordări integrate și coerente a elaboparticipare interdepartamentala; rării și implementării proceselor de resurse • Crearea unui mediu organizațional umane. deschis, onest și transparent care să Ansamblul acestor factori contexîncurajeze parteneriatul între client, tuali menționați mai sus, ridică o serie organizație și angajați; de provocări concurențiale care obligă • Necesitatea unui stil de leadership

participativ, în care liderii să aibă aptitudini interpersonale, de conducere a echipelor și de motivare a lor. Scopul acestei noi abordări este de a aduce o valoare adăugată, printr-o mai bună înțelegere a relației de business și a contextului, precum și a stakeholderilor care sunt direct beneficiarii implementări proceselor și sistemelor de HR. Rezultatul poate fi ușor cuantificabil atât pentru: 1. Angajați - care își vor crește productivitatea prin dezvoltarea competențelor și abilităților, prin angajamentul față de companie și prin contribuția lor la dezvoltarea afacerii. 2. Compania - care câștigă un avantaj competitiv pe piață nu prin structura pe care a creat-o, dar prin capabilitățile pe care le dezvoltă. Logica implementării acestui model este una simplă și care ne va duce la premisa de la care am pornit în momentul în care am început scrierea acestui articol și anume: HR-ul trebuie să aibă flexibilitate și capacitate de adaptare într-un mediu dinamic, care să aducă plus valoare în companie. În încheiere, vă adresez următoarea întrebare ”Care este cea mai mare provocare cu care organizația voastră se confruntă?”. Dacă răspunsul este atragerea, retenția și dezvolarea talentelor, precum și îndeplinirea nevoilor clienților într-un mod cât mai eficient din punct de vedere al costurilor, atunci o soluție în a depăși această provocare este implementarea unui model de parteneriat de afaceri între HR – client și organizație. Succes!

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

19


programare

Analitica Big Data în aplicațiile moderne

P

rivind înapoi la ultimii douăzeci de ani, ne confruntăm cu ceea ce oamenii de știință numesc Legea întoarcerilor accelerate. Pe scurt, transformarea și inovația tehnologică a acestor ultimi douăzeci de ani reprezintă rezultatul ultimilor două mii de ani laolaltă. Mai precis, industria tech a suferit schimbări fundamentale în felul în care software-ul este construit, livrat și în final experimentat de către omul de rând – consumatorul. De la batch jobs (programe cu comenzi multiple, executate fără intervenția utilizatorului) la aplicații care rulează pe computerele personale și apoi aplicații web-based și mobile, asemenea dislocări implică modificări semnificative în hardware, asociate cu noi tipuri de aplicații. În plus, aplicațiile moderne pun accent pe un nou vârf al transformării turbulente și accelerate: utilizarea Big Data. Cererea crescândă pentru platforme analitice de generație următoare care oferă clienților răspunsuri aproape în timp real, declanșate de date în timp real cum ar fi clickstreams (istoria accesărilor sau parcursul vizitatorilor), social media, sensori, combinate cu puterea de executare distribuită a seriilor de comenzi, demonstrează încă o dată faptul că inteligența ar trebui să se afle, implicit, în centrul oricărei aplicații software. DEOARECE DATELE CONDUC LA COMPORTAMENT INTELIGENT CARE DUCE LA PROFIT. Acționând potrivit provocărilor din afaceri și ambițiilor clienților săi, ISDC a creat PLATFORMA ANALITICĂ BIG DATA care se adresează nevoilor mai sus menționate și facilitează o rată crescută a productivității și o rentabilitate mai mare. Soluția noastră ajută afacerile să își administreze mai bine fluxurile de date cu volum mare, varietate mare și viteză mare și să transforme aceste date în informații care să genereze profit. Această lucrare explică arhitectura din spatele soluției noastre

și oferă pași practici pentru implementarea eficientă a proiectelor analitice Big Data.

Aplicațiile moderne

În anii trecuți a avut loc o schimbare treptată a ceea ce constituie elementul pe care o aplicație software pune accentul. Din anii 90 și până recent, o aplicație software punea accentul în primul rând pe funcționalitate. Mai nou – în principal datorită consumatorismului – funcționalitatea este considerată ceva absolut obligatoriu, iar accentul principal s-a mutat pe design. În ultimii ani, există o tendință evidentă de a integra din ce în ce mai mult comportament inteligent în aplicații, în timp ce funcționalitatea și designul au devenit noul ”must have”. Nevoia de comportament inteligent nu este nouă, dar la tehnologiile din trecut, acesta era un țel greu de atins. În ciuda dificultății în utilizare, metodele statistice clasice erau folosite pentru a genera modele predictive, ceea ce primea multe critici din partea industriei. Au apărut noi modele

predictive, dar și acestea au dat naștere unor noi probleme. Unul dintre motoarele principale care angrenează schimbarea este nevoia de a analiza cantități de date din ce în ce mai mari, împreună cu creșterea acurateței modelelor. Dar această cerință atrage o nouă problemă: capacitatea de calcul crește exponențial, atunci când acuratețea este mărită. ”Noile tehnologii Big Data și Analitice oferă o putere de calcul mare pe un hardware disponibil și accesibil, de calcul în paralel.” Răspunsul la această provocare este apariția unui nou set de tehnologii centrate pe Big Data și analiza datelor. Ele oferă o capacitate mare de calcul pe un hardware disponibil și accesibil, de calcul în paralel. Aceste două tehnologii fac opțiunea de a include inteligență în fiecare aplicație software mult mai atrăgătoare deoarece acum ele sunt mai rentabile și au capacitatea – mai mult ca înainte – de a transforma datele în profit prin intermediul comportamentului inteligent.

Big Data

Organizația dumneavoastră, ca orice altă companie de succes, adună și distribuie

20

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro


TODAY SOFTWARE MAGAZINE mai multe date, din mai multe surse, în mai multe forme decât înainte. Din acest motiv, vă confruntați cu provocarea de a gestiona fluxuri de date de volum mare, varietate mare și viteză mare. Aproape orice companie descoperă că trebuie nu doar să gestioneze volume de date din ce în ce mai mari în sistemele lor în timp real, dar și să analizeze aceste informații astfel încât să poată lua rapid deciziile potrivite pentru a concura eficient pe piață. Potrivit studiului făcut de Andrew McAfee și Erik Brynjolfsson (MIT), companiile care introduc Big Data și analitică în operațiunile lor indică procente de productivitate și profitabilitate cu 5% - 6% mai mari decât cele ale colegilor lor.

”Companiile care introduc Big Data și analitică în operațiunile lor indică procente de productivitate și profitabilitate cu 5% 6% mai mari decât cele ale colegilor lor”. În Big Data există multe întrebări valoroase, fără răspuns. Provocarea este aceea de a găsi modalitatea de a separa semnalul de zgomot din date, determinând

indicatori predictivi concreți, capabili să transforme datele în informații care, la rândul lor, să genereze profit. Acesta este momentul în care aveți nevoie de analitică.

Pași în construirea unui proiect Big Data

După definirea scopului afacerii, sunt necesari următorii pași: • Obținerea datelor neprelucrate din surse de date multiple, cu volume diferite și viteză diferită. • Rafinarea datelor neprelucrate obținute. • Depozitarea datelor neprelucrate. • Integrarea datelor (structurate, nestructurate, în timp real, etc.) • Transformarea, gruparea datelor și stocarea rezultatelor.

Analitica Big Data

algoritmi pentru a găsi tipare în date, prin analizarea surselor Big Data. Tiparele sunt materializate în modele predictive. Tiparele pot prezice rezultate similare, de aceea, utilizarea lor poate îmbunătăți performanța afacerii sau poate diminua riscurile. De ce aveți nevoie pentru a beneficia de observațiile ascunse în date? Pentru a-și îmbunătăți performanța cu analitica avansată Big Data, companiile trebuie să își dezvolte abilitățile în trei domenii: • SURSE DE DATE MULTIPLE: Îmbunătățiți arhitectura și infrastructura IT pentru o îmbinare ușoară a surselor multiple de date, interne și externe. De asemenea, alegeți datele potrivite. • MODELE DE PREDICȚIE ȘI OPTIMIZARE: Construiți modele analitice care compensează complexitatea cu ușurința utilizării, concentrânduse asupra celor mai mari motoare de performanță. • T R A N S F O R M A R E ORGANIZAȚIONALĂ: Creați instrumente simple, ușor de înțeles pentru oamenii din linia întâi și actualizați procesele și dezvoltați capacitățile pentru a facilita utilizarea instrumentelor. ”Cunoașterea este profit.”

”Cunoașterea este profit” pentru acele firme care utilizează soluțiile analiticii predictive Big Data pentru a reduce riscurile, a lua decizii înțelepte, a crea experiențe diferențiate și mai personale pentru clienți. Răspunsurile se află în date – dar numai dacă companiile le caută. Ana lit ic a pre dic t ivă ut i lize ază

Atunci când plănuiți să utilizați analitica, aveți două opțiuni: fie utilizați pachetele de analitică universale, fie construiți aplicații de analitică la comandă. După cum afirmă raportul McKinsey, pachetele de analitică universale pot fi rentabile și mai rapid de instalat decât modelele la comandă, ajustate. Dar

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

21


programare Analitica Big Data în aplicațiile moderne acestora le lipsesc calitățile unei aplicații killer, care este construită pe cazuri de business reale și care poate motiva managerii. Pe baza nevoilor identificate la clienții săi, ISDC a conceput Arhitectura Analiticii Big Data care reflectă viziunea noastră cu privire la modalitatea în care trebuie aplicată analitica în zilele noastre pentru a genera profit.

Pași în construirea unui proiect de analitică Big Data

pe un algoritm de exploatare a textului care este capabil să detecteze, cu mare acuratețe, atunci când un cod este indicat în mod greșit și să prezică codul corect pe baza descrierii textuale a procedurii medicale. Modelul predictiv constă într-un clasificator probabilistic capabil să învețe singur relațiile dintre cuvintele/ expresiile din fișele medicale existente și codurile corespunzătoare. În algoritm sunt incluși următorii pași: procesarea textului; amestecarea textelor și formarea a două grupe: antrenare (3/4), test (1/4); convertirea cuvintelor în atomi lexicali; eliminarea cuvintelor stop; generarea n-gram; extragerea caracteristicilor semnificative; executarea algoritmului de învățare folosing grupul de antrenare; prezicerea codului pe texte din grupul de test; calcularea acurateții predicției.

După definirea scopului afacerii, sunt necesari următorii pași principali: • Înțelegerea datelor provenite dintr-o varietate de surse (interne și externe). • Pregătire a datelor (integrare, curățare, transformare). • Crearea unui model predictiv (găsirea tiparelor). • Evaluarea modelului predictiv (sunt reale tiparele?). • Utilizarea modelului (folosirea Rezumarea textului predicției). În instituțiile de psihiatrie, fiecare • Monitorizarea eficienței modelului pacient are un registru medical în care (evaluarea acurateței predicțiilor). personalul instituției descrie zilnic starea medicală curentă a pacientului și toate faptele semnificative din acea zi. Datorită caracteristicilor acestui tip de boală – adesea incurabilă și manifestată pe o perioadă lungă de timp – dimensiunile fișelor pacienților cresc considerabil de-a lungul anilor. Atunci când se schimbă personalul medical al unui anumit pacient, acesta trebuie să cunoască condiția curentă a pacientului, care poate fi ușor accesată. În plus, ar fi un mare ajutor pentru ei să aibă un rezumat rapid al dosarului pacientului (care are o reprezentare textuală). Referințe ISD C ajută as emenea instituții psihiatrice prin elaborarea unui software Prezicerea codurilor de procedură medicală de analitică special conceput, care În spitale, fiecare procedură medicală implementează o rezumare inovativă efectuată pe pacienți este numită și descrisă a textului și un algoritm de extragere a textual de către personalul medical, în fișa cuvintelor cheie. medicală a pacientului. De asemenea, În acest a lgor it m sunt inclus e fiecare procedură medicală are un cod unic, iar acel cod trebuie indicat în fișa medicală. Fiecărui cod care indică o procedură medicală îi corespunde o sumă de bani care va fi plătită de companiile de asigurări. Spitalele trimit lista de coduri companiilor de asigurări (cu documentația atașată) cerând compensarea corespunzătoare. Există cazuri în care personalul medical omite să indice acele coduri sau codurile sunt incorect specificate. În aceste cazuri, spitalele pot pierde bani. ISDC ajută spitalele prin elaborarea unui software de analitică la comandă, bazat

22

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro

următoarele etape: procesarea textului, convertirea în atomi lexicali, marcarea părților de vorbire, selectarea numai a cuvintelor lexicale relevante, aplicarea algoritmului de ierarhizare, obținerea celor mai relevante cuvinte cheie și propoziții.

Personalizarea conținutului Companiile mari care sunt extinse din punct de vedere geografic se confruntă cu provocări în ceea ce privește asigurarea conținutului web global și local, reticular și clasificat, care este optimizat pentru motoarele de căutare și relevant pentru mii de locații de pretutindeni din lume. Există multe surse potențiale de date care pot fi combinate laolaltă, care generează site-uri complete și structuri de site-uri, cum ar fi: datele geo-politice ale lumii, regiunile comerciale, puncte de interes, produse ale companiei marcate geografic, media identificată geografic, conținut textual descriptiv, cuvinte cheie relevante și combinații de cuvinte cheie, interconexiuni bazate pe volumul de căutare și valoarea afacerii, servicii locale și multe altele. ISDC a dezvoltat o soluție care constă într-un set de activități de procesare complexe, utilizate pentru a genera websiteuri mari, cu zeci de categorii și zeci de mii de pagini cu conținut relevant din punct de vedere geografic, presă bogată, texte descriptive, interconexiuni algoritmice, navigare încrucișată și informații despre produs cu fațete multiple. Paginile sunt construite utilizând algoritmi de calcul geo, succesiuni de operațiuni de producere a conținutului cu distribuire, authoring, verificări multiple, verificare a calității și publicare automată, algoritmi de conectare bazați pe volum de căutare și valoare, algoritmi de sincronizare media și selecție, categorii care pot fi modificate la comandă, cu cuvinte cheie și modele de pagină, pentru a obține o fracțiune din costul tehnicilor comune, iterarea fiind redusă și având loc la intervale mai mari.

Analiza sentimentelor Din dorința de a fi mai aproape de nevoile clienților, o companie importantă


TODAY SOFTWARE MAGAZINE din lumea financiară trebuia să obțină pulsul pieței prin aplicațiile de pe mobilele personale ale acestora. Pentru a atinge acest scop, aveau nevoie să afle atât gradul de satisfacție cât și zonele cheie unde se impunea mai multă atenție. În zilele noastre, feedbackul se află

acolo pe internet. Trebuie doar să fie centralizat și analizat. Primele locuri de unde se poate aduna feedback sunt App stores, Social Media, Bloguri, etc. Datele rezultate sunt obținute prin analizarea și ”extragerea”, din texte, a sentimentelor (gradelor de satisfacție) și zonele cheie de interes. Rezultatele obținute trebuie să fie afișate într-o manieră inteligentă și flexibilă. Pentru a strânge datele, au fost utilizate numeroase accesorii ale aplicațiilor și conectori pentru a realiza conectarea la diferite suporturi de informații de pe internet. Analiza a fost efectuată prin utilizarea unor algoritmi foarte performanți de analizare a sentimentelor și extragere a cuvintelor cheie. Utilizând Inteligența Business, ISDC a reușit să ofere tablouri de bord flexibile și inteligente care afișează informația pentru analiști. Cu ajutorul acestor tablouri de bord, clientul poate observa atât gradul de satisfacție, cât și zonele cheie sensibile, dintr-o singură privire.

Cercetare unificatoare În lumea cercetării academice, găsirea articolelor relevante cu informații de ultimă oră a fost întotdeauna o sarcină dificilă; unul dintre liderii de pe piața mondială în serviciile de management al conținutului a

venit cu o soluție pentru a facilita procesul de descoperire și acces la conținutul electronic. Soluția este de fapt o platformă cu totul nouă peste care vor concepe alte soluții inovatoare pentru toți utilizatorii lor finali, nu doar pentru cercetători. Puterea platformei este dată de faptul că ea oferă acces direct, unitar, către toate resursele electronice ale bibliotecii cercetătorului; și nu doar atât, ci de asemenea și către acelea la care nu are acces, dar le va putea comanda/ cumpăra. Toate informațiile erau deja disponibile în sistemele existente, ca și entități separate; provocarea a fost aceea de a le curăța, configura, aduna și în final de a le încărca în baza de date de documente NoSQL. În viitor, vor putea dezvolta, pornind de aici, alte servicii de cercetare și descoperire. Platforma este concepută drept o combinație între soluții universale și proprii, balansând ce e mai bun din ambele; dezvoltare rapidă și livrare rapidă pe piață printr-o căutare rapidă, flexibilă și scalabilă în baza de documente Big Data. Și, nu în ultimul rând, dezvoltare internă pentru aplicația personalizată prin furnizarea unei interfețe ce oferă o experiență bogată utilizatorilor finali, cercetători sau bibliotecari.

altele. Deoarece abundența datelor include din ce în ce mai multe intrări în timp real, analiza predictivă are o tendință pronunțată de a fi în timp real. Arhitectura de referință propusă de ISDC include analitica în timp real pe același nivel de importanță ca și prelucrarea pe loturi, punând accent pe rolul analiticii în două zone: raportare (aceasta este abordarea clasică) și software operațional (web sites, ERP, etc.). Diagrama de mai jos ilustrează – considerând web site-ul companiei drept software operațional – cum analitica poate influența conținutul web site-ului văzut de fiecare utilizator, combinând observații din: • tipare găsite în datele istorice prin intermediul analiticii de lot; • tipare găsite analizând, în timp real, fluxul de date provenit de la furnizorii de date în timp real (clickstreams, rata burselor de valori, diverse, etc.).

Arhitectura de referință a analiticii Big Data ISDC Sistemele de analiză anterioare erau în esență descriptive, bazându-se pe date tranzacționale, vechi de săptămâni sau luni și implicând cantități relativ mici de volum. Sistemele generației următoare asigură capacitatea de a captura noi informații de pe web (clickstreams, etc.), locații geografice, comunități sociale, dispozitive inteligente, senzori și multe

Adrian Margin adrian.margin@isdc.eu Software architect @ ISDC

Andras Gyalai andras.gyalai@isdc.eu Software architect @ ISDC

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

23


programare

programare

Promovarea fără costuri a organizațiilor non profit

O

organizaţie non-profit necesită la fel de multă muncă şi dedicare, ca orice alt business, doar că totul se face cu o fracţiune din bugetul unei afaceri. În general ONP-urile trebuie să lucreze cu niște bugete limitate, iar mediul online le oferă oportunitatea de a-și face mai cunoscute campaniile şi programele fără a folosi prea multe resurse. Pe lângă promovare, strângerea de fonduri este mai uşoară şi mai rapidă. În acest articol am prezentat câteva metode prin care ONP-urile pot strânge fonduri. Radu Popescu

rpopescu@smallfootprint.com QA şi Web designer @ Small Footprint

Donaţii prin Paypal

Paypal este cunoscut de utilizatorii de Internet din România de mult timp. Acesta a început să fie folosit tot mai mult, având o creştere de aproximativ 50% pe an. Conform datelor oferite de Luca Cassina – manager Paypal pentru zona central şi est-europeană, acest lucru îl putem folosi în favoarea noastră, adăugând pe situl sau blogul ONP-ului un buton pentru donaţii. E important de ştiut că persoanele care vor să doneze prin Paypal, nu au nevoie de un cont, ci doar de un card bancar. Odată ce donaţiile au depăşit suma de 10.000 de dolari, organizaţiile beneficiare trebuie să demonstreze cum vor folosi acei bani şi pentru ce cauze. Un lucru care ne ajută la integrarea butonul Donate în website-ul organizației este opțiunea de a-i customiza partea grafică, acest lucru ajutându-ne să avem o pagină mai profesională. Mărimea şi textul său contează foarte mult. Un buton cu o dimensiune mare (mai mare decât celelalte din pagină) precum şi un call-to-action clar ajută foarte mult. Nu vrem ca utilizatorii siteului să dorească să facă o donaţie dar să nu găsească butonul ori să nu fie siguri că

24

nr. 16/Octombrie - www.todaysoftmag.ro

acela este cel cu ajutorul căruia pot dona. Pe lângă prezentarea grafică a butonului şi, plasarea sa este la fel de importantă. Plasarea above the fold este cea mai bună, astfel că putem identifica butonul pentru donaţii din primele 2-3 secunde de la deschiderea paginii.   

Licitații online precum uCmb

Site-urile de licitaţii pot să vină şi ele în sprijinul ONP-urilor. Putem menționa un proiect personal care oferă copiilor din familii sărace cadouri în preajma sărbătorii de Crăciun. Pentru a face proiectul mai cunoscut şi pentru a atrage nişte fonduri suplimentare am realizat o colaborare cu un tânăr designer vestimentar din România care va crea un brad special pe care îl vom scoate mai apoi la licitaţie. Site-ul de licitaţii pe care îl vom folosi se va ocupa în totalitate de această parte, noi trebuind să adăugăm doar câteva fotografii şi descrierea campaniei.

Kickstarter pentru cauze sociale

Kickstarter.com este cunoscut drept un site prin care oricine poate să îşi găsească finanţare pentru proiectul său creativ. Din păcate proiectele sociale nu au o


TODAY SOFTWARE MAGAZINE trebuie doar găsită sunt eligibile pentru programul Grants metoda optimă de a Pro în care bugetul lunar creşte până la recompensa donatorii. suma de 40.000 de dolari. La un calcul simplu, într-o perioada de un an, bugetul Donaţii prin Techpentru promovare online poate ajunge la Soup suma de 480.000 de dolari. Această sumă TechSoup este una nu este deloc de neglijat, chiar şi pentru dintre cele mai mari o organizaţie foarte mare şi cunoscută. companii sociale din Criteriile de eligibilitate presupun existenţa domeniul tehnologic unui website şi dovada că organizaţia care a donat de-a funcţionează în mod legal. lungul timpului, în România, echipamente Problemele de User Experience hardware şi software Organizaţiile non-profit trebuie să în valoare de peste înveţe câteva lucruri din zona e-commerce. 1.3 milioane de dolari Site-urile comerciale investesc mult în tesunui număr de 750 tarea şi optimizarea proceselor de check-out, organizaţii. Printre în timp ce siturile ONP-urilor nu se ocupă partenerii donatori ai de acest aspect. O serie de studii legate TechSoup în România de user experience, realizate de compania sunt companii de top americană Nielsen Norman Group, pe 60 precum Adobe, Cisco de site-uri ale unor organizaţii non-profit, sau Microsoft. Dupa arată că aproximativ 47% din vizitatori nu înscrierea şi acceptarea au dorit să faca o donaţie din cauza workorganizaţiei în comu- flow-ului greoi, a paginilor prea încărcate n it at e a Te c h S oup, sau a designului de slabă calitate. Un al aceasta va putea accesa doilea donation-killer a fost conţinutul siteun catalog cu peste 300 urilor. Informaţiile neclare sau lipsa lor au de produse hardware îndepărtat utilizatorii. Pentru a avea sucşi software pentru care ces în strângerea de fonduri trebuie să ne se va plăti o taxă de asigurăm că utilizatorii site-ului nostru au procesare de numai toate informaţiile şi mijloacele necesare 4-10% din valoarea de pentru a face o donaţie. piaţă. Pe lângă aceasta, toate organizaţiile au acces gratuit la cursuri şi traininguri, studii de caz, acces la evenimencategorie pe acest în consecință el este oco- tele şi conferinţele TechSoup şi upgrade lit de organizaţiile care încearcă să strângă gratuit la produsele primite. fonduri pentru o cauză umanitară. Cu toate acestea, putem să strângem fonduri folosind Google Grants Kickstrater. Un exemplu foarte bun este Google Grants este un program proiectul Krochet Kids Peru, prin care sunt lansat în urmă cu mai bine de zece ani ajutate femeile fără loc de muncă din Lima şi este adresat organizaţiilor non-profit să genereze un venit. Iniţiatorii campaniei din 28 de ţări. Din păcate România nu se intenționau să strângă aproximativ 6000 numără printre aceste 28 de ţări eligibile de dolari, dar la sfârşitul campaniei aveau dar cu toate acestea, avem posibilitatea 37.000 de dolari (cu 618% mai mult decât de a trimite o cerere online prin care să şi-au propus). În schimbul acestor bani, solicităm companiei Google o excepţie. fiecare donator primea un anumit număr Dacă organizaţia şi cauza pe care dorim de căciuli, ediţie limitată, confecţionate şi să le promovăm sunt considerate ca fiind semnate de femeile ajutate. O altă metodă importante, putem fi acceptaţi. Programul întâlnită este promovarea unor albume este unul simplu dar foarte eficient. foto care au la bază nişte cauze sociale. Utilizatorii lui primesc un buget zilnic de În schimbul sumelor donate, susţinătorii 329 dolari (aproximativ 10.000 de dolari pe primesc un album foto profesional, iar o lună) pentru a rula reclame de promovare parte din fonduri merg spre cauzele soci- a campaniilor prin intermediul AdWords. ale promovate (nu doar pentru realizarea Dacă organizaţiile reuşesc să utilizeze acest albumelor). Posibilitățile sunt nelimitate, buget într-o proporţie mai mare de 95% www.todaysoftmag.ro | nr. 16/Octombrie, 2013

25


HR

programare

Spre comunitatea IT – via HR (3)

N

e-am întâlnit pentru a treia oară în acest an cu reprezentanţi ai HR-ului din companii clujene IT de marcă pentru a merge mai departe cu analiza comunităţii de profil. Intenţia noastră a fost să aducem la un loc profesionişti din domeniu pentru a oferi o perspectivă „umană” asupra ideilor de stabilitate, succes şi comunitate pentru organizaţiile de IT din Cluj – una din cele mai dezvoltate arii economice locale.

Dan Ionescu

dan.ionescu@danis.ro Director Executiv @ Danis Consulting

Cristina Nicule

cristina.nicule@danis.ro Consultant @ Danis Consulting

26

nr. 16/Octombrie - www.todaysoftmag.ro

Până în acest moment am analizat bune practici din companiile prezente la discuţii privind principalele provocări cu care se confruntă fiecare organizaţie din domeniu – sintezele le puteţi găsi în numărul 11 şi numărul 13 al revistei TSM – partener media al acestei iniţiative. A venit momentul să îndreptăm discuţiile dinspre analizele INTRA-companie spre analizele INTER-companii. Aşadar întrebările pe care ne-am străduit să le dezbatem împreună cu reprezentanţi ai Fortech, iQuest, ISDC şi SmallFootprint – cărora le mulţumim pentru implicare şi interes! – au fost: 1. Ce înseamnă în Cluj o comunitate IT în adevăratul sens al cuvântului în Cluj? Este nevoie de aşa ceva, sau mai bine: „fiecare pe cont propriu”? – un subiect care a necesitat mai multe discuţii pentru a fi siguri care este punctul de plecare, care este ţinta dorită şi motivaţia pentru a ajunge acolo 2. Ce împiedică în acest moment existenţa unei comunităţi ideale? 3. Ce soluţii există pentru creşterea coeziunii şi crearea unei comunităţi IT mature? – întrebare la care doar am început discuţiile urmând să elaborăm mai multe în ultima întâlnire planificată către sfârşitul anului.

(extras din DEX) 1. Faptul de a fi comun mai multor lucruri sau fiinţe; posesiune în comun; 2. Grup de oameni cu interese […] comune; Extrapolând, o COMUNITATE IT Clujeană ar însemna ansamblul de companii clujene din domeniul IT care împărtăşesc o serie de norme, valori, posesiuni (bunuri / clienţi / beneficii etc) comune, manifestă interese comune şi acţionează împreună în diverse direcţii. De ce ar fi nevoie de aşa ceva la Cluj? Sintetizând discuţiile avute, putem spune că beneficiile unei astfel de forme de organizare şi acţiune ar fi: • Stabilitatea domeniului economic – din ciclul „împreună avem puterea”. Colaborând, firmele de IT pot accesa proiecte mai mari sau chiar pot crea produse proprii complexe, asigurând astfel o bază mai solidă de creştere economică; • Imaginea, în exterior, a întregii comunităţi poate fi una în avantajul fiecărei firme în parte. O imagine de genul „la Cluj există o comunitate IT de bună calitate – indiferent de firmă” ar ajuta mult pe termen lung la câştigarea clienţilor; • Creşterea eficienţei în gestionarea resurselor pe plan local poate fi un alt beneficiu important. Existenţa unor norme comune de performanţă, profesionalism, calitate precum şi colaboAvem nevoie de comunitate IT în Cluj? În rarea pentru obţinerea anumitor beneficii ce sens „comunitate”? comune pot ajuta fiecare companie în O definire oficială: COMUNITATE = parte.


TODAY SOFTWARE MAGAZINE • Dezvoltarea profesională a oamenilor din domeniu poate fi accelerată şi realizată la standarde cât mai înalte dacă împărtăşirea de know-how în cadrul comunităţii se face deschis, onest şi cu intenţii de colaborare. După clarificarea faptului că merită să discutăm despre acest subiect, participanţii la workshop-ul nostru au simţit nevoia să definească şi la ce nivele este nevoie să se realizeze această colaborare – plaja fiind foarte largă, de la forme mai simple până la cele extrem de complexe. Profesioniştii de Resurse Umane sunt mai mult decât interesaţi să existe forme de colaborare pe ceea, ce în acest moment, este sursa adevărată de competiţie între firmele IT clujene – colaborare pentru resursele umane. Lupta între firme NU este pe piaţă, pe clienţi, pe proiecte ci doar pe oameni – care sunt prea puţini pentru nevoile pieţei. Crearea unui mediu de muncă sănătos ar fi o primă ţintă dorită de colaborare între companiile de IT. Acest lucru ar însemna: încurajarea (inclusiv prin remuneraţii) în toate companiile a performanţei adevărate, a disciplinei muncii, a profesionalismului şi calităţii. În acest moment, există situaţii în care oamenii nu sunt remuneraţi după performanţă, ci doar pentru faptul că sunt nişte angajaţi atât de greu obţinuţi. De asemenea, din aceeași perspectiva strictă a HR-ului, ar fi de dorit să funcţioneze la capacitate şi calitate mai mare sistemul de freelancing. Posibilitatea de a-ţi alege un profesionist bun pe termen determinat este încă limitată în acest moment. Ca şi strategie pe termen mediu-lung, ar fi de dorit ca o comunitate IT clujeană să colaboreze pentru crearea unei imagini UNICE pe piaţa externă – într-un fel crearea unui brand comun care să-i ajute pe toţi să-şi câştige clienţii proprii. Este mult mai de încredere pentru clienţi buni, mari, stabili să apeleze la serviciile unei companii care vine dintr-o zonă în care imaginea este, de exemplu, de „profesionişti, creativi, inteligenţi, stabili, cu firme mari, stabile”. Nu discutăm că în acest moment nu se câştigă clienţi, dar este nevoie de o gândire strategică – cum va fi peste 5 / 10 ani? – cum îi vom atrage atunci, când, cu siguranţă vor exista şi alte pieţe de outsourcing mai ieftine decât noi? Şi asta trebuie construit începând de acum. Colaborările pe proiecte între firme sunt extrema cea mai sofisticată a unei comunităţi IT – aşa cum o văd profesioniştii din Resurse Umane. În acest moment

este mai mult un fel de vis frumos – care poate că se realizează mai uşor şi la scară mică între firme mici, dar e greu de conceput şi obţinut în cazul „actorilor” mari de pe piaţa IT-ului clujean. Deja ne imaginam cu toţii un scenariu: cum ar fi ca ISDC-ul şi iQuest-ul să lucreze împreună la un proiect mare? (mare însemnând peste 15-20 milioane de Euro). Care ar fi provocările? Cât de complexă ar fi organizarea şi împărţirea atribuţiilor şi beneficiilor? Cu siguranţă nu ar fi uşor – dar ar putea fi o formă de colaborare complexă posibilă la nivelul acestei comunităţi IT, care merită să se gândească să treacă la nivelul următor de maturitate, performanţă şi rezultate. Este adevărat că anumite iniţiative în această direcţie a comunităţii IT au fost făcute deja şi sunt un semn că nevoile de colaborare şi interese comune sunt naturale! Companiile mai mici, fiind mai flexibile au proiecte în comun cu rezultate bune. Iniţiative de împărtăşire de knowhow profesional – cum este şi această revistă, TSM, sau diverse conferinţe tematice – sunt exemple punctuale născute din dorinţa de a creşte nivelul profesional al angajaţilor din domeniu. Cluster-ul IT este iniţiativa cea mai complexă care se doreşte a încuraja colaborarea între companii şi crearea unei comunităţi la nivel local. Toate aceste iniţiative reprezintă un început şi sunt oarecum independente, neexistând o integrare şi o valorificare a lor la nivelul întregii comunităţi. Am dorit însă să aflăm ce împiedică ca acest început să se transforme mai rapid în acţiuni mai complexe, în fapte, cu rezultate evidente.

Provocări de depăşit pentru a înainta spre comunitatea IT ideală

Ca prim şi evident obstacol în implementarea ideii de comunitate şi colaborare este lipsa unei culturi de business la nivel local (şi naţional) de care încă mai suferă poporul român şi oamenii din Cluj în particular. Este adevărat că s-au mai schimbat lucrurile, s-au mai învăţat bune practici, au început să crească afaceri locale, a existat o infuzie de cultură de business din occident, însă mentalitatea aceasta nu a fost absorbită în totalitate. Comparând IT-ul clujean cu cel din Bucureşti, participanţii au considerat că, din punct de vedere al acestei mentalităţi de business, Clujul mai are încă de asimilat şi învăţat. Un alt aspect al acestei mentalităţi antreprenoriale se regăseşte şi în gradul de maturitate al pieţei de freelancing din Cluj. Pe de o parte, companiile nu sunt

încă pregătite şi încrezătoare să lucreze în sistem de freelancing la scară mai largă, iar pe de altă parte, piaţa de freelancer-i nu este încă pregătită suficient la nivel antreprenorial. Oamenii care încearcă această latură nu au încă cunoştinţe suficiente de gestionare antreprenorială care să le permită să se vândă şi să-şi realizeze un venit strategic şi stabil. Pentru ca organizaţiile să accepte să lucreze cu freelancer-i – atunci când ar fi posibil acest lucru – este nevoie să le crească încrederea în capacitatea lor de ase adapta rapid la nevoile şi cerinţele diverselor companii, la cultura şi valorile fiecărei companii pentru care lucrează. Acest lucru presupune o piaţă de freelancer-i foarte buni profesionişti şi cu un profil specific acestui stil de lucru „high-tech”: o toleranţă mare la ambiguitate, capacitate antreprenorială şi atitudine matură în faţa schimbărilor. În acest moment, companiile IT din Cluj au de lucru, au rezultate, aduc clienţi – nivelele de satisfacţie, creştere economică şi de beneficii oferite angajaţilor sunt foarte bune. Şi atunci tendinţa actuală este: „De ce să ne batem capul cu colaborarea, dacă fiecare avem suficient – uneori chiar prea mult – de lucru?”. În acest fel, un rezultat de succes, pozitiv riscă să devină un mare obstacol în calea evoluţiei: pentru că multe companii au senzaţia de ocupare, de implicare în propriile afaceri mult prea accentuată ca să mai aibă timp să se gândească la lucruri imaginare în acest moment, cum ar fi colaborarea la nivel de comunitate IT. Însă, parafrazând ceva înţelepţi din mai multe timpuri, acum ar fi momentul cel mai prielnic, când lucrurile sunt „pe val”, companiile de IT ar fi de preferat să stabilească modalităţi de colaborare strategică, pentru a nu se ajunge la un nedorit moment de colaps. Vestea mai puţin bună este că, dintre principalele motive expuse, cele mai multe sunt cele legate de mentalităţi şi cultură – care sunt motive profunde, oarecum mai greu de schimbat şi care necesită timp pentru a se stabiliza, dezvolta. Chiar dacă într-o mai mică măsură decât în alte domenii, şi în industria IT clujeană, mentalitatea mioritică legată de „capra vecinului” ar putea fi un obstacol subtil în implementarea de proiecte concrete de colaborare. Declaraţiile de bune intenţii sunt un prim pas necesar şi util, însă nu suficient. Faptele vor fi cele din care vom învăţa cu toţii şi merită să fim conştienţi că doar făcându-le vom creşte. Probabil că primele proiecte de colaborare nu vor fi şi cele mai reuşite, dar vor fi cu cele mai multe surse de învăţare

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

27


HR SPRE COMUNITATEA IT – via HR (3) pentru toate părţile implicate. Vestea bună este că motivele de acest gen sunt de natură UMANĂ – adică exact domeniul de expertiză şi profesie a oamenilor de HR cu ai căror reprezentanţi ne-am întâlnit şi noi. Aşadar input-ul lor este unul extrem de valoros – pe lângă toate celelalte considerente financiare, economice şi de business de luat în calcul.

Ce se poate face? În avanpremieră

Mărturisim că nu i-am putut opri pe participanţii noştri entuziaşti doar la momentul de analiză a cauzelor pentru o colaborare încă insuficientă – aşa cum am dorit iniţial de la această întâlnire. Aşa că, în preambulul workshop-ului următor în care vom sintetiza mai clar acţiuni concrete, punctuale, care se pot realiza pentru a coagula şi mai mult comunitatea IT clujeană, vă prezentăm câteva dintre ideile vehiculate. • Realizarea pentru clienții externi a unui proiect comun de creare a unei imagini convingătoare a comunităţii IT din Cluj – care să inspire încredere şi stabilitate. • Implementarea de colaborări concrete mai mici la început – pentru a învăţa din ele cum e să se lucreze împreună. Una dintre ideile care ne-a plăcut în mod deosebit este cea legată de realizarea unor acţiuni de CSR împreună – deoarece astfel de acţiuni, neavând miză financiară, au mai puţine riscuri de colaps şi mai multe şanse de cunoaştere reciprocă şi colaborare de succes. • Pentru oamenii de HR în principal – dar cu efecte benefice pentru toate companiile – ar putea fi realizarea unor asocieri pentru obţinerea unor beneficii mai eficiente pentru angajaţi. Ar creşte puterea de negociere şi s-ar păstra calitatea acestor beneficii – care în acest moment sunt subiectul unei inflaţii în rândul angajaţilor din IT. • O soluţie strategică, dar care ar putea avea impact semnificativ, ar fi o mai evidentă colaborare / networking între liderii companiilor de profil de pe piaţa Clujului. După cum menționam şi într-un articol precedent, oamenii din IT, fiind la început de carieră, au nevoie de modele iar exemplul oferit de lideri recunoscuţi pe piaţa locală ar fi calea cea mai sigură pentru îmbunătăţirea mentalităţii de muncă şi colaborare. Un club de business destinat domeniului IT, similar cu alte cluburi de business din Cluj

28

organizate după diverse criterii, ar putea fi o soluţie punctuală. *** Pentru a rămâne sinceri până la capăt, suntem încântaţi de entuziasmul şi emulaţia creată în cadrul acestui grup de analiză şi ne-ar plăcea ca aceste întâlniri „de cercetare” să se transforme – de ce nu? – într-un grup de iniţiativă cu plan şi acţiuni concrete legate de comunitatea IT din Cluj.

şi entuziasmul pe care le mai întâlnim la părinţii ce au primul copil.

Cosmin Molnar (iQuest) psiholog de profesie, are o experienţă de șapte ani în domeniul Resurselor Umane, trecând prin aproape toate tipurile de companii: automotive, producţie, distribuţie, HR şi acum, IT. Având aceste experienţe în industrii diferite poate să analizeze foarte obiectiv profilul angajatului din IT şi diferenţele Participanţi workshop 3: specifice. În iQuest este responsabil de provocarea cea mai grea a oamenilor de HR Alexandra Bayer (Fortech) a început din IT: recrutarea şi selecţia de personal… munca în domeniul IT în urmă cu șapte ani, îi dorim succes! când a devenit membră a echipei Fortech. Practic, a crescut odată cu compania şi a Răzvan Voica (iQuest) are un backgroînvăţat alături de colegii ei din conducere und „vechi” în IT (din 1997), având o cum să câştige încrederea oamenilor din diversitate mare de experienţe profesionale, IT: cu argumente logice, concrete, statistici. inclusiv ca programator. Din 2011 a ajuns Profesia de bază de inginer a ajutat-o mult în echipa de management a companiei în această abordare structurată a activităţi- iQuest – unul dintre jucătorii importanţi lor de Resurse Umane. Chiar şi acum, când pe piaţa IT-ului din Cluj (şi nu numai). în Fortech sunt aproape 300 de angajaţi, Recunoaşte că această poziţie – de manaAlexandra se vede ca un ajutor pentru toată gement în domeniul Resurselor Umane – a compania, ca având „ochi şi urechi” pentru fost dificilă şi foarte provocatoare pentru el. toţi, deşi devine din ce în ce mai dificil la De când este în iQuest a iniţiat şi dezvoltat această dimensiune a companiei. foarte multe sisteme şi procese interne de management al Resursei Umane de care ar Iulia Druţă (Small Footprint) face parte fi în stare să povestească cu mândrie şi paside trei ani din echipa de management a une câteva ore! Small Footprint – o companie care a crescut frumos în Cluj – ocupându-se exclusiv de aria de Resurse Umane, având însă experienţă în domeniul IT de peste șase ani. Provocările pe care le întâlneşte în momentele de creştere ale companiei sunt cu adevărat dificile, dar şi cele mai frumoase pentru ca în astfel de etape ai cu adevărat senzaţia că se creează ceva. Experienţa profesională acumulată ca şi antreprenor (2 ani) precum şi cea din domeniul investiţiilor financiare (2 ani) sunt un atu evident pentru a înţelege un business din mai multe perspective. Cristina Ilinca (ISDC) ocupă o poziţie strategică în ISDC fiind Strategic & Operational HR Manager, având o vastă experienţă în HR (peste zece ani) şi în management în diverse domenii. A intrat în IT de 2 ani şi, văzută din exterior, pare că se potriveşte acolo dintotdeauna, deoarece creativitatea şi iniţiativa care o caracterizează au determinat-o nu doar să înţeleagă foarte limpede specificul muncii în IT, dar şi să devină Product Owner-ul unui game dezvoltat intern pentru knowledge sharing – produs despre care vorbeşte cu mândria

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro


programare

TODAY SOFTWARE MAGAZINE

Automatizări industriale prin OPC UA

O

PC (Open Platform Communication) este un standard în comunicația industrială care permite conectivitate și interoperabilitate universală. Este utilizat în industria de automatizare și sistemele IT al intreprinderilor industriale. Interoperabilitatea este asigurată prin crearea și întreținerea standardelor de specificație publică (open specification).

Waldemar Knopp

knopp.waldemar@evoline.ro Software Engineer @ Evoline

Tehnologia OPC se bazează pe arhitectura Client/Server și este o soluție care oferă o comunicare prin standarde industriale ce permit utilizatorilor să faciliteze crearea arhitecturii și implementarea proiectelor lor.

driver personalizat. Scopul OPC este definirea unei interfețe comune care după ce a fost odată conceput poate fi reutilizat în orice alt proiect, SCADA, HMI sau alte pachete de software. Chiar dacă un server OPC se implementează pentru un dispozitiv anume, el va putea fi reutilizat de către orice altă aplicație ce poate acționa ca un client OPC.

De ce OPC UA?

OPC Unified Architecture oferă: interoperabilitate și standardizare. În timp ce OPC-ul convențional a rezolvat problema interoperabilității la nivelul de Control, a apărut necesitatea standardizării layer-elor de la nivelul Enterprise și până la plantfloor inclusiv. OPC-ul clasic este bazat pe Microsoft DCOM care poate duce la vulnerabilitatea acestor layer-e. Cerința pentru simplicitate, interoperabilitate și securitate maximă a determinat OPC Foundation să creeze o metodă unificată a comunicării de date privind partea specificațiilor OPC DA (Data Access), HDA (History Data Access), A&E (Alarms and Events) și Security. OPC Unified Architecture extinde protocolul de comunicare de mare succes al OPC, permițând colectarea de date, modelarea informațiilor și o comunicare mai fiabilă și mai sigură dintre plant-floor și enterprise layer.

OPC a fost conceput pentru a conecta sisteme, rețele, hardware cu diferite sisteme de operare (ex. Windows, Linux). De asemenea rolul este și procesarea și monitorizarea datelor primite de la hardware sau software. Este un open standard care oferă metode sigure de accesare și descriere al datelor (field data) care sunt trimise direct sau interogate de la dispozitivele plant-floor. Aceste metode rămân aceleași indiferent de sursă și tipul de date. Serverul OPC oferă multe tipuri de pachete de software cu metoda de accesare a datelor de la dispozitive process control cum sunt PLC (Programable Logic Controller) sau DCS (Distributed Control System). În mod tradițional, de fiecare dată când un pachet de Specificații OPC / OPC UA software vrea să acceseze date de la un dispoOPC este un set de interfețe grupate zitiv este necesară scrierea unei interfețe sau în categorii, fiecare fiind dedicată unei www.todaysoftmag.ro | nr. 16/Octombrie, 2013

29


programare Automatizări industriale prin OPC UA funcționalități aparte. Categoria este utilizată și pentru a distinge versiuni noi ale aceleiași grupe de interfețe. Fiecare categorie de interfețe este descrisă în documente separate – o specificație având o denumire simbolică și un număr de versiune explicit (ex. OPC Data Access 3.0, OPC UA DA 2.0).

network, de exemplu Internet sau LAN, care în funcție de configurare poate fi o conexiune securizată. SDK-urile oferă posibilitatea ca serverul și clientul să fie implementate Arhitectura OPC UA prin diferite limbaje Următoarea imagine reprezintă o arhi- de programare, iar prin aceasta ele capătă Address Space și descrierea acestuia se tectură simplificată al OPC UA, compusă independență față de platformă. numește Information Model. din cele două elemente principale: serverul Imaginea de mai sus reprezintă o și clientul. Modelul Informatiei abordare grafică al unui model deja impleServerul conține Address Space-ul pus Pentru ca sistemul să fie interoperabil, mentat. În vederea unei explicații mai la dispoziția clienților (informații detailate mecanismul de transfer al datelor trebuie ușoare, imaginea poate fi împărțită în mai jos), care în exemplul de mai sus poate asociat unui model consistent de repre- două părți de săgeata orizontală: în parreprezenta un dispozitiv cum ar fi un senzor zentare al informațiilor. OPC UA folosește tea dreaptă este modelul de informații termic, un manometru sau un comutator obiectul ca un concept fundamental pentru care conține tipurile de date și în partea feroviar etc. Modelul informațional conține reprezentarea datelor și a activității unui stângă este Address Space-ul bazat pe tipul exact al dispozitivelor și al relațiilor subsistem. Obiectele sunt substituenți pen- aceste tipuri. Săgeata orizontală din imadintre ele, de ex. valoarea senzorului termic tru variabile, evenimente și metode fiind gine este așa numita “HasTypeDefinition”. este stocat într-un câmp de tip double, float interconectate prin referințe. Acest concept Nodurile “First Name” și “Last Name” al ori într-unul mai complex. este similar cu binecunoscuta programare obiectulului “Who”, respectiv al tipului C l i e ntu l i nte ro g h e a z ă Ad d re s s orientată pe obiecte (OOP). Modelul de “Person Type” sunt conectate de acestea Space-ul, de exemplu toate componentele informații OPC UA furnizează caracte- prin “HasComponent”. unui comutator feroviar și le prezintă utili- ristici cum sunt abstractizarea datelor, zatorului ca pe o interfață grafică. Clientul încapsularea, polimorfismul și moștenirea. Address Space are posibilitatea de a vedea toate datele proMetamodelul OPC UA permite definiAddress Space este un model intern venite de la componente și primește alarme rea unui model informațional prin definirea compus mai ales din noduri care reprezintă și evenimente cu privire la starea acestora. obiectului, variabilei și a tipului de date, plant-floor-ul propriu-zis (senzor termic, De exemplu, în cazul în care manevra de precum și a tipului de referințe. Specificația comutator feroviar, etc.) de la care solicităm schimbare a unui comutator feroviar a definește modelul informațional de bază și așteptăm date sau primim evenimente. avut loc cu succes, clientul va primi un care la rândul său conține deja o serie de Aplicația client al OPC UA este un eveniment și între timp toate datele com- tipuri de bază. browser generic utilizat pentru a explora ponentelor participante la manevră se Unul dintre principalele scopuri ale și manipula Address Space-ul unui anumit vor actualiza la client: consumul de ener- OPC UA este expunerea informației care server. Clientul deține funcționalități pregie electrică, temperatura motorului de poate fi utilizată de clienți pentru a admi- cum navigarea prin Address Space, citirea comutare. În cazul în care manevra a eșuat, nistrara procesul de bază în timp real. De și scrierea atributelor unui nod, subscrieclientul va primi o alarmă conținând datele asemenea, se urmărește integrarea proce- rea la evenimente și modificările de date care indică problema. sul de control și sistemul de management (venind de la layerul din plant-floor sau În cele mai multe cazuri, conexiunea într-un mediu omogen. De obicei, clienții cel din control) și multe alte posibilități de dintre client și server utilizează layerul au nevoie numai de o parte anume a a apela metode. Address Space este stocat informațiilor ce le într-o sursă de date specială (bază de date stau la dispoziție sau fișier XML) și în momentul pornil a u n m o m e n t rii server-ului este încărcat în totalitate în d a t . P e n t r u a memoria acestuia, conferind astfel clientuputea face faț ă lui un acces rapid la informațiile solicitate acestei solicitări din Address Space. informația publiConținutul Address Space-ului, respeccată trebuie să fie tiv datele care reprezintă plant-floor-ul bine organizată sunt create/modelate de către programe de ș i accesibilă în modelare aparținând unui anumit SDK, iar mod selectiv ca o din modelul creat se generează un cod utientitate (node) cu lizat de serverul OPC UA. adresă concretă . Fiecare SDK vine cu un modeler cu Colecția acestor ajutorul căruia se poate construi Address no du r i pus e l a Space-ul, adică acel model care reprezintă dispoziție de către dispozitivul plant-floor. OPC UA ser ver O aplicație ‘’ modeler ‘’ prin adăugae s t e d e n u m i t ă rea de noduri și referințe, face posibilă

30

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro


TODAY SOFTWARE MAGAZINE vizualizarea Address Space-ului pe interfața grafică, prezentând modelul proiectat în mod ierarhic și grafic. Prezentarea grafică urmează instrucțiunile și sintaxele OPC UA. La sfârșit, printr-o singură apăsare de buton generează un cod cum ar fi C, C++, C#, Java. Astfel, implementarea este mai rapidă, iar calitatea softwareului mai bună, deoarece codul generat este bine structurat și fără erori. Prin reducerea implementării la “modelare și generare” pot fi implementate foarte rapid chiar și modelele complexe.

Evenimentele

Concluzii

Având în vedere independența față de platformă și faptul că utilizează tehnologia Web service state-of-the-art, ne putem aștepta ca OPC UA să fie aplicat într-o gamă din ce în ce mai largă de industrii și aplicații.

Caracteristicile cheie și beneficiile OPC UA sunt:

• capacitatea platformei de a rula pe orice sistem de operare, • configurare și întreținere ușoară, • tehnologie service-based, • transparență mărită, • domeniu de conectivitate mai larg, • performanță mărită.

Evenimentele sunt recepț ionate prin subscriere la EventNotifier. În mod obișnuit, ele nu sunt vizibile în Address Space, dar există câteva excepții, cum sunt Alarms și Conditions. Evenimentele sunt tipizate, iar în funcție de un anumit tip evenimentul are diferite câmpuri. OPC UA definește o ierarhie de bază Principii OPC UA: a tipurilor de evenimente, care poate fi extinsă. În cazul în care problema este unică, acestea trebuie extinse cu tipuri proprii, pentru a putea recepționa date privind starea sistemului, a procesului din background etc.

Metode (Funcții)

Specificațiile existente al OPC COM se concentrează pe date sau evenimente, dar multe aplicații necesită operatiuni mai complexe care nu pot fi reduse la o singură dată sau un singur eveniment. Prin metodele OPC UA serverele permit clienților de a invoca funcții complexe cu un set de parametri. Funcțiile pot fi utilizate pentru a controla un proces background care declanșează evenimente de raportare a progresului acestuia.

OPC UA utilizează securitate la nivel de mesaj ceea ce înseamnă că mesajele pot fi transmise prin HTTP, port UA TCP sau orice alt port disponibil. Fiabilitatea

Câteva dintre funcționalitățile OPC UA sunt oferite ca service-uri. De exemplu, următoarele service-uri sunt implementate de către server și folosite de către clienți: CreateSessionService – pentru a stabili conexiunea între server și client, BrowseService – pentru a explora Address Space-ul, ReadService – pentru a citi date de pe server, WriteService – pentru a actualiza date pe server, etc.

OPC UA implementează timeout-uri configurabile, detectarea erorii și recuperarea comunicațiilor cu eșec. OPC UA permite comunicarea cu redundanță între aplicațiile diferiților furnizori. Securitate OPC UA este sigur implicit, cu posibilitate de encriptare și utilizează un sistem avansat de tratare a certificatelor de securitate

Citirea de date (Read Service)

Read Service este utilizat pentru a citi unul sau mai multe atribute ale unor sau mai multe noduri. Permite citirea subseturilor de elemente sau al unui singur element dintr-o mulțime de valori. În Address Space fiecare nod are atribute prestabilite care de obicei pot fi doar citite și determină starea și validitatea nodului. Atributele care sunt adăugate pe parcursul modelării și dezvoltării conțin informații care provin de la layer-ul din plant-floor. Cu ajutorul Read Sevice, clienții pot solicita de la server informații privind validitatea unui nod și despre datele pe care le conține și care provin de la plant-floor. Write Service este utilizat pentru a scrie unul sau mai multe atribute ale unor sau mai multor noduri. Permite atât scrierea de subseturi, cât și a unor elemente individuale dintr-o multitudine de valori. Ca cele mai multe OPC UA Service-uri, Write Service este optimizat pentru a scrie mai multe operațiuni în același timp și nu pentru a scrie un singur atribut de valori. Clienții OPC UA pot scrie datele existene în Address Space, iar aceste schimbări pot atinge nivelul layer-ului din plant-floor sau ajung numai la nivelul control-ului.

OPC UA integrează specificațiile OPC existente: DA, A&E, HDA, Commands, Complex data and Object Types, într-o singură specificație. Acces prin Firewall și prin Internet

Servicii OPC UA

Scrierea de date (Write Service)

Acces unificat

Independență față de platformă OPC UA este conceput pentru a fi independent de platformă. Utilizând SOAP/ XML prin HTTP, OPC UA poate fi rulat pe Linux, Windows XP Embedded, VxWorks, Mac, Windows 7 și alte platforme Windows clasice.

Referințe OPC Unified Architecture, Wolfgang Mahnke, Stefan-Helmut Leitner, Matthias Damm, Springer, 2009 http://www.opcfoundation.org/ http://www.commsvr.com https://www.matrikonopc.com

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

31


programare

programare

Aplicații real-time folosind SignalR

T

răim într-o lume dinamică, o lume în care datele zboară extrem de rapid. În această lume, aplicațiile web au devenit din ce în ce mai complexe. Zilele când aveam doar pagini web statice au trecut de mult, la fel și perioada în care Ajax și jQuery erau la putere. Radu Vunvulea

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

Aplicații real-time

între client și server – real time. Aceasta Într-o lume în care aplicațiile real time este o soluție dedicată pentru cei care folofac parte din viața noastră, avem nevoie de sesc .NET. și rezolvă trei mari probleme pe noi mecanisme pentru a putea face ape- care dezvoltatorii le întâmpinau: luri server2client. Aplicațiile web pentru • Push de date de la server la client monitorizare, jocurile online, aplicațiile peste conexiuni HTTP/S, bursiere sau cele în care edităm documente • Ap elur i de t ip RPC (Remote au nevoie de sisteme de acest fel, care să fie Procedure Call) peste conexiuni HTTP/S, robuste și scalabile. • Compatibilitate cu browser-ele mai vechi.

Web Sockets

HTML5 a adus cu el Web Sockets. O soluție perfectă care ne face viața mult mai ușoară. Acesta ne permite să ținem o conexiune deschisă între server și client prin care serverul poate să trimită date la clienți (chiar dacă aplicațiile rulează întrun browser). Un mecanism perfect pentru ceea ce avem nevoie. Chiar dacă rata de adopție la HTML5 este bună, mai avem câțiva ani de așteptat până când vom avea o adopție de peste 90% la HTML5. Până la apariția WebSockets, pe piață au existat diferite soluții de genul Forever Frame, Server Send Events, Pooling sau SPDY. Până în acest moment niciuna dintre ele nu a fost adoptată în una limitată de către toate browser-ele. De aceea au apărut diferite frameworkuri care ne ajută în această zonă. Commet, Pusher, SockJSm Now.js sunt doar o parte din ele. Un framework care ne ajută să putem notifica clienții web este SignalR.

Ce este SignalR

Chiar dacă este susținut de Microsoft, acest framework este open source, putând fi găsit pe GitHub - fiind unul dintre cele mai urmărite proiecte de pe GitHub.

Unde putem să folosim SignalR

Acesta poate să ruleze pe sisteme care au ca backend Windows (.NET) și nu numai. Deoarece acesta poate să ruleze și pe Mono, putem să avem un sistem care rulează sub Linux și să folosească SignalR. Clienții pe care îi putem avea sunt extrem de variați, începând de la browsere și terminând cu aplicații desktop, Silverlight, Windows Store, Windows Phone și IoS. Acesta poate să ruleze pe diferite browsere, chiar și pe cele pe care Web Sockets nu este suportat. Acest lucru este posibil datorită modului prin care SignalR comunică cu clienții.

Mecanisme de comunicare

Acesta suportă mai multe mecanisme SignalR este o librărie ce ne oferă o de comunicare, iar în cazul în care observă modalitate extrem de simplă pentru a că unul dintre ele nu este suportat de către putea avea o comunicare bidirecțională browser (client) va face fallback automat la

32

nr. 16/Octombrie - www.todaysoftmag.ro


TODAY SOFTWARE MAGAZINE QueryString[„nickname”] + „:” + data);

un alt mecanism. Metodele de comunicare } } suportate sunt: • Web Sockets, Pe partea de client, odată ce clientul • Server Side Event, obține o referință la connection, poate să • Forever Frame, facă override la metode precum ‘received‘ • Ajax long pooling. sau ‘error‘. Este foarte important de reținut că nu este de ajuns acest lucru. Odată ce Dacă un mecanism nu este suportat, se am făcut override la ele, este necesar să desface fallback automat până când se ajunge chidem o conexiune cu serverul, apelând la Ajax Long Pooling, care este suportat de metoda ‘start‘. toate browser-ele de azi. Datele sunt trimise var connection = $.connection(„/echo”, „name=” + nickname, true);; la clienți în format JSON sau Plain Text. connection.received(function (data) { ... Trebuie ținut cont că această soluție nu }); connection.error(function (err) { este gândită să trimită date de dimensiuni ... }); mari - fișiere. connection.start(function () { ... Notă: Singurul browser care nu suportă }); Server Side Event este Internet Explorer. Hub-urile pot să fie privite ca o abstractizare a Persistent Connection. API-ul Base API care ne este pus la dispoziție prin hubSignalR ne oferă două modalități de uri este mult mai simplu și mai ușor de comunicare: Persistent Connection și folosit. Această abstractizare ne aduce o Hubs. funcționalitate care nu este disponibilă Persistent Connection este foarte ase- dacă folosim Persistent Connection – RPC mănătoare cu WebSockets, oferindu-ne (Remote Procedure Calls). Da, ați auzit o conexiune persistentă între client și bine, hub-urile ne permit să facem acest server. Evenimentele și metodele disponi- lucru extrem de ușor. bile în cazul Persistent Connection sunt Putem foarte ușor să apelăm metode aceleași pe care le avem la dispoziție și client de pe server (chiar dacă sunt definite cu WebSockets – ‘Connect’, ‘Disconnect‘, în JavaScript) sau ‘Receive‘, ‘Error‘, ‘Send‘, ‘Broadcast‘. cl i e ntu l p o ate Prin intermediul unei conexiuni de la fel de bine să acest tip putem să facem broadcast la apeleze metode mesaje la toți clienții sau doar o parte din care sunt pe seraceștia. Comparat cu WebSocket, avanta- ver. Cred că acest jul folosirii Persistent Connection apare lucru este unul în momentul în care avem clienți care nu din cele mai mari suportă WebSockets. Noi vom putea comu- avantaje pe care nica cu ei, chiar dacă comunicarea se face hub-urile le aduc. prin Forever Frame sau Ajax. Modul în care P e s e r v e r, se face comunicarea între client și server nu dacă dorim să trebuie rezolvată de către dezvoltator. adăugăm un nou Pentru a putea folosi un Persistent hub este nevoie Connection este nevoie să extindem clasa să extindem clasa ‘PersistentConnection‘ și să facem over- Hub. De această ride la metodele de care noi avem nevoie. dată nu mai avem Două din cele mai importante metode din nevoie să facem această clasă sunt ‘OnConnected‘ (care se override la nici o apelează când un nou client se conectează) metodă. Trebuie și ‘OnReceived‘ (apelată când un client tri- doar să ne defimite un mesaj). Mesajele se pot trimite la nim metodele pe unul sau mai mulți clienți apelând meto- care dorim să le expunem. dele pe care proprietatea ‘Connection‘ ni le La hub-uri este foarte important să pune la dispoziție. adăugăm atributul ‘HubName‘ pe clasa public class FooConnection:PersistentConnection care definește hub-ul nostru. Acesta va { specifica ce nume de clienți hub trebuie să protected override Task OnConnected(IRequest request, string connectionId) folosească pentru a apela hub-ul nostru. { return Connection.Broadcast(„We have a new user: „ + request.QueryString[„nickname”]); Pentru a apela metodele pe care clientul le } expune este nevoie să ne folosim de proprotected override Task OnReceived(IRequest request, string connectionId, string data) prietatea ‘Client‘ care ne pune la dispoziție { return Connection.Broadcast(request. diferite metode să apelăm metodele expuse

de client. Putem să facem atât apeluri la un anumit client cât și apeluri de tip broadcast. În aceste cazuri datele de tip dynamic ne sunt de mare ajutor. [HubName(„footballScore”)] public class ScoreHub : Hub { public void Start(string matchId, string team1Name, string team2Name) { DateTime when = DateTime.Now; Clients.All.matchStart(matchId, team1Name, team2Name, when.ToShortTimeString()); } public void Stop(string matchId) { DateTime when = DateTime.Now; Clients.All.matchEnded(matchId, when. ToShortTimeString()); } public void NewScore(string matchId, string team1Score, string team2Score, string playerName) { Clients.All.goal(matchId, team1Score, team2Score, playerName); } }

Fiecare client se identifică unic printrun connection token. Managementul acestuia este făcut în întregime de server și semnat cu o semnătură digitală. Connection token există până la finalul conexiunii și este format din connection id și username. Dacă username-ul există doar în cazul în care clientul este autentificat, connection id-ul există din primul moment când o conexiune este stabilită între client și server.

Pe partea de client, lucrurile se simplifică. Odată ce avem o referința la hub-ul nostru, putem să definim metodele client pe care serverul le poate apela sau să scriem cod care apelează metodele expuse de către server. Înainte să începem să trimitem date sau să fim apelați este nevoie să apelăm $.connection.hub.start(). // server2client example var footballScore = $.connection.footballScore; $.extend(footballScore.client, {

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

33


programare Aplicații real-time folosind SignalR matchStart: function (matchId, team1Name, team2Name, when) { ... }, matchEnded: function (matchId, when) { ... }, goal: function (matchId, team1Score, team2Score, playerName) { ... }, }); // client2Server example var footballScore = $.connection.footballScore; $.connection.hub.start() .done(function() { $(‚#Start’).click(function() { footballScore.server. start($(‚#TeamId’).val(), $(‚#Team1Name’). val(), $(‚#Team2Name’).val()); }); $(‚#Stop’).click(function () { footballScore.server. stop($(‚#TeamId’).val()); }); $(‚#Goal’).click(function () { footballScore.server. newScore($(‚#TeamIdScore’).val(), $(‚#Team1Score’).val(), $(‚#Team2Score’).val(), $(‚#Player’).val()); }); });

De remarcat este faptul că dacă avem mai multe mai multe hub-uri, pe care serverul le expune, comunicare între clienți și server se va face pe câte un connection pentru fiecare client. Un client va folosi aceeași conexiune pentru a comunica cu două sau mai multe hub-uri de pe același server. Acest lucru este făcut deoarece se încearcă limitarea numărului de conexiune deschise între server și clienți. Folosirea unei singure conexiuni nu are nici o repercusiune din punct de vedere a performanței.

persistat pe client. Din cauza ultimului punct menționat, dacă avem doua tab-uri deschise vom avea două connection token-uri diferite și automat doi clienți separați. Cu puțin custom code putem să trecem peste această limitare.

Performanță

Performanțele pe care SignalR le are sunt bune. Putem să avem peste 450.000 de mesaje manipulate de către un singur server, iar numărul de conexiuni pe o singură mașină pe care le putem avea este de 15.000-20.000. Numărul de conexiuni este limitat de un singur factor – numărul de porturi pe care le avem disponibile.

Scalabilitate

Scalabilitatea într-un astfel de sistem nu este foarte ușoară. Acest lucru se datorează problemei pe care SignalR o rezolvă. Deoarece face handling la mesaje, dacă scalăm cu încă o instanță și pune un load balancer în față la server, un apel de tip broadcast nu o să ajungă la toți clienți.

Hubs vs Persistent Connection

O întrebare destul de firească care poate să apară în acest moment este: Când să folosesc un hub și când să folosesc persistent connection? Răspunsul este destul de simplu. Hubs se recomandă să fie folosit în momentul în care avem nevoie de RPC. Pentru cazurile în care formatul mesajului trebuie specificat sau vrem să folosim un model de tipul messaging and dispatching atunci Persistent Connection este soluția recomandată. Totodată în cazul în care integrăm întro aplicație deja existentă SignalR, atunci se recomandă să folosim Persistent Connection, migrarea spre SignalR fiind mult mai ușoară.

Securitate

Apelurile de tip CSRF (Cross-Site Request Forgery) sunt evitate prin următoarele mecanisme: • Apelurile de tip cross domain sunt dezactivate by default, • Connection token-ul este verificat la fiecare apel, • Connection token este pus în query string, • Niciodată connection token nu este

34

Pentru a putea rezolva această problemă trebuie să folosim un mecanism prin care un mesaj poate să fie trimis la toate nodurile din cluster. Acest lucru se face destul de ușor prin intermediul a trei soluții aplicabile în acest moment: • Windows Azure Service Bus, • Redis, • SqlServer. Folosirea unui astfel de serviciu este simplă, singurul lucru pe care trebuie să îl facem este să specificăm string-ul de conexiune. De exemplu integrarea cu Service Bus și sincronizarea între noduri se reduce la o singura linie de cod: GlobalHost.DependencyResolver. UseServiceBus(sbConnectStrion, „codecampcluj”);

Totodată nimic nu ne oprește să extindem modul în care nodurile se pot sincroniza, doar că este nevoie să scriem

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro

noi modalitatea de sincronizare. Dacă folosim mai multe mașini cu SignalR care se sincronizează între ele este bine de știu că latența în cazul unui broadcast crește ușor. Acest lucru se întâmplă din cauza că un mesaj odată ce ajunge la server trebuie să fie trimis și la restul serverelor. O fermă formată din noduri cu SignalR poate să fie folosită cu succes dacă dorim să facem broadcast la mesaje, iar o latență de câteva milisecunde nu ne afectează. Aceasta nu este recomandă pentru comunicări de tip client2client sau high-frequency realtime deoarece latența poate să fie destul de mare, nefiind cea mai bună soluție de care noi avem nevoie.

Concluzie

Am văzut că SignalR este un framework care ne ajută să avem aplicații web care pot să comunice în ambele sensuri, fiind perfect pentru aplicații bursiere sau aplicații de monitorizare. Numărul de mesaje pe care un server cu SignalR le poate procesa este extrem de mare fiind o soluție ideală când avem nevoie să facem față la zeci de milioane de mesaje pe oră. Vă invit să incercați să folosiți SignalR și să vedeți cât de simplu este.


programare

Scurtă introducere în mediul SAP (II) SAP User Experience

Î

n acest număr al revistei continuăm seria de introducere în mediul SAP printr-un nou articol în care abordăm tema SAP User Experience(pe scurt UX). Aceasta reprezintă totodată şi unul dintre subiectele prezentate la conferinţa pe tehnologii SAP organizată de msg systems luna trecută în Cluj-Napoca.

Victor Ionescu

victor.ionescu@msg-systems.com SAP IT Consultant @ msg systems Romania

În cadrul acestui articol ne propunem să discutăm despre evoluţia „UX-ului” produselor SAP de-a lungul timpului despre aşteptările cu privire la user experience pe care clienţii le au de la o soluţie enterprise în contextul actual şi mai ales despre ce presupune strategia pe baza căreia SAP intenţionează să răspundă acestor aşteptări.

SAP R/2 Vom începe discuţia din anii 80’, perioadă în care SAP punea la dispoziţia clienţilor săi SAP R/2 - una dintre primele soluţii ERP aşa cum le ştim astăzi, aceasta oferind suport pentru câteva dintre procesele tipice întâlnite în cadrul oricărui enterprise: accounting, manufacturing, supply chain management. R/2 rula în cadrul unui “enterprise mainframe”, permiţând accesul simultan al mai multor clienţi printr-un mecanism numit

Fig. 1 Terminalul SAP R/2

36

nr. 16/Octombrie - www.todaysoftmag.ro

Time Sharing Option(TSO). Interfaţa utilizatorului cu sistemul era realizată prin intermediul unui terminal şi se baza pe o linie de comandă.

SAP R/3. Dynpro Anii 90’ au adus trecerea la SAP R/3, o soluţie ERP nouă, bazată pe o arhitectură 3-tier în care nivelul “prezentare” era reprezentat de calculatorul local al utilizatorului (pentru aceasta fiind necesară instalarea unui client SAP GUI pe PC). De asemenea acest moment a reprezentat şi prima apariţie a Fig. 2 Dynpro tehnologiei Dynpro, care în momentul actual reprezintă cea mai răspândită tehnologie UI SAP. În esenţă, fiecare Dynpro se defineşte prin layoutul elementelor grafice de pe screen şi prin logica de flow ce poate fi ataşată diferitelor evenimente (before output / after input / on value request...)


TODAY SOFTWARE MAGAZINE Această abordare însă a condus în prezent la o situaţie în care în multe aplicaţii logica de procesare a datelor este strâns legată de logica de afişare a acestora, astfel încât astăzi să fie nevoie de o serie de soluţii tehnice inovative (după cum vom vedea şi în secţiunile următoarele) pentru a putea realiza o “decuplare” a acestora.

Cum funcţionează?

Cum funcţionează? D.p.d.v. tehnic portalurile funcţionează prin redarea Dynpro-urilor într-un browser web. Pentru a face posibil acest lucru a fost nevoie de introducerea unei noi componente în cadrul arhitecturii 3-tier a sistemelor SAP R/3: serverul ITS (Internet Transaction Server). ITS-ul funcţionează ca un middleware care intermediază comunicarea dintre serverul aplicaţie ABAP şi browser-ul web, transformând datele care ţin de layout-ul Dynpro-urilor în tag-uri HTML ce pot fi interpretate de orice browser. “Compilarea” layout-ului din format Dynpro în HTML se face pe baza unui template de conversie predefinit, specificat într-un limbaj derivat din HTML numit HTMLBusiness

Crearea de noi Dynpro-uri se realizează de către developer cu ajutorul tool-urilor ce fac parte din Workbenchul ABAP. La adaugarea unui nou screen application, server-ul ABAP, salvează toate informaţiile necesare pentru afişarea ulterioară a screen-ului în tabele predefinite ale bazei de date din spatele server-ului aplicaţie. La runtime clientul SAP GUI instalat pe calculatorul local iniţiază o conexiune Aşteptările actuale cu privire la UX către serverul aplicaţie, primeşte definiţia Modul în care omul interacţionează cu screen-ului şi se ocupă de redarea locală a diversele software-uri a cunoscut o schimacestuia (v. Fig. 2). bare radicală în ultimii ani. Aşteptările fiecăruia dintre noi de la aplicaţiile pe care mySAP Portals le folosim în viaţa profesională sunt influO dată cu trecerea în noul mileniu, un enţate de aplicaţiile pe care le folosim în alt tip de aplicaţii a câştigat din ce în ce mai timpul nostru liber (Facebook, Twitter, mult teren: portalurile web. Un portal SAP Google...), aplicaţii care pun accentul reprezintă o aplicaţie web care facilitează pe simplitate şi interfeţe grafice cât mai accesul la diveresele module ale soluţiei intuitive. ERP printr-un punct de acces unic (“sinAşa se face că în ziua de azi, până şi în gle point of entry”). Portalurile au adus o cazul soluţiilor enterprise, clienţii declară serie de îmbunătăţiri în ceea ce priveşte din ce în ce mai des că în alegerea unui UX-ul soluţiilor SAP cum ar fi utilizarea software, “User Experience-ul” a devenit unei autentificări unice pentru accesul la factorul decisiv, mai mult chiar decât funcîntreaga suita de aplicaţii ERP sau posibi- ţionalităţile pe care software-ul le oferă. litatea de configurare a interfeţei portalului Pentru dezvoltatorii de soluţii business în funcţie de rolul utilizatorului. enterprise acest lucru înseamnă că vechile interfeţe care se caracterizau în special prin complexitate şi multitudinea de funcţionalităţi suportate, trebuie înlocuite cu unele noi care pun accentul pe simplitate, mobilitate şi caracterul intuitiv al interfeţelor. Ţinând cont de aceste aspecte, SAP în calitate de furnizor de soluţii business enterprise, pe locul întâi în lume - şi-a propus să devină de asemenea lider mondial în ceea ce priveşte User Experience-ul soluţiilor business. Iar pentru a atinge acest ţel au fost stabilite o strategie şi un roadmap tehnologic care se învârt în jurul a trei termeni cheie: NEW, RENEW, ENABLE. În continuare vom analiza la ce se referă fiecare dintre aceste trei elemente.

ENABLE – SAP Screen Personas

Fig. 3 Internet Transaction Server

Acest aspect al strategiei SAP se bazează pe ideea că atunci când un client implementează o soluţie SAP, vor apărea inevitabil situaţii în care acesta doreşte să customizeze software-ul pentru a optimiza

modul în care acesta va interacţiona cu sistemul. Din această cauză se urmăreşte oferirea unui nivel de control mai ridicat clienţilor prin uşurarea activităţii de personalizare a produselor respectiv interfeţelor SAP. Problemele majore care împiedică atingerea acestui scop sunt flexibilitatea redusă a aplicaţiilor bazate pe tehnologii Dynpro, cunoştiinţele tehnice necesare pentru a putea personaliza aplicaţiile respective şi timpii mari necesari pentru implementarea acestor modificări. Tehnologia SAP care vine să soluţioneze problema aceasta este SAP Screen Personas. Aceasta reprezintă o soluţie nouă (prima versiune a fost lansată la finalul anului trecut) care permite end-user-ului să redefinească layout-ul oricărui Dynpro prin intermediul unei interfeţe web dragand-drop intuitive şi simple de utilizat. Astfel activitatea de personalizare a screenurilor este mult uşurată, nefiind necesare cunoştiinţe tehnice iar timpul de implementare fiind mult redus. Exemple de activităţi de personalizare sunt ascunderea de elemente grafice, stabilirea de valori implicite pentru anumite câmpuri, înregistrare unor paşi pentru automatizarea acestora sau pur şi simplu re-design-ul aplicaţiilor.

Cum funcţionează? Versiunea de kernel 7.21 a server-ului aplicaţiei ABAP expune un nou serviciu prin intermediul căruia definiţia oricărui Dynpro poate fi extrasă sub forma unui Object Model.

Fig. 4 SAP Screen Personas @ Design Time

Aplicaţia web Screen Personas se foloseşte de această interfaţă pentru a afişa Dynpro-urile în editorul Personas şi oferă utilizatorului posibilitatea de a aduce diverse modificări acestora. Varianta modificată a unui Dynpro (numită “new Flavor”) este salvată pe serverul aplicaţie ABAP (cu

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

37


programare Scurtă introducere în mediul SAP (II) - SAP User Experience ajutorul Add-On-ului Personas instalat în prealabil pe server) urmând ca la runtime noul “flavor” să fie aplicat pe Dynpro înainte ca acesta să fie redat în browser. Avantajul acestei abordări este că utilizatorul poate, cu un minim de efort şi fără a avea cunoştinţe tehnice, să modifice după bunul plac modul în care arată un Dynpro, iar la runtime aplicarea acestor modificări are loc transparent pentru server-ul aplicaţie din backend. Astfel nu apar probleme de inconsistenţă, dat fiind faptul că aceleaşi verificări au loc în cadrul unei aplicaţii, fie că aceasta a fost executată prin clientul clasic SAP GUI sau în browser având aplicat un nou “flavor”.

RENEW - WebDynpro Strategia de reînnoire (RENEW) se adresează nevoii de a oferi soluţiilor SAP existente (în mare parte bazate pe tehnologie Dynpro) interfaţe noi, mai intuitive și uşor de utilizat, în concordanţă cu aşteptările deja identificate. Cuvântul cheie în acest context este WebDynpro - o tehnologie dezvoltată practic pentru a înlocui treptat Dynprourile. WebDynpro înglobează un mediu de dezvoltare conceput pentru a uşura crearea de noi aplicaţii şi un mediu de execuţie care face posibilă dezvoltarea de aplicaţii independente de platforma clientului pe care va avea loc execuţia aplicaţiei.

Independenţa faţă de client este atinsă prin utilizarea mai multor motoare de randare(“rendering engines”). Fiecare astfel de engine a fost conceput pentru a genera cod sursă specific pentru un anumit client/pentru o anumită platformă, iar la runtime mediul de execuţie WebDynpro alege dinamic, în funcţie de context, ce motor să folosească. Desigur utilizarea unei astfel de abordări face foarte uşoară implementarea unui engine de randare terţ, ceea ce oferă un plus de flexibilitate aplicaţiilor WebDynpro. Acestea şi alte aspecte pe care nu le vom enumera aici fac din WebDynpro un framework de dezvoltare foarte puternic care s-a impus rapid ca şi înlocuitor al clasicelor Dynpro-urilor

NEW – SAP UI5. Netweaver Gateway

Capitolul “NEW” al strategiei SAP UX are în vedere aplicaţiile noi ce urmează să fie dezvoltate în viitor, şi care ar trebui să ofere utilizatorilor o experienţă “consumergrade”, cu interfeţe intuitive construite în jurul celor mai noi tehnologii din domeniu. În acest context menţionăm SAP UI5, o librărie JavaScript bazată pe standarde precum HTML5, CSS, JSON şi optimizată pentru dezvoltarea de aplicaţii business pentru desktop şi mobile. UI5 se bazează pe JQuery şi poate fi privit ca un layer adiţional peste acesta, care aduce în plus un set de elemente grafice tipice aplicaţiilor business şi posibilitatea de a accesa datele din backend-ul SAP utilizând protocoale consacrate precum JSON, OData, XML. Problema care se pune însă în cazul Fig. 5 WebDynpro rendering integrării funcţionalităţilor SAP existente Astfel, crearea de aplicaţii se bazează cu aplicaţii noi bazate de exemplu pe UI5 pe o abordare declarativă şi nu una impe- este dată de multitudinea de tehnologii rativă, în care motto-ul este “Minimize folosită în expunerea acestor funcţionalicoding, maximize design”: La design-time tăţi (de ex. RFC, BAPI, MDX ...). Această dezvoltatorul software are posibilitate de a diversitate face ca problema de integrare să defini prin drag&drop tot ceea ce ţine de fie una anevoiasă şi mai ales costisitoare.(v. interfaţa utilizatorului cu aplicaţia: layout- Fig. 7 - stânga) ul screenurilor, structurile de date folosite, Netweaver Gateway este componenta posibilităţile de navigare de la un screen SAP concepută pentru a soluţiona această la altul. Aceste informaţii sunt colectate şi problemă şi a crea un mediu omogen, în formează “metamodelul” aplicaţiei, care la care comunicarea are loc pe baza unor proruntime va putea fi folosit pentru generarea tocoale standard. În acest scop, Netweaver codului sursă corespunzător. Gateway acţionează practic ca un proxy,

38

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro

Fig. 6 SAP Fiori - aplicaţie dezvoltată utilizând SAP UI5

având rolul de a “împacheta” serviciile expuse de soluţiile SAP în interfeţe noi punându-le la dispoziţia aplicaţiilor terţe utilizând protocoale standard precum OData. (Fig. 7 - dreapta) După ce am analizat această varietate de soluţii tehnice, ceea ce putem concluziona este că produsele SAP (şi soluţiile enterprise în general) se află într-o stare de tranziţie, fiind nevoite să se adapteze la noile cerinţe ale pieţei cu privire la User Experience. În cazul platformei SAP o serie de noi tehnologii au fost dezvoltate care vin să uşureze această tranziţie, fiecare având un scop bine definit în cadrul strategiei de dezvoltare SAP UX.

Fig. 7 Netweaver Gateway


TODAY SOFTWARE MAGAZINE

programare

Automatizează toate lucrurile!

A

cest articol își propune să ofere un plan de nivel înalt pentru automatizarea unei mare părți a ciclului de viață al software-ului. De asemenea va arăta, pe baza unui exemplu concret, cum poate fi implementat un astfel de plan.

Ideile fundamentale Attila-Mihaly Balazs dify.ltd@gmail.com

Code Wrangler @ Udacity Trainer @ Tora Trading

Mai întâi să menționăm ideile fundamentale pe care se bazează planul. Postulăm că următoarele idei sunt „bune”. Pe acestea ar trebui să le implementăm sau să ne străduim să implementăm și care ne ajută să avem un ciclu de viață software lin: • revizuire cod (code review), • dezvoltare condusă de teste (test driven development), • sisteme versionare a surselor (version control systems), • analiză statică de cod (static code analysis / linting), • metodologii agile / lean, • definirea infrastructurii ca și cod (infrastructure as code). Din lista de mai sus aș dori să subliniez în mod special importanța revizuirii de cod: conform [CC2nd]1 revizuirea codului de o altă persoană este de cel puțin de două ori mai eficient în găsirea defectelor comparativ cu testarea (unit-teste sau de altă natură).

De asemenea, este un mod excelent de a răspândi cunoștințe despre sistemul aflat sub dezvoltare în interiorul echipei, reducând riscul de eșec în cazul în care cineva devine indisponibil (nu mai există problema că o anumită bucată de cod este cunoscută de o singură persoană). Din păcate revizuirea codului poate fi foarte lentă (o estimare pune viteză optimă la aproximativ 150 de linii/oră) și consumatoare de timp. Acesta este un alt motiv bun pentru automatizarea proceselor: eliberează timpul dezvoltatorilor în favoarea revizuirii de cod.

Ce este livrarea continua?

Livrare continuă (continuous delivery) înseamnă că organizația are o modalitate relativ automată de a pune software-ul dezvoltat în producție. În termeni mai concreți, dacă avem în vedere procesul de dezvoltare software din figura de mai jos, se poate vorbi despre un proces continuu de livrare dacă domeniile evidențiate sunt automatizate.

1 Code Complete: A Practical Handbook of Software Construction, Second Edition, 978-0735619678

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

39


programare Automatizează toate lucrurile! cincime de timp. • astfel de procese sunt implementate de multe companii care de zeci de ori2 pe zi pun cod în producție fără ca cineva să observe. Singurul efect este că oamenii văd îmbunătățiri și corecții mai rapid. • „Dacă te doare, fă-l mai des” 3 oameni și organizațiile nu devin mai bune exersând doar punctele lor forte. Ei trebuie să se uite mereu la cea mai slabă verigă a lanțului și să-l îmbunătățească. În cazul în care instalarea este o piedică, trebuie să dedicați efort îmbunătățirii lui.

Acest plan exemplificativ funcționează în următorul fel: • După definirea cerințelor (care ar trebui să fie cât mai mici posibil – conform mentalității Agile) este creat un „loc de muncă” (aceasta poate fi un ”feature branch” în cazul în care folosim un DVCS ca și Git sau Mercurial sau o copie separată a codului sursă). • Se scriu testele și codul sursă necesare pentru a pune în aplicare cerințele (în această ordine dacă respectăm metodologia TDD). • După ce codul este „complet” se „publică” (din nou, în funcție de instrumentele specifice utilizate acest pas poate să ia mai multe forme - de exemplu cu Git acest pas se realizează prin ”împingerea” (push) codului într-un repository). • Automat atunci când codul este publicat se rulează testele. În cazul oricărui eșec este notificat dezvoltatorul. • Automat se efectuează o analiză statică a codului. Dacă sunt detectate posibile probleme se notifică dezvoltatorul. • În cazul în care codul trece de teste și de analiza statică, sunt notificați oamenii care pot să revizuie codul. Având în vedere că codul a trecut deja de două controale la acest punct, revizuitorul uman nu este deranjat cu problemele triviale (cum ar fi codul nu este formatat corect) și se poate concentra pe aspectele importante, de nivel de business. • Automat, dacă revizuitorul dă undă verde, codul este integrat (aceasta înseamnă fuzionarea - merge - într-o anumită ramură dacă se utilizează un DVCS). • Automat după ce codul este integrat, acesta este instalat într-un mediu de pregătire (staging). • În mediul de pregătire se poate efectua un proces manual de asigurare a

40

calității (QA). • Automat, după verficarea calității, codul poate fi instalat în mediul de producție. Probabil sunteți deja familiari cu integrarea continuă și vă întrebați: care este diferența? Și, într-adevăr, există foarte puține - livrarea continuă este integrare continuă dusă la concluzia sa logică: automatizarea tuturor etapelor după integrare. Dacă aveți ezitări în legătură cu răspunsul la întrebrea: ”pot să am încredere într-o mașină să aibă aceeași grijă ca un inginer de instalare (deployment engineer) cu experiență?”, următoarele idei vă pot oferi unele clarificări: • poți cu adevărat încredere că oamenii interacționează întotdeauna cu grijă maximă cu sistemele? Oamenii devin neglijenți în timp, au o zi proastă, pot fi distrași și așa mai departe sau chiar mai rău - ei pot deveni indisponibi, temporar sau permanent, fără avertisment. • oamenii nu se scalează - Ce se întâmplă dacă mâine vreți să instalați soft-ul în două medii? Va fi nevoie de două ori mai mult timp sau de două ori mai mulți oameni. Un program poate fi executat foarte simplu de mai multe ori sau chiar rula în paralel. • oamenii sunt lenți - sunt întârzieri între momentul în care un e-mail este trimis / un ticket este completat în momentul când inginerul de instalare îl vede. Ce se întâmplă dacă el/ea este în pauză? Un sistem automat va porni în câteva secunde după ce codul devine disponibil • oameni nu se scalează, partea a doua - în cazul în care mediul este format din cinci servere, inginerul de instalare trebuie să le modifice pe rând. Un proces automat le poate actualiza pe toate în paralel, terminând procesul într-o

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro

De asemenea v-ați putea simț îngrijorați că procesul de implementare este atât de complicat încât nu se poate automatiza. Relaxați-vă, respirați adânc și faceți următorii pași: • creați o listă de pași urmat de persoana care face în mod curent instalarea. Această listă în sine este foarte valorosă: se poate folosi ca să ne asigurăm că pașii nu sunt omiși și poate servi ca material de instruire pentru alte persoane. • parcurgeți lista și transformați fiecare pas într-un proces de automatizat. • realizați că vor exista cazuri în care procesul automat nu funcționează impecabil (sau chiar eșuează în mod catastrofal)). Când vedeți aceste cazuri, amintiți-vă că și un proces uman poate să eșueze. Păstrați o statistică de genul ”X zile de la ultimul eșec” dacă vă ajută. Întroduceți un pas de verificare efectuat de un om după instalare dacă simțiți nevoia - chiar și așa, cel puțin persoana este scutită de munca plictisitoare, automatizabilă. De asemenea, considerați modurile în care puteți detecta (sau chiar mai bine) de a evita data viitoare eșecurile de acel tip într-un mod automat.

Instrumente folosite

„Inima” unui proces de implementare continuă este un sistem care poate reacționa la evenimente externe (cum ar fi disponibilitatea unei noi bucăți de cod sursă) care execută pașii necesari. O soluție frecvent utilizată este Jenkins 4 (cunoscut anterior sub numele de Hudson) care este foarte versatil și poate interacționa cu o mulțime de sisteme prin intermediul plugin-urilor. Câteva sfaturi legate de configurarea Jenkins-ului: • Jenkins pot folosi ”sclavi” (slaves) pentru a executa procesul de build. Acest lucru înseamnă că Jenkins ”maestru” 2 h t t p : / / w w w. t h o u g h t w o r k s . c o m / e v e n t s / thoughtworks-quarterly-briefing-continuous-delivery 3 http : / / m ar t i n fow l e r. c om / bl i k i / FrequencyReducesDifficulty.html 4 http://jenkins-ci.org/


TODAY SOFTWARE MAGAZINE (master) poate rula pe o mașină Linux, în timp ce sclavii pot rula pe diferite platforme (Windows, MacOS X - orice care poate rula Java), făcând posibil rularea procesului de build pe toate platformele suportate • Stabiliți limite pentru procesul de build. Specificați timpul maxim care poate să dureze pentru a preveni un build blocat care să consume toate resursele. Specificați numărul maxim de build-uri vechi pe care ar trebui să fie arhivate pentru a evita umplerea spațiului pe disc. • Profitați de job-urile parametrizate pentru a evita crearea job-urilor (aproape) identice. • Profitați de declanșarea de la distanță (remote triggering) a job-ului. În acest fel un build poate fi declanșat chiar în momentul în care o anumită schimbare a fost comisă să vă informați despre hooks / webhooks pentru VCS-ul vostru. • Rupeți build-ul în pași mai mici - de exemplu, un pas ar putea fi rularea unit test-elor, a doua ar fi rularea testelor de integrare și un al treilea pas ar putea să fie rularea analizei statice. Pașii mici oferă feedback mai rapid și fac posibilă rularea mai multor pași în paralel. • Când rupeți un proces în pași mici, asigurați-vă că fiecare pas operează pe exact aceleași fișiere sursă. Fiți cât mai specifici. Specificarea unui branch nu este suficient de specific, folosiți identificatorii de commit / changeset. • Jenkins te poate notifica în mai multe moduri cu privire la progresele job-ului (build-ul a început / a reusit / a eșuat) - în interfața web, e-mail, chat. Să-l configurați în așa fel încât să fie cât mai convenabil pentru membrii echipei dar să nu le spameze. Alte variante în afară de Jenkins ar fi: TeamCity, CruiseControl și Travis-CI. Cea de-a doua parte a unui astfel de configurări este un loc pentru a ține codul și comentariile legate de revizii. Acest lucru poate fi un sistem sau două sisteme distincte (în cazul în acesta aveți nevoie să le sincronizați - probabil folosind Jenkins). Câteva variante: • soluții complete (cod hosting și revizuire): Github, BitBucket, Google Code, hosted TFS • Cod hosting pe care le puteți instala pe serverul vostru: RhodeCode, Gitorious, Gitlab, gitweb, hgserv • R e v i z u i r e d e c o d : G e r r i t , ReviewBoard, Rietveld

A treia piesă a puzzle-ului este un sistem care efectuează analiza statică pe cod pentru a oferi feedback despre problemele care pot fi detectate în mod automat. Pentru aceasta recomand SonarQube 5 (cunoscut anterior sub numele Sonar). Ea nu face analiză statică pe cont propriu, ci consumă rapoartele create de alte instrumente (cum ar fi FindBugs, FxCop, Pylint, etc) și le prezintă într-o interfață web frumoasă, oferind o clasificare a problemelor, statistici, rapoarte cu schimbări și așa mai departe. Câteva sfaturi legate de folosirea SonarQube: • are o arhitectură ciudată: analiza se execută pe client care are nevoie de acces direct atât la interfața web cât și la baza de date. • analiza unui proiect mare poate să dureze o lungă perioadă de timp și să consume multe resurse (CPU/ memorie - puteți găsi sfaturi specifice pentru proiecte mari de Java pe blog-ul Transylvania JUG6). Dacă apar astfel de probleme, este un indicator bun că ar trebui să despărțiți proiectul în mai multe module mici. • SonarQube are nevoie de o bază de date performantă. Nu rulați cu baza de date încorporată (H2) cu care vine sau cu o instanță MySQL slabă. Recomand să folosiți un PostgreSQL configurat corect.

și David Farley. De asemenea, puteți arunca o privire asupra unei prezentări cu acest subiect8 sau puteți să mă contactați pentru întrebări / sfaturi sau chiar să veniți la următoarea întâlnire Cluj.PM9 unde voi vorbi despre acest subiect.

Concluzii

Existența unui ”deployment pipeline” are multe beneficii. Se eliberează timpul pe echipe. Instalarea se face mai repede și garantează rezultate consistente. Asigură că procesul de instalare este definit cu precizie (suficient de precis ca să-l poate executa un calculator). De asemenea, ne învață despre instrumentele de bază și despre linia de comandă, un lucru indispensabil pentru a depana problemele de producție. Puteți aplica livrarea continuă la toate tipurile de sisteme software, nu doar siteuri sau servicii găzduite (acolo unde este cel mai ușor). Pipeline-ul poate produce installkit-uri sau chiar mașini virtuale complete cu software-ul preinstalat. Livrarea continuă nu înseamnă neapărat că trebuie livrat noul software-ul la client de fiecare dată când se schimbă ceva. Înseamnă doar că aveți opțiunea de a face acest lucru la orice moment în timp. O carte bună (deși ușor depășită) este ”Continuous Delivery : Reliable Software Releases through Build, Test, and Deployment Automation7” de Jez Humble 5 6 7

http://www.sonarqube.org/ http://www.transylvania-jug.org/archives/5702 ISBN: 978-0321601919

8 http://vunvulearadu.blogspot.ro/2013/09/postevent-web-codecamp-event-in-cluj.html 9 http://cluj.pm/

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

41


programare

NoSQL, A Brief Guide to the Emerging World of Polyglot Persistence, de Pramad J. Sadalage şi Martin Fowler

V

oi începe această recenzie printr-o scurtă trecere în revistă a conceptelor legate de bazele de date nerelaţionale, concepte care au dus la apariţia limbajelor NoSQL (Not Only SQL). Bazele de date relaţionale reprezintă încă, cel mai răspândit model de baza de date, raportat la numărul de aplicaţii ce îl folosesc. Acest model aduce o serie întreagă de constrângeri, cunoscute în special drept constrângeri de integritate, dar aduce anumite reguli pentru eliminarea redundanţei sau creşterea încrederii, acestea fiind cunoscute ca forme normale. Ceea ce am amintit până aici reprezintă punctul forte, pe care relaţionate, dar ineficient la căutări). maşină. Începând cu capitolul al optulea majoritatea dezvoltatorilor de aplicaţii îl şi Aşadar, două motive importante con- se pune accentul pe implementare. Prima urmăresc. Cum, din păcate, pentru orice duc la alegerea unui model nerelaţional: implementare este Riak, ca exemplu de bază trebuie să plătim ceva, şi pentru acest volumul mare de date şi dinamicitatea de date cheie-valoare. Capitolul al nouălea punct forte plătim prin greutatea regăsirii modelului. aduce în atenţie MongoDB, ca exemplu datelor în baza de date, prin complexitaCartea pe care v-o supun atenţiei astăzi, al bazelor de date orientate pe document. tea interogărilor şi, în general, prin faptul NoSQL, A Brief Guide to the Emerging Capitolul al zecelea explorează Cassandra, că acest model nu este propice gestionării World of Polyglot Persistence, avându-i ca exemplu de baze de date colonare, iar unui volum de date mare. Ca alternativă a ca autori pe Pramad J. Sadalage şi Martin capitolul al unsprezecelea prezintă Neo4J apărut modelul nerelaţional, care începe să Fowler este o scurtă introducere în utili- pentru bazele de date orientate pe grafuri. prindă din ce în ce mai mulţi adepţi. zarea şi întelegerea conceptelor mai sus Ultimele patru capitole se concentrează pe Vom continua introducerea în modelul enumerate ale bazelor de date nerelaţi- diverse particularităţi ale bazelor de date nerelaţional al bazelor de date prin câteva onale. Nivelul cărţii este accesibil, deci NoSQL. Capitolul al doisprezecelea aduce descrieri a ceea ce numim “big data”. Big avem un excelent ghid pentru a putea face în discuţie migrarea schemelor de baze data reprezintă mulţimi mari de date. o comparaţie cu modelul bazelor de date de date. Cum NoSQL nu are neapărat o Caracteristicile generale ale acestora sunt relaţionale, cunoscut deja de majoritatea schemă de date care să descrie structura (the four Vs): volumul, viteza, varietatea şi cititorilor revistei. lor, problema este a măsurii în care putem valoarea. Ultimele două caracteristici sunt Cartea cuprinde 15 capitole pe care le utiliza date dintr-o bază de date relaţională mai interesante şi vom zăbovi un pic asupra voi descrie pe scurt. într-una nerelaţională şi invers. Capitolul lor. Varietatea înseamnă că mulţimile de Capitolul întâi este introductiv, adu- ale treisprezecelea supune atenţiei o comdate pot proveni din diferite surse. Aceasta când în discuţie noţiunile de bază ce binaţie de mai multe tipuri de depozite le face greu de integrat într-o bază de date descriu o bază de date NoSQL. Capitolul de date care pot să coexiste într-o aceeaşi relaţională, din cauza structurii diferite al doilea este o introspecţie a modelelor aplicaţie. În capitolul al patrusprezecelea a lor. Valoarea înseamnă că o porţiune folosite pentru descrierea acestor baze de se prezintă elemente avansate în ceea ce de date din mulţimea de big data nu este date, modele amintite şi în introducerea înseamnă extinderea tipurilor de date la valoroasă ca entitate, ci devine valoroasă în recenziei (cheie-valoare, graf, coloană, fişiere sistem, imagini, baze de date XML, ansamblul mulţimii. document). Capitolul al treilea descrie etc. În sfârșit, ultimul capitol oferă câteva Cum din ce în ce mai mulţi oameni neajunsurile pe care le constatăm la folo- sfaturi în ceea ce priveşte alegerea tipului accesează volume mari de date, precum sirea bazelor de date NoSQL. Capitolul al de tehnologie folosită în gestionarea bazei cele produse de senzori, GPRS, date aflate patrulea îndreaptă discuţia spre bazele de de date. în diverse formate, manipularea lor este date distribuite, temele importante fiind diferită, iar aşteptările de viteză ale pro- acelea ale replicării: master-slave sau peerLectură plăcută! cesărilor sunt la nivelul instant. Bazele de to-peer. Distribuţia este strâns legată de date tradiţionale nu pot răspunde acestor consistenţă, de aceea în capitolul al cinciprovocări. Câteva exemple de baze de date lea se discută despre consistenţă la update NoSQL sunt: Oracle NoSQL, Cassandra, sau read. În capitolul al şaselea se discută Voldemort, Neo4J, Riak sau MongoDB. mult mai amănunţit problema tranzacţiiÎntr-o bază de date NoSQL nu există o lor, pentru sistemele distribuite. Capitolul schemă propriu-zisă a datelor, ele fiind sto- al şaptelea aduce în discuţie un al concept cate ca perechi cheie-valoare (foarte eficient menit sa crească eficienţa utilizării bazelor şi flexibil, dar datele nu sunt self-descri- de date distribuite: map-reduce. Conceptul Silviu Dumitrescu bing), sau de coloane (folosit pentru date de map-reduce constă într-o modalitate de silviu.dumitrescu@msg-systems.com împrăştiate), sau document (folosit pentru organizare a procesării, astfel încât o parte Consultant Java depozite XML, dar ineficient ca perfor- cât mai însemnată a procesului şi a date@ msg systems Romania manţă), sau graf (folosit pentru traversări lor necesare acestuia să se afle pe o singură

42

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro


programare

TODAY SOFTWARE MAGAZINE

Dezvoltarea de jocuri cross-platform

Î

n momentul în care am început să lucrăm la primul nostru joc în cadrul King România, știam că proiectul urma să fie distractiv, pe de o parte pentru că, deși toţi membrii echipei dezvoltaseră până atunci jocuri, era prima dată când lucram la un joc casual-social și, pe de altă parte pentru că urma să fie primul joc “serios” de la King care ajungea pe mobile. King mai lansase înainte un joc, atât pe App Store, cât și pe Google Play (pe atunci App Market), dar nu era un joc high-profile lansat pe Facebook, așa cum era în cazul lui Bubble Witch Saga. În momentul selecţiei jocurilor pentru portarea pe mobile, Bubble Witch Saga a fost o alegere foarte naturală. Era cel mai popular titlu din portofoliul companiei în perioada respectivă, iar King își dorea o intrare “în forță” pe piața de mobile. Inițial am crezut că o să fie o muncă ușoară și, într-un fel, ne şi doream acest lucru deoarece abia pusesem bazele studioului şi eram conştienţi că urmau să intervină probleme legate de administrarea sa. A trebuit să cumpărăm hardware, să setăm servere, servicii şi canalele de comunicație cu birourile din Suedia și Londra etc. Pe lângă toate aspectele logistice, au intervenit şi alte aspecte care trebuiau definite pentru o funcţionare cât mai eficientă: viziunea studioului, profilul oamenilor pe care doream să-i angajăm, modul în care ne organizăm în echipă. Apoi a urmat o discuție cu managerii de proiect de la Bubble Witch Saga, varianta de Facebook, în care am fost informaţi că urma să realizăm un lucru pe care nimeni nu-l mai încercase până atunci: să sincronizăm versiunea de Facebook cu cea de mobile. În momentul acela ne-am dat seama că dezvoltarea va fi mai complicată, dar în același timp mult mai interesantă. Jocul de Facebook ține datele pe un server, într-o bază de date distribuită. Din acest punct de vedere, teoretic, este simplu:

clientul de mobile ar trebui doar să acceseze aceleași date. Însă în practică nu este chiar atât de uşor deoarece utilizatorii care se joacă pe telefoane nu sunt tot timpul online, în comparaţie cu cei de pe Facebook care sunt forţaţi să rămână online pentru a accesa jocul. Pe telefoane, odată ce aplicaţia a fost instalată, aceasta poate fi accesată în orice moment. Am fi putut opta pentru varianta în care să le impunem utilizatorilor să fie online pentru a accesa jocul, dar în felul acesta am fi pierdut foarte mulți jucători și, chiar dacă acesta n-ar fi fost un impediment, experiența de joc ar fi fost în mod cert una inferioară (de exemplu, jocul s-ar fi întrerupt de fiecare dată când se pierdea conexiunea la Internet). Toate aceste date indicau către o decizie clară: trebuia să le permitem utilizatorilor să se joace când doresc, iar în momentul în care exista o conexiune la Internet disponibilă, sincronizam progresul jucătorului cu serverul. Așadar, găsisem o soluţie, însă nu rezolva neapărat toate problemele. Am avut destul de multe dezbateri până am ajuns la soluția finală, dar știam că aceasta aduce cu ea alte probleme. Ce se întâmpla când un utilizator se juca pe telefonul care era offline, după care se juca online pe Facebook ? Pentru că telefonul era offline, versiunea de Facebook nu înregistra sesiunile de joc completate pe telefon. Erau destul de multe cazuri speciale la care

trebuia să ne gândim cu atenție, astfel încât jucătorul să nu observe, pe cât posibil, că accesează jocul pe platforme diferite. De exemplu, există utilizatori care accesează jocul de pe o tabletă Android, un telefon mobil iPhone și îl joacă și pe Facebook. Aceștia trebuie să simtă mereu că joacă același joc. Trecerea de la o platformă la alta trebuie să fie complet transparentă. Numai acest aspect al jocului a consumat în timp (investit în dezvoltare și depanare) aproximativ 35% din durata totală a proiectului. Când ne-am impus să facem ca jocul de pe mobile să fie la fel ca cel de pe Facebook, inițial am mers prea departe și am copiat jocul de pe Facebook în toate aspectele lui. În cazul anumitor aspecte ale jocului, abordarea aceasta este foarte bună. De exemplu, fizica de joc este o portare aproape directă în C++ a codului de Action Script și jocul se comportă foarte apropiat de jocul de Facebook, neexistând diferențe foarte mari în scoruri. Scorurile sunt sincronizate între versiuni și atunci nu ai dori ca toţi utilizatorii să joace pe Facebook pentru că acolo înregistrează scoruri mai mari sau invers.

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

43


programare Dezvoltarea de jocuri cross-platform Pentru alte aspecte însă, copierea nu este la fel de eficientă și în acele situații a trebuit să adaptăm jocul. Am făcut butoanele mai mari, pentru că utilizatorii interacționează cu jocul folosind degetele și nu mouse-ul, care este mult mai precis și fin. Am eliminat pe cât posibil textele pe care utilizatorii de telefoane nu sunt obișnuiți să le citească; aceștia se ghidează mai mult după icoane, animații sau feedback vizual contextual. Am adaptat jocul astfel încât să răspundă la diverse întreruperi: recepţionarea de apeluri, mesaje, apăsarea butonului de home (pe iOS) sau back (pe Android) etc. Toate aceste elemente nu există pe Facebook. Până acum, am abordat aspectele oarecum evidente în procesul de portare a unui joc de pe Facebook pe mobile, pentru că acestea țin de interacțiuni vizibile sau de interfață. Însă foarte mult timp este investit în aspectele care nu sunt imediat aparente. Jocul de Facebook rulează pe un calculator foarte puternic. Asta înseamnă că jocul de Facebook are acces la o putere de procesare virtual nelimitată. În schimb, este limitat de viteza rețelei și a conexiunii la Internet. Utilizatorul nu doreşte să fie ţinut prea mult în fața unui ecran de loading și atunci apare problema limitării cantităţii de date care poate fi trimisă pe rețea, fără ca utilizatorul să aștepte prea mult. Toate aceste limitări sunt cel puțin de două ori mai mari pe mobile. În primul rând, procesoarele ARM cu care sunt echipate telefoanele mobile, în general, sunt mult mai slabe decât un procesor Intel care se găsește de obicei pe PC sau Mac. În al doilea rând, memoria RAM pe telefoane este de 4 - 6 ori mai mică decât pe PC. În același timp, telefoanele au cerințe speciale de consum al energiei. De exemplu, dacă jocul nu este activ, atunci nu trebuie să consume, pe cât posibil, resurse. Fiind un joc casual-social, ne doream ca acesta să fie descărcat atât prin rețea WIFI, cât și prin 3G. Pentru a fi eligibilă pentru descărcare prin rețea 3G, aplicația trebuia să aibă sub 50 MB. Aceasta este o altă limitare pe care jocul de pe Facebook nu o are. Ce au însemnat pentru noi toate aceste limitări? În primul rând, a trebuit să găsim metode mai bune de împachetare și de compresie a datelor. Când vorbim despre compresie, vorbim tot timpul despre un compromis care se face între memoria ocupată și ciclurile de procesor consumate pentru decompresie. A trebuit să ne gândim foarte atent la aceste compromisuri, deoarece nici cea de a doua resursă (procesorul) nu ne oferea foarte multe. Compromisurile sunt și mai importante când este vorba

44

despre lansarea unui joc universal pe App Store, adică un singur pachet/ aplicație care rulează pe toate modelele de iPhone, iPod sau iPad. Acest lucru înseamnă că, în anumite cazuri, în același pachet o să existe aceeași resursă (imagine, sunet, text) multiplicată pentru fiecare device. În alte cazuri, soluţia a constat în găsirea unor hack-uri istețe prin care reușeam să refolosim aceeași resursă pe toate device-urile. Deși poate părea excelentă, soluția rămâne totuși un compromis, pentru că la fiecare modificare a unei resurse comune trebuia să ne asigurăm că jocul se comporta consistent pe toate device-urile. Acest lucru se traduce printr-un timp de QA crescut. Până acum am vorbit despre jocul pe mobile versus jocul pe Facebook. Dar mobile nu este o platformă mare, unitară și uniformă. Din contră! Este o platformă mare, neunitară, neuniformă și fragmentată. Am început să portăm Bubble Witch Saga pe iOS (iPhone, iPod, iPad) în ianuarie 2012 și l-am lansat (doar în câteva țări pentru început) în luna mai a aceluiași an. Apoi, ne-am concentrat pe versiunea de Android, care a plecat de la aceeași bază de cod și a fost lansată aproximativ cinci luni mai târziu. O echipă împărțită în două - o parte (trei programatori) concentrată în continuare pe lansarea versiuni de iOS și ulterior a update-urilor, iar cealaltă parte (tot trei programatori) concentrată pe versiunea de Android. În total, a durat aproximativ 10 luni să lansăm un joc pe toate platformele mari (iOS, Android). Cel mai important factor, care conduce la mărirea timpului de dezvoltare, este reprezentat de fragmentarea platformelor. Deși jocul rula atât pe iOS, cât și pe Android încă din ianuarie (pentru că aproximativ 90% din totalul codului era comun), ne-au mai trebuit încă cinci luni ca să lansăm un joc “polished” pentru Android. Am vrut ca jocul să fie compatibil cu cât mai multe modele de telefoane și ne-am confruntat cu tot felul de diferențe subtile între aceste modele, între versiunile de sistem de operare și între rezoluțiile telefoanelor, uneori foarte atipice. Pentru că o mare parte din grafică era deja realizată pentru varianta de Facebook, am avut un singur grafician în echipă care s-a ocupat de elementele noi specifice

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro

Echipa King România

versiunii de mobile și de adaptarea graficii existente. Din punct de vedere al QA-ului, proiectul rămâne unul foarte dificil. Are câteva sute de niveluri, avea peste zece charm-uri permanente care influențau și modificau jocul (în varianta curentă s-a renunțat la acestea în favoarea wish-urilor), o serie de elemente speciale in-game (Doom Skull Bubble, Infected Bubble, Bomb Bubble etc) și booster-e temporare. Multitudinea de elemente creează foarte multe situații posibile care trebuie testate. Pentru acest proiect am avut șase analiști care testau jocul în cele mai mici detalii. Un ciclu de testare tipic, spre finalul proiectului, dura între trei și șapte zile, în funcție de ce se testa. Ciclul de testare pre-release era mai lung, pentru că se testau elemente adiționale specifice lansării. Asigurarea calității este foarte importantă pentru noi, pentru că după trimiterea versiunii de joc la Apple, durează în medie două săptămâni până ca aceasta să fie aprobată și lansată pe store. Dacă detectăm vreo greşeală după lansare, trebuie să o luăm de la început şi s-ar pierde nepermis de mult timp! De aceea, ne concentrăm foarte mult pe QA și încercăm să fim cât mai proactivi când vine vorba de calitatea produsului. Multă muncă, foarte multă atenție și concentrare la detaliile care contează, o mică armată de oameni implicați direct în dezvoltarea produsului și o altă mică armată implicată în activități adiacente produsului (marketing, finance, accounting etc) și la final un scor de cinci stele ne face pe toți să decretăm: “da, e distractiv să faci jocuri!”

Cristian Bidea Lead developer @ King


startups

TODAY SOFTWARE MAGAZINE

DoItFor.co

A

m participat anul acesta pentru prima dată la Startup Weekend Cluj. Și nu oricum, am mers pregătit să prezint propria mea idee. La primul pitch, această idee se numea TaskList pentru ca la sfârșitul evenimentului să se transforme în Do it for. Am pornit cu ideea unui site prin care să poți externaliza acele sarcini pe care nu știi, nu poți sau nu vrei să le faci tu. Mă gândeam aici la curățenie, spălat haine, făcut de mâncare, stat la coadă, spălat mașina, etc. Teodor Olteanu

Teodor.Olteanu@betfair.com End User Computing Lead @ Betfair Romania

Alături de o echipă numeroasă și energică am luat locul 3 la acea competiție. Având acest feedback pozitiv și fiind foarte motivați să realizăm acest site care să ne ajute să avem mai mult timp liber am continuat să lucrăm la Doitfor în timpul liber. Din echipa inițială am rămas eu, Codin, Gabi si Victor. Motivați și dornici să facem ceva care să fie folositor și altor oameni am lucrat cu bucurie la realizarea site-­ului. După trei luni, pe 1 iunie, am lansat site-­ul doitfor.co (cred că am fost prima echipă de la StartupWeekend care au lansat după eveniment). Așa cum este el acum, site-­ul rezolvă două probleme mari: nevoia de mai mult timp și nevoia de venituri în plus. Cine vrea să externalizeze o activitate, oricare ar fi ea, este cel mai avantajat, postează un task și cei dornici să îl ajute și

să câștige bani în plus licitează pentru acest task cu suma și detaliile necesare (când, cum și în ce condiții poate realiza task­u l). Cel care a postat task­ul e singurul care vede cu ce sumă au licitat cei interesați, utilizatorii care licitează văd doar câte licitări sunt, nu și valoarea lor. Astfel evităm goana după cel mai mic preț, care nu avantajează pe nici una dintre părți. Câteva statistici interesante de pe site: până acum au fost postate 150 de task-uri cu valori cuprinse între 10 si 3500 lei. Avem aproape 1000 de utilizatori îscriși pe site care au licitat de peste 500 de ori pe task-urile postate. În cele patru luni de la lansare site-ul a fost vizitat de aproape 10.000 de vizitatori unici, care au făcut peste 17.000 de vizite și au vizualizat de 73.000 de ori paginile site-ului. Aproape 60% au navigat pe site folosind browserul Chrome, 25% cu Firefox si doar 6% cu Internet Explorer, iar 90% din utilizatori au folosit un PC pentru a vizita site-ul, 8% un telefon mobil si 2% o tabletă. Au fost realizate cu succes o multitudine de activități: platou sushi, montat tapet, administrat pagini de facebook, redactare de documente, prăjitură tiramisu, activități de merchandising și

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

45


startups

multe altele. Suntem abia la începutul activității noastre și mai avem multe de făcut pe toate planurile: marketing, design, programare. Chiar dacă este multă muncă și mult timp în care am putea să ne odihnim după orele de muncă full time pe care toți le avem, satisfacția pe care ne-­o aduce este pe măsură. E super să știi că ai făcut ceva care le face oamenilor viața un pic mai ușoară. Momentan doitfor este complet gratuit, oamenii își schimbă banii direct între ei. Sperăm ca în această toamnă să reușim să implementăm un sistem de plată electronic.

Detalii tehnice

Din punct de vedere tehnic în primul rând aveam nevoie de un limbaj de programare care să ne ajute să ne miscăm rapid. În echipa inițială erau programatori Java (Android), .NET și Python. Am ales Python pentru aplicația web, iar programatorii pentru mobil au dezvoltat în Java pentru Android o aplicație prototip care a fost prezentată la sfârșitul evenimentului.

46

DoItFor.co

sau backup la baza de date. Pentru asta am folosit Celery configurat cu un broker bazat pe Redis. Redis va fi foarte foarte probabil folosit în viitor pentru diferite sarcini în aplicație, inclusiv pentru cache, de aceea am optat pentru el în defavoarea brokerului default RabbitMQ. Pentru partea de front-end am integrat puternica librărie de la Twitter, Bootstrap, împreună cu un limbaj dinamic pentru prezentare, numit LESS. Interacțiunea cu utilizatorul este deocamdată statică, dar pe masură ce complexitatea va creste vom alege un framework pentru front-end de asemenea, cel mai probabil AngularJS. Deployment-ul a fost făcut pe infrastructura de la Amazon. În prima fază folosim trei micro instanțe de EC2: una pentru webserver, una pentru baza de date, iar a treia pentru sarcini administrative si asincrone. Webserverele sunt în spatele unui load balancer ELB, deși nu a fost implementată funcționalitatea de scalare automată încă. Tot de la Amazon se folosește Route 53 pentru serviciul de DNS, SES pentru trimitere de e-mailuri și S3 pentru fișiere statice. Dacă se va adăuga suport pentru PostgreSQL la serviciul RDS, probabil vom migra spre acesta pentru baza de date. Deja avem o multitudine de tehnologii interesante pentru un proiect la început de drum!

Aplicația prezentată la Startup Weekend a avut nevoie de funcționalitate minimă pentru a demonstra ideea de bază a proiectului: două formulare, unul de înscriere în site și unul de adăugare a unui task, iar pentru mobil, un API simplu compus din două funcții: una pentru a obține lista de taskuri din jurul tău, respectiv pentru a putea licita pe un task. Pentru partea de web am ales ca framework Django. Dar pentru că aveam nevoie să interogam baza de date în funcție de locația utilizatorului, am folosit o variantă a framework-ului - GeoDjango Vă invit să folosiți platforma și să ne impreuna cu PostgreSQL cu extensia spuneți cum putem să o îmbunătățim. PostGIS ca și bază de date. Am cumpărat o bază de date de IP-uri de la MaxMind și împreună puteam să determinăm în primul rând locația utilizatorului în funcție de IP, iar apoi să căutăm în baza de date task-uri relevante pentru utilizator sortate după distanța fată de acesta. Tot pe partea de back-end aveam nevoie de o modalitate de a executa funcții asincron, ca de exemplu, trimiterea de mailuri

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro


HR

TODAY SOFTWARE MAGAZINE

Leadership către liderul tău

C

red că nu este nimic mai demotivant și enervant decât să ai un sef groaznic. Un șef care: - Nu știe nimic despre munca ta sau dimpotrivă crede că le ştie pe toate;

Antonia Onaca

anto@aha-ha.com de aproape 10 ani trainer, psiholog, consultant sub formă de antreprenor, intraprenor şi antreprenor din nou

• Vorbeşte cu tine numai când îţi spune că ai dat-o in bară; • Nu îţi explică de ce anumite lucruri trebuie făcute într-un anumit fel; • E autocrat; • Nu îţi ia apărarea; • Îşi asumă ideile tale; • Este încuiat la minte, neaaceptând alte idei decât ale lui; • Stă toată ziua în meeting-uri și nu lucrează nimic; • Nu îţi dă niciodata feedback pozitiv; • E dezinteresat; • E c o n t r o l - f r e a k ș i f a c e micromanagement; • Te minte; • E indecis; • E mândru şi niciodată nu recunoaşte că a greşit; Îşi acoperă toate greşelile; Dă vina pe upper management sau pe echipa lui; • Nu comunică; Zice una şi face alta; • Cere ceva şi apoi se aşteaptă la altceva; Are aşteptări pe care nu ți le comunică; • Îi intoarce pe membri unul împotriva celuilalt; • Nu deleagă ; • Nu reacţionează în timp util la probleme; • E workohlic sau se aşteaptă că tu sa fii; • Nu acceptă idei despre cum se poate schimba felul în care se fac lucrurile; • Cere rapoarte peste rapoarte și apoi nu le citeşte; • Îţi subminează autoritatea în faţa colegilor sau a altor echipe; • Te vorbeşte de rău; • Nu te dezvoltă şi nici nu îţi acordă timp să te dezvolţi; • E haotic; • Se răzgândeste tot timpul; • Nu are un plan logic;

• Cedează presiunilor celorlalte echipe sau a managementului superior; • Cere prea mult în timp prea scurt; • E veşnic defensiv; • Minte sau distorsionează realitatea; • E un fricos şi nu îşi asumă nici un risc sau decizie; … si lista ar putea continua pe inca cateva pagini Asa este … nu e nimic mai demotivant si enervant decât un şef cu aceste caracteristici, chiar si cu numai una dintre cele mai sus enumerate. Da, ne aşteptăm ca liderul să: • Clădească încredere şi mândrie, să exercite influenţă; • Treacă peste interesele individuale şi să se uite la interesele grupului; • Fie un model de referință; • Trezească respectul celor din jur; • Fie conştiincios; • Exercite autocontrol; • Fie etic; • Dea feedback obiectiv în concordanţă cu aşteptări realiste; • Ofere soluţii şi apoi contextul de dezvoltare în care oamenii să înveţe cum să le implementeze; • Acorde un timp rezonabil ca oamenii să înveţe şi inclusiv să accepte că în procesul de învăţare oamenii mai greşesc; • Îi motiveze pe oameni să crească şi apoi să aibă performanţă; • Fie atent la nevoile de realizare şi dezvoltare ale membrilor echipei; • Stimuleze spiritul individual şi cel de echipă; • Creeze oportunităţi de dezvoltare şi un climat orientat spre sprijin; • Recunoască potenţialul şi capacitățile membrilor şi să le ofere provocări să

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

47


HR Leadership catre liderul tău crească; • Recunoască şi sărbatorească chiar şi micile succese şi să ajute colaborativ la corectarea eşecurilor; • Dea semnificaţie muncii; • Ofere şi construiască încredere în membrii echipei; • Încurajeze gândirea inovativă, să construiească soluţii împreună cu echipa, să ia în considerare ideile şi perspectivele celorlalţi; • Încurajeze experimentarea şi creativitatea; • Nu uite să ofere credit; • Genereze efort suplimentar; • Nu evite implicarea; • Nu fie defensiv şi să încerce să înţeleagă feedback-ul pe care îl primeşte; • Genereze soluţii şi să lucreze activ să le implementeze; • Caute să obţină feedback şi să aibă o perspectivă obiectivă; • Fie eficient; • Reprezinte şi să apere echipa în exterior; • Fie atent la rezultatele finale; • Genereze satisfacţie interpersonală; • Fie cald şi onest; • Fie răbdător; … şi în acest caz am putea să continuăm lista şi să umplem multe pagini. Lucrez de multă vreme în leadership development. E greu, pentru că leadershipul presupune anumite comportamente care nu sunt atât de uşor de modificat. Nu este vorba de cât de multe caracteristici personale deja dezvoltate are sau nu. Nu este vorba nici de cât training primeşte şi nu este nici măcar vorba despre cât de dispus este liderul să înveţe. Din experienţa mea unul dintre lucrurile care împiedică semnificativ şansele de dezvoltare este faptul ca liderul este rupt de realitatea obiectivă a acțiunilor sale şi ale efectelor pe care acestea le produc. Ar fi foarte uşor să dăm vina pe el pentru asta, chiar foarte la îndemână, însă cred că a venit momentul să confruntăm realitatea şi să ne uităm la exact ce determină această rupere de realitate. În foarte multe cazuri, din experienţa

48

mea aş spune în mai mult de 80% din cazuri liderul e rupt de realitate pentru că realitatea e ruptă de el. Ce înseamnă aceasta? Echipa acestuia nu face ceea ce se aşteaptă de la el să facă. Avem tendinţa să fim ipocriţi în această situaţie având standarde duble. Avem aşteptări de la liderii noştri pe care noi nu le îndeplinim. De foarte multe ori mi s-a întâmplat să văd faţa mirată a liderilor în momentul în care se întâlneau cu acea realitate. Era incredibil cât de şocaţi erau de opinia echipei lor despre ei. Iniţial şi eu am crezut că acest lucru se datorează faptului că ei au ignorat indiciile oferite de echipă însă în timp am ajuns la concluzia că acele indicii sunt mult prea generale şi atât de subtile încât rareori pot fi observate. Propunerea pe care v-o lansez este să faceţi ceea ce aşteptaţi de la liderul vostru. Ţineţi minte că rolul lui este cel de leader şi atunci aşteptările și feedback-ul vostru ar trebui să fie ţintit spre a îmbunătăţi aceasta. Nu o faceţi hit and run cum se întâmplă la performance reviews, când s-a umplut paharul şi rabufniţi, sau la exit interviews. Asiguraţi-vă ca strategiile voastre vor fi eficiente în schimbarea comportamentelor nu numai în a-l face să se simtă vinovat. Vă las cu câteva sfaturi specifice pentru început, lansându-vă provocarea ca în timp întreaga listă de aşteptări menţionată mai sus să reprezinte comportamentele voastre faţă de liderul vostru: • Dacă ceva nu vă place, spuneţi. Spuneţi atunci când nu vă place şi oferiţi şi o soluţie. Formulaţi soluţia în termeni de acţiuni pe care le doriţi sau le aşteptaţi. • Aveţi rabdare ca liderul vostru să înveţe, aduceți-I aminte, încurajati-l şi recompensaţi efortul. • Dacă ceva vă place, spuneţi. Spuneţi atunci când se întâmplă. Inclusiv pentru cele mai mici succese. După ce aţi epuizat această listă luaţi lista extinsă de comportamente de leadership (menţionată mai sus) şi puneţi-o în aplicare ca şi cum aţi fi liderul liderului vostru.

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro

În cazul în care sunteti deja într-un rol de lider şi aţi simţit pe pielea voastră ce am menţionat mai sus va recomand să vorbiţi cu echipa voastră şi să le cereţi explicit să fie la rândul lor leaderi. Dacă sunteţi HR care citiţi acest articol vă recomand ca pe lânga training-urile de leadership pentru lideri să livraţi o variantă adaptată şi pentru echipe. Avem tendiţa să ne plângem şi să fim nemulţumiţi atunci când ceva nu este ok pentru noi. Din păcate plânsul şi nemulţumirea nu au rezolvat nimic niciodată. Discuţia trece de la “ce nu ne place” la “ce putem să facem să ne fie mai bine”. De ce să depunem acest efort? Pentru simplul motiv că îl aşteptăm din partea liderilor noştri şi standardele duble nu au fost niciodata sexy.


TODAY SOFTWARE MAGAZINE

management

Gogu și comunicarea

G

ogu se uită pentru a zecea mia oară la ceas. Nu e normal, nici acceptabil și în nici un caz scuzabil să întârzie cineva atât, își spuse el și, de această dată, puse mâna pe telefon. Tocmai apelase numărul, când îl văzu pe Mișu intrând, relaxat și cu zâmbetul larg întins pe fața de moroșan.

Simona Bonghez, Ph.D.

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

- No, ce te uiți așa-ncruntat? îl întrebă pe Gogu, după care, adăugă repede: Stai o țâră, că mi-s căutat... Își scoase telefonul, se uită preț de o clipă la ecran, își mută privirea spre Gogu, apoi iar la telefon și iar la Gogu. Zâmbetul făcu loc mirării: - No..., spuse și se opri, uitându-se întrebător spre Gogu: Ce-i? - Cum adică ce-i?! Lui Gogu replicile i se încălecară pe limbă și se făcură ghem, de nu mai putea ieși niciuna. Într-un târziu, cu greu, își făcură loc printre dinți și ieșiră mai mult sâsâite, ca un șuierat de șarpe: Ce-i?! Adică de ce stau ca prostu’ și mă uit la tine, de ce nu strig sau de ce nu te iau la trei păzește? Ce-i cu răbdarea mea care s-a evaporat de o jumătate de oră, sau ce-i cu rânjetul ăla lățit pe fața ta?! se ambală Gogu. - Ce-i? adică de ce mă suni?... răspunse Mișu buimac de la șuvoiul sâsâit încasat în plină față, încercând – fără succes – să înțeleagă ce se petrece. Gogu dădu să continue, dar fața lui Mișu

era atât de sincer mirată, încât îl dezarmă. Își închise telefonul și continuă, mai calm, dar tot sâsâit și apăsat: - Te rugasem să vii azi mai devreme să stabilim împreună un plan de bătaie pentru întâlnirea cu clientul. Nu doar că n-ai venit mai devreme, ai venit atât de târziu încât am ratat și întâlnirea! Aerul buimac stăruia pe fața lui Mișu. Încercă să explice: - Dar ți-am trimis e-mail încă de săptămâna trecută că azi vin mai târziu, i-am dus pe englezi să vadă noile birouri. N-am știut de întâlnirea cu cli... - Cum n-ai știut?! îi tăie vorba Gogu indignat. Vă anunțasem, pe toți, încă de vineri. Nu-ți citești e-mailurile?! - Păi, sincer... - Ce sincer? se zburlui Gogu. N-ai citit, așa-i? Mișu cumpăni o clipă înainte să răspundă. Când începu să vorbească, vocea îi era calmă, dar fermă:

www.todaysoftmag.ro | nr. 16/Octombrie, 2013

49


management Gogu și comunicarea - No, mă Gogule, aici îi de discutat. Nici tu n-ai citit e-mailul meu, așa-i? Nu l-ai citit și nici io nu l-am citit pe al tău. Noi n-am citit multe e-mailuri săptămâna trecută. Și nu numa’ noi, ci și încă câțiva. Gogu nu înțelese: - Adică cum, e un fel de grevă?! - Nu îi grevă, Gogule, ori, cel puțin, nu una conștientă. Ții minte ce ne-ai spus acu’ două săptămâni la ședința de proiect? Să punem toată echipa la CC la toate corespondențele legate de proiect? - Da, să știe toată lumea ce se întâmplă, să fim cu toții informați. Sunt foarte multe aspecte de luat în considerare și nu ne putem permite să pierdem ceva din vedere. - Aha... Și după aia a apărut problema la configurarea noilor echipamente. Știi cum s-a terminat? - Da, m-a anunțat Maria când au început instalarea licențelor. Ce-are-a face? - Te-a anunțat Maria pentru că tu nu mai citeai e-mailurile, nu-i așa? Văzând că Gogu nu mai zice nimic, continuă: Au zburat emailurile pe tema configurării până când nu le-a mai citit nimeni în afară de vreo trei care erau strict interesați. Iar tu probabil ai dat reply la vreunul dintre ele când m-ai chemat să vin mai devreme azi, nu? Sigur așa a fost, că altfel nu ratam. Și eu am anunțat vizita englezilor tot așa. Nimeni nu știa azi ca vin... Gogu prinse ideea. Într-adevăr, sărise peste e-mailurile pe același subiect, dar nu se gândise că așa vor face toți. Deși... era normal. Hmm, din dorința de a-i ține pe toți informați, de fapt doar îi supraîncărcase, iar ei s-au protejat. Și ce era să facă acum? Că doar nu putea să îi forțeze să citească emailuri... Acum își explica de ce îi scăpau și lui Șefu’ multe e-mailuri: dacă era copiat la toate, probabil că se proteja și el. Se strâmbă fără să vrea: trebuia să găsească o soluție. Și cu cât se gândea mai mult, cu atât se convingea mai mult: soluția era, în mod neașteptat pentru el, mai puțină informație, trimisă doar la cei interesați. Restul, la ședința săptămânală... Îl concedie pe Mișu cu un gest, se așeză la calculator, deschise e-mailul. Și ce de e-mailuri avea... Din reflex deschise unul să dea reply către toată echipa, dar își dădu seama imediat: Nici pe asta n-o s-o citească. Clar, trebuia o nouă abordare. Deschise un e-mail nou și scrise la subiect: Gogu recunoaște c-a greșit... Zâmbi în sinea lui: Pe ăsta o să-l citească toți...

50

nr. 16/Octombrie, 2013 | www.todaysoftmag.ro

Romanian Mobile Systems Community Conference

Mob S Cluj Napoca, 21 - 22 November 2013 Hotel Golden Tulip Ana Dome www.romobos.com

SPEAKERS Android: 21.11.2013 Sergi Almar

Enirique Lopez Manas

iOS: 22.11.2013 Kuba Brecka

Matteo Manferdini


TODAY SOFTWARE MAGAZINE


sponsori

powered by


Numarul 16 - Today Software Magazine  

Demult, în timp ce lucram la o companie multinațională, CEO-ul companiei a introdus un termen referitor la un mod de a lucra fără a face uz...

Advertisement
Read more
Read more
Similar to
Popular now
Just for you