You are on page 1of 52

No. 18 Decembrie 2013 www.todaysoftmag.ro www.todaysoftmag.

com

TSM
Ed

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

l a i c e p iie s

Inovaie i Antreprenoriat la IT Days n Cluj-Napoca Gestionarea Autentificrii n AngularJS Scrum n practic: un studiu de caz Real time web with Meteor mbuntirea continu o practic de luat n serios Testarea funcional n PHP

Interviu cu domnul primar Emil Boc Pstrarea angajailor talentai, o tem recurent n IT Cum sa menii succesul unui joc la peste 2 ani de la lansare? Extension Points Alinierea partiiilor n medii virtuale How To Web 2013

6 IT Days 2013
Ovidiu Man

30 Scrum n practic: un studiu de caz


Papp Lszl

8 How to Web 2013 a reunit comunitatea tech din Europa de Sud Est
Irina Scarlat

34 Ecosistemul startup-urilor din Cluj


Mircea Vdan i Marius Mornea

10 Interviu cu domnul primar Emil Boc


Ovidiu Man

38 SpotTune
George Platon

13 Testarea funcional n PHP


Bogdan Matei

39 CTF365
Marius Corci

17 Gestionarea autentificrii n AngularJS


Leonard Abu-Saa

41 Cum s menii succesul unui joc mai mult de doi ani de la lansare?
George Abramovici

19 Specificaii executabile
Alexandru Bolboaca i Adrian Bolboac

43 Pstrarea angajailor talentai, o tem recurent n IT


Monica Soare

21 mbuntirea Continu o practic de luat n serios


Ovidiu Dolha

45 Real time web with Meteor


Andrei Cacio

24 Alinierea partiiilor n medii virtuale


Drago Masarasan

47 Cum pot fi protejate afacerile cu aplicaii mobile?


Claudia Jelea

27 Extension Points
Radu Vunvulea

49 Interviu cu Richard Campbell (II)


Attila-Mihaly Balazs

editorial

Ovidiu Man, PMP

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

tartup-urile, un subiect la mod, fa de care companiile manifest un interes crescut, dorind s se implice n apariia noilor produse. Riscurile sunt mari pentru ambele pri, dar recompensa ce poate aprea n civa ani este o fata morgana care devine realitate. La How To Web 2013, unde am participat de curnd, unul dintre speakerii intervievai a atras atenia asupra faptului c exist un numr mare de startup-uri care aduc pe pia produse mult prea facile, crend de fapt doar o interfa grafic peste o simpl baz date. Dar ultimele produse create de startup-uri sunt foarte ncurajatoare, demonstrnd mult creativitate. Un exemplu sugestiv n acest sens este chiar produsul startup-ului castigator al ediiei How To Web din acest an: o mn complet robotizat, low cost, pentru persoanele cu dizabiliti. De asemenea, n acelai sens, trebuie s-l menionm pe Ionu Buditeanu, cel care a ctigat marele premiul al competiiei Intel ISEF cu un proiect de automobil autonom. Exemplele acestea sunt dovada c trebuie s ndrznim mai mult, c trebuie s abordm interdisciplinar realitatea, valorificndu-i conexiunile ascunse. Dac pn acum era suficient s ai o echip de programatori, acum a venit momentul n care trebuie s existe cel puin un electronist sau poate chiar un specialist n robotic n echip. Oare cum s-ar mai putea mbunti mediul domestic, cu tot confortul pe care l deinem deja? Aceasta poate s nu fie o ntrebare retoric.Gndii-v c acas avem telefoane, tablete, calculatoare care pot simula i accesa aproape orice din perspectiva unui uz caznic. Evoluia lor implic adugarea de noi senzori, putere de procesare, durat de via a bateriei i conectivitate. Nimic nou sau spectaculos. Alternativ, uitai-v n jur i numrai ci roboi avei n jurul vostru prin cas? Poate un Roomba, destul de prostu de altfel. Nu avem o platform mobil larg rspndit pe care s poat fi instalate diferite brae, senzori i care s ne fac viaa de zi de zi mai uoar. La fel avem i dronele, au devenit n ultimul timp destul de accesibile, iar n curnd vom asista la o evoluie exponenial a numrului acestora. Din pcate sau poate din fericire pentru noi, toate sunt controlate prin telecomand,iar partea de autonomie i AI nu i-a fcut simit prezena serios. Sper aadar c v-am ridicat un semn de ntrebare nainte de a decide s lucrai pentru urmtoarele ase luni la o aplicaie care i arat pe hart cea mai apropiat benzinrie sau ordoneaz task-urile n funcie de prioriti. Continum aceast pledoarie pentru inovaie i n cadrul evenimentului IT Days, eveniment organizat de revista TSM. Sperm c evenimentul va oferi reprezentanilor comunitii clujene de IT ocazia concretizrii unei abordri originale i creative, care s se transforme ntr-un reper al activitii lor. Participanii vor asista din punct de vedere al tematicilor abordate la o mbinare a subiectelor tehnice cu prezentrile de startup-uri locale, precum i cu prezentri ale proiectelor de cercetare. Pentru a afla mai multe, v invitm s citii primul articol al acestei ediii speciale a Today Software Magazine. V dorim o lectur plcut !!!

Fondator al Today Software Magazine

Ovidiu Man

nr. 18/Decembrie | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


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

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

leonard.abu-saa@arobs.com

Radu Vunvulea

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

Bogdan Matei

bogdan.matei@3pillarglobal.com Senior Php Developer @ 3Pillar Global

Copyright/Corector: Emilia Toma emilia.toma@todaysoftmag.com Traductor: Roxana Elena roxana.elena@todaysoftmag.com Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Reviewer: Adrian Lupei adrian.lupei@todaysoftmag.com

dify.ltd@gmail.com

George Abramovici
Business Manager @ King Romnia

Code Wrangler @ Udacity Trainer @ Tora Trading

Mircea Vdan mircea.vadan@gmail.com www.mirceavadan.ro www.clujstartups.com

Adrian Bolboaca

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

Drago Masarasan

dragos.masaran@endava.com

Claudia Jelea

claudia.jelea@jlaw.ro Avocat & Consilier in domeniul marcilor @ IP Boutique

Today Software Solutions SRL


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

Produs de

Support engineer @ Endava

Monica Soare
Manager @ Artwin

monica.soare@@artwinconsulting.ro

George Platon

George.Platon@catalysts.cc Software developer @ Catalyst

ISSN 2284 6352

Papp Lszl

papp.laszlo@evoline.ro Software engineer @ Evoline

Marius Corci
Co-fondator @ CTF365

marius@ctf365.com

Irina Scarlat

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

Ovidiu Dolha

ovidiu.dolha@isdc.eu Requirements engineer @ ISDC

Copyright Today Software Magazine


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

andrei.cacio@evozon.com Perl developer @ Evozon

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

eveniment

IT Days 2013

evista online clujean Today Software Magazine organizeaz n 5-6 Decembrie 2013, la Cluj Arena, evenimentul IT Days. n cadrul conferinei sunt invitai att speakeri internaionali ct i reprezentani din industria software local. n prima zi, se abordeaz teme precum inovaia i tehnologia n IT , pentru ca n cea de-a doua zi, tema principal s fie antreprenoriatul . Vom reveni n numerele urmtoare Deschiderea evenimentului o va realiza reprezentatul administraiei locale, domnul cu nregistrrile complete i cu multe primar Emil Boc, care a acceptat invitaia informaii de la aceasta prim ediie a IT noastra, manifestnd astfel susinerea Days. acestui eveniment cu implicaii pozitive n dezvoltarea oraului nostru. Acestuia i va urma Alexandru Tulai, preedintele Cluj IT Cluster, organizaia ce reunete un numr mare de companii de IT clujene. Gazda e venimentului este Dan Mircea Suciu, lector doctor la Facultatea de Matematic i Informatic din Universitatea Babes Balyai i Director of engineering la compania 3Pillar Global. Subiectele tehnice vor fi susinute de experi locali i vor acoperi o arie larg din domeniul IT: ncepnd cu arhitectura sistemelor, programare, testare, tehnologii SAP, direcii de cercetare, project management i terminnd cu design-ul adaptiv i securitatea aplicaiilor web. Evenimentul este susinut de importante companii de IT din Cluj: EBS, Arobs, Endava, Evoline, Accesa, Gemini Foundry, Skobbler, Yardi, msg systems Romania, 3Pillar Global. Detaliile complete despre eveniment se gsesc online pe www.itdays. ro.

Invitaii principali sunt: Eduardo Mendez Polo , head of IT Cloud la Telefonica Spain care va vorbi despre evoluia serviciilor cloud n viitor Tine Thygesen , CEO Everplaces Danemarca, susine o prezentare despre inovaie i startup-uri avnd tema Disruptive technologies. Voicu Oprean, CEO Arobs, are ca tem de prezentare tranziia de la outsourcing la produs. Maria Diaconu, CEO Mozaic Works, va prezenta modul n care poate fi crescuta inovaia n cadrul echipelor de dezvoltare de produselor. Mirel Borodi, director general al Trustului de Consultan Transilvnean, fondator www.multifinantare.ro, va prezenta iniiativa de crowd sourcing adresat comunitii locale. erban r, director tehnic al grupului de firme Gemini Solutions prezint o abordare practic pentru suportul startupurilor locale.

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

business

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

evenimente

How to Web 2013 a reunit comunitatea tech startups din Europa de Sud Est
ucureti, 25 noiembrie 2013 Sptmna trecuta How to Web a transformat pentru a patra oar consecutiv Bucuretiul n capitala tehnologiei din Europa de Sud-Est. Desfurat n jurul conceptului central S cretem mpreun, How to Web 2013 a adus n faa celor peste 800 de persoane din audien mai bine de 40 de vorbitori internaionali de calibru de pe 4 continente care au abordat teme precum dezvoltarea de produse inovative la scar global, valorificarea contextului local sau tehnologiile viitorului. n paralel a avut loc Startup Spotlight, competiie i program de mentorat adresat celor mai performante 32 de echipe din regiune. Prezentrile How to Web 2013 s-au desfurat n paralel pe dou scene. Astfel, pe scena principal a evenimentului, Grow Stage, au avut loc prezentri ale profesionitilor din domeniul tehnologiei la nivel mondial. Acestea s-au adresat dezvoltatorilor, designerilor i comunitilor din jurul produselor tech i au adus n discuie inovaia n tehnologie, dezvoltarea echipelor durabile, tendinele actuale n industrie sau importana design-ului pentru dezvoltarea produselor inovative. Conferina a fost deschis de Thomas Hartwig (Co-Fondator i CTO King.com), care a vorbit despre avantajele i provocrile aduse de creterea accelerat a unui startup (de la 1 la peste 100 de milioane de utilizatori n cazul specific al King) i a continuat cu prezentarea lui Mike Butcher (Senior Editor TechCrunch), care a vorbit despre cei mai puternici oameni n tehnologie la nivel european. O alt seciune a fost dedicat leciilor nvate lucrnd la distan cu echipe de cercetare-dezvoltare, subiect care a fost dezvoltat n cadrul unui panel moderat de Philipp Kandal (Co-Fondator i CTO Skobbler), din care au fcut parte Marius Jumolea (General Manager al centrului R&D Visual.ly Romania) i Michael Levit (Fondator Spigot). Cea de a doua zi a conferinei a nceput cu prezentarea lui Robin Wauters, jurnalist n tehnologie, care a vorbit despre tendinele din industrie i modul n care companiile mici din Europa inoveaz i se menin cu un pas naintea celorlalte. Evenimentul a continuat cu o discuie cu Radu Georgescu, Fondator Avangate, care a vorbit despre deciziile strategice pe care le-a luat n dezvoltarea companiei, de la idee pn la exit. David Bizer ( C E O Ta l e n t Fountain), a prezentat leciile nvate din lansarea, dezvoltarea i nchiderea HackFwd, iar instrumentele adresate dezvoltatorilor au fost aduse n discuie de Martyn Davies (Developer Evangelist SendGrid), Jamie Hannaford (Software Developer Rackspace) i Michal Wawra (Developer Evangelist Twilio), n cadrul unui panel moderat de Ivan Brezak Brkan (Netocratica). Christopher Martin (Senior Manager Bosch) a abordat dificultile dezvoltrii unui produs tech de calitate, iar Vitaly Golomb (Fondator i CEO Keen Systems) a prezentat motivele pentru care nimic nu este mai important dect designul unui produs. Pe parcursul celor dou zile ale evenimentului, pe scena principal a How to Web au urcat profesioniti importani ai industriei printre care se numr Paul Ford (CIO Softlayer), Alex Hunter (CEO Rushmore. fm), Philipp Kandal (Co-Fondator i CTO Skobbler), Marco Cecconi (Software Engineer Stack Exchange), Simon Stewart (Software Engineer, Facebook), Matt Clayton (Co-Fondator i CTO Mixcloud)

sau tefan Szakal (Fondator X3 i [e-spres-oh]). Ignite Stage, cea de a doua scen a conferinei, a gzduit paneluri care au abordate subiecte specifice startup-urilor: bune practici pentru un startup care trece printrun program de accelerare; cum s dezvoli echipa potrivit; cum s atragi investiii; cum s colaborezi cu i s nvei de la mentori, investitori i clieni; greeli frecvente pe care le fac fondatorii. Acestea au fost abordate de cei peste 25 de investitori, reprezentani ai acceleratoarelor i fondurilor de investiii prezeni la eveniment. Adresat tuturor celor care i dezvolt propriul startup sau care se pregtesc de acest pas, scena Ignite a avut drept principali beneficiari cele 32 de echipe finaliste ale programului Startup Spotlight. Echipele au fost evaluate de un juriu de specialitate care a urmrit criterii precum echipa i experiena acesteia, dimensiunea pieei, scalabilitatea, traciunea, sau

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

posibilitatea de a participa la un eveniment Seedcamp, infrastructur c l o u d of e r it de Rackspace, conturi premium Evernote, produse oferite de F6S i acces direct la Romanian Innovation fezabilitatea produselor dezvoltate. Smart Hand, startup din Bulgaria care dezvolt o mn prostetic mioelectric pentru persoanele cu dizabiliti, a fost desemnat ctigtorul competiiei Startup Spotlight. Echipa clasat pe locul II a fost Synetiq, aplicaie care ofer companiilor informaii utile despre clienii acestora, iar Wyliodrin, startup care propune o metod simpl de dezvoltare web pentru servicii ncorporate, a primit IXIA Innovation Award. Premiul pentru cea mai bun prezentare a fost acordat echipei de la Data Maid, instrument pentru crearea i publicarea de coninut media bogat. Finalitii competiiei au primit premii n valoare total de 20.000 USD oferite de IXIA, partener principal al How to Web Startup Spotlight. Pe lng premiile n bani, echipele finaliste au primit i alte premii valoroase oferite de partenerii programului: acces la platforma Microsoft Azure, infrastructur gratuit i mentorat n cadrul programului pentru startup-uri Software Catalyst, office hours cu Jon Bradford (Managing Director al programului de accelerare TechStars), 3 ore de consiliere juridic oferite de Biri Goran, posibilitatea de a-i prezenta produsele n cadrul Startup Bootcamp, acces la workshop-ul Hub:raum din Cracovia, Commercialization Program (RICAP). Am nceput How to Web cu o prim ediie n 2009, n Politehnica Bucureti, i l-am continuat cu o prim ediie internaional n 2010. An de an, How to Web a crescut ca numr de participani dar, i mai important, s-a maturizat din punct de vedere al structurii agendei i al obiectivelor pe care i le propune. How to Web nu a fost niciodat doar o conferin ne-am dorit mereu s-l facem un instrument util, practic, cu rezultate msurabile pentru cei care i trec pragul. Ne bucurm c am reuit s ne atingem obiectivele i de aceast dat, iar lista de poveti de succes confirm acest lucru, a declarat Bogdan Iordache, Co-Fondator i CEO How to Web. How to Web 2013 a fost dezvoltat cu sprijinul IXIA, X3, Bitdefender, CyberGhost, SoftLayer, Enterprise Ireland, Avangate, Microsoft, Hubraum, PayMill, Twilio, Biris Goran i Banca Comercial Romn i a avut loc pe 20 i 21 noiembrie la Crystal Pallace Ballrooms n Bucureti. Mediatizarea evenimentului a fost asigurat de parterii media principali Prove PR, Digi TV, Adevrul, Forbes Romnia, Capital, Wall-Street.ro, Evenimentul Zilei, DAS Cloud, Revista Cariere, Ct r l - D, s t ar tup s . ro i Entrepreneur. bg, si de partenerii media Economy.bg, Newtrend.bg, Digjitale, IT D ogadj aji, CEE Startups, Invendor.hu, Goal Europe, Times New Roman, Akcees, IQ Ads, C omputer Wor l d , P C Wor l d , Ag or a , I T Tre n d s ,

Business Cover, Tech Cover, Business Woman, Gadget & Trends, Comunicaii mobile, Market Watch, Business Review, Manager Express, Romnia Liber, Comunicatedepres.ro, Zelist, Ejobs, Softlead, Ziare.com, Business24, Romanian Startups i Today Software Magazine.

Irina Scarlat

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

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

evenimente

Interviu cu domnul primar Emil Boc


Cluj - centru al inovaiei

Industria de IT local este n continu cretere, spunei-ne cum sprijin Primria Cluj-Napoca acest domeniu? n aceast perioad lucrm la definitivarea Strategiei Municipiului pentru 2014-2020, iar industria IT este o component esenial a procesului. Am urmrit s implicm n proces specialiti din ntreaga comunitate, pe fiecare component, de la educaie la antreprenoriat i inovaie. Corelarea studiilor preuniversitare i universitare cu cerinele pieei este doar un aspect care va avea un impact semnificativ n dezvoltarea industriei. Cei interesai pot afla mai multe despre direciile principale ale strategiei pe site-ul cmpg.ro. Cluj-Napoca s-a definit n ultimii ani ca un ora al serviciilor i se poziioneaz din ce n ce mai puternic pe harta Europei ca un centru cultural i ca un centru al inovaiei. Am ncredere c, avnd strategia potrivit i sprijinul comunitii, vom depi Bucuretiul n mai multe domenii, n primul rnd n IT. Oraul nostru are potenialul de a fi cu adevrat un smart city al Europei, iar la Primria ClujNapoca, avnd acest obiectiv, urmrim

omnul primar Emil Boc a avut amabilitatea s ne rspund la cteva ntrebri referitoare la susinerea IT-ului clujean, modul n care comunitatea local a programatorilor se poate implica i proiectul de susinere a startup-urilor locale s implementm soluii smart, etapizat, pe fiecare direcie - de la transport n comun la plata taxelor i impozitelor. Avem totodat proiecte majore, menionez aici Cluj Innovation City, pe care le sprijinim cu toat convingerea, lucrnd alturi de reprezentanii industriei pentru a gsi cele mai bune soluii pentru ca aceste proiecte s devin realitate. Credem c muli programatori ar fi interesai s scrie aplicaii bazate pe o platform care le-ar putea da acces la informaii n timp real. Ne referim la datele de trafic, poziia sau timpul estimat de a ajunge n staie a mijloacelor de transport n comun, nivelul de poluare etc. . Astfel s-ar crea cu un efort minim posibilitatea de a dezvolta aplicaii folositoare pentru clujeni prin intermediul direct al programatorilor locali. Credei c este posibil n viitor acest lucru ? Suntem deschii la orice iniiativ care ar putea mbuni viaa de zi cu zi a cetenilor i procesele de lucru ale instituiei, ceea ce, pn la urm, va fi

tot spre beneficiul fiecrui clujean. Sunt aspecte n care am primit deja propuneri prin intermediul grupurilor care elaboreaz Strategia Municipiului. Sunt mai multe domenii n care s-ar putea ncepe chiar acum dezvoltarea de aplicaii i m-ar bucura ca ideile i punerea lor n practic s vin de la comunitate. i invit aadar pe toi cei interesai s ne contacteze, pentru c Serviciul Strategii de informatizare al Primriei v st la dispoziie. Clujul este un ora cu muli vizitatori, avei n considerarea crearea unei reele wireless gratuit la nivelul centrului oraului? tim c exist ceva asemntor n Parcul Mare, iar aceasta poate crea un

10

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


impact pozitiv n special pentru cei vizitatorii strini. ntr-adevr, exist o reea wireless funcional, ns am fost precaui n ceea ce privete extinderea ei, n principal din motive de securitate. Cluj-Napoca va fi Capital European a Tineretului n anul 2015 i candidm pentru titlul de Capital Cultural European. Astfel c ne ateptm la o cretere semnificativ a numrului de vizitatori i ne pregtim n acest sens. Avem ns o responsabilitate major ca municipalitate de a asigura securitatea i confidenialitatea datelor, o problem dac vorbim n special de reele publice cu acces gratuit. Vom discuta cu experi din domeniu i vom vedea care sunt cele mai bune soluii. Exist proiecte n care Primria Cluj are nevoie de voluntari IT ? Da, Primria Cluj-Napoca este ntr-un proces de informatizare a activitii - avem deja rezultate ncurajatoare, avem nevoie de sprijin, astfel c m-a bucura s avem tinerii care activeaz n industria IT clujean implicai alturi de noi n implementarea acestor schimbri. Recomand tinerilor interesai s ne dea un e-mail pe adresa serviciului specializat - informatica@primariaclujnapoca.ro - n urma cruia vor primi mai multe informaii. tim c este n derulare n zona Lombului un proiect pentru suportul startup-urilor locale. Ne putei spune mai multe cuvinte despre acesta? Centrul pentru Industrii Creative va oferi companiilor oportunitatea de a-i desfura activitatea ntr-o structur unic la nivel regional datorit complexitii i diversitii facilitilor i serviciilor. Centrul va oferi servicii integrate pentru afaceri, servicii de asisten gratuit (tip help desk) oferite de personalul structurii de sprijinire a afacerilor n urmtoarele domenii: consultan i servicii IT, consultan juridic, n marketing i vnzri. Proiectarea ntregii structuri este una dinamic, fiind creat pe o baz participativ, rspunznd astfel nevoilor reale ale potenialilor clieni, n termeni de amplasare, funciuni, suprafee, servicii, parcri, dotare i echipare. Avem n vedere producerea unui efect de cluster care va permite creterea competitivitii companiilor gzduite prin schimbul de informaii, facilitarea parteneriatelor de afaceri, economiile realizate prin utilizarea n comun a unor spaii i echipamente. Centrul vine n sprijinul necesitii firmelor de a fi la curent cu ultimele evoluii tehnologice, prin crearea unui corp consultativ alctuit inclusiv din reprezentani ai mediului academic. Acetia vor putea comunica cu reprezentanii firmelor care activeaz n domeniul industriilor creative, n funcie de specificul fiecrei companii.

Ovidiu Man, PMP

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

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

11

comuniti

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

ecembrie vine cu surprinztor de multe evenimente nainte de srbtorile de iarn. V invitm sa participai la ele iar recomandarea noastr este IT Days pentru cei din Transilvania i nu numai.

Calendar
Decembrie 4 (Cluj) Lansarea numrului 18 al Today Software Magazine www.todaysoftmag.ro Decembrie 4 (Cluj) An introduction to web application security with Simon Bennetts 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/152638932/ Decembrie 5-6 (Cluj) IT Days - recomandarea TSM www.itdays.ro Decembrie 7 (Cluj) Android Workshop 1 it-events.ro/events/android-workshop-1/ Decembrie 7-8 (Iai) Winter Web Workshop it-events.ro/events/winter-web-workshop/ Decembrie 10 (Cluj) UI/UX Cluj Meetup #2 www.meetup.com/UXUICluj/events/150664862/ Decembrie 10 (Cluj) How to make smartphone hits with Bart Decrem, Senior VP @ Walt Disney it-events.ro/events/make-smartphone-hits-bart-decremsenior-vp-walt-disney/ Decembrie 14 (Cluj) Global Day of Coderetreat 2013 - Cluj Napoca www.meetup.com/cluj-rb/events/149860962/ Decembrie 14-16 (Bucure;ti) Talks by Softbinator #30 it-events.ro/events/talks-softbinator-30/ Decembrie 22 (Braov) Braov Tech Meetup: December Meet it-events.ro/events/brasov-tech-meetup-december-meet/

12

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Testarea funcional n PHP


n 1999 se afirmau principiile de Extreme programming, iar patru ani mai trziu Kent Beck a reformulat conceptele n aa numitul Test Driven Development. n acelai an Dan North ncerca s rspndeasc principiile TDD, dar se lovea frecvent de aceleai ntrebri: n ce faz s nceap scrierea de cod?, Ce trebuie testat mai exact? i Care s fie structura testelor i cum s se numeasc ele?. Atunci el a avut inspiraia s propun ideea testrii de comportament sau testarea funcional i astfel s-a nscut Behaviour Driven Development - o paradigm care i propune o testare din perspectiva utilizatorului.De la concept la implementare n diferite limbaje n-a mai fost dect un mic pas. n PHP conceptul BDD a cunoscut dou forme: SpecBDD - care se concentreaz pe comportamentul tehnic al codului- i mult mai popularul, StoryBDD - care pune accentul pe comportamentul de business/trstur. Astfel, pentru SpecBDD se scriu specificaii despre cum s se comporte codul, iar pentru StoryBDD se scriu poveti (story-uri) despre cum ar trebui s se comporte aplicaia, folosind un limbaj foarte apropiat de cel uman, numit Gherkin. Framework- urile venite s ajute aceste activiti au devenit PHPSpec pentru SpecBDD i Behat pentru StoryBDD, acesta din urm fiind un proiect inspirat de Cucumber din Ruby. Articolul de fa este dedicat formei StoryBDD i vine s prezinte aspecte tehnice de organizare a testrii funcionale pentru proiecte web, n vederea automatizrii acesteia. Ca s testm exact din perspectiva clientului ar presupune, n condiii ideale, s avem acelai tip de browser, s efectum n aplicaie acelai comportament ca al su i s analizm totodat rezultatele aciunilor noastre, dac corespund unor ateptri de business corecte. n condiii inferioare celor ideale, din mai multe motive, s-ar putea totui s ne mulumim mcar cu o testare server-side, renunnd parial sau complet la facilitile browser-ului. Punerea n aplicare a unui astfel de mediu de testare BDD presupune urmtoarele etape: instalarea tool-urilor, configurarea mediului, scrierea de story-uri, extinderea limbajului, compararea datelor, execuia si raportarea. Este prima etap i, din pcate, de obicei risc s fie cea mai frustrant. Pentru c am menionat tool-uri, excepie PHP care se subnelege (versiunea minim 5.3), suita este compus din: a. un interpretor de limbaj Gherkin, care s traduc povetile umane n aciuni main: Behat; b. un set de metode care s produc aciuni n browser: Mink cu driver-ele sale i MinkExtension; c. o soluie de a comunica cu browser-ul (proxy-uri), transmindu-i instruciunile de mai sus i citind rspunsul: Sahi (superior, mai ales versiunea Pro) sau Selenium2 (necesit JRE instalat); d. o soluie de a compara rspunsul de la browser cu ateptrile corecte, dar care s permit includerea ntr-un proces de testare automat: PHPUnit; e. i bineneles browse r-e. La acest punct testarea de diferite versiuni de Internet Explorer adaug complexitate

Bogdan Matei

bogdan.matei@3pillarglobal.com Senior Php Developer @ 3Pillar Global

Instalarea

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

13

programare
Testarea funcional n PHP
sunt necesare configurri speciale suplimentar, prin faptul c nu pot php bin/behat --init pentru https, ntruct invitaia certifiexista mai multe versiuni de IE pe aceeai catului face imposibile testele, iar acest main. n acest moment practic suntem gata lucru depinde de proxy-ul utilizat; scoDiagrama de interaciune i instalare a de utilizare a unui cadru BDD minimalist, pul final este ca browser-ul s cunoasc componentelor este urmtoarea: ns n practic cerinele se extind la: adresa https i certificatul s fie deja p o s i bi l it at e a d e a r u l a t e s t e instalat; funcionale n atunci cnd ne aflm n imposibilitabrowser-e specifice; tea de a utiliza browser-e comune (spre rularea tesexemplu ne aflm pe un server cu mod telor n mediul text), se poate testa funcional inclus e r v e r- si d e, c nd siv codul Javascript folosind browser-ul browser -ele lipsesc PhantomJS; ntruct Mink nu are drisau nu este nevoie de ver pentru acesta, utilizarea lui se ele; poate face printr-un proxy. Pentru Sahi necesitatea browser-ul PhantomJS trebuie adugat la de a avea rapoarte configurri; ser ver-side dup atunci cnd proiectul este mare, ceea e x e c u i a t e s t e l or ce implic multe teste, este mai bun, n funcionale; Behat versiunea 2, o organizare cu mai intervenia minim n procesul Procesul de instalare permite mai multe multe template-uri de behat.yml, pentru de configurare, pentru o mentenan variante. Dac Sahi vine cu un installer fiecare browser, iar la nivel de profile s uoar. vizual, este mai uor ca celelalte compofie testarea trsturilor individuale ale Majoritatea acestor cerine se ndenente s fie instalate mpreun, folosind aplicaiei. Composer. Se editeaz un fiier text, com- plinesc prin realizarea unui fiier behat. yml cu profile specifice, cel implicit fiind poser.json, cu urmtorul coninut JSON: profilul Mink de baz, server-side, care nu Structura testelor { require: { permite interpretarea de Javascript: behat/behat: 2.4.*@stable, Dan North a mai venit cu o realizare behat/mink: 1.4.*@stable, default: nsemnat: el a simplificat structura testebehat/mink-extension: *, extensions: behat/mink-goutte-driver: *, Behat\MinkExtension\Extension: lor clasice de la patru faze (setup, executare, behat/mink-selenium2-driver: base_url: https://www.site.com/ 1.0.*, goutte: verificare, teardown) la trei, i anume behat/mink-sahi-driver: 1.0.*, guzzle_parameters: phpunit/phpunit: 3.7.* ssl.certificate_authority: Given, When, Then . Acestea au devenit }, false minimum-stability: dev, filters: cuvinte cheie care semnific actorul, conconfig: { tags: ~@javascript bin-dir: bin/ textul (procesul) i rezultatele aciunilor. } chrome_selenium: } extensions: Testele sunt organizate n storyBehat\MinkExtension\Extension: base_url: http://www.site.com / uri sau suite, care prezint un titlu i o se aduce i se demareaz instalarea ntregii javascript_session: selenium2 default_session: selenium2 descriere. Fiecare story cuprinde unul suite definite mai sus: browser_name: chrome selenium2: sau mai multe scenarii. Un scenariu este o curl http://getcomposer.org/installer | php wd_host: 127.0.0.1:4444/wd/hub php composer.phar install capabilities: { browser: compoziie ordonat de mai muli pai de chrome, version: 24} testare (steps). Fiecare pas reprezint n Operaiile de instalare pot dura cteva firefox_sahi: extensions: limbaj Gherkin o aciune. Cum tie calminute, dar la final rezultatul este un folBehat\MinkExtension\Extension: base_url: http://www.site.com/ culatorul ce s execute la ntlnirea unui der vendor/ care conine dependenele default_session: sahi javascript_session: sahi pas Gherkin? este o ntrebare care i afl proiectului. browser_name: firefox sahi: rspunsul printr-un dicionar, nimic mai n aceast etap sunt utile cteva host: localhost port: 9999 mult dect o tabel de asociere injectiv de meniuni speciale: filters: tags: @javascript la limbaj spre metode PHP. pentru o organizare fr modificri phantomjs_sahi: Behat vine implicit cu un dicionar de n afara directorului de proiect nu se extensions: Behat\MinkExtension\Extension: baz. Pentru aflarea acestuia, cu detalii sau recomand includerea executabilulului base_url: https://www.site.com/ javascript_session: sahi fr, se pot folosi comenzile : bin/behat n lista comenzilor cunosbrowser_name: phantomjs goutte: ~ cute, ci lansarea executabilui prin calea sahi: ~ php bin/behat -di filters: php bin/behat -dl complet sau relativ la directorul de tags: @javascript proiect; Extinderea dicionarului este simpl este bine de creat un folder dedicat Ultima parte a configurrii se refer la i n acest sens Behat ajut prin indicarea rapoartelor. unui prototip de metod PHP pentru fiebrowser-e: se recomand efectuarea configur- care fraz Gherkin pe care nu o cunoate. rilor de proxy server, corespunztoare Metoda va trebui implementat n cadrul Congurarea Sahi sau Selenium2. Aceast operaiune contextului. Imediat dup instalare este necePersistena story-urilor pe disc se reaaproape c leag exclusiv browser-ele de sar configurarea mediului de testare testarea funcional, funcia de navigator lizeaz ca fiiere text, cu extensia .feature. funcional. fiind obstrucionat de proxy-uri - de Pentru proiectele mari se poate realiza o Pentru acest lucru se iniializeaz aceea se impune un mediu dedicat pen- structur logic cu directoare imbricate, (prima i o singura dat pe proiect) mediul dar aceasta presupune c suitele vor trebui tru testarea funcional; Behat, prin comanda:

14

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


principal, compus din definiia unei clase care deriv, n principal (ntruct exist i alte clase de context, dar sunt particulare), din BehatContext sau MinkContext. Diferena dintre cele dou clase de baz este c MinkContext aduce n plus funcionalitatea de sesiune, iar BehatContext ofer o funcionalitate implicit minimal. Contextul principal poate avea subcontexte i astfel se rezolv problema unui dicionar care poate deveni foarte mare pentru un singur fiier. Pentru extinderea dicionarului trebuie realizat o coresponden ntre pasul din story i metoda necesar a fi implementat n context. Implementarea este precedat de adnotrile speciale @Given, @ When, @Then, urmate de o expresie reguSpre exemplificare, structura unui lat, care, dac este ndeplinit, declaneaz apelul metodei respective: story devine: rulate individual, ntruct, implicit, dac nu este specificat, Behat execut toate fiierele *.feature din folder-ul features/, dar nu recursiv. Referitor la story-uri se impun urmtoarele meniuni: nu pot exista dependene ntre story-uri; implicit scenariile sunt complet independente, iar dac sunt necesare persistene de date ntre acestea , se impune programare special; se recomand folosirea tag-urilor, n special a celor care mpart scenariile n dou categorii: necesit sau nu Javascript (pentru Javascript tag-ul este @Javascript i se poate insera deasupra titlului story-ului sau la fiecare scenariu).
# Content of file Login.feature Feature: User makes login As a user I want to do login So that I can see my dashboard @Javascript Scenario: Login with correct credentials Given I am in the /login page When I fill myusername And I fill mypassword And I click Login Then I should see Welcome Username! Scenario: Login with bad credentials Given I am in the login page When I fill bad username And I fill bad password And I click Login Then I should see Invalid credentials new Step\Given(I have entered \$number\), new Step\When(I press +), new Step\Then(I should see \$result\ on the screen) ); }

Mai sus scriam despre dicionar c este conceput ca o tabel care traduce Gherkin n metode PHP. Dac Gherkin este descris n fiiere features/*.feature, metodele sunt organizate n aa-numitele fiiere de context, localizate implicit la features/ bootstrap/*.php. Exist un singur fiier de context

Structura ierelor de context

De asemenea, se poate injecta cod Javascript direct n browser sau se pot apela funcii specifice proxy-lui utilizat. Este uor de anticipat c pentru proiecte mari, atunci cnd exist un singur fiier de context principal, acesta risc s cuprind multe definiii i s devin greu de gestionat, mai ales c expresiile regulate trebuie s fie injective inclusiv la utilizarea sub-contextelor. n Behat versiunea 2 (singura stabil n acest moment) ,proiectele mari au urmtoarele alternative de organizare: utilizarea profilelor, din fiierul behat.yml, i pentru fiecare profil se poate utiliza proprietatea cheie class sau mpreun proprietile features si /** * Some function description bootstrap; acest lucru necesit atenie * * @Given /I am (\w+ user)/ la setup-ul profilelor (numele trebuie s * @Given /I am user:/ */ fie unice); public function iAmUser(User $user) { $this->user = $user; } utilizarea sub-contextelor; contextul principal poate ncrca contexte copil, Funcia poate avea orice nume, exprefiecare cu sesiune individual sau partasia regulat este cea determinant. Aceeai jat de la contextul parinte. funcie poate avea mai multe adnotri, cum se vede mai sus, important fiind c relaia Versiunea Behat 3, n curs de dezvolregex-funcie s fie injectiv, altfel survine o eroare. De asemenea este recomandat tare, va aduce posibilitatea de organizare s fie scris i o descriere-titlu a funciei, feature-context. Mai departe, Behat ofer i posibilitacare va fi vizibil la afiarea detaliat a tea de a avea aciuni automate, rulate prin dicionarului. intermediul hook-urilor: nainte sau dup rularea testelor n corpul unei funcii se poate scrie limfuncionale (tag-ul @BeforeSuite); baj Gherkin, realizndu-se un pas complex: nainte sau dup un story (tag-ul @ /** * @Given /I entered ([^]*) and expect BeforeStory); ([^]*)/ */ nainte sau dup un scenariu (tag-ul public function complexStep($number, $result) { @BeforeScenario). return array(
Our core competencies include:

Product Strategy

Product Development

Product Support

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

www.3pillarglobal.com

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

15

programare
Testarea funcional n PHP
pot fi folosite mai multe fiiere behat.yml); f isier u l .fe ature dorit; dac se dorete sau nu scrierea de rapoarte i n ce format:

Acestea sunt utile pentru operaiunile de conectare la baza de date, pentru pregtiri de teste sau curri i raportare. Figura alturat prezint etapele de execuie ale acestor operaii, intercalate n faza de rulare a fiierelor *.feature. Se poate ntmpla ca anumite site-uri s php bin/behat --config behat. yml features/test.feature se ncarce mai greu i din acest motiv tes- profile firefox_sahi --format html --out behat-reports/Retele funcionale s invalideze. n acest sens port.html sunt utile spin urile, care au rolul de a Rapoartele XML pot testa prelungit un anumit step, nainte ca fi analizate automat, iar rapoartele HTML sunt foarte uor de citit: n cazul testelor n browser este necesar ca proxy-ul s fie instalat pe aceeai main unde se afl browserul, s fie pornit, iar browser-ul s aib setrile de proxy deja configurate. Mink va transmite comenzile la adresa proxy-ului specificat n behat.yml , proxy -ul va deschide browser-ul local, ns rapoartele i rezultatele testelor se desfoar pe maina unde s-a rulat linia de comand. Acest lucru permite utilizarea mainilor virtuale, cu diferite instane de browser -e (de obicei cerute de Internet Explorer), maini care la acesta s invalideze rapid. rndul lor pot fi controlate prin utilizarea script-urilor. Condiia este ca serverul de Vericarea datelor n cadrul fiierlor de context, n corpul test s aib mod grafic i o soluie de virtufunciilor, att celor implicite ct i celor alizare (VMWare, VirtualBox etc.). dezvoltate ulterior, intervine operaia de comparare ntre rezultatul ntlnit i rezul- Testarea funcional independent tatul ateptat. Util n acest sens este librria Un caz destul de frecvent este cerina PHPUnit care vine cu o larg varietate de de a implementa testri funcionale comoperaiuni de comparare care valideaz sau plet independent de proiect. Acest lucru nu rularea testelor. presupune crearea unui proiect pentru Folosirea PHPUnit aduce avantajele testele funcionale, care s permit o strucintegrrii mature cu mediile de Continuous tur flexibil de extindere pe orizontal, Integration/Delivery i utilizarea unui cod mai ales cnd portalul web are dimensiuni existent. Mink are deja funcii de com- mari. Extinderea presupune trei sau patru parare derivate din PHPUnit, dar pentru dificulti: folosirea tuturor funciilor PHPUnit este structura pe disc a fiierelor .feature; necesar importul: structura fiierelor de context i decizia de organizare a testelor pe profile require_once PHPUnit/Autoload.php; require_once PHPUnit/Framework/Assert/Func(mai eficient i mai uor de intreinut, tions.php; cel mai bine cu template-uri de behat.yml n contextul principal. specifice unui tip de browser) sau pe subcontexte (n acest caz nu se recomand Rularea testelor folosirea funciilor magice); Execuia testelor funcionale presu modul de obinere al setului de date pune rularea unei linii de comand n care cunoscute; se specific: opional, mai ales n cadrul pro profilul ales din behat.yml (util mai iectelor n care structura DOM a ales cnd avem feature-uri mprite pe HTML-ului nu permite acionarea facil profil) ; a elementelor (spre exemplu avem lipsa locaia relativ a behat.yml (deci proprietilor id, name, class la elementele HTML), este necesar identificarea programatic a elementelor de pe UI (de obicei folosind Xpath locators); cnd numrul acestora crete considerabil, este necesar o structura favorabil de persisten, aflat n relaie cu setul de date cunoscute. Pentru o mai bun organizare i pentru c de multe ori QA-ul nu cunoate modul de stabilire al datelor corecte, este mai bine ca setul de date cunoscute s fie pstrat n cadrul proiectulului printe, iar ntre acesta i proiectul de testare funcional s se poat stabili o metod de comunicare (REST, http, baz de date comun etc.), prin care se poate interoga valoarea corect pentru un element funcional specific. Testarea funcional reprezint apogeul actual al testelor efectuate din perspectiva utilizatorului. O intuiie sau o reproducere a comportamentului acestuia i a contextului acestuia (browser) asigur un nivel excelent de calitate a produsului software. Menirea pricipal a testelor funcionale o reprezint analiza comportamental i contextual, ns ele pot fi extinse i la anumite analize de performan sau securitate.

Concluzii

16

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Gestionarea autenticrii n AngularJS


utentificarea este procesul de identificare a unui utilizator care dorete s acceseze o resurs protejat. Folosim procesul de autentificare n viaa cotidian: cri de identitate, nume de utilizator, parole, carduri de acces etc. . Procesul care urmeaz se numete autorizare, ambele sunt n strns conexiune i, uneori, confundate. Prin autorizare verificm drepturile utilizatorilor pentru a vedea dac au sau nu acces la o resurs specific, dup ce s-au autentificat. n orice caz, nu confundai noiunile: autorizarea nu poate exista fr autentificare. n articolul de fa vom analiza procesul de identificare a utilizatorului folosind AngularJS.

Leonard Abu-Saa
System Architect @ Arobs

leonard.abu-saa@arobs.com

Atenie!
Nu uitai c toate aciunile au loc n browser-ul clientului, ceea ce nseamn c acesta are control deplin asupra browser-ului i poate evita controalele de securitate. De aceea este foarte important s verificm i n back-end.

Urmtorii pai sunt recunoaterea utilizatorului autentificat i verificarea accesului acestuia la rute.

Acest lucru se poate face n multiple moduri, dar preferm folosirea de servicii n AngularJS. De aceea am creat un UserService n care am stocat numele de utilizator actual Congurarea rutrii clientului Aici vom selecta paginile care vor i o valoare care indic dac utilizatorul este avea nevoie de autentificare i vom confi- autentificat sau nu. gura rutarea aplicaiei. O rut se definete // in UserService.js furniznd cel puin template-ul sau temmyApp.factory(userService, function () { plateUrl-ul i controller-ul paginii. n plus, var user = { isLogged: false, am adugat proprietatea access cu atributul username: , }; allowAnonymous . n acest fel tim dac var reset = function() { ruta actual necesit autentificare sau este o user.isLogged = false; user.username = ; pagin cu acces nerestricionat. n exemplele }; de mai jos avem pagina Login care este accereturn { user: user, sibil oricui i pagina MembersPage care reset : reset }; necesit autentificare. });
// in app.js var myApp = angular.module(myApp,[ngResource, ngCookies, ngRoute]); myApp.config(function ($httpProvider, $routeProvider) { window.routes = { /Login: { templateUrl: /Account/Login, controller: AccountController, access : {allowAnonymous : true} }, /MembersPage: { templateUrl: /Home/SomePage, controller: SomePageController, access: {allowAnonymous:false}}}; for (var path in window.routes) { $routeProvider.when(path, window. routes[path]); } $routeProvider.otherwise({ redirectTo: / Login }); });

Recunoaterea unui utilizator autenticat

Dup ce am configurat serviciul, este timpul s l folosim i s implementm funcionalitatea de verificare a rutei. n cazul schimbrii rutei exist mai multe metode de interceptare, dar pe noi ne intereseaz doar schimbarea care are loc nainte ca utilizatorul s fie redirecionat pentru a putea verifica dac este autentificat: $routeChangeStart, $locationChangeStart. Prin aceste metode putem verifica dac ruta accesat permite accesul unui utilizator neautentificat. n caz de eroare putem afia un mesaj de eroare i

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

17

programare

Gestionarea autenticrii n AngularJS

s-l redirecionm pe utilizator nspre pagina de logare.


// in RootController.js myApp.controller(RootController, function ($scope, $route, $routeParams, $location, $rootScope, authenticationService, userService, toaster) { $scope.user = userService.user; $scope.$on($routeChangeStart, function (e, next, current) { if (next.access != undefined && !next.access.allowAnonymous && !$scope.user.isLogged) { $location.path(/Login); } }); $scope.logout = function () { authenticationService.logout() .success(function (response) { userService.reset(); toaster.pop(info, You are logged out., ); }); }; $rootScope.$on($locationChangeStart, function (event, next, current) { for (var i in window.routes) { if (next.indexOf(i) != -1) { if (!window.routes[i].access.allowAnonymous && !userService.user. isLogged) { toaster.pop(error, You are not logged in!, ); $location.path(/Login); } } } }); });

Acest serviciu ofer o modalitate de a comunica cu serverul i stabilete statusul de autentificare. n acest moment ne intereseaz metodele de login/logout. Pe partea de back-end se folosete un serviciu de Web API service. Metoda de login este un post request care transmite datele de logare consistnd din numele de utilizator i parol. V rog s observai c RequestVerificationToken este folosit pentru a se evita cross-site request forgery attacks.
//in AuthenticationService.js myApp.factory(authenticationService, function ($http, $log, $location) { return { login: function (login, antiForgeryToken) { return $http({ method: POST, url: /api/Account/AuthenticateUser, data: login, headers: { RequestVerificationToken: antiForgeryToken } }); }, logout: function () { return $http.post(/api/Account/Logout); } }; });

Authentication Service

click=login(userData, loginForm)>Login</button> </form> </div>

Asamblare datelor Singurul lucru care mai rmne de fcut este crearea unei forme care s adune informaiile de logare i un controler n care s putem folosi mpreun serviciile de autentificare i de utilizator. O form foarte simplificat de Login arat ca n exemplul de mai jos.
//in Login.cshtml @model Model.LoginModel @{ Layout = null; } @functions { private String GetAntiForgeryToken() { string cookieToken, formToken; AntiForgery.GetTokens(null, out cookieToken, out formToken); return cookieToken + : + formToken; } } <div class=container> <form name=loginForm class=form-signin> <input id=antiForgeryToken data-ng-model=antiForgeryToken data-ng-init=antiForgeryToken=@GetAntiForgeryToken() type=hidden/> <h2 class=form-signin-heading>Authentication</h2> <br /> <input type=email required=required name=username class=formcontrol ng-model=userData.username placeholder=Email address /> <input type=password required name=password class=form-control ng-model=userData.password placeholder=Password /> <label class=checkbox> <input type=checkbox value=remember-me>Remember me</label> <button type=submit class=btn btn-lg btn-primary btn-block ng-

When the user clicks login button, the form data is sent to the account controller. Using the authentication service, the data is sent in a POST request. In case of success we use the user service to store the data and redirect the user to the desired page, otherwise we show an error message and keep the user on the login page.
// in AccountController.js myApp.controller(AccountController, function AccountController($scope, $cookies, $log, $location, authenticationService, toaster, userService) { $scope.login = function (userData, loginForm) { if (loginForm.$valid) { authenticationService.login(userData, $scope.antiForgeryToken) .success(function (response) { if (response.status) { userService.user.username = response.data.userName; userService.user.isLogged = response.data.isLogged; toaster.pop(success, You are signed in!, , 2000, true); $location.path(/MembersPage); } else { toaster.pop(error, Invalid username or password!, , 2000, true);} }).error(function (data, status, headers, config) { $log.info(data);});} }; });

Acestea sunt lucrurile de care este nevoie pentru a implementa o autentificare rudimentar cu AngularJS.

18

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

arhitectur

Specicaii executabile

Alexandru Bolboaca

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

pecificaiile executabile sunt o modalitate de a folosi testele automate cu scopul de a documenta funcionalitile unei aplicaii. Testele automate sunt tot mai utilizate n industria software cu scopul de a valida funcionarea corect a unei aplicaii. Validarea funcionrii corecte implic evident i un dialog cu persoanele care formuleaz cerinele (analiti business, product owners, product managers, ali stakeholders) i testele automate nu ne scutesc de documentarea cazurilor de utilizare ale aplicaiei. Pentru documentarea funcionalitilor exist cteva soluii, cea mai comun fiind scrierea de documente de specificaii. Problemele ncep n momentul n care funcionalitile se schimb, de cele mai multe ori documentele de specificaii nemaiinnd pasul. Motivele sunt variate: aceasta procedur este greoaie, adesea de durat si adesea documentele sunt create de alte persoane dect cele care scriu codul pentru aplicaie. Apare astfel riscul ca specificaiile s nu arate, pentru o perioad de timp, modul actual de funcionare. Testele s se concentreze pe comportaO soluie pentru a reduce risipa generat mentul utilizatorului sistemului. de rescrierea documentelor de specificaii ar fi folosirea testelor ca specificaii. Acestea verific deja codul i sunt sincronizate n Mai trebuie i alt fel de documentaie? permanen cu codul de producie. De ce n funcie de tipul de sistem software s nu fie scrise n aa fel nct s arate ca un dezvoltat este nevoie i de alte tipuri de document de specificaii? documentaie care nu pot fi generate automat din codul de producie. Iat cteva exemple: manualul utilizatorului, documentaie de Cum se scriu specicaiile executabile? Testele pot fi scrise ca specificaii executa- arhitectur, documentaie comercial, pentru operaiuni, etc. . bile respectnd cteva reguli: Evident c acest tip de documentaie Testele s fie scrise ntr-un asemenea fel trebuie s fie scris folosind documente sau nct s poat fi citite n limbaj natural. Numele testelor s foloseasc doar diagrame specifice. limbaj din domeniul de business, fr termeni tehnici. Testele s nu includ detalii de implementare n nume.
www.todaysoftmag.ro | nr. 18/Decembrie, 2013

Adrian Bolboaca

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

19

arhitectur
Specicaii executabile
Programatorii vin apoi i leag acest text cu funcii din cod, care apeleaz codul de producie, ntr-un mod foarte similar ca testele scrise n JUnit/NUnit/xUnit , dar puin altfel structurate. Aceste teste vor pica la nceput, urmnd s treac pe msur ce RSpec2 si Cucumber3 au fost dezvoltate funcionalitile sunt implementate. iniial pentru ruby, dar acum exist i variante n alte limbaje. De exemplu SpecFlow 4 este o adaptare pentru .Net, iar JBehave5 a Avantaje specicaiilor executabile? fost dezvoltat pentru tehnologii Java. M i n i m i z e a z m u n c a d e documentaie, legnd-o cu testarea automat. Cum se lucreaz cu specicaii executa Feed-back foarte rapid pentru persoabile nele care creeaz cerinele pentru produs. Specificaiile pot s fie scrise de persoaPot s tie oricnd ce funcioneaz i nele de business (analiti, product owners, cum, cu condiia s ruleze un set de teste. product managers, etc.) n limbaj natural Feed-back foarte rapid pentru dezntr-o form de genul urmtor: voltatori. neleg repede unde trebuie s Feature: Adition modifice sistemul actual pentru a aduga In order to avoid silly mistakes noile funcionaliti. Cashiers must be able to calculate a O unealt de dialog foarte util ntre sum persoanele de business i persoanele tehnice. Specificaiile sunt nelese de Scenario: Simple numbers ambele grupuri de persoane i evitm I have entered 4 at the calculator situaiile noi vs. ei. keyboard Crete ncrederea echipei c au un I have entered 3 at the calculator produs care face ce trebuie. keyboard I press sum The screen should display 7 as a Dezavantaje? result Nu se poate realiza dac nu avem teste automate pentru toate cazurile de Astfel oricine cunoate limbajul de utilizare a sistemului software. domeniu poate s neleag i s citeasc Trebuie meninut o disciplin acest test. riguroas n echipele care scriu testele pentru a se concentra asupra compor1 http://en.wikipedia.org/wiki/FitNesse tamentuluidin partea utilizatorului i 2 http://rspec.info/ 3 h t t p : / / e n . w i k i p e d i a . o r g / w i k i / pentru a folosi doar nume din limbajul Cucumber_%28software%29 4 http://www.specflow.org de domeniu. 5 http://jbehave.org/ Fitnesse1 este, istoric vorbind, prima unealt pentru a scrie teste executabile. Folosete tabele i poate fi folosit pe aproape orice tehnologie.

Unelte

Specificaiile executabile sunt o soluie foarte bun pentru a avea un feed-back constant i pentru a verifica dac aplicaia se comport precum se ateapt utilizatorii. Pentru a scrie specificaii executabile trebuie ca programatorii s stpneasc scrierea de teste unitare, de teste de acceptan i folosirea limbajul din domeniul business pentru care lucrm. Tranziia ctre specificaii executabile poate s fie treptat, n pai mici, pn ce dialogul ntre persoanele de business i dezvoltatori devine eficient. Folosind specificaiile executabile, analitii business pot s scrie n limbaj natural cerinele pe baza crora poart un dialog cu dezvoltatorii, n acelai timp crend testele de acceptan pentru aplicaie.

Concluzii

20

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

management

mbuntirea Continu o practic de luat n serios

Ovidiu Dolha

ovidiu.dolha@isdc.eu Requirements engineer @ ISDC

rogramele de studiu superior din Romnia orientate spre informatic i calculatoare deseori includ cursuri de inginerie software, analiz i design software i managementul proiectelor. n ciuda aspectului iniial atractiv pe care cursuri de tipul acesta l arat, studenii deseori devin uor dezamgii ctre finalul lor, sau cel puin n comparaie cu alte cursuri (limbaje de programare, hardware, chiar i fizic, matematic), acestea fiind vzute mai puin interesante sau utile. n realitate, nu e vorba de o lips intrinsec pe care o au studenii n legtur cu aceste subiecte. O parte din problem const n abordarea teoretic a acestor materii i dificultatea pe care o au studenii n a nelege n mod fundamental coninutul. Aceasta rezult n nevoia de a nva pe de rost o parte bun din cursuri, fr a nelege cu adevrat principiile din spate. c, n mare parte, se poate aplica foarte bine i altor concepte (management de proiect, analiz i design software, arhitectur software, specificarea cerinelor software). Voi ncerca s expun pe scurt unele din motivele responsabile pentru situaia menionat, dar apoi m voi concentra n principal pe soluii care s-au dovedit a fi eficace i care ar putea s mbunteasc situaia ntr-o oarecare msur. Fr ndoial, una dintre cauzele principale ale conceptelor nenelese este educaia. Educaia, dup cum am menionat deja, ofer acces ctre o sursa valoroas de coninut, dar care din nefericire nu este ntotdeauna transmis eficient. Cnd vorbesc de educaie, includ att experiena colar n acest articol m voi concentra pe (pre-absolvire) ct i educaia din cadrul mbuntirea continu (.C.), una dintre organizaiei, deseori numit dezvoltare procele mai puin nelese practici din cadrul fesional. mi voi ndrepta atenia mai mult ingineriei software; e demn de menionat n Cluj, dac vei ntreba persoane care lucreaz n companii de dezvoltare software ce profesie consider c au, o bun parte vor rspunde inginer software. Sun bine, dar muli dintre ei doar dup ani buni de experien n IT ajung s neleag ce e cu adevrat ingineria software i ce implic ea. Motivul principal pentru care studenii nu neleg nsemntatea diverselor aspecte de inginerie software nu are legtur cu coninutul. Revizuind acele materii dup ani de experien n IT, descoperi c erau de fapt relevante i interesante. Chestiuni precum CMMi par foarte captivante i clar explicate. De ce nu aveam acelai sentiment i n momentul respectiv, cnd eram n facultate?
www.todaysoftmag.ro | nr. 18/Decembrie, 2013

21

management
mbuntirea Continu o practic de luat n serios
spre aceasta din urm deoarece este una n care avem mai mult control i flexibilitate, astfel nct m atept s descoperim soluii pragmatice cu rezultate imediate. Un motiv deseori invocat pentru educaia ineficient este lipsa abilitilor didactice. Studenii sau nceptorii nu se simt atrai sau inspirai de la bun nceput. De asemenea, lipsa entuziasmului profesorului sau mentorului se transmite foarte repede. Un alt motiv (i din punctul meu de vedere) dei mai rar invocat, este unul care contribuie mult mai mult. Acesta e lipsa unui context ataat materiei. n universitate, lipsa contextului uneori devine ridicol. Subiecte precum CMMi un model foarte abstract a crui esen implic un program real de .C. poate fi neles doar n contextul vieii n organizaie. Aceasta ns este necunoscut majoritii studenilor la momentul respectiv (unii vor avea locuri de munc n IT cnd sunt nc la facultate, dar i aa abia au nceput s descopere ce nseamn viaa n organizaie). n facultate este foarte dificil s oferi acest context, dar chiar i cnd vorbim de dezvoltare profesional ntr-o organizaie, prea des vedem aceeai lips. .C. trebuie cultivat ntr-un cadru potrivit, i din pcate chiar i organizaiile care par s neleag foarte bine conceptul tind s impun practica n loc s nvesteasc n educaie i n oferirea unui mediu prielnic. i aici se afl de fapt cheia. Propunerea mea pentru .C. este s o lum n serios. Aceasta presupune o serie de schimbri i ajustri pe care trebuie s le facem n organizaie, iar eu cred c cea mai bun abordare este bidirecional (pornind att de sus, ct i de jos, n acelai timp). Privind de sus, principala schimbare este practicarea .C. ntr-un mod ct mai transparent posibil . Cu siguran managementul senior din echipa de leadership practic .C., dar cnd i cum? Asigurai-v c devine clar pentru organizaie. Managementul senior ar trebui s-i fac un el din a fi cei mai buni la .C. Oamenii vor s afle despre deciziile luate la nivel nalt ntr-un mod bine calculat i informat (mai ales cele dificile), despre planificarea strategic, retrospective care iau n considerare date istorice (colectate de-a lungul timpului), riscuri calculate, managementul proceselor i al calitii la nivele de management senior, i aa mai departe. Dac e posibil, oamenii ar fi plcut surprini s vad chiar dovezi concrete ale acestor activiti: documente ajuttoare (de exemplu, analiza de decizie), rapoarte ale ntlnirilor, msurtori, liste i log-uri, orice poate inspira nivelele de mai jos. Conducerea prin exemplu se dovedete a fi unul dintre cele mai bune moduri de a induce schimbarea n cultura organizaional. Din pcate, aceasta funcioneaz i n cazurile n care practicile artate sunt slabe. Privind de jos n organizaie, atenia pe educaie trebuie ntrit . Majoritatea angajailor este dispus s nvee i s neleag, dar majoritatea profesionitilor IT este sceptic de la natur (i e foarte bine s fie aa). Pentru a-i ctiga, e important s vorbim concret, ceva ce poate fi cu adevrat solicitant cnd subiectul este .C. O metod bun e aceea de a spune poveti de succes. Identific cele mai bune proiecte unde .C. merge foarte bine i ofer cadrul potrivit pentru ca oamenii din aceste proiecte s-i spun povestea. ncurajeaz promovarea succesului prin .C prin metode gen sesiuni deschise, trguri interne, workshop-uri, i schimburi de experien ntre echipe. O abordare de tip trg intern a fost folosit de cteva ori n ISDC. Este un loc n care oamenii pot s arate ceva de care ei sunt mndri din viaa profesional. Poate fi o arhitectur inteligent, un design funcional interesant din produsul la care au lucrat, o component re-utilizabil sau, pur i simplu, practici bune pe care le-au colectat de-a lungul timpului ponturi utile ntr-un context sau altul. n orice caz, este o metod eficient i relativ ieftin de a-i aduce pe toi ntr-un loc i a genera un cadru prielnic dialogului. Un mediu informal e perfect pentru a ncuraja conversaiile prietenoase i deschise. Nu numai c un eveniment de genul acesta e o surs de motivaie, dar e incredibil s vezi cte lucruri noi i deseori relevante afl angajaii despre ceea ce fac colegii lor din alte proiecte i echipe. Alteori, metode mai puin intuitive se dovedesc a fi foarte productive. Un exemplu este ncurajarea oamenilor s nvee de la colegii lor. Aceasta presupune o oarecare mputernicire a ntregii organizaii i, n loc s i implici mereu pe aceiai seniori susintori puternici ai .C., implic-i i pe ceilali. Descoper persoane care vor face publicitate gratis i ncurajeaz-i n mod contient (mai ales dac sunt persoane cu putere informal). ncurajeaz de asemenea dialogul, nu i cenzura sau ascunde pe cei care au o opinie mai puin pozitiv despre .C. Cu ct se vor simi mai puin ascultai, cu att va fi mai greu s-i convingi. Deci e important s nu neglijm acest aspect, pentru c i acetia pot fi persoane cu putere mare informal. n cazuri de conflict de

22

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


opinie, organizeaz dezbateri publice. O practic de genul acesta e foarte productiv n ISDC. O numim Mythbusters i este de fapt o dezbatere deschis pe un subiect controversat. Participanii sunt ncurajai s se implice i avem voturi nainte i dup dezbatere astfel nct s vedem ce convingeri au fost schimbate pur i simplu prin discuii raionale, argumentarea i prezentarea unor fapte i date reale, descoperite prin cercetare prealabil. .C. se afl ntr-o perioad grea. Acum aproape un secol, cnd a pornit totul, Japonia era una dintre rile cu cea mai slab calitate a produselor. n perioada respectiv a aprut o iniiativ nou sub numele de Kaizen. Aceasta nsemna pur i simplu schimbare bun (kai = schimbare, zen = bun). O filozofie simpl a revigorat complet economia i a fcut Japonia una dintre rile cu cea mai bun calitate n era modern. .C. a explodat n diverse forme i locuri, de la producie la servicii i de la produse tangibile la produse abstracte i creative. Diverse industrii au adoptat conceptul i l-au adaptat nevoilor lor. CMMi este de exemplu un model de .C. specific gndit pentru IT. n timp ce pentru industriile cu rezultate tangibile i repetitive ( de exemplu: construcie de automobile) standardele concrete merg bine, n IT a fost nevoie de un model mai abstract i flexibil, unul care ntotdeauna solicit adaptarea la context (tailoring). Aadar, natura modelelor de .C. n IT este unul dintre motivele pentru care sunt dificil de neles i aplicat. Dar nu e vorba doar de IT.,industriile n general tind s devin tot mai puin tangibile n ceea ce privete implicarea uman. Automatizarea preia tot mai mult din munca repetitiv, predictibil i tangibil, ignornd implicarea uman tot mai important n arii precum: creativitate, inovare, strategie, planificare complex, management, comunicare i interaciune uman. Tocmai de aceea acum ncepem s vedem un declin n Japonia. n ultimii ani, calitatea a nceput s scad n comparaie cu alte ri care ncep s ias pe piaa internaional tot mai mult (China sau Coreea de Sud). Acestea ncep s preia conducerea. De ce? Din exact acelai motiv pentru care Japonia a preluat conducerea secolul trecut: au descoperit o metod mai bun de a face lucrurile. Dar acum rile care nu demult au nceput s aprecieze .C. o aplic direct pe industrii puin tangibile, ceea ce le d un avantaj n comparaie cu Japonia unde exist nc o oarecare inerie. Ce e de nvat de aici? n primul rnd s nu renunm la .C. n schimb, trebuie s nvm s o aplicm bine, s educm nceptorii n domeniu prin prezena unui context favorabil i, de fapt, s o lum n serios. Trebuie s fim sceptici, s punem ntrebri relevante, s fim deschii, s adaptm .C. n funcie de situaie. Lumea este tot mai dinamic, iar practicile noastre trebuie adaptate acesteia.

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

23

programare

Alinierea partiiilor n medii virtuale


dat cu trendul de virtualizare a serverelor din ultimii ani a aprut i problema alinierii greite a partiiilor. Pentru c muli dintre noi ignorm importana alinierii corecte a partiiilor, scopul acestui articol este prezentarea consecinelor nealinierii corespunztoare.

Drago Masarasan
Support engineer @ Endava

dragos.masaran@endava.com

Problema alinierii partiiilor a aprut odat cu conceptul de virtualizare i presupune folosirea de storage partajat de mainile virtuale. Vom prezenta pe scurt principalele platformare de virtualizare (VMware i Hyper-V) i modul cum trateaz fiecare problema alinierii corecte a partiiilor. Vom descrie pe scurt i unele concepte pe care le vom folosi ulterior: LUN, Fibre Channel (FC), iSCSI, Chunk, Block, Cluster. n cadrul storage-ului exist mai multe straturi implicate n procesul de aliniere. n principiu, fiecare strat este mprit n structuri de blocuri (blocks sau chunks). Fiecare vendor poate s foloseasc blocuri de mrimi diferite, acest lucru nereprezentnd o problem. Pentru noi este important s tim unde ncepe acel bloc ( starting offset ). Pentru a avea o performan maxim, offset-ul de nceput al sis-

Concepte de storage

Alinierea sistemului de iere

temului de fiiere ar trebui s fie aliniat cu blocul din nivelul inferior de storage. Nealinierea celor dou limite va duce la operaii I/O adiionale i la degradarea performanei. Articolul Wikipedia Cylinder-headsector 1 este un bun nceput pentru a nelege conceptele legate de discuri fizice. n trecut, sistemele de operare nu luau n considerare alinierea corect a partiiilor. De exemplu, Microsoft a rezolvat aceast problem doar ncepnd cu Windows Server 2008. Pentru distribuiile Linux, cele care folosesc nc utilitarul fdisk sunt susceptibile s aib aceast problem. Implicit, sistemele de operare moderne vor ncerca s se alinieze la primul sector al unui track. Astfel n momentul instalrii sistemului de operare, acesta va detecta valoarea Cilindru/Cap/Sector (Cylinder/ Head/Sector CHS) de la BIOS care n cazul mainilor virtuale reprezint de fapt un BIOS emulat. Problema st n faptul c informaia returnat nu corespunde cu realitatea, probleme aprnd de exemplu la LUN-uri de peste 8 GB unde numrul de sectoare per track-uri este ntotdeauna raportat ca 63. Am definit anterior noiunea de bloc de
1 http://en.wikipedia.org/wiki/Cylinder-head-sector

24

nr. 18/Decembrie | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


4. LUN mapat direct printr-un iSCSI iniiator n cadrul ESXi, o main virtual este ncapsulat n dou fiiere: Vmdk reprezint imaginea actual a discului aparinnd unei maini virtuale. Vmx fiierul coninnd setrile de configurare ale mainii virtuale.
Figura 1 Maina virtual cu sistem de fiiere nealiniat

date. Un bloc de date reprezint unitatea Mware cea mai mic de date care poate fi folosit n cadrul ESXi, exist mai multe pentru a stoca date. Blocurile discurilor modaliti prin care un storage partajat fizice vor avea ntotdeauna 512 bytes, dar poate fi prezentat unei maini virtuale: din motive de eficien i scalabilitate, 1. Virtual Machine File System (VMFS) vendori-i de dispozitive storage folosesc folosind Fibre Channel sau iSCSI, valori puteri ale 2 alea unui block fizic????. 2. Network File System (NFS) exportat Arhitectura NetApp folosete blocuri de 4 ctre un host ESX, KB (8 blocuri fizice), HP 3Par de 16 KB, iar 3. Raw Device Mapping prezentaEMC Symmetrix de 64 KB. rea direct a unui LUN ctre o main Lund ca exemplu NetApp, o operaie virtual, de scriere va folosi cel puin 4 KB i poate folosi multiple blocuri de 4 KB n funcie de mrimea datelor ce urmeaz a fi scrise. Problemele apar n momentul n care schema de partiionare a sistemului de fiiere a mainii virtuale nu respect limita din interiorul LUN-ului (Figura 1). Dac sistemul de fiiere al mainii virtuale nu este aliniat, pentru a citi un bloc de date este nevoie de dou apeluri la stratul inferior. Acest lucru duce la degradarea eficienei deoarece controlorul storage lucreaz n plus pentru a realiza o operaie Figura 2 de citire/scriere.

Att exporturile de tip VMFS ct i NFS sunt referite ca datastores n cadrul ESX. Dac este folosit NFS, stratul de abstractizare VMFS dispare ntruct directoarele mainii virtuale sunt inute direct pe mount point-ul NFS prezentat ca datastore. n cazul folosirii VMFS, figura anterioar are nc un nivel de abstractizare i arat astfel ca n Figura 2 Dac att VMFS ct i sistemul de fiiere al mainii gazd sunt nealiniate,

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

25

programare
Alinierea partiiilor n medii virtuale
numrul de operaii I/O adiionale este multiplicat. VMFS 2 folosea ca offset implicit 63 de blocuri, provocnd astfel nealinierea la nivel de I/O. VMFS 3 este aliniat implicit ntruct folosete 128 blocuri ca offset. Migrarea de la VMFS 2 la VMFS3 nu duce la alinierea datastore-urilor, pentru a realiza acest lucru fiind necesar copia pe un datastore nou. n cazul Raw Device mapping-urilor i a LUN-urilor mapate direct ctre o masin virtual, trebuie s fim ateni doar la alinierea la nivelul sistemului de operare gazd. Conceptul de aliniere nu se aplic NFS dect la nivelul sistemului de operare gazd. 2. Partiia printe Hyper-V, 3. Storage array. Se recomand folosirea de VHD-uri cu dimensiune fix, ntruct n cazul discurilor expandabile alinierea nu poate fi garantat i exist oricum o penalitate n performan n momentul folosirii lor.

Exist un numr mare de utilitare care permit detecia i corectarea nealinierii partiiilor. n cazul Windows cel mai uor putem verifica offset-ul din System Information (Start > msinfo32). Dac navigm ctre Components Storage Disks, n partea de jos putem vedea partition starting offset. Pentru Linux se poate folosi utilitarul Hyper-V fdisk astfel : n cadrul hyper -vizorului de la Microsoft, acesta suport urmtoarele fdisk -u -l /dev/sdX modaliti de a partaja storage ctre o main virtual: LUN-uri cu sistem de fiiere NTFS (VHD cu dimensiune fix, dimensiune expandabil dinamic i diferenial). Pass-through disk discuri ataate partiiei printe Hyper-V i asignate direct unei maini virtuale, LUN-uri mapate direct prin folosirea unui iniiator iSCSI. Aadar, o main virtual n Hyper-V trece prin trei nivele de storage: 1. Sistemul de fiiere gazd,

Detecie i corecie

26

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Extension Points

n acest articol vom descoperi punctele de extensie ntr-o aplicaie enterprise. Bineneles c aceste puncte de extensie se aplic pentru orice fel de aplicaie, indiferent de mrimea acestora. Cu ct o aplicaie este mai mare, cu att aceste puncte de extensie devin mai importante pentru a pstra calitatea codului ridicat, iar costul unei schimbri s fie ct mai redus. De foarte multe ori, adugarea unui numr prea mare de puncte de extensie ntr-o aplicaie simpl va duce doar la creterea complexitii codului, fr a aduce o valoare real aplicaiei n sine. Despre over-engineering , vom completa cu mai multe detalii n rndurile urmtoare. De nenumrate ori am observat c echipele ajung s i defineasc un numr foarte mare de extension points la aplicaia la care lucreaz, chiar dac acest lucru nu este necesar. Putem foarte uor s comparm aceste puncte de extensie cu filoanele de aur. Fiecare filon de aur este extrem de valoros, crescnd valoarea minei (aplicaiei)), dar n acelai timp echipa poate s ajung s sufere de febra aurului i s ncerce s defineasc puncte de extensie i n locuri unde nu avem nevoie de acest lucru. Punctele de extensie i permit s creezi aplicaii software care s nu aib legturi strnse ntre componente sau dependine externe. n cazul n care componentele sunt strns legate ntre ele, va fi foarte dificil s nlocuim sau s modificm o component din aplicaie. Dac nivelul de cuplare este ridicat, n momentul n care nlocuim o component din aplicaia noastr cu o alt implementare, putem s generm un efect de domino i s fie necesar s modificm nenumrate alte componente. Exist diverse moduri prin care putem s crem puncte de extensie. De la cele mai simple, care nu necesit modificri majore ale claselor pn la cele complexe care implic la rndul lor crearea diferitelor clase ajutoare. n rndurile urmtoare vom prezenta cteva moduri de creare a punctelor de extensie. Cel mai simplu exemplu de creare a unui punct de extensie este ilustrat la un exerciiu de TDD Kata. n cadrul exemplului respectiv era nevoie ca valoarea unui parametru s fie validat, iar n cazul n care aceast valoare fcea parte dintr-un domeniu predefinit, atunci trebuia s se execute o anumit aciune.
public class Calculator { private string baseValue; ... public void Add(string value) { if (value==null || value. Count == 0 || value == -) { baseValue = baseValue + -; } ... } }

validarea ntr-o metod separat. Dei acesta pare s fie un pas extrem de mic si simplu, acesta poate s fie primul pas spre crearea unui punct de extensie mult mai complex, folosind o metod virtual, un serviciu extern sau un modul separat care s se ocupe doar cu validarea datelor.
public class Calculator { private string baseValue; ... public void Add(string value) { if (ContainsDefaultValue(value)) { baseValue = baseValue + -; } ... } protected virtual bool ContainsDefaultValue(string value) { return (value==null || value. Count == 0 || value == -); } }

n acest caz, din momentul n care ncepem s scriem validarea ne dm seama Este extrem de important s apreciem c domeniul s-ar putea modifica. Pentru corect momentul creterii complexitii a fi pregtii n faa schimbrilor care se unui punct de extensie. n momentul n pot declana n viitor, putem s extragem care remarcm necesitatea unui punct de
www.todaysoftmag.ro | nr. 18/Decembrie, 2013

27

programare
Extension Points
extensie la codul pe care l-am scris, am putea ntr-o prim etap s l extragem ntr-o metod separat, dup care s lum n considerare eventualitatea crerii unui punct de extensie. Bineneles, cnd ncepem s lucrm la o aplicaie de dimensiuni mari, tim de la bun nceput funcionalitatea pe care fiecare component trebuie s o ofere i modul prin care acestea trebuie s fie pregtite pentru a putea s fie modificate ct mai uor. Moduri prin care putem s crem punct de extensie sunt nenumrate i de foarte multe ori cnd definim un punct de extensie ne folosim de mai multe mecanism, nu doar de unul singur. n cazul aplicaiilor de dimensiuni comenzi externe sau pe baza unei logici mari, pe lng crearea de puncte de exteninterne pe care o are deja implement. sie pentru fiecare librrie sau serviciu extern care este folosit de ctre aplicaie, Servicii Serviciile pot s ruleze n acelai proces exist deja o list de puncte de extensie ca i aplicaia noastr sau pot s ruleze ntr- despre care putem afirma c sunt canonice. un proces separat pe aceeai maina sau pe Aceste puncte de extensie nu lipsesc din o main diferit. n momentul n care se aplicaiile de dimensiuni mari i este neceajunge la declararea unui astfel de punct de sar s ne gndim la ele din faza de design. extensie, de foarte multe ori suntem deja n faza cnd o alt echip poate s lucreze Tracing la implementarea unui serviciu fr s fie Orice aplicaie, indiferent dac ruleaz nevoie s discute cu echipa de baz. sub Linux sau Windows, are nevoie de un sistem de logging. Acesta trebuie s ne permit s logm orice fel de coninut Fiiere de congurare Dei pare ciudat, un fiier de confi- din cadrul aplicaiei noastre indiferent gurare n format XML sau JSON poate s de modulul n care suntem. Totodat este conin definiia unui punct de extensie i necesar s putem controla locaia unde comportamentul pe care dorim s l avem. acest coninut se scrie. Un sistem de logare De exemplu, putem s avem mai multe ideal ar trebui s ne permit s schimbm fiiere de configurare, unde fiecare fiier locaia unde informaia se scrie i s adconine o expresie regular pentru valida- ugm locaii noi cu modificri minime rea aceluiai ir de caractere. n funcie de asupra codului. De exemplu, s putem scrie fiierul folosit, validarea i aciunea n sine informaia att n fiiere, ct i ntr-o baz de date sau ntr-un serviciu precum Service poate s difere. La baza punctelor de extensie stau Bus. Pe lng aceste proprieti, acesta tredesign patern-urile, fr de care ne este buie s ne permit s formatm textul i s aproape imposibil s le crem i s le l filtrm. Din aceast cauz, este bine s abordm sistemul de tracing ca pe un un folosim. Atunci cnd lucrm la o aplicaie, este extension points i s fim mereu pregtii s important a nu se fora apariia punctelor l putem nlocui cu costuri minime. Acest de extensie. n acest mod, meninem com- punct de extensie ar trebui s ne permit s plexitatea aplicaiei la cel mai mic nivel controlm formatarea textului, asculttorii posibil. Totui, n timpul dezvoltrii va fi (s putem aduga 1..n listeneri) i s filtrm necesar ca de nenumrate ori s refacto- informaia care se logeaz. rizm aplicaia pentru a putea aduga i suporta punctele de extensie de care avem Data access nevoie. Un alt punct de extensie extrem de Din aceast cauz este bine s identifi- important ntr-o aplicaie este data access cm punctele de extensie ntr-o faz ct mai provider. Orice aplicaie are nevoie de incipient, pentru a putea reduce ct mai o baz de date, indiferent de tipul ei mult costurile i pentru a le putea extrage relaional/non relaional. Chiar dac la ntr-un mod optim. E important ca punc- prima vedere, am putea s spunem c nu tele de extensie majore s fie identificate la va fi nevoie niciodat nevoie s nlocuim o faza de design, nerecomandndiu-se desco- baz de date cu o alt baz de date, trebuie perirea lor n momentul n care s-a nceput s fim contieni c la un moment dat va implementarea acestora. trebui s facem upgrade la o nou versiune n general, toate dependinele externe de baz de date. Acest update s-ar putea s pe care o aplicaie poate s le aib trebuie cuprind i modificri ale provider-ului, vzute ca puncte de extensie. Din pcate care vor putea fi mult mai uor fcute, aceast abordare poate s creasc mult dac punctul de extensie este pregtit cum complexitatea sistemului. Un bun exemplu trebuie. sunt operaiile I/O. Dei teoretic, putem n orice moment s schimbm stack-ul Cache pe care l folosim pentru a accesa discul, Pe lng o baz de date vom avea n general acesta nu se schimb. Totui nevoie i de un layer de cache. Pe pia, operaiile de I/O se grupeaz ntr-o com- la ora actual exist nenumrate soluii, ponent unic din mai multe motive, dintre dar n comparaie cu o baz de date, riscare menionm reutilizarea codului sau cul schimbrii provider-ului de cache este simplificarea acestuia. destul de mare cnd dezvoltm o nou

Interfee
Una sau mai multe interfee definesc contractul. Prin intermediul acestui contract se faciliteaz nlocuirea unui componente cu o alt component fr s fie necesar s facem modificri n componentele care o foloseau.

Clase abstracte
Prin intermediul claselor abstracte putem s definim punctele de extensie ntr-o manier asemntoare cu cea a interfeelor. Diferena major pe care o avem n momentul care folosim clase abstracte este c limitm funcionalitile pe care o component le poate expune prin intermediul unei clase (n cele mai multe limbaje de programare, o clas poate s extind cel mult o clas abstract). Totodat acestea ne ajut pe partea de versionare, avnd posibilitatea oricnd s adugm o funcionalitate nou n clasa de baz fr breaking code.

Metode virtuale
Ne permit definirea unui comportament default pe care un punct de extensie poate s l aib. Dac este nevoie, cel care creeaz un punct de extensie poate s suprascrie metoda virtual i s defineasc un alt comportament.

Module
Un punct de extensie poate s fie reprezentat printr-un modul care s permit uor nlocuirea altor componente , fr s fie necesar recompilarea sau reinstalarea aplicaiei. Putem s avem unul sau mai multe module care s fie pentru acelai punct de extensie al aplicaiei noastre. n orice moment, aplicaia poate s decid ce modul nregistrat s foloseasc pe baza unei

28

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


versiune a aplicaiei. De aceea, de la nceput este necesar s ne gndim la un punct de extensie pentru sistemul de cache, care s ne permit s facem management la entiti ntr-un mod ct mai generic, s putem controla modul n care datele expir i mecanismul de encriptare, dac este necesar. Dac folosim un provider extern pentru cache atunci s-ar putea s dorim s encriptm toate datele pe care le salvm n cache. La un moment dat, fiecare aplicaie are nevoie s fac o validare a datelor de input pe care poate s le primeasc de la un serviciu, s le citeasc dintr-un fiier sau de la utilizator. Dac tim c procesul de validare este complex sau este mai mult dect o validare trivial, atunci definirea unui punct de extensie pentru acest lucru este necesar. n faza iniial putem s avem o interfa, atribute sau o clas generic care s se ocupe de validare, pentru ca ulterior s complicm punctul de extensie cu noi funcionaliti. punct de extensie nu ar trebui s tie detalii de implementare ale acestuia sau numele su specific. Un sistem de dependency injection sau factory ar trebui s rezolve aceste probleme. n caz contrar, nu am rezolvat nicio problem prin crearea punctului de extensie.

Concluzie
Lista cu toate punctele de extensie pe care le putem defini este extrem de lung. Cu ct o aplicaie este mai mare, cu att componentele ar trebui s fie mai decuplate, iar punctele de extensie mai clar definite.

Criptare
Partea de criptare a datelor apare n orice aplicaie care lucreaz ntr-o form sau alta cu date. Exist nenumrate moduri prin care putem s criptm datele folosind chei simetrice sau s algoritmi de hash. Din aceast cauz este bine s pornim de la premisa c acest algoritm va fi schimbat cel puin odat. n funcie de date, s-ar putea s ne trezim c este nevoie s folosim servicii care se ocup de criptarea datelor. n acest cazuri, punctele de extensie definite din prima faz a dezvoltrii ne vor fi foarte utile.

Securitate

Autentificarea, autorizarea i accesul la date i diferite funcionaliti se face aproape ntotdeauna controlat. Totodat, la ora actual trebuie s fim pregtii s suportm diferite modaliti de autentificare, de la Active Directory, la Facebook sau la cel clasic cu user i parola. Din acest motiv, avem nevoie de un puncte de extensie care s ne permit s facem autentificare i autorizarea utilizatorilor. Managementul i controlul la punctele de extensie se poate face n diferite moduri, de la diferite factory-uri pn la diferite Validare Validarea datelor i a comenzilor face framework-uri de dependency extesion. parte din fiecare aplicaie cu sau fr UI. Niciodat o component ce folosete un

Radu Vunvulea

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

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

29

management

Scrum n practic: un studiu de caz

e spune c adoptarea unei abordri agile a gestionrii proiectelor software este o cltorie. Aceasta este povestea cltoriei de pn acum a echipei noastre din cadrul firmei evoline. Fiind un studiu de caz, nu este o introducere n Scrum i nici o colecie a celor mai bune practici, ci mai degrab o prezentare a modului n care aplicm noi Scrum. Articolul este structurat n jurul con- plus, ne-am dorit s susinem estimarea cu ceptelor uzuale din Scrum. Majoritatea date statistice, pentru c aa ar deveni mult conceptelor apar n ordinea n care am mai plauzibil. nceput s lucrm cu ele. nainte de toate cred c este important s stabilim contextul n care Scrum fost aplicat n cazul nostru. Echipa noastr a fost solicitat s transfere o suit de aplicaii consacrate spre tehnologii i platforme noi. A fost clar de la nceput c acesta este un proiect pe termen lung. Mai mult dect att, nu a fost preconizat o lansare oficial n primul an de dezvoltare. Am avut timp s investigm noile tehnologii i s implementm un prototip. n timpul acestei faze nu am avut planning i nu am lucrat n sprint-uri. Pri ale prototipului au fost ulterior preluate n proiectul propriu-zis. Scopul planificrii a fost s oferim un fel de predictibilitate pentru product owner. Odat ce am avut un set de cerine bine definite aveam nevoie de o estimare: ct de mult timp ne va lua s le implementm? Pentru c, desigur, product owner-ul aprecia o estimare doar n timp. n

Papp Lszl

papp.laszlo@evoline.ro Software engineer @ Evoline

Context

Planning

Cerinele pentru proiect au fost descrise n OneNote nc din faza de prototip. Informaia este organizat ntr-un notebook partajat pe care OneNote l sincronizeaz automat astfel ca toi utilizatorii s vad modificrile. Acest depozit central este, de asemenea, util atunci cnd se analizeaz cerinele i se mpart n sarcini (sau task-uri). Stocheaz ntrebri i rspunsuri, rezumatele meeting-urilor n care am discutat problemele deschise cu product owner -ul sau cu alte persoane familiare cu domeniul, cu aplicaia existent i cu funcionalitatea cerut. Backlog -ul este extras din OneNote. Funcionalitile (sau feature-urile) sunt prioritizate de ctre product owner n funcie de ct de apreciate vor fi acestea de ctre client, deci pe baza beneficiilor aduse clienilor. Product owner-ul este, totodat, cel care decide cte funcionaliti ar trebui s intre ntr-o livrare. Noi facem planificarea numai pentru funcionalitile selectate pentru o livrare. Acest lucru nu se ntmpl

Product backlog

30

nr. 18/Decembrie | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


neaprat la nceputul fiecrui sprint. De reinut aici este faptul c product owner-ul nu este influenat de planificarea noastr atunci cnd selecteaz funcionalitile. Aceasta este o abordare bazat pe valoare (susinut astzi de exemplu de micarea #NoEstimates) , i nu una bazat pe cost. Unul dintre avantajele proiectelor pe termen lung, este c echipa i poate permite utilizarea story point-urilor pentru planificare. n echipa noastr story point-urile au fost introduse pornind de la urmtoarele ipoteze: nu vom ti ntotdeauna n avans care membru al echipei va lucra pe un anumit task. planificarea se va face de ctre ntreaga echip . Avnd n vedere c echipa era i este eterogen, format att din juniori ct i programatori cu experien, aceste ipoteze ar fi fcut ca estimrile n timp s fie foarte dificile. Estimrile noastre, sau mai degrab msurtorile, bazate pe story point-uri sunt menite s exprime complexitatea, efortul i incertitudinea implicate n finalizarea unei sarcini, indiferent de programatorul care va lucra la sarcina respectiv. S presupunem c dou pietre, fiecare cntrind 1 kg, trebuie s fie transportate dintr-un punct A ntr-un punct B, aflate la 100 de metri distan una de cealalt, de o echip format din dou persoane, un copil de 3 ani i un adult de 30 de ani. i va lua mult mai mult timp copilului s transporte o piatr n comparaie cu timpul necesar adultului. Cu toate acestea, fiecare piatr este de 1 kg. Lucrurile stau asemntor i cu sarcinile de programare. n consecin, este foarte posibil ca durata implementrii unor task-uri msurate de ctre echip ca avnd 1 story point s fie variabil. nainte de a ncepe planificarea am czut de acord asupra unor task -uri de referin. Acestea sunt task -uri la care sunt raportate toate celelalte. Am ales nite task-uri implementate deja n prototip, despre care ntreaga echip avea o nelegere comun i le-am asignat story point-uri din secvena de numere utilizat n planning poker. ntreaga secven este 0, , 1, 2, 3, 5, 8, 13, 20, 40 i 100, dar am folosit numai valori sub 5. Valorile din secven sunt considerate categorii sau mrimi cuantificate. Pentru msurarea task -urilor iniial ne-am decis s utilizm planning poker. Aceasta este o tehnic binecunoscut pe care nu am de gnd s o prezint aici. Am nceput ns s ne lovim de limitrile sale pe msur ce echipa cretea: ne lua din ce n ce mai mult timp. Din fericire, am dat peste o alternativ numit Silent Grouping prezentat de Ken Power. Din descriere reieea c este o metod mult mai rapid dect planning poker, aa c am decis s o ncercm i noi. i a funcionat. Silent Grouping este descris n detaliu n [1]. Pe scurt, iat cum se aplic. n primul rnd trebuie aleas o secven de numere pentru msurtori. De obicei aceasta este irul lui Fibonacci, dar am preluat variaia uor modificat de la planning poker menionat deja n paragraful precedent. Fiecare numr al secvenei este reprezentat de o coloan pe un panou sau whiteboard. O zon suplimentar numit parcare este, de asemenea, introdus pentru task -uri la care nu se ajunge la un consimmnt. Toate task-urile care vor fi msurate sunt scrise pe stickere. Dup aceast pregtire, urmeaz trei runde facilitate de un coordonator. Primele dou se desfoar n linite, discuiile nu sunt admise, de unde i numele. n prima rund, fiecare membru al echipei se deplaseaz, unul cte unul, pn la whiteboard i pune un task n coloana n care crede c i are locul. n acest fel toate task-urile vor ajunge pe whiteboard ntr-o coloan iniial. n a doua rund toi membrii echipei sunt prezeni la whiteboard i pot muta task-uri din coloana n care se afl n cea n care cred c se potrivesc mai bine. n cazul n care un task este mutat frecvent coordonatorul l va parca, firete, n parcare. Noi nregistrm mutrile pe sticker: la fiecare mutare tragem o linie. Ultima rund este rezervat pentru discuii. n cazul n care parcarea nu este goal acum este momentul pentru a diseca task-urile din aceasta i pentru a gsi coloana corespunztoare fiecruia. Mai trebuie menionat faptul c ne rezervm o zi sau dou pentru a identifica task-urile care urmeaz a fi msurate pe baza cerinelor. Mai mult dect att, fiecare task este prezentat pe scurt echipei n principal din punct de vedere funcional nainte de sesiunea de planificare. Nu toate task-urile sunt distribuite la ntmplare membrilor echipei n timpul

Msurarea task-urilor

Story point-uri

primei runde. n cazul unor task-uri foarte specifice, cum ar fi cele legate de baza de date sau de interfaa grafic, tim n avans cine va lucra la ele i lsm aceste persoane s plaseze task-urile n coloana iniial. De obicei, aceste task-uri nu-i schimb poziia n runda a doua. Velocity -ul este cea mai important metric pe care o folosim. l msurm continuu n scopul de a prognoza i de a colecta datele istorice necesare pentru a susine estimrile noastre. Avnd n vedere mrimea backlogului i velocity -ul, ambele exprimate n story point-uri, putem calcula numrul de sprint-uri necesare pentru implementarea backlog-ului. Am profitat de acest lucru atunci cnd a fost specificat pentru prima oar o dat de lansare. L-am informat pe product owner c cel mai probabil nu vom putea livra ntregul backlog pn la data respectiv. Nu a fost prea fericit cnd a aflat, dar n cele din urm am analizat mpreun backlog-ul i am amnat task-urile pe care le-a considerat mai puin importante pentru prima versiune. Alegerea velocity-ului pentru calculul de mai sus nu este ntotdeauna clar dup mai multe sprint -uri. Voi descrie dou metode. n cazul de mai sus n care a fost specificat data lansrii primei versiuni, am ales cea mai recent valoare. Pn atunci, velocity-ul crescuse continuu, astfel argumentul meu a fost: Uite, chiar i cu cel mai mare velocity al nostru de pn acum ne va lua cel mai probabil cinci sprint-uri s terminm backlog-ul i sunt doar trei disponibile pn la data limit. Cea de a doua metod ia n considerare mediana valorilor

Velocity

Task-uri de referin

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

31

management

Scrum n practic: un studiu de caz


Kniberg, descris n [2]. Scopul urmrit este evitarea action list-urilor uriae, care sunt greu de gestionat i care intimideaz programatorii. A m n c e rc at s inem retrospectivele sprint-urilor n mai multe moduri. Iniial au fost cuplate cu sesiunile de planificare, cu alte cuvinte am ncercat s reflectm asupra sprint-ului trecut nainte de a face planificarea pentru urmtorul. Am experimentat i cu combinarea retrospectivei cu un team lunch. Aceste ncercri nu s-au dovedit prea eficace. n prezent ncerc s obin subiecte pentru retrospectiv ntr-un mod ct mai puin scitor. Avem un spaiu dedicat pe un whiteboard unde membrii echipei pot specifica lucruri care: ar trebui meninute, ar trebui mbuntite. Subiectele care apar pe whiteboard n timpul unui sprint vor reprezenta agenda retrospectivei. Dup aproape un an de dezvoltare, n cadrul proiectului au fost identificate o serie de activiti la nivel de feature: nelegerea cerinelor, divizarea acestora n task-uri, identificarea task-urilor care pot fi implementate n paralel, comunicarea n exterior cu prile implicate n proiect, pentru a numi doar cteva. Cum de-a lungul anului i echipa a crescut considerabil, mi s-a prut c a sosit momentul oportun pentru introducerea unui nou rol care s acopere aceste activiti, rolul de feature owner. n prezent un feature owner are o privire de ansamblu asupra unui feature i este la curent cu task-urile asociate, cea ce ajut echipa n a fi auto-organizat. Cred c transparena i previzibilitatea de care am dat dovad a dat roade. Product owner-ul pare s aib ncredere n noi, din moment ce ne-a solicitat de curnd prototipuri pentru proiecte noi, complementare. n cazul n care aceste proiecte se vor materializa, ele vor reprezenta oportuniti excelente de cretere n cadrul departamentului nostru. Exist, desigur, mai multe aspecte care pot fi mbuntite. Una dintre ele este divizarea funcionalitilor n task-uri mai mici, avnd aproximativ aceeai mrime. Pn acum am reuit doar s evitm taskurile de peste 13 puncte, dar mai este pn la obinerea unui backlog care s conin doar task-uri de dou sau trei story pointuri sau chiar mai mici. Cu un asemenea backlog,velocity-ul ar putea fi calculat ca i numrul de task-uri implementate ntrun sprint . n scopul exersrii divizrii funcionalitilor n task-uri foarte mici mi propun s folosim exerciiul Elephant Carpaccio, inventat de Alistair Cockburn. Henrik Kniberg a scris un ghid de facilitare al acestui exerciiu disponibil n [3]. Follow-up-urile iau din ce n ce mai mult timp, asemntor cu sesiunile de planning poker pe care le-am avut n trecut. Suntem pe cale de a introduce follow-up-uri la nivel de feature, care s se concentreze asupra unui singur featur e i la care s

Retrospectiv

Ce urmeaz?

msurate de-a lungul sprint-urilor. n opinia mea, cea de-a doua metod ar trebui s ia n considerare doar sprint-uri n care componena echipei a fost n mare aceeai. n cazul n care echipa crete de la 5 membri la 10, velocity-urile anterioare obinute de echipa de cinci persoane sunt foarte puin relevante.

Feed-back

Primim feed-back cel puin o dat la dou sptmni n meeting-urile de followup, n care facem demo la ce am lucrat recent. n acest fel putem prezenta evoluia funcionalitilor pe parcursul implementrii lor i avem posibilitatea de a ne adapta la modificrile de cerine sau chiar la cerine noi intervenite. nainte de fiecare follow-up trimitem un mail product owner-ului care conine dezvoltrile recente din proiect. Acest mail descrie tot ce merit prezentat, deci joac rolul unei agende pentru follow-up. Toat echipa particip la follow-up-uri i fiecare membru al echipei i prezint contribuia. Principalul beneficiu al implicrii ntregii echipe n aceste ntlniri periodice este c dezvoltatorii i product owner-ul pot interaciona. Sunt clarificate probleme deschise, sunt transmise informaii contextuale legate de funcionaliti n curs de implementare iar reaciile, feed-back-ul sunt recepionate n mod direct i la cald.

Feature ownership

Avem sprint-uri dedicate system testului i fixrii bug-urilor. Nu avem backlog pentru acest tip de sprint- uri, deoarece majoritatea task-urilor apar n decursul sprint-ului. Folosim un action list n loc de backlog. Acesta este un fiier Excel n care gestionm bug-urile. Fiecare punct din action list are o prioritate care specific ordinea n care acestea urmeaz s fie abordate. Atunci cnd este gsit un bug, nainte de a fi introdus n action list, se discut la faa locului cu programatorul cruia i-a fost alocat task-ul aferent pentru a vedea dac bug-ul poate fi fixat rapid. Dac se poate, atunci bug-ul nu va mai fi nregistrat. Am preluat aceast metod de la Henrik

System Test

32

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


participe doar membri din echip care sunt implicai n dezvoltarea feature-ului respectiv. Vom organiza, de asemenea, demo-uri interne mai informale pentru a ine echipa la curent cu evoluia proiectului. Story map-ul, o tehnic descris de Jeff Patton n [4], ne va permite s vedem imaginea de ansamblu a proiectului. Story map -ul ncearc s menin contextul n care task-urile trebuie implementate. Acest context reiese n urma discuiilor cu product owner-ul i cu alte pri implicate n proiect, discuii n care devine clar de ce anumite funcionaliti sunt necesare i ce capabiliti acoper acestea. n plus funcionaliti mari sunt descompuse n unele mai mici, n scopul de a le capta mai bine. Tot acest context este deseori pierdut atunci cnd funcionalitile sunt divizate n task-uri care sunt introduse ntr-un backlog plat. Steve Rogalsky ne ofer un ghid despre cum s crem un story map n [5] (ilustraia este de acolo).

Referine
[1] Power, K. Using Silent Grouping to Size User Stories. (2011) http://systemagility.com/2011/05/22/ using-silent-grouping-to-size-user-stories/ [2] Kniberg, H. Scrum and XP from the Trenches. (2007) [3] Kniberg, H. Elephant Carpaccio facilitation guide. (2013) http://blog. crisp.se/2013/07/25/henrikkniberg/ elephant-carpaccio-facilitation-guide [4] Patton, J. The new user story backlog is a map. (2008) http://www.agileproductdesign.com/blog/ the_new_backlog.html [5] Rogalsky, S. How to create a User Story Map. (2012) http://www.agileproductdesign.com/blog/ the_new_backlog.html

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

33

startups

startups

Ecosistemul startup-urilor din Cluj

Mircea Vdan mircea.vadan@gmail.com www.mirceavadan.ro www.clujstartups.com

cum zece luni scriam un articol n TSM despre ecosistemul startup-urilor din Cluj. Pe scurt, situaia din primvar era caracterizat printr-o agitaie brownian, n care toi actorii implicai: startup-erii, organizatorii de evenimente pentru startup-uri i mediul de business erau cuprini de buzzword-ul startup i ncercau diverse iniiative proprii pentru a fi n trend. n urm cu un an sau doi, nu existau startup-uri cu vizibilitate n pia, iar pn acum opt luni, startup-urile clujene erau puine i, relativ, la nceput, mai cunoscute fiind: Squirrly, TXT Feedback, UseTogether, Mira, KeenSkim i ShareYourCart, care au reuit s atrag atenia comunitii, mai ales prin obinerea de finanare din partea unor acceleratoare internaionale. Un efect benefic, parial datorat i hype-ului din jurul acestora, a fost faptul c au scos la lumin i alte idei cu potenial de startup sau clujeni care deja ncercau s pun pe picioare un startup. n mod natural, creterea numrului startuper-ilor a generat, n comunitate, o atmosfer uor competitiv ntre organizatorii de evenimente. Att Startup Weekend, cat i Startup Live au revenit n for cu cte o a doua ediie, mult mai mari i mai bine organizate dect precedentele. Mai ales c au beneficiat de ajutorul generaiei anterioare i de vizibilitatea obinut de ctigtorii primelor ediii. Existau i evenimente noi, de exemplu Open Connect, care i propunea s acopere partea de identificare i introducere n comunitate a antreprenorilor nceptori, interesai de startup-uri, completnd astfel eforturile Open Coffee. Pe lng evenimentele cu agend clar i format deja consacrat, au aprut iniiative i concepte mai generice, cu scopuri diferite: de la facilitarea interaciunii necesare construirii unei comuniti, Startup Lounge, la obiective educaionale, Tandem, sau chiar i anunuri ce prevesteau acceleratoare/incubatoare locale: StepUP, Spherik i NextPhase. n acest context efervescent, articolul din primvar prevestea o perioad de sedimentare i stabilizare i sublinia nevoia unor programe de termen mediu i lung care s susin startup-urile n zona Valley of Death, considernd prematur lansarea unor acceleratoare sau incubatoare. Previziuni realiste pentru lansarea unor astfel de programe fiind abia 2014-2015. Meritul principal al agitaiei din primvar a fost ncurajarea celor care cochetau cu ideea lansrii unui startup s[ fac primul pas. Lansarea noilor startup-uri a dus la apariia unei noi generaii care s-a coagulat n jurul evenimentelor, iar acum exist un numr minim de oameni pe care putem s-l numim comunitate. De aici nainte se

Marius Mornea

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

34

nr. 18/Decembrie | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


local i internaional, universitile, administraia local, studenii. Numrul mare de evenimente i actori implicai confirm statutul de buzzword i vizibilitatea mare a startup-urilor, fr a oferi garanii asupra calitii ecosistemului i msurii n care acest trend creeaz plus valoare. Pe de alt parte, la capitolul interaciune informal a aprut un salt calitativ. Piaa a evoluat la un nou stadiu, mai ales datorit naturii foarte dinamice a startup-urilor. Toi cei care au trecut printr-un proces de accelerare, fie au validat idei i au nceput s atrag clieni, fie au invalidat ideea i au pivotat sau au renunat. Rezultatul este pozitiv n ambele cazuri, fie prin produse care produc plus valoare, fie prin oameni care au acumulat un set de experiene i competene i le reinvestesc ntr-un al doilea startup sau n mediul de business local. Mai ales n companiile IT, care au nevoie de o tranziie dinspre serviciile de outsourcing spre dezvoltarea de produse. Interesant este aici mixul ntre dinamism i colaborare, cerut de viteza mare de schimbare i adaptare, n contextul unor resurse foarte limitate, rezultnd nevoia unui mediu colaborativ cu schimb constant de informaii. Practic, n urm cu doi ani, startup-erii se ntlneau la evenimente mari sau auzeau vag unii de alii, pe cnd n ultimele ase luni au aprut interaciuni foarte strnse, ajungndu-se la schimb de informaii, clieni, recomandri, chiar i la reunirea eforturilor n startup-uri noi. Concluzia ultimelor ase luni este c majoritatea actorilor din mediul social au devenit interesai de fenomenul startup-urilor, iar cei din prima linie, au fcut un salt evolutiv spre validarea/ invalidarea ideilor i sedimentarea cunotinelor pentru a ataca alte idei. Revenind la statusul actual, exist trei mari grupe de actori implicai: comunitatea startup-erilor, organizatorii de evenimente dedicate acesteia i actorii din alte domenii care interacioneaz cu antreprenorii din startup-uri. n cele ce urmeaz ne vom opri asupra fiecrei categorii. Comunitatea de startup-uri, din Cluj, este ntr-un proces de cretere puternic. Dovada cea mai clar este numrul acestora: cel puin 35 (fa de aprox. 10 tiute n primvar). Numr care reflect doar startup-urile ce particip activ n comunitate sau au reuit, prin numrul mare de clieni, s devin cunoscui. Un exemplu edificator n acest sens este Moqups, un startup prezent pe lista de recomandri a lui Steve Blank, vizibil n presa internaional, dar care nu a prea intrat n contact cu comunitatea local. Putem doar s presupunem c exist mai multe iniiative de acest gen, care fie au succes, fie nu, dar nu sunt vizibile n pia. Bineneles c numrul mare de startup-uri nseamn i o dinamic mai mare a pieei, iar toamna a adus cu ea i primele startup-uri nchise. Era timpul s simim i noi eecurile pe pielea noastr, nu doar s le citim pe bloguri internaionale. Pentru cei care se plng de lipsa de bani, momentul adevrului: nu lipsa finanrii a stat n calea reuitei acestor startup-uri. Ce rmne din aceste eecuri e experiena celor trecui prin ele, experien care va fi un sol mnos pentru urmtoarele valuri de startup-uri. O a treia categorie de startup-uri ar fi cele care au pivotat. Sunt mai puine astfel de exemple, dar sunt reprezentative pentru reziliena i adaptabilitatea la dinamica constant, att ai factorilor interni (echipa, finanarea, viteza de execuie), ct i ai celor externi (adopia n pia, nevoile utilizatorilor, concurena),
www.todaysoftmag.ro | nr. 18/Decembrie, 2013

imprim o distincie clar mai multor evenimente de calitate pentru startup-uri i a investitorilor (bineneles, atrai de oamenii din comunitate). nainte de a reveni la contextul actual i de a analiza n detaliu ce se ntmpl n ecosistem, merit s menionm principalele evenimente i evoluii din ultimele 6-8 luni. Exist dou evoluii majore: evenimentele formale i interaciunea informal. La capitolul evenimente stm foarte bine, avnd o gam foarte larg de teme i organizatori: lansri de revist, evenimente business mari organizate de clusterul IT (Cluj IT Innovation Days) sau Business Days, evenimente tehnice sub egida principalelor comuniti profesionale din Cluj (de ex. ITCamp), evenimente organizate pentru studeni de ctre studeni (#defineCluj) i multe altele. Majoritatea acestor evenimente a implicat scena startupurilor clujene prin sesiuni de pitching i prezentri. Surprinde i diversitatea mare a partenerilor de dialog: mediul de business

35

startups
Ecosistemul startup-urilor din Cluj
necesare succesului. Bilanul aproximativ din acest moment este: 20 startup-uri cu produs lansat pe pia, 16 care i vor lansa produsul n urmtoarele luni, iar 6 au fost nchise. Dintre acestea, 5 au participat ntr-un accelerator, dou au gsit investitori, iar restul sunt bootstrapped sau n cutare de investitori. De menionat c exist startupuri care au echipa format din membri ai comunitii clujene (n special partea de development) n combinaie cu oameni din alte orae din Romnia sau alte ri (vestul Europei i SUA). Evenimentele dedicate startup-urilor au suferit i ele transformri. Dup o pauz de mai multe luni, Open Coffee renate sub o alt form, mai structurat i mai apropiat de nevoile comunitii. Cluj Hub nu a mai organizat Startup Lounge n aceast toamn, dar va ncheia n curnd prima ediie a programului Step Up. Cluj Cowork e din ce n ce mai deschis startup-urilor i evenimentelor dedicate (mrturie fiind organizarea primei ediii Startup Pirates din Romnia). Spherik Accelerator se lanseaz n doar cteva zile i are planificate deja cteva workshop-uri. Tot n decembrie se va deschide i Chaos Computer Club care se poziioneaz ca un spaiu pentru IT-isti i startup-eri. Iar Startup Weekend i Startup Live sunt deja binecunoscute i i anun ediiile de primvar. Pentru cei familiari cu ecosistemul, se remarc lipsa Open Connect. Era de ateptat nc din primvar, ca n procesul de sedimentare i maturizare al iniiativelor, unele s se piard, att ca focus, ct i ca relevan. n momentul de fa comunitatea ncepe s acopere implicit unele nevoi, cum ar fi atragerea altor startup-eri, iar evenimentele mari ofer suficiente ocazii de pitching (Business Days, ITDays, etc), rolul evenimentelor de nivel introductiv fiind mai degrab unul de facilitare al comunicrii ntre membrii existeni si cei noi. nainte de a trece la a treia mare categorie de actori, merit menionat c exist i programe de nivel regional, naional i internaional care influeneaz comunitatea clujean. La nivel regional apare interes din partea unor programe de dimensiuni mari, de exemplu Cluj Youth Capital 2015, care vrea s dedice un program startup-urilor. Exist i programe naionale care au ales s fac prezentri la Cluj, de exemplu RICAP i Google Export, programe ce ajut proiectele de cercetare s fac tranziia spre comercializare, n parteneriat cu companii americane. Startup-urile pornite din zona de cercetare fiind i unul din principalele subiecte de discuii la conferinele de planificare strategic a investiiilor din fonduri europene, dedicate cercetrii, n urmtorul exerciiu financiar 2014-2020. Dar pe lng aceste programe formale, startup-erii clujeni profit i de evenimentele din regiune, participnd la How to Web, ediii Startup Weekend i Startup Live din alte orae, i chiar la evenimente internaionale, gen Pioneers Festival. A treia parte component a ecosistemului o reprezint partenerii care ncep s interacioneze cu startup-urile. Cei mai activi, n aceast categorie, sunt partenerii din mediul educaional, mai exact universitile. Acestea au rspuns prompt diferitelor oportuniti de implicare, pornind de la aderarea la cluster , pn la prezena la evenimente, participarea la discuii i chiar construirea i susinerea unor echipe de studeni, care au avut un real succes la competiii internaionale precum Imagine Cup, Digilent, i au continuat proiectele sub forma unor startup-uri. O discuie interesat a avut loc la #defineCluj (eveniment orientat spre studenii tehnici doritori s nceap un startup), unde s-a abordat subiectul implicrii universitilor (UTCN, UBB) n educaia antreprenorial. Practic o nevoie, din perspectiva startup-urilor, este gsirea de angajai sau co-fondatori, i neputnd concura cu salariile firmelor de IT, sunt obligai s se orienteze spre studeni doritori s ncerce o iniiativ, nainte de a fi sub presiunea angajrii. Pe de alt parte, exist proiecte de cercetare care pot deveni startup-uri cu inovaii solide, dar n lipsa experienei antreprenoriale n echip, rmn doar cu obiectivele de cercetare atinse, dar cu potenialul de business nefructificat. O soluie propus a fost instituirea unei catedre private, n colaborare cu Internaional Business Club Cluj, care s ofere studenilor ocazia aprofundrii domeniului antreprenorial cu suportul unor oameni de business de succes din mediul local sau internaional. Sigur i firmele de IT urmresc ce se ntmpl pe scena startup-urilor, sau ar trebui s-o fac din dou motive. n primul rnd, marea majoritate a startup-urilor vor eua i, fondatorii acestora (n cazul n care nu vor avea alte iniiative), i vor caut un job. n al doilea rnd, pe termen lung, este foarte probabil ca industria de outsourcing s se orienteze spre dezvoltarea i marketizarea de produse software proprii i atunci vor fi la mare cutare product manager-ii, adic acei oameni care vor ti cum s construiasc un produs, s fac customer development, s l lanseze i s ctige traciune. Iar aceia care vor fi clii deja n toate aceste domenii sunt startuperii. O confirmare a acestui interes vine din deschiderea cluster-ului Cluj IT, n calitate de reprezentat al intereselor companiilor IT, spre colaborri cu startup-urile clujene. Membrii clusterului sunt mai mereu prezeni la evenimente, de toate dimensiunile, att formal, prin proiecte i strategii, ct i informal, prin implicarea individual n diverse programe de educaie antreprenorial. Dintre aceste programe menionm Tandem, organizat de GRASP i workshopurile organizate de JCI n colaborare cu oamenii de business din Cluj. Acetia din urm jucnd destul de des rolul de speakeri sau mentori ( de exemplu Philipp Kandal i Clin Vduva). Posibilitile de colaborare fiind multiple, de la schimbul de informaii, pn la iniiative de HR sau identificarea oportunitilor de parteneriat: finanri, co-fondatori, spin-offs, intraprenoriat sau chiar consum de servicii/produse create de startup-uri. n final a meniona administraia local, care a nceput s participe la evenimente i s gestioneze programe cu vizibilitate mare. Am mai pomenit Cluj Youth Capital 2015, dar s nu uitm gradul foarte mare de accesare al finanrilor pe SRL-D, cel mai mare din ar cu un total de 1267 din 10220 (locurile doi si trei 1091, 669, fiind ocupate de Bucureti i Timi). Dei lipsesc proiectele de colaborare concret, exist vizibilitate i deschidere spre dialog. nc lipsesc multe elemente pentru a avea un ecosistem cu adevrat clit. n primul rnd nu exist poveti de succes, obinerea finanrilor seed (10-50 de mii de euro) care pot fi considerate doar un pas spre succes. Nu s-a ajuns nc la finanare de tip series A (200-500 de mii de euro) i probabil va mai dura pn s vedem una la un startup din Cluj, deoarece un startup n aceast situaie necesit traciune i product-market fit. Nici la partea de clieni i cashflow sntos nu avem nc startup-uri care s se remarce. Poate Moqups e excepia care genereaz venituri i este recunoscut n pia. n materie de evenimente i programe suntem pe drumul cel bun, dar mai e nevoie de timp ca aceste iniiative s ctige constan i s continue s creasc nivelul calitativ al coninutului. Dup cum menionam la nceput, piaa nc nu este pregtit s alimenteze constant

36

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


acceleratoare locale, fie prin startup-urile pornite n Cluj, fie prin atragerea altor startup-uri din regiune. Un model care nu a aprut la noi este cel implementat de bulgari: dei nu aveau o comunitate puternic local, au nfiinat dou acceleratoare care au trezit interesul masiv al comunitilor din regiune, genernd un ecosistem activ. Anul trecut exista o micare brownian n zona de generare a startup-urilor i lipseau activiti n zona valley of death (perioada dintre nceput i monetizare/ investiie). Acum se pare c cei care vor s nceap un startup afl uor la cine trebuie s apeleze pentru ndrumare i intr astfel n comunitate. Activitile de suport din valley of death s-au nmulit, existnd o continu agitaie pe acest palier, att prin evenimente, ct i prin activiti ad-hoc, motiv pentru care ar trebui ncurajate n continuare. Ne ncadrm nc n previziunile din primvar, cu o comunitate local n plin avnt, o simbioz bun cu activitile din Bucureti, clujenii avnd acces la ceea ce se ntmpl n capital: How To Web, TechHub, VentureConnect, i deschidere ctre pieele internaionale, existnd contacte cu investitori din Germania, Anglia, Israel i SUA, care vor duce la apariia unor colaborri n urmtoarele luni. La nivel de comunitate agitaia trebuie s se mai cimenteze, iar evenimentele i programele s creasc calitativ, reflectnd astfel experiena acumulat a comunitii (ca i consecin benefic va fi apariia/ aducerea factorilor investiionali att internaionali, ct i locali). Un alt aspect care merit mbuntit este folosirea mai inteligent a resurselor existente local. Dei a reuit s capteze atenia universitilor, mediului de afaceri i chiar a administraiei, comunitatea de startup-uri nc nu a reuit s capitalizeze pe acest interes. Practic avem local un mix ntre cercetare, educaie, resurse financiare i execuie, n zona tech, care ar putea ataca teme i proiecte mult mai ambiioase i inovative, dar nc nu avem experiena necesar s le legm ntrun tot funcional. Am ncredere c o dat trecui de primele ncercri (eecuri/pivotri/exit-uri), startuperii clujeni vor reui s se orienteze spre astfel de proiecte cu succes.

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

37

startups

SpotTune
n bun profesor mi-a spus o dat: Dac trebuie s faci ceva de mai mult de dou ori, f un program care s fac asta pentru tine! Nu am fost convins n totalitate de acest adevr la momentul respectiv, dar ptruznd tot mai mult n era tehnologiei am nceput s fiu din ce n ce mai convins de acest adevr. Adevrul pe care l-am constatat este c noi oamenii stm foarte prost la capitolul task-uri repetitive. i aa i trebuie s fie s lsam tehnologia s se ocupe de ele i noi s ne bucuram mai mult de lucrurile cu adevrat importante. SpotTune a pornit de la o idee simpl c dup un an de zile ai sacrificat 2-3 filme bune pentru a-i porni care mi-a venit n timpul facultii. Dup sau opri WiFi-ul de la telefon, nu? Te-ai trezit vreodat n timpul unei opere, n mijlocul celei cum bine tii, n perioada aceea toi suntem persoane foarte ocupate i voiam mai frumoase arii din acea oper, cu telefonul din buzunar dornic s fac ceva n privina asta. Mi-am lasat s acompanieze orchestra? SpotTune va putea oferi utilizatorului imaginaia s zboare i aa a aprut, ei i opiunea de a-i pune pe silenios telefonul i / sau a trimite bine, ideea SpotTune. Aveam nevoie de o un mesaj automat oricrei persoane care ncearc s te contacteze aplicaie cu adevrat inteligent care s tie ntr-un interval prestabilit de timp. SpotTune i va oferi posibilitatea s setezi un astfel de proces s fac lucruri personalizate pentru mine. Voiam s i pot trimite un mesaj automat automat cu doar cteva tap-uri. Singurul scop este acela de a face prietenei cnd ieeam de la facultate pen- viaa mai uoar utilizatorului. Pe lng aceste opiuni, aplicaia va nregistra i timpul pe care tru a ne vedea, sau mamei pentru a pregati masa. Voiam s am telefonul pus pe silent utilizatorul l-a salvat, automatizndu-i procesele. Fiecrei aciuni automat n toate locurile pe care le frecven- i va fi asociat un anumit numr de secunde care va fi adunat i tam i cereau asta conferine, cursuri, biseric. Voiam s mi stocat local. Feed-back-ul acesta e un element important care nu anun prietenii prin mesaje/mail-uri cnd ajungeam n anumite trebuie neglijat. Urmtorii pai n dezvoltarea aplicaiei este de a crea aplicaia locaii. Voiam s mi se porneasc Wifi automat cnd ajungeam acas, pentru c aveam un router i s mi se opreasc conexiunea web pentru a permite utilizatorului de a-i introduce aceste evenimente de pe aplicaia web, ca mai pe urm s fie sincronizate de date. Poate deja v regsii ntr-una din aceste situaii. Scenariile de mai sus sunt numai cteva din multele mini- cu telefonul. SpotTune este menit pentru a face viata mai buna utilizatoritask-uri care, fr s ne dm seama, ne mnnc ntr-un mod subtil din timp. De aici i ideea SpotTune tune your spot. Ideea lor. Task-urile pe care tie s le fac pot fi combinate posibilitile aplicaiei este de a seta diferite evenimente/aciuni care s se sunt variate. De aceea, pe website-ul aplicaiei www.spot-tune.com ntmple n diferite locaii i/sau la anumite intervale de timp. se pot aduce orice sugestii de task-uri care ie, ca utilizator i-ar face viaa mai bun. Lsai-v imaginaia s zboare! Simplu i eficient. SpotTune ncearc s automatizeze aceste procese is introduc fluena n user experience-ul oferit de noile telefoane mobile. Principiul e simplu: setezi o dat, te bucuri de mai multe ori. Un exemplu simplu. n medie, un posesor de smart-phone (de orice fel) i activeaz sau dezactiveaz WiFi-ul sau traficul de date de minim patru ori pe zi din diverse motive. Procesul e unul relativ scurt , dar care dup foarte puine repetri devine laborios: deblocheaz ecranul, trage n jos de bara de notificri, apas pe butonul de WiFi, ateapt. Durata procesului e de aproximativ 15 secunde, presupunnd c nimic nu intervine. Dup un calcul simplu vedem c omul nostru cu telefon detept cheltuie aproximativ 7 minute pe sptmn ceea ce echivaleaz cu aproximativ 6 ore pe an de pornit i oprit WiFi-ul telefonului. Cam ciudat s tii

George Platon

George.Platon@catalysts.cc Software developer @ Catalyst

38

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

startups

CTF365
n Octombrie 2011, am nceput proiectul HackaServer, o platform de testare a securitii web folosind puterea crowdsourcing-ului. n timp ce dezvoltm aplicaia HaS, am fost nevoii s cutm un mod prin care s pregtim un spin-off ( produs secundar, nou, derivat) n caz c lucrurile nu decurgeau aa cum am planuit. Trebuie s menionez c proiectul HaS nu este nc deschis pentru afaceri din cauza unui simplu motiv: Suntem o echip foarte mic. nvarea securitii informaionale prin gamificare nu este un concept nou. De fapt, este chiar destul de vechi, de la nceputul internetului. Se numeste CTFCapture the Flag. Renumita conferin pentru securitate informaional DefCon, are una dintre primele competiii CTF. Dac dorii un portal de CTF-uri putei verifica CTF Time pentru a vedea unde are loc o competiie CTF (n industria securitii informaiei). Astfel de competiii sunt organizate de Faculti de Informatic, companii internaionale sau chiar agenii guvernamentale. Cel mai bun mod de a nva este acela de a nva prin practic (hands-on), iar gamificarea exceleaz la acest capitol, avnd rezultate foarte bune cnd vine vorba de mbuntirea abilitilor/competenelor, educaie i pregtire (antrenament). nvarea securitii informaionale prin gamificare ar spori implicarea studenilor/angajailor, ar crete capacitatea de reinere a informaiilor i ar accelera procesul de nvare. Pe lng aceste avantaje, pentru student i/sau angajai este ceva distractiv, provocator i practic. Competiiile CTF din ziua de azi sunt foarte rspndite i diferite prin concept i design. Pe lng frumuseea i atmosfera din jurul lor, de apreciat sunt dedicaia i efortul echipelor participante la fiecare competiie CTF , dar mai ales efortul celor care concep sistemele i aplicaiile respective. Cu toate acestea, competiiile au cteva probleme, dar majore care in de modul n care sunt concepute i organizate: Nu dureaz foarte mult- n ziua de

O scurta recapitulare:

De ce CTF?

azi, competitiile CTF dureaz ntre 24h i cteva zile, sptmni cel mult. Rsfirate i izolate- Nu se organizeaz ntotdeauna pe internet i trebuie s fii prezent n acea camer/cldire. mprtiate -Se ntmpl peste tot n lume dar, fiind mprtiate i scurte, implicit sunt i mici. Nu au nici o valoare/Nu conteaz - Deoarece nu dureaz foarte mult i sunt izolate, departamentele de Resurse Umane nu cer experien n asemenea aciuni cnd angajeaz n domeniul securitii informaiei. Competiii bazate pe un scenariu cu foarte multe restricii i reguli. Nu sunt scenarii bazate pe realitate. Noi, echipa din spatele CTF365, am decis c este timpul pentru a schimba modul n care CTF este conceput i organizat printr-o nou abordare propulsnd jocul la scar mondial. Scopul nostru este de a crea o replic real a internetului, unde profesioniti n domeniul securiii informaionale, studeni si entuziati ai domeniului s aib posibilitatea de a se antrena continuu pe servere i infrastructuri adevrate create de profesioniti, i nu pe nite servere vulnerabile. Practic construirea unui internet n Internet unde user-ii pot ,,hcui,, n voie pe orcine oricnd i orict fr restriciile internetului real.

O alt competiie CTF ?

Pot experimenta noi configuraii de server i pot vedea dac acestea pot fi vulnerabile. Companii de Securitate Pot testa WAFs (Web Application Fiewall) sau orice software n dezvoltare, precum i echipamente hardware de securitate C o m p a n i i l e d e F o r m a r e i n Domeniul Securitatii Pot mbunti capacitile studenilor prin testarea lor n situaii reale/bazate pe realitate. Re cr utori C e r t i f i c ate l e d e Securitate sunt foarte importante, dar performanele candidailor i realizrile acestora ca profesioniti n domeniul securitii conteaz cel mai mult ntr-un interviu. Organizaii de securitate, precum OWASP promoveaz informaii legate de securitatea informaional printre web developers . C o n f e r i n t e l e I N F O S E C Participanii vor cu adevarat s se distreze i mai mult, vor ca realizrile lor s nu fie n zadar.

Pentru cine este acest proiect?

Red & Blue Teams, specialiti CERT/CSIRT Specialiti n securitate ofensiv i defensiv i pot mbunti abilitile cu ajutorul unor scenarii bazate pe realitate. CTOs, Administratori de Sistem

Ne-am ntrebat i noi acelai lucru, dar se pare c am reuit s ne descurcm pn acum. Dei mai sunt multe lucruri de fcut, Iaas-ul (Infrastructure as a Service) nostru este destul de flexibil i capabil pentru a imita lumea real. Flexibilitatea platformei CTF365 permite utilizatorilor s-i conecteze propria infrastructur, fie c este cloud based, privat sau stocat pe servere dedicate. Am demonstrat i n trecut c este posibil s testezi serverele din cloud . Mai mult de att, am avut un Metasploitable n cloud. Putei citi acest articol chiar aici pe Rapid7Community.

Cum e posibil s creezi un internet in Internet?

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

39

startups
CTF365
Companiile i organizatiile pot obine propria lor infrastructur CTF n cteva minute i toate obiectivele atinse de utilizatorii lor pot fi adugate la performanele generale ale angajailor. n acest moment, CTF365 este n alfa testing, ceea ce nseamn c ruleaz cu un numr mic de echipe (peste ~100 de echipe) i de asemenea exist peste 11000 de utilizatori i peste 900 de echipe din toat lumea care sunt gata de joc. Fiind n stagiul alfa nseamn c suntem nc n faza de dezvoltare, iar cei care au primit acces la stagiul alfa i la viitorul stagiu beta pot experimenta i vedea cum va arta versiunea versiunea final . Mai trziu, cnd vom ncepe a mbunti capacitatea hardware vom fi gata de a lasa pe toat lumea s participe. n etapele alfa i beta majoritatea utilizatorilor/juctorilor sunt experi n securitate de la diferite companii de testare a securitatii, companii de training pe securitate . Printre recomandri, acceptm de asemenea i experi Infosec, precum i instructori/profesori Infosec care solicitacces la faza alfa. n cazul n care dorii accesul mai devreme, v rugam s ne informai i vom ncerca s v oferim acest lucru. Securitatea nu va fi niciodata perfect, dar poate tinde ctre perfeciune. Potrivit sursei Frost&Sullivan, se prezice c ocuparea locurilor de munc n cadrul experilor n securitatea informaiei va crete cu 332,000, ncheind anul cu un numr de 3.2 milioane de experi n securitate i ajungnd n anul 2017 la un numr de 5 milioane. Pe lng profesioniti cu diplom, exist peste 25 milioane de utilizatori ai forum-urilor de administrare/ securitate/hacking. Aa cum am mai spus nainte ntr-un interviu, internetul se dezvolt mult mai repede dect capacitatea lumii de a oferi administratori de sistem bine pregtii, precum i programatori profesioniti bine pregtii n domeniul securitii. Exist un decalaj tot mai mare ntre aceste dou lucruri, iar cineva trebuie s-l rezolve sau cel puin s ncerce. CTF365 nu este un joc. Este o platform de formare pentru experi n securitate i pentru industria TIC, care implementeaz concepte CTF i influeneaz mecanicile gamificrii pentru a mbunti rata de retenie i a accelera procesul de nvare/ antrenare. CTF365 este un internet n interiorul Internetului unde utilizatorii i vor crea propriile servere i unde vor experimenta servicii ale vieii reale, cum ar fi platformele de microblogging precum Twitter, reele de socializare precum Facebook sau Google+, servicii de e-mail precum Gmail i Yahoo, pentru ca n final, ei s poat face orice doresc cu aceste servicii. Spre exemplu, n lumea real exist GoDaddy cnd vine vorba de nregistrarea domeniului, nu? Noi avem GoGrandpa.365 unde utilizatorii i vor putea nregistra propriile domain.ctf sau domain.365. Utilizatorii pot nva noi tehnici ofensive sau pot nva de asemenea i tehnici defensive. Dezvoltatorii Web i pot antrena abilitile de a crea aplicaii stabile i pot nva cum s i apere aplicaiile mpotriva atacurilor cibernetice. Experilor n securitate, studenilor n acest domeniu, dar i dezvoltatorilor web i administratorilor de sistem, CTF365 le ofer oricnd soluii eficiente. Apelnd la comparaii sugestive- CTF365 este ca un spaiu imens de antrenament al armatei sau ca un simulator foarte scump unde piloii sunt pui n mijlocul unor situaii neateptate/critice, fr a fi vtmai.

Unde suntem acum?

Concluzii

Marius Corci
Co-fondator @ CTF365

marius@ctf365.com

40

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

management

Cum s menii succesul unui joc mai mult de doi ani de la lansare?

Care este secretul succesului acestui joc marca King, n contextul n care industria de gaming este ntr-o continu cretere, competiia devenind din ce n ce mai puternic, iar jocuri cu mecanici, design i modele de business noi apar n mod constant? Nu cred c se poate vorbi despre o reet care s garanteze succesul, dar uitndu-ne la alte aplicaii (indiferent de specificul lor), putem cel puin nva din greelile altora, fiind ateni mai ales la modul n care au reuit s treac peste piedicile inerente n dezvoltarea de software. nc dinainte de lansare, se tia c Bubble Witch Saga va fi un joc cu o mecanic deja clasic. De aceea, am ncercat s aducem un element de noutate, i anume povestea. Clatoria (saga) juctorului a avut un scop multiplu: diferenierea de alte jocuri de acelai gen, dar i o retenie semnificativ mai bun. Aceast cltorie se traduce pentru juctor att printr-o cretere a skill-urilor n joc, prin mrirea gradual a dificultii nivelurilor sau prin introducerea de blockers (care nu sunt imposibil de depit), ct i prin interaciunea cu ali juctori prietenii de pe Facebook. Partea de interaciune social a fost unul dintre factorii care a meninut Bubble Witch Saga mai bine de doi ani n topuri. Prietenii se ajut n joc: i trimit unul altuia elemente ajuttoare precum vieile (sau energie) sau booster-e pentru a trece peste anumite bariere. Elementul

ubble Witch Saga are 26 de luni de la lansarea iniial pe platforma Facebook i 16 luni de la intrarea pe piaa de mobile. Cu toate acestea, jocul reuete s se menin n TOP 10 jocuri pe platforma social Facebook,iar pe mobile este cel mai popular joc din categoria bubble shooters, bucurndu-se n continuare de cele mai bune review-uri i comentarii. de competiie este i el prezent, iar unii juctori pot fi motivai de obinerea unui scor mai bun pe un anumit nivel sau de a recupera poziia de lider atunci cnd sunt depii de prieteni. n cazul Bubble Witch Saga, a fost foarte important atenia acordat juctorilor i mai ales aciunilor lor din joc. Niciun joc nu este perfect i bug-uri vor continua s apar, iar cum menionam la nceput, opiunile juctorilor sunt din ce n ce mai multe. Dar prin pstrarea unui dialog constant cu utilizatorii, Bubble Witch Saga s-a meninut sus n topuri. Acest dialog a fost purtat prin mai multe canale, precum grupurile de fani de pe pagina de Facebook sau rating-urile i comentariile din AppStore i Google Play. ns cel mai important aspect al acestui dialog a fost existena unui sistem de tracking bine pus la punct. Foarte muli juctori nu sunt dispui s ofere feed-back n mod direct i pot renuna la aplicaie ntr-o secund. Bubble Witch Saga a reuit s opreasc foarte multe dintre aceste poteniale puncte de renunare la joc tocmai prin acest sistem de tracking. De exemplu, recent am observat c unul dintre nivelurile din joc avea o rat foarte mare de abandon: juctorii aveau foarte multe ncercri la acel nivel, dar cei care reueau s treac obineau cu greu scorul necesar. Soluia a fost s gsim o nou versiune pentru nivelul respectiv, una nu neaparat mai facil, dar care a pus mai mult accent pe folosirea skill-urilor deja dobndite de juc tor pe parcursul ntregii cltorii n joc. O alt modalitate prin care Bubble Witch Saga se menine n continuare pe o poziie puternic este adaugarea n mod constant de coninut nou. Aici ne referim att la niveluri noi (la continuarea parcursului juctorului), ct i la grafic. De exemplu, pentru Halloween, Bubble Witch Saga a avut o tem nou sezonier, n care pe harta de progresie au fost introduse elemente specifice acestui eveniment: una din bilele din joc a fost transformat n dovleac, unul din sunetele din joc a fost schimbat ntr-un rs de fantom, schelete animate apreau din loc n loc, iar pe cer zburau lilieci n loc de oimi. i de Crciun jocul va fi modificat cu cteva elemente specifice, dar rmne s descoperii voi care vor fi acestea. De asemenea, este foarte important s se fac o difereniere a juctorilor n funcie de punctul n care se afl pe parcursul cltoriei lor n Bubble Witch Saga. Pe de o parte, exist juctori care ajung aproape de finalul jocului, iar ei vor niveluri noi, vor provocri din ce n ce mai dificile. Pe de alt parte, sunt juctori care se afl la nceputul jocului i care trebuie ajutai s ajung ct mai departe n joc. Pentru acetia din urm, de exemplu, un tutorial interactiv care s-i ajute s neleag fr probleme care este scopul jocului este foarte util. Feature-urile dezvoltate pentru Bubble

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

41

management
Cum s menii succesul unui joc mai mult de doi ani de la lansare?
Witch Saga s-au axat n primul rnd pe juctori, ncercnd s le ofere o experien ct mai plcut. Una dintre deciziile strategice ale companiei King a fost renunarea la ad-uri n joc, tocmai pentru ca utilizatorii s se bucure de povestea jocului fr ntreruperi. Aceast continuitate a experienei a fost urmrit i asigurat i prin sincronizarea progresului de pe aplicaia de mobile cu progresul din varianta de Facebook. Bubble Witch Saga a fost primul joc cu acest feature i reprezint n continuare un exemplu dat de Facebook (despre detaliile tehnice i problemele ntmpinate n implementare v-a povestit colegul meu, Cristi, ntr-unul dintre numerele anterioare). Un efect secundar pozitiv al acestei strategii este viralitatea. Juctorul care revine mai des i se joac mai mult este mai dispus s recomande jocul prietenilor si, att prin word of mouth, ct i prin mouse to mouse. Jocul trebuie s i ofere i aceast posibilitate i s faciliteze postarea pe Facebook, fr ns a fora acest lucru i fr ca juctorul s nu fie contient. n acelai spirit, n momentul n care vrem s dezvoltm un nou feature pentru Bubble Witch Saga, prima ntrebare pe care echipa de dezvoltare o pune este de ce? sau, mai degrab, ce va ctiga juctorul din acest feature? Odat gsit rspunsul la aceast ntrebare, implementarea rmne o simpl formalitate. Aici intervine un alt aspect prin care Bubble Witch Saga a reuit s se menin drept unul dintre cele mai populare jocuri pe Facebook: o echip extraordinar care lucreaz la acest proiect. Echipa Bubble Witch Saga este destul de mic, fiind format din zece persoane: developeri, QA, artist, designer i producer, iar acest lucru reprezint un avantaj. Fiecare membru al echipei este responsabil de succesul jocului, opinia fiecruia este ascultat, iar deciziile privind ideile puse n practic n joc sunt luate de comun acord i pot veni de la oricine din cadrul echipei. Mediul de lucru este tot timpul unul plcut, relaxat, pentru c ntreaga echip tie foarte bine ce are de fcut, iar deadline -urile sunt fixate tot de membrii si. Mai mult, n momentul n care apare o eroare, este foarte important ca toat echipa s nvee din greeli, s comunice transparent i s mearg mai departe. Ct timp va mai rezista Bubble Witch Saga n aceast pia aglomerat i n continu cretere? Nu tim, dar cu siguran va fi n continuare sus atta timp ct vom continua s inovm, s ascultm i s respectm juctorii.

George Abramovici
Business Manager @ King Romnia

42

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE programare

programare

Pstrarea angajailor talentai, o tem recurent n IT


omeniul IT s-a confruntat cu veritabile crize de angajare a programatorilor. Acest fenomen poate fi interpretat ca un paradox ntruct, cel puin la nivelul opiniei publice (mai mult sau mai puin avizat), piaa IT este vzut ca fiind una nc foarte primitoare, nefiind saturat de angajai i absorbind n continuare programatori bine pregtii care s asigure o infrastructur solid acestui domeniu mereu expansiv i din ce n ce mai ramificat. Totui, la fel ca n politic, s-a nregistrat i n domeniul IT un proces de migrare sau, ntr-o not peiorativ, un traseism al programatorilor generat de boom-ul pieei IT. Acest fenomen migraionist a aprut n perioada 2006-2008, odat cu venirea n Romnia a unor mari companii precum IBM, Apple, Sonny-Erickson sau Alcatel. Dac n acea perioad piaa era plin de programatori, n prezent sectorul IT este supranumit sectorul cu rat de omaj zero. Datorit acestei instabiliti provocate de migrarea sau incertitudinea poziiei pe termen lung a angajailor n firm, s-au ridicat ntrebrile referitoare la retenia programatorilor. Ce trebuie s fac managerul companiei i departamentul HR pentru a reine angajaii valoroi? Cum trebuie s acioneze i ce trebuie s le ofere pentru a-i stimula s creasc odat cu compania i, astfel, s rmn angajai stabili? ntr-adevr, pentru a rspunde la aceste ntrebri este nevoie de anumite statistici i experiene acumulate, ns acestea vor funciona sau nu, cnd vor fi aplicate spre a oferi un rspuns mulumitor. Altfel spus, angajatorul trebuie s ia pulsul companiei (s i cunoasc angajaii i s fie familiarizat cu nevoile i dificultile pe care le ntmpin acetia) i s i adapteze permanent cunotinele n domeniu i cele despre piaa IT n care se desfoar. Cu toii tim c n orice sector de activitate principalul criteriu de atragere i pstrare a angajailor se refer la factorul financiar. La fel se ntmpl i n sectorul IT, unde pachetul salarial are o nsemntate foarte ridicat. Este foarte interesant, ns, faptul c, spre deosebire de alte domenii, intervine un dar. Relativismul banilor este dat de o serie de factori care afirm c pentru un programator nu primeaz ntotdeauna categoric banii. Da, acetia sunt foarte importani (unde nu sunt?) dar, n viziunea unui programator pasionat, criteriul material nu se impune aproape niciodat n faa posibilitii de a lucra cu tehnologii inovatoare, de ultim generaie. De aceea, se poate spune, fr rezerve, c asigurarea unor tehnologii actualizate la locul de munc reprezint o surs sigur de retenie a angajailor i, n oglind, dezinteresul pentru nlocuirea tehnologiei nvechite duce la plecri masive. Dac privim logic acest context, putem deduce clar urmtorul lucru: chiar dac angajatul nu accentueaz la nceput att de mult aspectul financiar, ci i focalizeaz atenia spre tehnologiile noi, tot el este cel care ctig; nu este vorba de avantaje imediate ci de ctiguri profesionale pe termen lung, ntruct dezvoltarea unor aptitudini conforme cu noile tehnologii conduce la sporirea experienei, atingerea unui nivel superior de expertiz i, n timp, la creterea gradat i sigur a salariului. Pentru companiile care vor s depeasc barierele dezvoltrii determinate de lipsa forei de munc este necesar s fac mai mult dect att. Aa cum au obiective ambiioase de business, trebuie s aib ndrzneala de a investi mai mult n resursele umane. Exemplul Google este binecunoscut i toat lumea accept uor c acolo investiia n oamenii a adus rezultate remarcabile. Cine oare dintre IT-iti nu i dorete s lucreze la Google? i totui, ci dintre preedinii de companii IT sunt dispui s fac o investiie n oameni similar celei de la Google? Google nu s-a bazat pe studii de pia privind beneficiile angajailor, ci a ndrznit. A ndrznit s investeasc n oameni att ct a fost necesar pentru a crea cultura din care s nu mai vrei s iei. Google asigur tot ce i trebuie ca s trieti doar n Google, ca n nchisoare sau armat, cu marea diferen c la Google i doreti s fii nchis. Motivele pentru care programatorii aleg s prseasc o companie sunt numeroase. Ele in de pachetul salarial, birocraia deficitar de la locul de munc, programul rigid, problemele legate de management, ngrdirea creativitii sau, de cele mai multe ori, greutile ntmpinate n cadrul echipei de proiect n lipsa unui dialog eficient, aadar, atmosfera este una opresant i sufocant. Pentru a depi aceste inconveniente, board-ul managerial al companiei demareaz mai multe strategii n scopul reteniei angajailor. n cele ce urmeaz, diferite strategii i metode de retenie vor fi trecute n revist pentru a vedea viabilitatea lor i, dac este cazul, pentru a identifica i sugera noi astfel de metode. Sectorul IT este n prezent unul dintre motoarele economiei, care a reuit s explodeze n perioadele n care celelalte sectoare erau afectate puternic de criza economic. n condiiile unui sistem educaional insuficient adaptat la cererea pieei, creterea domeniului IT n Romnia a fost susinut prin dou prghii. Pe de o parte, se angajeaz persoane care abia au absolvit, deci este vorba de angajai pregtii, dar care mai au de dezvoltat multe aptitudini i de dobndit experien. Retenia n cazul lor trebuie s se manifeste programat, chiar de la nceputul jobului (pstrarea lor n firm, n acest caz, este sinonim cu fabricarea unui profil de angajat calitativ de fapt angajatorul, prin diverse mijloace, prin formarea personalului i asigur loialitatea pe termen mediu i lung). Pe de alt parte, exist persoanele angajate de ceva vreme care au acumulat destul experien astfel nct s constituie un target important pentru conducerea firmei. Aceste persoane fiind experimentate, instruite i, de asemenea, prestnd servicii de calitate sunt mult mai greu de reinut n firm deoarece cunosc alternativele i standardele domeniului. n consecin, reinerea lor este mai dificil n sensul n care sunt cei mai cutai, iar nemulumirile lor sunt mai greu de satisfcut. n urma delimitrii celor dou categorii, putem s caracterizm angajaii astfel: cei lipsii de experien, novicii, se dovedesc a fi adesea egoiti i capricioi (de aceea, muli dintre ei nu rezist foarte

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

43

programare
Pstrarea angajailor talentai, o tem recurent n IT
mult sau manifest un pelerinaj susinut, de la o firm la alta) i cei experimentai, cu vechime, loialii, care nu migreaz de la un proiect la altul sau de la o firm la alta deoarece deja au un anumit statut i au dobndit o anumit maturitate profesional. Un factor deosebit de important pentru a ine programtorii n priz i la un nivel de mulumire ridicat este motivarea. Fiind vorba de persoane pragmatice care lucreaz dup nite pattern-uri fixe, acestea au nevoie permanent de imbolduri i de motivare pentru a continua munca fr a scdea ritmul i calitatea. Motivarea intrinsec ine de adaptabilitatea fiecruia i fluctueaz, ns, cea extrinsec, venit dinspre liderii companiei, are un impact mai mare. n acest fel, compania trebuie s ofere un planning provocator, proiecte din care fiecare poate s nvee lucruri noi i utile. De asemenea, procesul de organizare al proiectului trebuie s fie unul riguros, schiat ntr-o manier exact i profesionist i bazat pe cele mai inovative tehnologii. Dac n completarea celor spuse se mai adaug un mediu de lucru i interacionare pozitiv, constructiv ntre programatori, cu siguran se poate vorbi de nc o metod de pstrare a angajailor n companie. Pentru a evidenia aceast metod de retenie, este suficient s privim comparativ urmtorul exemplu asupra modului de organizare a proiectelor (metodologia de proiect). Mai demult, pentru a se ajunge la un produs finit, proiectele treceau prin faze numeroase i oarecum nepenite: n ceea ce privete delimitarea temporal, de obicei era vorba de un termen lung; plnuirea n detaliu de la care nu prea existau ulterior portie pentru soluii alternative; arhitectura aplicaiei; implementarea. Aceast metodologie desuet poart numele Watterfall i nu este un bun exemplu pentru pstrarea angajailor, deoarece intervine plictiseala, rutina i acea constrngere inovativ trasat de reguli. n schimb, tehnica metodologiei Agile funcioneaz perfect ca modalitate de reinere a programatorilor este o metod de dezvoltare a proiectelor actual, modern, care se caracterizeaz prin perioade scurte de executare, relaie strns ntre membrii proiectului i coordonatorul de proiect, comunicare deschis i adaptativ, att ntre angajai, ct i cu deintorul produsului (designerul produsului, cel care a realizat comanda). Perioadele lungi petrecute de angajai n cadrul unei firme sunt date, mai presus de orice, de calitatea uman i social a grupului i a celui (celor) care conduc/ manageriaz grupul. Este clasic i actual cnd spunem c angajaii se altur companiei i prsesc managerii. S presupunem c la un moment dat o companie primete un candidat deosebit de serios i de muncitor pentru postul de programator. ntr-un timp scurt, se dovedete a fi un angajat extrem de valoros, cu un comportament ireproabil cum probabil l au doar 5% din ceilali programatori. ns, inevitabil, survine problema. Persoana n cauz i dorete un parcurs ct mai lung n cadrul companiei dar, fiind onest, i propune angajatorului s i asigure un program flexibil astfel nct s lucreze n mare parte de acas, deoarece este un familist convins i are nevoie de mai mult timp pe care s-l dedice familiei. Pe lng aceasta, deja i-a dovedit eficiena i calitile. Cum reacioneaz compania n acest caz? Majoritatea afirm c asigur flexibilitatea programului, ns, cnd este vorba de respectarea acestei sarcini, intervin blocaje. Acesta este un punct de cotitur n care cele mai multe dintre companii nu reuesc s gestioneze situaia, pierzndu-i angajaii valoroi. n schimb, celelalte companii, cele care neleg i aplic nevoile angajailor cu adevrat importani, i vor reine i vor ctiga servicii de valoare pe termen lung. Mai exist o serie de avantaje i faciliti care au rol decident asupra pstrrii angajailor. Programul trebuie s fie flexibil, adic att timp ct i realizezi norma distribuit, poi s alegi n ce interval orar s lucrezi. Orele suplimentare trebuie s fie recompensate punctual n diverse moduri. Companiile IT care se respect, asigur angajailor centre de documentare personal gratuite, att la sediu ct i pe cale virtual. Asigurarea unor abonamente la sal, bazin sau la alte centre sportive ar trebui s devin o prioritate deoarece viaa unui programator este sedentar, lipsa micrii putnd conduce la scderea concentrrii i a randamentului. Complementar, angajaii trebuie s beneficieze de training-uri, workshopuri i conferine sponsorizate care s le mbunteasc softskill-urile, astfel nct s nu se plafoneze. Pentru c oamenii sunt fiine sociale, compania trebuie s le ofere un mediu de lucru plcut, confortabil i prietenesc, echipat cu aparate de cafea i suc, diverse jocuri pentru pauzele de munc i spaiu de socializare. Chiar dac aceste facilitri legate de recreere au devenit o obinuin, nemaireprezentnd nici pe departe o noutate, mai exist totui cazuri n care, n cadrul unor firme, ele se identific cu principala (i poate unica) modalitate de motivare i reinere a angajailor. Nu n ultimul rnd, relaia angajator-angajat trebuie s treac peste barierele ierarhice, s fie bazat pe colaborri amicale, ieirile n ora ntr-un cadru informal s reprezinte o obinuin, iar activitile sportive asigurate de companie s fie ct mai dese deoarece doar spiritul de echip spontan dezvolt colegialitatea i prietenia. Spre exemplu, aniversrile angajailor, celebrarea unei reuite n cadrul companiei, angajatul lunii sau ceremoniile de premiere anuale a celor mai eficieni angajai din cadrul companiei constituie, fr dubii, evenimente care consolideaz grupul i pluseaz decisiv la reinerea programatorilor n companiile IT. Chiar dac exist o bun nelegere i interacionare, secondat de lipsa complexului de inferioritate fa de persoanele poziionate superior din punct de vedere ierarhic, un element-cheie este reprezentat de comunicarea fa n fa. Astfel, din momentul angajrii i, inclusiv, pe toat perioada deinerii jobului, este imperios necesar ca interaciunea i comunicarea ntre angajator i angajai s se fac ct mai direct (lund n considerare c ineficiena comunicrii i lipsa feed-back-ului au generat mereu probleme importante i relaii ubrede). Acest lucru nseamn evitarea transmiterii informaiei prin e-mailuri sau prin intermediul terilor. Abordarea direct reduce birocraia i crete nivelul de ncredere ntre persoane, iar relaiile nu au tendina de a se depersonaliza, n sensul n care liderii companiei dovedesc autenticitate i transparen n acest fel ctignd la capitolul imagine i legitimitate, ceea ce pluseaz esenial referitor la problema reteniei. Dup cum se poate observa, scopul principal al companiilor trebuie s fie acela de a ngloba angajaii n cadrul ei. Ca urmare a implementrii tuturor strategiilor descrise (de socializare, de implicare, tehnice), echipa de management a companiei trebuie s fie capabil s formeze un colectiv puternic i unit din care s rezide avantaje pentru ambele pri implicate: pe de o parte, firma ctig stabilitate i nu se va confrunta cu problema reteniei angajailor, iar pe de alt parte, angajaii, care vor munci mai fericii, pasiunea profesional nu le este strin i, cel mai important, nu vor avea tendine migraioniste.
Monica Soare
Manager @ Artwin monica.soare@@artwinconsulting.ro

44

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Real time web with Meteor


Momentul n care ncepi un proiect nou sau ai vrea s i scrii propria ta aplicaie web, este de obicei urmat de urmtoarea ntrebare: Care este cel mai potrivit framework pentru aplicaia mea?. Fiecare programator i va forma deja o opinie n aceast privin. n mod normal se va merge pe o platform considerat a fi cea mai eficient i puternic pentru tehnologia respectiv sau cea mai des folosit de echip,, pentru a pstra o rapiditate relativ previzibil n procesul de development a proiectului. Din punct de vedere al tehnologiilor web, prerile sunt mprite, dar un lucru e sigur, ne aflm ntr-o er n care tehnologiile JavaScript sunt ntr-o continu cretere, iar utilizarea lor se rspndete nu doar pe platformele web ci i pe platformele mobile. Mai mult dect att, majoritatea dezvoltatorilor web folosesc tehnologii JavaScript n crearea aplicaiilor. Meteor este o platform pur JavaScript care i pune la dispoziie cteva faciliti extrem de utile, printre care: One langauge for both client and server side, Live page updates, Powerful data synchronization, Hot code pushes, Smart packages.

eteor este o platform open-source pentru crearea mult mai rapid a aplicaiilor web, indiferent de nivelul de experien al programatorului. Meteor reuete s mbine foarte elegant aceeai tehnologie att pe partea de server-side ct i pe partea de client-side a aplicaiei. Acest lucru este posibil prin faptul c aplicaiile Meteor ruleaz pe o instan de Node.js. Pentru a putea diferenia codul care ruleaz pe server fa de cel care ruleaz pe client, Meteor v pune la dispoziie dou variabile boleene care s v ajute n aceast situaie: Meteor.isServer specific blocul de cod care va rula server-side. Meteor.isClient specific blocul de cod care va rula client-side. Ca o prim regul best practice nu este recomandat folosirea excesiv a variabilelor precizate mai sus. Se recomand folosirea structurii de fiiere descris n documentaie. Toate fiierele care ruleaz strict pe server se vor crea sub directorul server, iar cele ce vor rula pe client se vor crea sub directorul client. Astfel, ntreaga aplicaie poate fi scris sub un singur limbaj de programare. Acest lucru este un mare avantaj pentru programatorii care sunt expui n proporie mai mare tehnologiilor JavaScript.

Meteor vine cu un sistem de pachete build in, ceea ce permite Meteor se poate instala foare uor folosind urmtoarea folosirea librriilor externe n crearea aplicaiilor. Acest lucru este posibil cu ajutorul comenziilor: comand linux/unix: meteor add <package_name> $ curl https://install.meteor.com | /bin/sh meteor remove <package_name> Dup rularea acestei comenzi se va putea accesa de la terminal Printre pachetele disponibile se numr i cele mai folosite comanda meteor. Cu ajutorul acesteia se poate crea primul proiect librrii i tool-uri: jQuery, Backbone.js, jQuery UI, Bootstrap, Less, Meteor: Underscore etc. . Mai mult dect att, exist un serviciu numit $ meteor create myApp Atmosphere, unde putei rsfoi printre toate pachetele disponibile n momentul acesta meteor a creat directorul myApp care sau putei cauta pachetele dorite. Pachetele de pe Atmosphere se conine aplicaia web mpreun cu o configuraie pentru Node. pot instala cu ajutorul unui utilitar de gestiune a pachetelor numit js prin care vom putea porni serverul local pentru a vizualiza pro- Meteorite. iectul ntr-un browser web: Platforma Meteor are instalat default un sistem de abloane (templating system) cu numele Handlebars. Cu ajutorul acestui sistem putei oferi un nivel mult mai dinamic paginilor. Acestea Prin rularea comenzii meteor n cadrul proiectului s-a pornit vor putea comunica ntr-un mod foarte elegant cu datele procesate serverul local, iar aplicaia web poate fi accesat printr-un IP local server-side care urmeaz s fie transmise ctre view. Momentan Meteor suport doar Handlebars, dar pe viitor vor fi implemenla portul specificat n output. tate mai multe opiuni. Pentru a folosi template-uri n Meteor trebuie doar s creai un One language for both client and server side
www.todaysoftmag.ro | nr. 18/Decembrie, 2013 $ cd myApp $ meteor => Meteor server running on: http://localhost:3000/

Crearea unei aplicaii Meteor

Smart packages

Templates

45

programare
Real time web with Meteor
fiier .html n care s introducei tag-ul <template> mpreun cu atributul name care va primi o valoare sugestiv. n acest moment Meteor va evalua fierul, iar template-ul creat va putea fi accesat prin intermediul unei variabile globale Template.nume_template. Mai mult dect att, prin sistemul inteligent de sincronizare, Meteor va menine n orice moment datele din view sincronizate cu cele de pe server, iar orice modificare se va vedea instantaneu pe view. Exemplu de template: Aceasta este singura suportat momentan, dar pe viitor vor fi implementate i alte baze de date. Pentru partea de client-side , Meteor folosete un emulator de mongoDB numit minimongo. Cu ajutorul coleciilor putem manipula documentele din baza de date. Pentru declararea unei colecii se folosete urmtoarea sintax:
Members = new Meteor.Collection(members);

Prin apelarea acestei funcii s-a creat un obiect de tip EJSON care este de fapt un model tradiional dintr-un framework ORM (Object-Relational-Mapper). Colecia Members este declarat glo<template name=hello> bal i este accesibil att din partea de client-side ct i din partea <b> Hello {{ what }} </b> de server-side. Asemenea paginilor HTML, modificrile coleciilor </template> sunt propagate n timp real ctre toi clienii. Astfel, orice modiAcum vom putea popula dinamic coninutul template-ului ficare asupra bazei de date va declana actualizarea coleciilor hello accesnd expresia handlebars numit what din interio- distribuite clienilor. Pentru manipularea obiectului collection se va folosi urmrul acoladelor: toarea sintax: Template.hello({ what: World! }); sau
Members.insert({ name: John Doe, location:ClujNapoca, Romania }); Members.remove({ name:John Doe }); member_john = Members.findOne({ name: John Doe});

n stagiu de dezvoltare baza de date poate fi modificat chiar i de pe partea clientului. Acest lucru este foarte folositor pentru n ziua de astzi meninerea datelor pe client la zi cu cele de debugging i testare, dar odat ce aplicaia atinge un stagiu gata de pe server este un task la ordinea zilei. Meteor reuete s scuteasc producie se vor dezactiva pachetele autopublish i insecure care programatorul de a reinventa roata, iar mecanismul de auto- ofer aceast facilitate. update este build in n platform. Acest mecanism actualizeaz att HTML-ul generat automat ct i HTML-ul creat manual prin Concluzie JavaScript. Meteor este cldit peste o serie de tehnologii de ultim or , Mecanismul din spate const n folosirea unei funcii de care mbinate ntr-un mod foarte elegant, scutesc programatorul randare care este trimis ctre Meteor.render care va returna un de munc i timp n plus. Astfel, reuete s se concentreze mai fragment de DOM numit nod. Acest fragment de DOM se va auto mult la alte aspecte ale aplicaiei dect asupra task-urilor care sunt actualiza singur prin intermediul platformei n momentul n care comune pentru orice proiect. Chiar dac Meteor nu a atins nc se detecteaz o modificare n coninut. Meteor.render folosete un versiunea 1.0, se afl ntr-un stagiu stabil, iar unele proiecte au concept numit reactive computation pentru a afla care nod trebuie nceput deja s migreze spre aceast platform. n momentul de actualizat cu datele noi. Majoritatea aplicaiilor folosesc automat fa platforma este la versiunea 0.6.6.3, dar n ciuda faptului c a acest mecanism, iar programatorul nu este nevoit s apeleze n trecut prin mai multe sesiuni de testare automat dar i manual mod direct aceste metode. Astfel, paginile menin factorul de real unele bug-uri mai pot exista.Totodat, Meteor este ntr-o continu time updates, iar coninutul este permanent actualizat. dezvoltare mulumit unei echipe de programatori care lucreaz full time pentru a oferi schimbri majore n API-uri, cu fiecare update lansat. Chiar dac nu a atins o prim versiune final, Hot code pushes n mod normal cnd aplicaia trebuie s intre n producie sau Meteor este o platform extrem de flexibil, puternic i de ultim se face un deploy pe un server live, acest lucru poate implica un generaie care trebuie s ajung n atenia publicului. nivel de dificultate sporit. Exist o serie de proceduri care trebuie urmate cu mare atenie printre care: portarea bazei de date, oprirea i repornirea serverului HTTP, verificarea unor posibile erori de deploy, sincronizarea serviciilor, etc. . Un lucru extrem de folositor i de interesant pe care l ofer Meteor este Hot code pushes. Acesta este un mecanism complet automatizat pentru efectuarea deploy-ului. Tot ce trebuie fcut este s se execute urmtoarea comand n cadrul proiectului existent:

Template.hello.what = function{ return World! ;};

Live page updates

$ meteor deploy <host>

Att! n acest moment proiectul a fost ncrcat cu succes pe serverul dorit. Mai mult dect att, aplicaia nu se oprete n timpul unui deploy. Meteor se ocup de toat partea de updates i de meninere a serverului, iar clienii nici nu vor simi deploy-ul.

Andrei Cacio

andrei.cacio@evozon.com Perl developer @ Evozon

Collections

Meteor folosete baza de date de tip NoSQL numit mongoDB.


nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

46

TODAY SOFTWARE MAGAZINE

legal

Cum pot protejate afacerile cu aplicaii mobile?

n acest context, piaa aplicaiilor mobile devine din ce n ce mai dinamic i mai profitabil (att pe segmentul entertainment, ct i pe cel business) - potrivit unui raport al Gartner1,va valora 74 miliarde de dolari, n 2016. ns crearea aplicaiilor mobile implic pentru dezvoltatori anumite riscuri deseori neglijate - riscuri care pot fi relativ uor de gestionat dac sunt cunoscute. Iat cteva sfaturi utile. Activul tu cel mai valoros este proprietatea intelectuala care trebuie protejat corespunztor.

reterea fr precedent a utilizarii telefoanelor cu sistem de operare Android, a iPhone-urilor i tabletelor, a determinat companiile s investeasca resurse n aplicaii software create special pentru dispozitivele mobile. denumirea aplicaiei ca marc (de exemplu, marca Angry Birds). Chiar dac nu o nregistrezi, poi face o cercetare a mrcilor similare sau identice deja nregistrate sau care sunt notorii, pentru a nu le imita ceea ce ar putea determina, de exemplu, eliminarea aplicaiei tale din App Store (pe lng eventuale aciuni n instant din partea proprietarilor lezai). deine dreptul de autor att timp ct nu exist un contract care prevede contrariul. Probleme mai delicate privind stabilirea titularului dreptului de autor pot aprea cnd crearea aplicaiei este externalizat, realizat printr-un parteneriat sau cnd implic folosirea unor soft-uri open source. De exemplu, cand externalizezi procesul tehnic de creare a aplicaiei ctre programatori freelance sau ctre un furnizor independent, nu uita s inchei contracte care s menioneze, printre altele, c drepturile de autor asupra soft-ului i a codului surs i revin. Indiferent dac detii o afacere ce pune pe piat aplicaii mobile sau dac esti un programator freelance care creeaz aplicaii mobile pentru diveri clieni, este recomandat s apelezi la un avocat specializat care s i pregateasc contracte standard, avantajoase, pe care doar s le adaptezi cnd este cazul.

Secrete comerciale
Dezvoltarea aplicaiilor mobile implic i secrete comerciale (strategii de pre, plan de afaceri sau de marketing, etc.) pe care este recomandat s le pstrezi confideniale. De aceea, ncheie contracte cu angajaii, programatorii freelance, potenialii parteneri de afaceri, furnizorii, investitorii (adic cu acele persoane crora le-ai mprtit detalii privind aplicaia i implementarea ideii), obligndu-i s nu divulge informaiile la care au avut acces.

Protejeaz-i proprietatea intelectual

Drept de autor
Codul sursa, design-ul, interfaa grafic, textul i alt continut original al aplicatiei mobile (imagini, videoclipuri, melodii, etc.) sunt protejate prin drept de autor, de la momentul crerii lor. Chiar si iconia (icon) pe care utilizatorii o acceseaz pentru a lansa aplicaia, poate fi protejat prin drept de autor. Poi lua n considerare s o nregistrezi chiar i ca marc, dac vrei s interzici altora s o copieze i s o foloseasc. Cu acelai scop, poi nregistra interfaa grafic a aplicaiei (look and feel) ca design industrial.

Brevet

Poate fi util s afli ce brevete au fost Asigur-te c aplicaia mobil pe care acordate deja pentru funcionaliti tehnice o dezvoli nu imit, fr drept, elementele similare aplicaiei tale. unor aplicaii existente deja pe piat, nclcnd drepturile de proprietate intelectual ale altor persoane. Dac vrei ca aplicaia s tii cine deine drepturile de autor? n principiu, dreptul de autor asu- foloseasca un soft, design-ul, codul surs al pra programului software al aplicaiei altei aplicaii (sau chiar alt continut ce nu mobile aparine creatorului (programa- i aparine - de exemplu, imagini, muzic), torul) din momentul n care scrie codul solicit i obine acordul persoanei care Marca Este opiunea ta dac nregistrezi surs. ns dac programatorul scrie codul deine acele drepturi. surs n calitate de angajat, n exercitarea 1 h t t p : / / w w w . e w e e k . c o m / m o b i l e / atribuiilor sale de serviciu, angajatorul va apps-marketing-and-the-cloud-gartner-predictions-for-2013/
www.todaysoftmag.ro | nr. 18/Decembrie, 2013

Nu nclca drepturile altor persoane

47

legal
Cum pot protejate afacerile cu aplicatii mobile?
Alege cu grij platforma
Selectarea platformei pe care va fi distribuit aplicaia - iOS ( Apple ), Android ( Google ), Blackberry OS, Windows Store (Microsoft), Facebook, etc. - este o decizie important. Este bine s cunoti avantajele si dezavantajele fiecrei platforme, att aspectele tehnice, ct i pe cele care in de termenii contractuali. De exemplu, pentru a deveni dezvoltator autorizat Apple sau Google, trebuie s nchei un contract prin care primeti o licent ne-exclusiv care ii permite s dezvolii aplicaii mobile ce vor rula pe acea platform. Fii ns atent la clause, mai ales la cele care: i interzic s foloseti aplicaia pe o platform concurent; i interzic s dezvolti aplicaii mobile a cror interfaa grafic este similar unor aplicaii existente deja pe platform; Permit deintorului platformei (sau altor dezvoltatori) s-i modifice aplicaia fr acordul tau; Dau deintorului platformei o licen exclusiv pentru folosirea aplicaiei tale, etc..

Despre autoare:
Claudia Jelea este avocat specializat pe aspecte ce implic mediul online, comerul electronic i IT&C, mrcile, drepturile de autor i protecia datelor cu caracter personal. LinkedIn & Twitter: claudiajelea | www.jlaw.ro | Facebook: IPBoutique.Legal www.avocatnet.ro/claudia_jelea * Acest articol a fost publicat iniial pe blogul http://jlaw.ro/ law-office/blog/.

Ct de bine cunoti implicaiile folosirii soft-ului open source?


Multi dezvoltatori opteaz pentru folosirea soft-ului open source n aplicaiile mobile (caracteristica open source fiind permisiunea de a copia, modifica i distribui n mod liber). Dar cum exist multe tipuri de licene open source, este util s cunosti ce tip de licent se aplic utilizarii unui anumit soft open source i care sunt implicaiile de natura comercial ale fiecrei licene. Cea mai popular este licena GNU General Public License (GPL)2. Aceasta funcioneaz pe un principiu simplu: ii permit s foloseti codul surs pe care l-am creat eu, dar i tu trebuie s ne permii mie i altora s-l folosim pe cel creat de tine pe baza codului iniial. Acest principiu este impus tuturor utilizatorilor unui cod surs astfel liceniat; de aceea, termenii licenei GPL pot avea implicaii majore. De exemplu, cnd dezvoli o aplicaie mobil pornind de la un anumit soft cu licenta GPL, condiiile acesteia se vor extinde i aplicaiei tale ( astfel, codul surs al aplicaiei va trebui pus la dispoziia publicului n condiii similare celor n care i s-a oferit ie softul). De aceea, poate fi problematic dac ncarci o asemenea aplicaie pe App Store, unde regulile iOS sunt incompatibile cu GPL i interzic modificarea i redistribuirea codului surs.

Aplicaia colecteaz date personale?


Aspectele privind protecia datelor cu caracter personal sunt foarte sensibile n prezent iar Apple si Google chiar au facut obiectul unor reclamaii n acest sens. Primul pas este s stabileti dac aplicaia pe care o dezvoli colecteaz anumite date cu caracter personal privind utilizatorii (nume, date de contact, inclusiv informaii stocate pe dispozitivele mobile, date ce permit localizarea geografic, date ale minorilor, etc.). Dac rspunsul este da, al doilea pas este s ai o politic concret privind aceste date (privacy policy) care s abordeze, printre altele, modalitatea n care se obine acordul utilizatorilor, detalii privind tipul datelor colectate, dac sunt distribuite, cui i pentru ce scop, locul stocrii, etc. . Implementarea unei strategii eficiente minimalizeaz potenialele riscuri sau, n cuvinte mai simple, paza bun trece primejdia rea.
2 http://opensource.org/licenses/GPL-3.0

Concluzie

Claudia Jelea

claudia.jelea@jlaw.ro Avocat & Consilier in domeniul marcilor @ IP Boutique

48

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Interviu cu Richard Campbell (II)


ichard Campbell are mai mult de 30 de ani de experien high-tech, fiind Director Regional Microsoft i profesionistul cel mai valoros al Microsoft (MVP). El se consult cu mai multe organizaii nord- americane de top. Pe lng faptul c vorbete la conferine peste tot n lume, Richard este una dintre gazdele .NET Rocks! Talk Show-ul audio de pe internet pentru Dezvoltatorii .NET i gazda emisiunii RunAs Radio, Talk Show-ul audio de pe internet pentru Profesionitii IT. A: Crezi c o abordare generalist poate fi susinut? Pentru ct timp poate fi susinut? Este nevoie s ne specializm n diverse subdomenii? R: Cred c volumul de munc a fost suficient de mare nct am avut dintotdeauna nevoie de specialiti. Sunt prea multe aptitudini de cunoscut, dar fiecare are rolul su. M ntorc mereu la metafora podului. Dac vrei s construieti un pod, exist un inginer. El nu construiete podul, dar semneaz pe documentaie, iar dac podul se prbuete, este vina lui. Ai nevoie de oameni care s tie cum s toarne cimentul corespunztor. Ai nevoie de oameni care s tie cum s ntind corect cablurile. Ai nevoie de oameni care s tie cum s toarne asfaltul. i acetia sunt oameni cu anumite aptitudini, sunt tehnicieni. Sunt seturi de aptitudini diferite i ai nevoie de toate astea dac vrei s ai succes cu podul. Exist cu siguran un inginer implicat, dar nu este singur. Cred c trebuie s preuim fiecare aptitudine i c generalitii trebuie s aib responsabiliti specifice efortul general de a realiza software cu succes. Cineva cu un ochi format ca al lor peste ntreaga activitate este o persoan util, dar are nevoie s lucreze cu specialiti pentru a avea cu adevrat succes. A: Crezi c aceasta este o atitudine folositoare care s fie adoptat de tinerii care intr n domeniul acesta? Ar trebui s caute o specialitate n care s se specializeze i pe care s o studieze i s nu se atepte s cunoasc totul despre informatic / ingineria calculatoarelor? R: Nu cred c putem ti totul despre ceva n primul rnd. Trebuie s simi ceea ce vrei s faci. i nu fiecare lucrare de software este un pod. Unul dintre lucrurile care mi-au placut n legtur cu micarea smartphone a fost acela c a adus napoi echipa foarte mic. Trei oameni puteau s i ctige existena construind o aplicaie interesant. i pentru mult vreme acest lucru era imposibil. Dezvoltarea jocurilor a devenit att de complex nct era nevoie de organizaii precum Electronic Arts cu o sut pn la dou sute de oameni pentru a scoate un joc care cu adevrat s testeze limitele unui aparat de jocuri video. Dar totul s-a redus la un telefon, i dintr-odat era nevoie doar de un programator bun, un artist bun i un manager pentru a rezolva totul i a aduce un venit din care s triasc toi. i asta e extraordinar! Noi fceam asta n anii 80 cu computere desktop i limbaje 4G. Iar faptul c s-a revenit la aa ceva ma intereseaz cu adevrat. Cred c acum ne aflm n fazele ultime, cnd exist att de multe produse pe smartphone-uri nct este din ce n ce mai dificil s ai succes. Cred c cea mai mare provocare pentru un tnr n ziua de azi este s i dea seama ce stil de lucru prefer. i din nou, nu putem presupune c vom rmne n aceeai carier. Poi s rmi n informatic pentru mult timp. Eu aa am facut. Dar nu am avut aceeai slujb pentru mai mult de un an. ntotdeauna apare ceva nou. Un alt mod de a lucra. i cred c asta face parte din a-i ghida cariera s i pstrezi privirea la orizont i s alegi lucruri noi pe care vrei s le ncerci i s te miti n acea direcie cnd ai ocazia sa o faci. A: Deci, dac neleg corect, tinerii ar trebui s experimenteze un pic pentru a vedea ce le place i s avanseze nspre acea direcie dac doresc s lucreze n informatic. R: i cred c dac vor s rmn, trebuie s i dedice un anumit timp pentru a vedea ceea ce se ntmpl nou s decid ce este important pentru ei, ce vor s ncerce n continuare. Exist o capcan: devii bun ntr-o anume abilitate i ncetezi s mai nvei te concentrezi numai pe acea abilitate. Poi fi pe acel val pentru mult timp. ncepi din vrf i treptat te ntorci n

mulime pn cnd devi tipul n vrst care pstreaz sistemul motenit. Toate astea cu aceleai aptitudini. Dup prerea mea, dac petreci zece ani fcnd acelai lucru n informatic, nu ai dobndit zece ani de experien ci ai doar un an de experien, repetat de zece ori. Este mai interesant pentru mine, cred c este o carier mai distractiv i care te face un muncitor mai valoros, s i depeti limitele aptitudinilor tale i s explorezi alte aptitudini. Diversitatea te face bun n toate. Nu poi s le faci pe toate, trebuie s i alegi niele, dar s nelegi: dac cunoti numai un singur limbaj de programare, ai o modalitate foarte ngust de a privi lucrurile. Al doilea tu limbaj de programare va fi o btaie de cap. Al treilea va fi limbajul care va genera un adevrat progres. Acela va fi momentul cnd vei ncepe s vezi ntregul n programare i nu doar zahrul de deasupra, care le face diferite. Dup aceea, al patrulea, al cincilea i al aselea sunt uoare. i alt aspect care are loc n mintea ta este acela c nu i mai pas de limbaje limbajele nu mai sunt aa de importante. Felul n care gndeti este adevrat. i cum rezolvi probleme este important i asta te face un muncitor mai valoros. Asta nu nseamn s nvei

www.todaysoftmag.ro | nr. 18/Decembrie, 2013

49

interviu
Interviu cu Richard Campbell (II)
tot. Pur i simplu nseamn s te axezi pe a avea o perspectiv real asupra a ceea ce nseamn o abordare productiv a dezvoltrii de software. A: Care crezi c este calea cea mai bun de a nva? i a mpri ntrebarea asta n dou pri: care este metoda cea mai bun de a nva pentru o persoan tnr care dorete s intre n domeniul informaticii? Ar trebui s obin o diplom? Sau s studieze pe cont propriu? i aceeai ntrebare i pentru cineva care este n domeniu de civa ani i dorete s avanseze n carier? R: Cred c mai nti de toate trebuie s te cunoti pe tine nsui suficient de bine pentru a ti cum s nvei. Care este un mecanism eficient pentru ca tu s nvei? Una dintre vetile bune este c exist mai multe modaliti de a nva n prezent i resurse pentru toate aceste modaliti. Eu mi-am dat seama de mult vreme c sunt un cititor bun. C nv foarte repede citind i c nu am rbdare cu alte metode de nvare, aa c eu citesc pentru a nva. Aa sunt eu. Dac tu nvei cel mai bine prin video, exist produse extraordinare pentru a nva prin video. Dac nvei cel mai bine n mod practic, exist cursuri disponibile pentru tine. Aa c depinde de tine cum doreti s nvei. A spune c multe dintre abordrile eseniale ale programrii pe care le avem n prezent au o tachet de pornire foarte ridicat. Este o provocare s fi productiv n unele dintre aceste medii de dezvoltare mai mari, aa c s-ar putea s doreti s alegi ceva mai simplu. Pentru a te propulsa peste nivelul de amator pentru a intra n informatic ca profesie trebuie s faci asta singur. Nici o diplom nu te va salva. Cnd angajez un dezvoltator rar m mai uit la aptitudini de obicei caut dou lucruri: pasiune i capacitatea de a lucra cu echipa ct de bine se poate integra printre oamenii mei? Dac ai aceste dou lucruri, eu te pot nva tot restul. Destul de pasionat nct, dac i impun un nou limbaj, nu eti doar capabil s te descurci, ci vei fi de-a dreptul ncntat s o faci. Dac i dau un cont Pluralsight i i spun c am nevoie s te pregteti s activezi n Aplicaii Single Page n HTML5 vei face foarte rapid asta pentru c ai video-urile i le poi viziona ct de mult doreti. i s lucrezi bine cu echipa: s apreciezi diferenele dintre aptitudini i s vrei s lucrezi aproape acesta pentru mine este cel mai valoros angajat pe care l pot avea. i s realizezi c ambele aptitudini sunt de fapt aptitudini soft aptitudinea tehnic nu te va mai duce departe ci abilitatea de a deprinde noi aptitudini tehnice este cea care conteaz. Ne aflm n aceast perioad de transformare n informatic i astfel, aptitudinile pe care le nvei acum nu i vor mai servi la fel de mult peste cinci ani. Dar capacitatea ta de a nva acele deprinderi i dorina ta de a face asta i vor prinde bine. A: Vorbind despre aptitudini soft care crezi c este cea mai mare concepie greit pe care oamenii din afara industriei noastre o au n legtur cu asta? Lucruri precum stai toat ziua n faa calculatorului, nu interacionezi cu oameni, poi s nvei meseria, iar apoi te-ai aranjat pe via, ... R: Exist ceva ce se numete efectul Dunning Kruger, care spune c cei mai muli oameni tiu att de puine despre asta nct nici mcar nu tiu c nu tiu nimic. i informatica este adeseori aa. De multe ori suntem n situaia n care managerii unei organizaii consider c dezvoltarea software nseamn numai dactilografiere. Deci, dac nu tastezi, nu lucrezi. i trebuie s i educm s neleag c nu este aa. C dactilografierea poate fi extrem de distrugtoare pentru procesul de dezvoltare. Ne poate ndeprta de scop, n loc s ne apropie. C trebuie s existe un plan i o anticipare. Cred c tocmai s educi oamenii i s i ajui s neleag ce este complicat i ce este uor deoarece nu este ceva evident n software este de cele mai multe ori proba de aptitudine soft. Suntem aproape siguri astzi, n acest moment, c sunt foarte puine aptitudini de afaceri care s nu poat fi automatizate, n care s nu putem s introducem tehnologie i s le avantajm ntr-un fel. Tehnologia a strbtut cale lung i este extrem de solid n acest moment. De cele mai multe ori, problema este n echip i n punerea laolalt a cerinelor. De fapt, nelegerea businessului suficient de bine nct s i aplici tehnologie. Aceasta este adevrata zon de cretere. A fost dintotdeauna o problem, dar devine din ce n ce mai acut cu trecerea timpului. A: Mulumesc. Acestea au fost ntrebrile pe care le-am pregtit, dar a mai dori s te rog dac vrei s menionezi cteva resurse, website-uri cu care lucrezi, lucruri pe care oamenii ar trebui s le ncerce? R: .NET Rocks. A fost creat de prietenul meu Carl Franklin n 2002, ceea ce e uluitor, deoarece n 2002 cuvntul podcast (a distribui fiiere multimedia pe internet) nici nu exista. Acesta a aprut civa ani mai trziu. El fcea fiiere MP3 i le punea pe Internet. Dar acum, dup 11- 12 ani, show-ul a devenit destul de puternic. Eu sunt noul venit. Am intrat n echip n emisiunea cu numrul 100. Cred c ne aflm la numrul 916 acum. Am avut al 900lea episod n Wisconsin, la o conferin. A fost i o petrecere mare cu ocazia asta. 900 nseamn multe emisiuni. Showul are loc de dou ori pe sptmn marea i joia. Este gratis de descrcat. Este doar un fiier MP3 i poi s l obi n iTunes sau Zune Marketplace sau oriunde doreti. Acum avem aplicaii mobile pentru toate dispozitivele chiar i pentru Windows Phone. i de dou ori pe sptmn vorbim cu un luminator .NET: Rocky Lhotka sau Scott Guthrie un cunosctor n profunzime al spaiului .NET despre ceea ce i intereseaz i despre noile tehnologii. ncercm s facem lucrurile mai uoare pentru cei care lucreaz n industrie sau sunt interesai de aceasta, s sorteze ce este important pentru ei i de unde s afle mai multe n legtur cu anumite teme. Emisiunile de mari tind s fie emisiuni mai tehnice. Joia mergem mai departe. Uneori este despre tehnologie, alteori poate s fie o lecie de istorie. Odat am avut un interviu cu Les Pinter, cel care a scris versiunea original Word, pe care a vndut-o lui Bill Gates. Sau vorbim despre oportuniti n carier. Cam o dat pe lun facem o emisiune diferit, pe o tem cu totul diferit de zona de dezvoltare. Luna trecut a fost exploatarea asteroizilor. Luna asta va fi despre grtar. Dar tii, ncercm s fim lejeri n legtur cu show-ul. Cunoatem multe persoane care ne ascult n timp ce fac naveta, aa c avem un format de talk-show. ncercm s ne i distrm aa, comportndu-ne uneori prostete n momentele n care suntem n form. i DNR este numai una dintre emisiuni. Mai avem i Tablet Show o dat pe sptmn, lunea, iar acesta este despre dezvoltarea tabletelor i mobilelor pe diferite platforme vorbim despre iOS i Android i Windows i apoi mai sunt i pe partea de IT de la nceputurile informaticii, am construit multe echipamente, am realizat multe reele, aa c vorbesc cu profesioniti IT despre astea, o dat pe sptmn, miercurea, pe Run As Radio un show mai scurt, un pic mai intens, axat pe o anumit gam de subiecte, alta dect lejeritatea caracteristic a DNR. Aa c, da, patru show-uri pe sptmn n prezent. A: Mulumesc mult pentru interviu.
Attila-Mihaly Balazs
dify.ltd@gmail.com Code Wrangler @ Udacity Trainer @ Tora Trading

50

nr. 18/Decembrie, 2013 | www.todaysoftmag.ro

sponsori

powered by

You might also like