You are on page 1of 44

No. 6/ 2012 www.todaysoftmag.

ro

TSM
Made in Romania Istoria IT-ului Clujean

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

Arhitectur pentru Flexibilitate Tehnici SEO interne (II) Agile, crash course Introducere n Grails Interviu cu Scott Barber A scrie cod frumos - dincolo de valoarea estetic 10 principii de arhitectur software Poi fi agile n proiecte de pre fix? Echilibrul dintre viaa profesional i cea personal O incursiune prin atacurile informatice din 2012 Agile, crash course Gogu i imaginea de ansamblu Toate drumurile duc la SaaS - 7 provocri pentru a ajunge acolo How to Web conecteaza Europa de Sud-Est la inovatia web Finanare pentru startup-uri tech prin reeaua de investitori Tech Angels

6 How to Web conecteaza Europa de Sud-Est la inovatia web


Irina Scarlat

27 Toate drumurile duc la SaaS - 7 provocri pentru a ajunge acolo


Mihai Nad

7 Finanare pentru startup-uri tech prin reeaua de investitori Tech Angels


Bogdan Iordache

29 Introducere n Grails
Tavi Bolog

8 Made in Romnia
Ovidiu Man

32 Exemple practice de message paterns pentru Windows Azure


Radu Vunvulea

10 Istoria IT-ului Clujean


Marius Mornea

34 Poti fi agile n proiecte de pret fix?


Claudiu Anghel

12 Arhitectur pentru Flexibilitate


Attila Antal

36 O incursiune prin atacurile informatice din 2012


Andrei Avdnei

15 Tehnici SEO interne


Radu Popescu

38 Agile, crash course


Florian Ivan, PMP

18 10 principii de design (fabul)


Stefan Baritchii

40 Echilibrul dintre viata profesional si cea personal


Andreea Prvu

21 Interviu cu Scott Barber


Mariu Mornea

42 Gogu si imaginea de ansamblu


Simona Bonghez, Ph.D.

24 A scrie cod frumos dincolo de valoarea estetic


Attila-Mihaly Balazs

editorial

Editorial
Cteodat ne place s ne considerm foarte nendreptii, s spunem c la noi nu se ntmpl nimic, ntr-o ar mediatizat extern i mai ales intern cu o imagine negativ. mi amintesc c, odat citind un ziar de diminea n Tokyo am fost surprins s vd multitudinea de tiri pozitive fapt care m-a fcut s pornesc de diminea cu optimism i chef de lucru. Nerbdarea de a savura n acelai fel i presa romneasc ne-a determinat sa dam noi startul cu o trecere n revist a celor mai importante evenimente din sfera IT-ului romnesc. How To Web 2012, cea mai important conferin despre antreprenoriat i tehnologie din Romnia are loc la Bucureti. Vor fi peste 800 de participani i nume importante din sfera startup-urilor de succes. TSM va fi prezent la aceasta i vom avea chiar o mini lansare n cadrul evenimentului. Mai multe detalii n articolul dedicat acestuia din revist, iar n numrul urmtor vom reveni cu detalii. Next 2012, conferina organizat de Softvision la Cluj l-a avut invitat pe Scott Barber, un profesionist n testarea performanei. Un interviu cu acesta este disponibil n acest numr. Antreprenor vs. Investitori, organizat de ctre Business Days i avndu-l ca invitat principal pe Robert Hisrich, s-a desfurat la Bucureti i Cluj. Aceasta a adus n faa auditoriului principalele nume din atreprenoriatul romnesc. Alturi de Robert Hisrich am putut asista la o zi ntreag de dezbateri despre cum s i ncepi o afacere sau ce trebuie s faci ca business angel. Tech Angels www.techangels.ro este un grup business angels romnesc care vrea s sprijine startup-urile locale din sfera IT-ului. Primul pas pentru un dialog n acest sens se poate face aplicnd online. Sper ca cele de mai sus s v ajute s ncepei ziua cu o not de optimism. Pentru a fi mai convingtori, din acest numr am inaugurat o rubric Made in Romnia, unde vei putea citi despre produse i companii de software romneti de suces. Colegul meu, Marius Mornea, va ncepe s scrie o istorie a IT-ul clujean, efort ce se va ntinde pe mai multe luni, iar cei ce vor s sprijine acest efort sunt binevenii. Continum seria de articole tehnice printr-o Introducere n Grails i deja cunoscuta serie de Tehnici SEO interne. Arhitectura este subiectul principal n Arhitectur pentru flexibilitate i Exemple practice de message paterns pentru Windows Azure iar cele 10 principii de design ne prezint conceptele ntr-o abordare diferit sub forma unei fabule. Project management-ul este acoperit de ctre Poi fi agile n proiecte de pre fix? i Agile, crash course. Un articol interesant despre atacurile informatice din 2012 i poziionarea Romniei n rzboiul cibernetic, vine i cu o invitaie la DefCamp, unicul eveniment de acest gen din Romnia. Echilibrul dintre viaa profesional i cea personal reprezint o continuare a articolelor de HR scrise de ctre Andreea, iar la final vi-l propun pe Gogu pentru o lecie plin de nvminte.

Ovidiu Man, PMP

ovidiu.matan@todaysoftmag.com Fondator i CEO al Today Software Magazine

Ovidiu Man
Fondator i CEO al Today Software Magazine

nr. 6/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Redacie
Irina Scarlat

Lista autorilor
irina.scarlat@howtoweb.co Co-Fondator al Akcees, organizatie care promoveaza antreprenoriatul in randul tinerilor, si al Prove PR

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

Fondator / Editor in 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 Colaborator marketing: Ioana Fane ioana.fane@todaysoftmag.com Traductor: Cintia Damian cintia.damian@todaysoftmag.com Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com

Bogdan Iordache

bogdan.iordache@howtoweb.co Bogdan Iordache este Co-Fondator al How to Web, cel mai important eveniment web din Europa de Est

Andreea Prvu

andreea.parvu@endava.com Recruiter n cadrul Endava i trainer specializat n dezvoltarea abilitilor si competeneelor de leadership

Ovidiu Man, PMP

ovidiu.matan@todaysoftmag.com Founder & CEO Today Software Magazine

Radu Vunvulea

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

Marius Mornea

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

marius.mornea@todaysoftmag.com Fost senior software developer in cadrul Nokia, n prezent fondatorul platformei Mintaka Research

Simona Bonghez, Ph.D.

Simona.bonghez@confucius.ro Speaker, trainer i consultant n managementul proiectelor, Owner al Confucius Consulting

Today Software Solutions SRL


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

Attila Antal

Attila.Antal@isdc.eu Software Arhitect @ ISDC

Andrei Avdnei andrei@worldit.info Fondator si CEO DefCamp CEO worldit.info

Tavi Bolog

tavi.bolog@nokia.com Development lead @Nokia

Mihai Nad mihai.nadas@tss-yonder.com CTO @ Yonder

Radu Popescu

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

Claudiu Anghel
Project Manager @iQuest

claudiu.anghel@iquestgroup.com

Stefan Baritchii

stefan.baritchii@3pillarglobal.com Technical Lead @ 3Pillar Global Romania

Florian Ivan, PMP, ACP, CSM, MVP


florian.ivan@rolf-consulting.com Project MVP

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

www.todaysoftmag.ro | nr. 6/2012

conferine

How to Web conecteaz


Europa de Sud-Est la inovaia web
omnia i rile din regiune sunt renumite pentru numrul mare de oameni cu talent i abiliti tehnice. Cu toate acestea, piaa regional este bazat pe activiti de outsourcing, iar inovaia i dezvoltarea de produs joac un rol secundar, neglijabil. n contextul dat, exist antreprenori care cred n viitorul acestei industrii i care organizeaz an de an n regiune unul dintre cele mai importante evenimente despre antreprenoriat i tehnologie din Europa: How to Web. De la an la an, How to Web a avut o evoluie foarte interesant, att din punct de vedere cantitativ ct i calitativ. Cea de a patra ediie a evenimentului va avea avea loc n luna noiembrie la Bucureti i va reuni peste 800 de participani care vor avea ocazia s discute cu peste 40 de vorbitori internaionali din mai bine de 15 ri. Printre vorbitorii care vor fi prezeni la aceast ediie se numr: Phil Libin (CEO Evernote), Bill Liao (Co-Fondator XING), Mark Pascarella (CEO UberVU), David Noel (VP Community SoundCloud), sau Patrick DeLaive (Co-Fondator The Next Web). n cadrul How to Web vor fi abordate teme precum inovaia n tehnologie, dezvoltarea de aplicaii mobile, softwareas-a-ser vice i jocuri pe calculator, particularitile nfiinrii afacerilor web n Europa de Est, dezvoltarea la scar global i finanarea acestora. Ceea ce este inedit la eveniment este c poi discuta n mod direct i poi pune ntrebri unora dintre cei mai apreciai oameni n domeniul tehnologiei din ntreaga lume. n plus, How to Web contribuie la crearea i descoperirea de noi oportuniti de afaceri. Numrul de poveti de succes nregistrate pn n prezent confirm acest lucru i reprezint o recomandare n sine. Pentru Cristian Andreica (Co-Fondator Nexi.me), How to Web a reprezentat punctul de plecare la acceleratorul Rockstart (Amsterdam), de unde s-a ndreptat ctre Silicon Valley. O poveste similar este i cea a lui Bobby Voicu (Co-Fondator Mavenhut), care l-a ntlnit la How to Web pe Eoghan Jennings i a plecat ulterior n Dublin la Startup Bootcamp. Dac unii pentru unii dintre participani How to Web a reprezentat paaportul ctre acceeleratoare din ntreaga lume, alii au obinut finanare pentru ideea lor. Este cazul bieilor de la 123contactform, care l-au ntlnit pe Adrian Ghear i au obinut susinerea lui, dar i a celor de la Squirrly, care au obinut investiii de la Philip Kandal (CTO Skobbler) i Ibrahim Evsan. Fie c obii finanare, c eti admis la unele dintre cele mai importante programe de accelerare din lume, c te hotrti s porneti la drum pe cont propriu sau c pleci inspirat i ncreztor n potenialul tehnic din regiune, How to Web are un impact puternic asupra fiecrei persoane din audien. Ediia de anul acesta aduce i alte nouti. De aceast dat va exista o separare foarte clar ntre zona antreprenorial i zona de dezvoltare de produse tech. Dac pe scena principal vorbitorii vor aborda subiecte care in de inovaie i dezvoltarea de produse tech la scar global, cea de a doua scen va aduce startup-urile n lumina reflectoarelor prin realizarea concursului Startup Spotlight. n acest an, cele mai bune 32 de echipe din regiune vor avea ocazia de a-i prezenta produsul n faa reprezentanilor a 12 dintre cele mai importante acceleratoare de afaceri web din lume, printre care se numr GrowLab, Springboard, HackFwd, Rockstart sau Blackbox. Ctigtorii Startup Spotlight vor beneficia de premii n valoare total de 20000$. n contextul unei piee regionale de dimensiuni reduse, How to Web nseamn foarte mult, fiind principalul ambasador al unei comuniti tehnologice aflate n formare. Actorii de pe piaa regional mai au mult de nvat, ns premisele dezvoltrii unui ecosistem antreprenorial puternic au fost deja create. Pn la atingerea acestui obiectiv, How to Web continu s contecteze Europa de Sud-Est la inovaia web global.

Irina Scarlat

irina.scarlat@howtoweb.co Irina Scarlat este Co-Fondator al Akcees, organizatie care promoveaza antreprenoriatul in randul tinerilor, si al Prove PR, companie care ofera servicii de comunicare specializate pentru startup-uri si ONG-uri. Irina a lucrat in trecut ca trainer, consultant business, si a condus timp de doi ani departamentul de comunicare al Ligii Studentilor Romani din Strainatate. Este licentiata in Economie si Afaceri Internationale (ASE Bucuresti) si are un masterat in Economie Politica obtinut la BI Norwegian School of Management si ESCP Europe. In prezent, Irina isi finalizeaza cel de al doilea masterat in Managementul Proiectelor Internationale (ASE Bucuresti)

nr. 6/2012 | www.todaysoftmag.ro

startups

TODAY SOFTWARE MAGAZINE

Finanare pentru startup-uri tech


prin reeaua de investitori Tech Angels
ndustria IT din Europa de Sud-Est este una emergent, iar potenialul i talentul tehnic existent n zon reprezint premisele dezvoltrii unui ecosistem antreprenorial puternic. n urm cu puin timp, startup-urile din regiune erau nevoite s se uite n afara granielor pentru a gsi investitori care s le finaneze ideile. Din luna septembrie ns, reeaua de investitori privai Tech Angels faciliteaz accesul la capital pentru antreprenorii n tehnologie. TechAngels este o iniiativ ce aparine lui Radu Georgescu, Andrei Piti i Bogdan Iordache. Antreprenor n serie i investitor n companii de tehnologie i internet, fondator al GECAD Group i al companiile Epayment (acum PayU i Avangate), Radu Georgescu a realizat pn n prezent unele dintre cele mai importante exit-uri de pe piaa tehnologic romneasc. Facilitarea accesului la finanarea de tip business angel este vital pentru dezvoltarea noilor companii tehnologice din Romnia. Ne dorim s sprijinim att antreprenorii, nlesnindu-le accesul la fonduri i expertiz, ct i investitorii, punndu-i n contact cu startup-uri, spune Ragu Georgescu, Founding Partner & Chairman GECAD Group. Andrei Piti este la rndul su investitor activ i mentor n mai multe startup-uri, preedinte al ANIS (Asociaia Patronal a Industriei de Software i Servicii) i profesor asociat la Universitatea Politehnic din Bucureti, cu o experien de peste 22 de ani n companii tech la toate nivelurile. Experiena mea profesional i investiional mi spun c avem lng noi profesioniti foarte talentai care merit susinui, a motivat Andrei Piti decizia de a pune bazele primei reele de investitori privai din Romnia. Bogdan Iordache este antreprenor n serie i a pus bazele stagiipebune.ro (cel mai mare portal de stagii de practic n IT din Romnia), Conectoo (platform de e-mail marketing). Bogdan este de asemenea Co-Fondator i CEO al How to Web, cea mai important conferin despre antreprenoriat i tehnologie din Europa de Sud-Est, i mentor la mai multe acceleratoare de afaceri web din Europa printre care se numr Springboard Londra, HackFWD Berlin sau Rockstart Amsterdam. n ultimii ani antreprenorii tech au fost finanai mai mult de ctre investitorii europeni dect romni. Tech Angels va facilita includerea de capital i expertiz local n afaceri globale, a spus Bogdan Iordache, CEO How to Web. Lansat n urm cu mai puin de dou luni, reeaua cuprinde n prezent 20 de antreprenori i profesioniti din domeniul tech care completeaz investiiile de natur pur financiar cu expertiz i conexiuni relevante. Printre investitorii implicai n momentul actual se numr Lucian Todea (CEO ITNT, Soft32.com), Laurent Asscher (CEO Airtek Capital Group), Adrian Ghear (antreprenor serial, business angel i consultant), sau Paul Maravei (business angel i profesionist IT&C). TechAngels va facilita realizarea de investiii cu valoare cuprins ntre 10.000 i 200.000 de euro corespondente unei evaluri a afacerii de maxim 1.000.000 de euro. Reeaua vizeaz n primul rnd echipe cu expertiz dovedit i un istoric profesional relevant, ale cror proiecte sunt dezvoltate cu precdere n domeniile web, mobile, embeded software, hardware sau meditech. Sunt preferate proiectele care au cel puin un prototip sau care au fost validate de ctre clieni. Mecanismul de funcionare este simplu. Primul pas este ca antreprenorii interesai s contacteze echipa Tech Angels prin intermediul formularului disponibil online. Dup o analiz complet a produsului sau afacerii, echipa TechAngels realizeaz alturi de antreprenor o prezentare care este trimis n reeaua de investitori. Antreprenorii sunt ulterior pui n legtur direct cu investitorii crora le-au captat interesul i vor primi asisten de la TechAngels pentru ncheierea rundei de investiii. TechAngels reprezint un pas important pentru dezvoltarea ecosistemului antreprenorial din Europa de Sud Est deoarece le ofera startup-urilor inovatoare finanarea iniial de care au nevoie pentru a se putea concentra pe dezvoltarea unui produs inovator, cu potenial disruptiv la nivel global. Prin investiii realizate, TechAngels i propune s valorifice potenialul existent n regiune i s reprezinte o ramp de lansare pentru tinerii antreprenori talentai aflai la nceput de drum.

Bogdan Iordache

bogdan.iordache@howtoweb.co Bogdan Iordache este Co-Fondator al How to Web, cel mai important eveniment web din Europa de Est care abordeaza antreprenoriatul in tehnologie. Prima editie internationala a How to Web a castigat premiul IDG Cel mai bun eveniment IT&C al anului din Romania. Licentiat in automatica si calculatoare la Universitatea Politehnica din Bucuresti si absolvent al unui program DEA la Universit Lumire din Lyon, Bogdan a dezvoltat stagiipebune.ro, cel mai complex program de internshipuri in IT din Romania, si Conectoo, platforma de email marketing.

www.todaysoftmag.ro | nr. 6/2012

nouti

Made in Romnia

naugurm o nou rubric n revist n care vom ncerca s artm o parte din aplicaiile de succes ale companiilor autohtone. Vom vedea companii care dei de succes n exterior nu sunt foarte cunoscute pe plan local, iniiative locale pentru sprinjinirea pieei de IT locale sau produse de foarte bun calitate lansate recent.

www.exosyphen.com

Hacker Evolution Duality


Q: Descriei produsul tocmai lansat Robert: Inception este un DLC (pachet de 10 nivele noi) lansat pentru ultimul nostru joc, Hacker Evolution Duality. Nivelele sunt cele din jocul original Hacker Evolution (lansat in 2007), portate pe noul motor de joc pentru a oferi o experien diferita celor care au jucat jocul original. Momentan este disponibil exclusiv pe STEAM. Q: Descriei tehnologiile folosite Robert: Jocul este dezvoltat pe un motor 2D dezvoltat in-house, care are la baza OpenGL, fiind disponibil pe Windows, Linux, MacOS si in curand iOS. Q: Descriei principalele provocari care au aprut n dezvoltarea produsului i ce soluii ai gsit Robert: Principala provocare a fost s rescriem nivelele care au fost gndite pentru un motor de joc bazat pe consola de comenzi pentru a fi jucate pe un motor care este intensiv orientat GUI. Flexibilitatea jocului ne-a permis ca odat cu aceast portare s facem i un update masiv pentru jocul in sine, adugnd noi funcionaliti.

Robert Murean

mrobert@exosyphen.com Technical Director, Exosyphen studios

Q: Cteva cuvinte despre companie Robert: Momentam compania are 5 angajai permaneni. Modelul nostru este s mergem pe o echipa compact i foarte talentat. Mai exist i oamenii cu care colaborm periodic n funcie de necesiti (muzica, branding, etc). Q: Care este urmatorul produs la care v gndii s l lansai ? Robert: Momentan lucrm la un motor 3D dezvoltat in-house pentru a aduce pe pia un joc complet nou, att ca i tehnologie ct ca i gameplay. Este i primul proiect n care eu am renunat s lucrez direct. Dezvolt n paralel un motor 3D cu scopul de a testa tehnologii noi i a le integra n jocul curent. Urmeaz s publicm i nite documente despre research-ul care l facem aici.

Despre Exosyphen

Este un studio de jocuri din Cluj-Napoca. Au fost vndute pn acum aproximativ un milion de jocuri i peste zece milioane de utilizatori au folosit variantele gratuite ale acestora. Cteva din principalele lor realizri: n 2002 a lansat primul joc comercial romnsc, acesta fiind si prima versiune a simulatorului Hacker Evolution, La nceputul lui 2004 a lansat primul joc 3D pentru dispozitive mobile, o portare Quake pe Windows Mobile, n 2010 jocul Hacker Evolution a fost publicat pe STEAM si a ajuns pe locul 4 n topul vanzarilor din acea perioad. n total au fost vndute peste 200.000 de copii din aceast serie.

nr. 6/2012 | www.todaysoftmag.ro

nouti

TODAY SOFTWARE MAGAZINE

www.zonga.ro

Serviciul de muzic Zonga


Q: Descriei produsul tocmai lansat Clin: Zonga este serviciul de muzic lansat de Trilulilu, mpreun cu Vodafone Romnia. Practic este un serviciu pe baz de abonamet unde ai acces la muzic oficial de la casele de discuri locale i internaionale. Sunt peste 16 milioane de melodii pe care le poi asculta din browser, dintr-o aplicaie de desktop sau de pe iPhone, Android sau smartphone-uri Nokia. Pentru a folosi serviciul ai nevoie de internet ns utilizatorii premium au o opiune special de a asculta offline playlisturile create. Vodafone ofer dou planuri speciale de abonament prin care ai trafic gratuit de pe mobil pentru Zonga. Dac eti n reeaua Vodafone poi ncerca gratuit serviciul pentru trei luni. Mai multe detalii se gsesc pe pagina de abonamente http://www.zonga.ro/abonamente Q: Cteva cuvinte despre companie Clin: Compania care a dezvotlat Zonga este din Cluj-Napoca, iar echipa este format din 20 de specialiti. Q: Care este urmtorul produs pe care v gndii s l lansai ? Clin: n acest moment ne concentrm pe Zonga i Trilulilu.

Clin Biri

calin.biris@trilulilu.ro Clin Biri este Crocodilul de Marketing la Trilulilu i Preedinte al IAA Young Professionals Cluj. Pasionat fiind de mediul online i de marketing, a inut zeci de prezentri despre publicitate online i marketing, att pentru studeni ct i pentru mediul de business. Este o persoan activ n mediul online pe blogul personal www.calinbiris.ro i pe reelele sociale.

Despre Trilulilu

Trilulilu este cea mai mare comunitate online din Romania, unde vizitatorii pot urmri i contribui cu clipuri video, audio i imagini. Trilulilu a fost lansat n ianuarie 2007, fiind n prezent cel mai vizitat site romanesc de divertisment, conform SATI. n acest moment, trilulilu.ro are peste 2.2 milioane de vizitatori unici lunar.

Hacker Evolution Duality

Serviciul de muzic romnesc Zonga


www.todaysoftmag.ro | nr. 6/2012

istorie

Istoria IT-ului Clujean


nceput simplu, cu o singur ntrebare, dar aceasta a dat natere n zilele imediat urmtoare unor iruri ntregi de ntrebri care au trezit curiozitatea, nu doar a mea, dar i a tuturor celor pe care testam noua idee. ntrebarea iniial a fost formulat de Rzvan Florian, iar contextul n care a aprut este urmtorul: stteam unul lng altul la o ntlnire regioNet cu numele Clustere i reele Motoare ale dezvoltrii pentru creterea competitivitii i a capacitii de inovare. Imediat dup prezentarea stadiului orae vecine? Cum am ajuns fiecare din curent al cluster-ului IT din Cluj (30 de noi s lucrm n IT? firme nscrise, cumulnd 3500 de angajai Apoi am nceput s testez ideea pe i o cifr de afaceri de 8 milioane de ali oameni, care n loc de rspunsuri Euro), a luat cuvntul domnul profesor mi puneau mai multe ntrebri: Cine Sergiu Nedevschi. nainte de a trece la este Tiberiu Popoviciu ? Iar spre ruinea prezentarea activitii tiinifice a labora- mea, absolvent al liceului care i poart torului pe care l conduce, a inut o mic numele, tot ce am putut sa zic este c lecie de istorie ncepnd cu nfiinarea a fost un matematician, fr s pot s unei ramuri a Academiei Romne la Cluj explic clar i argumentat legtura lui cu n anii 1950, continund cu construirea domeniul informaticii; Cum au evoluat primelor calculatoare, a unuia dintre demografic generaiile de profesioniti primele compilatoare de Fortran i aa IT? Ce alte domenii au fost influenate de mai departe pn la concluzia final c IT? A generat IT-ul clujean premiere n acetia sunt factorii determinani pentru domeniu? Care sunt metricile potrivite starea curenta a IT-ului clujean. n acest pentru comunitatea local? Producia moment Rzvan se ntoarce spre mine i de Proprietate Intelectuala este o metric m ntreab de ce nu scriem despre asa semnificativ? ceva: Care este istoria IT-ului clujean? Deodat cu aceste ntrebri s-au conPrima reacie a fost similar celei turat i diferitele perspective din care resimit de fiecare dat la auzul sintag- priveau interlocutorii mei subiectul: unii mei Clujul, Silicon Valley-ul Romniei, erau animai de curiozitate i amuzament, o uoara nencredere i nevoia puternic cautnd o lectur plcut; alii interesai de dovezi i argumente care s susin de aspectele economice i oportunitile aceast comparaie. Simeam nevoia unei nscute de un studiu detaliat al strii raportri ale realizrilor IT-ului local, curente; alii cuprini de melancolie, la stadiul naional i internaional, pen- n amintirea unor vremuri trecute. Am tru a justifica importana i nevoia unui hotrt s explorez aceste perspective i articol. A doua zi mi-am dat seama c s ncerc s rspund ntrebrilor de mai relevana acestei raportri este minim, sus n cadrul unui nou proiect: Istoria dar evoluia i eventuale comparri ar fi IT-ului Clujean de la 1957 pn azi. totui un subiect interesant. Aa au nce- Mai concret o serie de articole i evenput s apar ntrebrile: tual ediii speciale dedicate ntrebrilor Cine a introdus IT-ul n Cluj? n ce de mai sus, interviurilor cu personaliti scop? n ce circumstane? Cum a ajuns s actuale sau istorice dar i perspectivei creasc la nivelul actual? Care este nive- personale: eu cred c exist o comunitate lul actual? Este adevrat c, att numrul, IT la Cluj care a dovedit n nenumrate ct i contribuia la bugetul local al rnduri c a ajuns la o mas critic ce angajailor din IT reprezint o majori- nate nevoia unei identiti comune. Ori tate? Cum au luat decizia antreprenorii, aceast identitate se definete prin rsimediat dup revoluie s nceap afaceri punsurile ntrebrilor: Cine suntem? i de n acest domeniu? Cine le-a fost men- unde venim? Abia apoi putem rspunde tor sau inspiraie? Cine a pregtit tehnic ntrebrilor: Unde vrem sa ajungem? i generaiile actuale de profesioniti n cum? domeniu ? Cine a introdus aceste materii Atept ajutorul vostru pentru a rsn curriculum universitar? De ce la Cluj punde ntrebrilor de mai sus. exista aceast proporie mare i nu n alte

Marius Mornea

marius.mornea@todaysoftmag.com Fost senior software developer in cadrul Nokia, n prezent fondatorul platformei Mintaka Research

10

nr. 6/2012 | www.todaysoftmag.ro

arhitectur

TODAY SOFTWARE MAGAZINE

Comuniti IT Cluj-Napoca
eciunea comunitate i propune s in evidena grupurilor de profesioniti relevante pentru industria IT, dar i un calendar de evenimente i ntlniri din acest sector. Pentru nceput prezentm principalele iniiative din mediul local, n timp intenionnd s cretem acest index pn ce va conine toate comunitile locale, dar i cele naionale cu prezen i activitate pe plan local. Criteriul ales pentru ordonare este numrul de membri i activitatea grupurilor concretizat n evenimente locale. Astfel obinem o ierarhie a gradul de implicare, al organizatorilor i al membrilor acestora.

Transylvania Java User Group Comunitate dedicat tehnologiilor Java. Website: http://www.transylvania-jug.org/ Data nfiinrii: 15.05.2008 / Nr. Membri: 504 / Nr. Evenimente: 39 Romanian Testing Community Comunitate dedicat QA. Website: http://www.romaniatesting.ro Data nfiinrii: 10.05.2011 / Nr. Membri: 536 / Nr. Evenimente: 1 Cluj.rb Comunitate dedicat tehnologiilor Ruby. Website: http://www.meetup.com/cluj-rb/ Data nfiinrii: 25.08.2010 / Nr. Membri: 127 / Nr. Evenimente: 30 The Cluj Napoca Agile Software Meetup Group Comunitate dedicat metodelor Agile de dezvoltare software. Website: http://www.agileworks.ro Data nfiinrii: 04.10.2010 / Nr. Membri: 249 / Nr. Evenimente: 13 Cluj Semantic WEB Meetup Comunitate dedicat tehnologiilor semantice. Website: http://www.meetup.com/Cluj-Semantic-WEB/ Data nfiinrii: 08.05.2010 / Nr. Membri: 132/ Nr. Evenimente: 19 Romanian Association for Better Software Comunitate dedicata oamenilor cu experienta din IT indiferent de tehnologie sau specializare. Website: http://www.rabs.ro Data nfiinrii: 10.02.2011 / Nr. Membri: 181/ Nr. Evenimente: 10

Calendar
Noiembrie 9
Artificial Intelligence, Computational Game Theory, and Decision Theory - Unifying paths Contact: workshop2012@rist.ro

Noiembrie 17

Open Agile Cluj 2012 Contact: http://cluj2012.openagile.ro/

Noiembrie 22

Lightning Talks Contact: http://www.transylvania-jug.org/

Decembrie 8

Global Day of Coderetreat 2012 Contact: http://coderetreat.org/events/global-day-of-coderetreat-2012-cluj-napoca-romania

Decembrie 11

Socialization Meetup Contact: http://www.meetup.com/Cluj-Semantic-WEB/ Google Technology User Group Cluj-Napoca Comunitate dedicat tehnologiilor Google. Website: http://cluj-napoca.gtug.ro/ Data nfiinrii: 10.12.2011 / Nr. Membri: 30 / Nr. Evenimente: 7

Cluj Mobile Developers Comunitatea TSM Comunitate dedicat tehnologiilor mobile. Comunitate construita in jurul revistei Today Software Magazine. Website: http://www.meetup.com/Cluj-Mobile-Developers/ Website: http://www.todaysoftmag.ro Data nfiinrii: 08.05.2011 / Nr. Membri: 54 / Nr. Evenimente: 3 Data nfiinrii: 06.02.2012 / Nr. Membri: 263 / Nr. Evenimente: 3 Meniuni: Cluj Perl Mongers (www.cluj.pm), GeekMeet Tabara de testare (http://geekmeet.ro/), ITSpark (http://itspark.ro/default.aspx), Comunitate dedicat QA. CodeCamp (http://www.codecamp.ro/), CodExpert (http:// Website: http://www.meetup.com/Tabara-de-Testare-Cluj/ www.codexpert.ro/), PHPRomania (http://www.phpromania. Data nfiinrii: 15.01.2012 / Nr. Membri: 100 / Nr. Evenimente: 7 net/), ARIES (http://www.aries.ro/)

www.todaysoftmag.ro | nr. 6/2012

11

arhitectur

Arhitectur pentru Flexibilitate


(Quality Attribute)
onform definiiei, flexibilitatea reprezint capacitatea unui sistem de a se adapta la diferite medii i situaii pentru a face fa schimbrilor ce apar n politicile i regulile aferente mediului de afaceri. n ziua de azi regsim acest atribut de calitate n orice business i din acest motiv i este foarte probabil prezena i n cerinele clientilor pentru proiectul ce urmeaza a fi dezvoltat. n articolul ce urmeaz voi dezvolta cteva idei despre acest topic, flexibilitatea, i despre impactul pe care l are asupra proceselor de arhitectur i development.
Attila Antal
Attila.Antal@isdc.eu Software Arhitect @ ISDC are o experien de peste 16 ani n domeniul IT, ultimii 3 ani dedicndu-i n special arhitecturii software. Paleta proiectelor n care s-a implicat e larg i foarte variat, domeniul principal fiind Java dar i iOS i Android. Membru fondator RABS (http:// www.rabs.ro/) i autorul ideii Crosscutting Architectural Concerns prezentat prima dat in primvara anului asta n cadrul acestei asociaii.

Quality Attributes

Quality Attribute este o caracteristic sau o calitate non-funcional (n unele cazuri i funcional) a unei componente sau a sistemului. Pe scurt aceste atribute se mai numesc i ilities, pentru c n majoritatea cazurilor denumirea lor include sufixul ility: maintenability, accessibility, etc. Din pcate exist mai multe standarde pentru aceste atribute (IEEEE 1061, ISO/ IEC 9126-1) care denumesc aceeai calitate prin diferii termeni, crend astfel inelegeri diferite sau uneori confuzii. Articolul nostru va trata cazul n care cerinele din partea clientului se focuseaz pe flexibilitate cu statutul de calitate.

diferitelor domenii (dezvoltare, operational, etc.) i a proceselor (development, arhitectur, calitate, etc.). Arhitectul trebuie s vad aceste strategii prin prisma Quality Attributes i s le aib n vedere n timpul procesului de analiz de compromis.

Agile

Tiul cuitului

Majoritatea companiilor de dezvoltare software folosesc metodologii agile. Dac ne uitm la definiia acestei metodologii vom vedea ca e vorba exact depre o flexibilitate n procesul de development. Acum se poate striga sus si tare: Dar ce are de-a face asta cu arhitectura? Bine, n mod direct nu are prea multe, dar are o influen puternica fiindc flexibilitatea i rspunsul rapid la schimbri este posibil doar dac mediul de dezvoltare, structura proiectului (module), infrastructura, SCM-ul, release management-ul sunt si ele la randul lor flexibile. Toate astea sunt n legatur cu deciziile luate de un software arhitect.

In faza de fundamentare a proiectului, arhitectul software poart diferite discuii cu prile implicate (stakeholders) ca s-i clarifice ct mai bine cerintele legate de proiect. De obicei cerintele enumer diferite ilities fr a argumenta decizia. Arhitectul trebuie s fac o analiz de compromis tocmai pentru a argumenta i n aceeai timp a filtra lista de ilities. Pe de alt parte, un aspect important de considerat n procesul de decizie e legat i de strategia companiei din perspectiva

Analiz de impact

Dup ce arhitectul are lista conceptelor, strategiilor, metodologiilor care vor fi prezente in proiect i au legatur cu flexibilitatea, urmeaz o alt analiz n care flexibilitatea drept calitate se pune cap la cap cu cellalte caliti aa cum este artat n tabela Tabelul 1. Am folosit doar acele caliti care sunt cele mai des folosite extras din ultimul ITABoK de la IASA. Acele atribute care vor fi favorizate de flexibilitate vor primi un semn + i cele care

12

nr. 6/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

reutilizabile, control i orchestraie.

Arhitectura core-ului

Tabelul 1 vor fi impactate vor primi un semn -. n conceptual. Putem observa c nu toate cazul nostru putem observa cum calitiile funcionalitille pot fi extrase n plugin de Extensibilitate i de Performan sunt acestea vor rmne n core. Fiecare plugin afectate negativ de Flexibilitate. n cazul comunic cu core i unele se izoleaz comimpactului de performan sunt destule plet de alte sisteme. Aplicatia core trebuie sa msurtori prin care se pot explica riscu- aib o faad pentru fiecare plugin. Aceste rile i de multe ori acestea sunt acceptate faade pot s aib interfee i prin asta se de client . poate face public accesul la plugin. n cazul extensibilitii trebuie s avem Dup ce studiem atent Figura 2, putem documentat (i predat la client) riscul i s observm c un plugin poate s existe eventual diminuarea riscului dac structura i cerintele proiectului permit acest lucru. Tabele de genul celei de mai sus sunt atuuri foarte valoroase n analiza de Utiliti compromis i n negocierea calitilor care E de menionat faptul c acest context al trebuie s fie prezente (sau nu) n proiect. aplicaiei trebuie s aib tot timpul funcii sau utilitare de core cum ar fi de exemplu: Plugin ca i pattern arhitectural tratarea fiierelor de proprieti Diminuarea riscului fa de extensi logare central bilitate este posibil i prin alegerea unui Figura 1 auditarea diferitelor evenimente pattern arhitectural inteligent. Sistemele persistarea datelor in baza de date bazate pe plugin-uri permit extensibilitatea complet izolat (de exemplu un encoder/ manipularea tranzaciilor exact prin flexibilitatea lor, prin metoda decoder) sau poate fi folosit ca un agent Aplicaia core este i ea la randul sau un de grupare a funcionalitilor n plu- de comunicare schimbnd mesaje cu alte consumator al acestor utiliti. gin-uri. n cazul in care avem nevoie de o sisteme. funionalitate extins se schimb un plugin Avantajul la acest sistem este c anumite Orchestrare cu celalalt sau se adaug altele. funcionaliti bine plasate in pluginuri pot O foarte important funcionalitate Figura 1 arat un sistem non-flexi- fi reutilizate, moment in care arhitectul tre- a core-ului este de a orchestra comporbil, monolitic sau monolitic core la nivel buie s aib influen asupra procesului de tamentul pluginurilor. nelegem prin conceptual. O schimbare oricat de mic development. aceasta controlul de lansare sau de scoatere la oricare funcionalitate aduce dup sine Succesul la sistemele cu plugin-uri din funciune a unui plugin i manipularetestarea i relansarea intregului sistem. este n a defini foarte clar comunicarea rea diferitelor tipuri de evenimente de alte Figura 2 arat un sistem flexibil la nivel intre core i plugin-uri, a folosi plugin-uri feluri.

Cel mai important prim pas n definirea unei arhitecturi este selectarea tipurilor de comunicare. Tabelul 2 de mai jos enumer tipurile de comunicare cele mai frecvente dintr-un sistem. Rndurile evideniate cu fundal gri sunt cele care sunt binevenite n orice sistem. Trebuie s observai c orice tip de comunicare are prile ei negative i pozitive. Tocmai de aceea nu este o decizie inteligent s avem n sistem numai un singur tip de comunicare, arhitectul trebuie s decid ce alege pentru anumite pluginuri, ntrind astfel alte caliti ca securitate, performan etc.. Pentru a vizualiza ct mai bine rolul i funcia unui core, am pregtit o diagram Figura 3 care arat o aplicaie model i evideniaz sarcinile acestuia.

Communicare

Aplicatia core trebuie s aib implementate toate tipurile de comunicare care vor fi folosite in context. Este i mai bine dac arhitectul cerceteaz viitorul aplicaiei i anticipat pregtete core-ul, pentru c n felul acesta s tie i mai multe dect ceea ce solicit clientul, deoarece modificrile ulterioare n core aduc dup sine relansarea ntregii aplicaii i scoaterea ei din timpul de execuie, lucru care afecteaz businessul clientului. Figura 2

Micro-arhitectur n plugin

Prerea mea este c un plugin trebuie

www.todaysoftmag.ro | nr. 6/2012

13

arhitectur

Arhitectur pentru Flexibilitate

vzut tot timpul ca un black box. Primete stimuli i creeaz rspunsul dup funcia implementat. Fiecare plugin trebuie s aib arhitectura sa, vezi figura Figura 4. Comportamentul pluginului este monitorizat prin sistemul de orchestrare a core-ului, el are acces la utilitiile con-

Tabelul 2

Figura 4 textului aplicaiei. Plugin-ul de obicei are numai o singur metod de comunicare cu core pentru a pstra simplitatea integrrii.

Sumar

Figura 3

Scopul acestui articol a fost de a v ghida printr-un flow al deciziilor i al argumentelor prin care software arhitectul poate s sintetizeze o soluie bazat pe atributul de calitate numit flexibilitate. S-a nceput cu paralela dintre cerintele clientului proiectat n Quality Attributes i strategiile companiei. A urmat analiza de compromis prin care am observat impactul cu extensibilitate ca fiind principalul argument pentru folosirea pattern-ului de plugin. La final s-a detaliat arhitectura unui sistem bazat pe plugin-uri.

WE HIRE

IN GOOD COMPANY
PROJECT MANAGER

.NET DEVELOPERS JAVA DEVELOPERS JAVA ARCHITECT .NET ARCHITECT


WE DO PROJECTS WITH IMPACT. WE DELIVER RESULTS, OUR CUSTOMERS ARE IMPRESSED BY OUR AWESOME TECH TEAMS. ISDC ENGINEERS YOUR DREAMS! RALUCA HIREME @ISDC.EU SIMONA HELLO @ISDC.EU

14

ISDC.EU/CAREERS

NOT RESOURCES.

nr. 6/2012 | www.todaysoftmag.ro

programare

TODAY SOFTWARE MAGAZINE

Tehnici SEO interne


partea a II-a
om continua, n acest numr, cele descrise n articolul precedent unde vorbeam despre cteva din cele mai importante tehnici de SEO intern. n aceast a doua parte vom vorbi despre modul cum ne poate ajuta o interfa creat cu HTML5, despre blocarea paginilor cu un coninut slab i despre link-uri. Sperm c cele dou pri vor crea un mic ghid SEO care s poat fi aplicat de orice proprietar de site pentru mbuntirea rank-ului n rezultatele motoarelor de cutare. list cu 25 de situri afectate de faptul c aveau indexate foarte mute pagini cu un coninut de slab calitate. Dup actualizarea Panda, acest lucru a fost dezastuos. Ezinearticles.com i FAQS.org au avut o scdere a traficului organic de peste 30%, iar suite101.com de peste 40%. Scderea traficului a atras dup sine i o scdere a veniturilor din publicitate.

Radu Popescu

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

Robots.txt vs meta robots

Precum cum spuneam n numerele trecute, actualizarea Panda penalizeaz chiar i site-urile care au doar cteva pagini cu un coninut slab. Pentru a nu fi afectai de acest lucru, va trebui s blocm de la indexare paginile care nu respect cerinele de calitate ale Google. Pentru a face acest lucru exist dou metode, fie folosim fiierul robots.txt n care adugm pe fiecare linie locaia relativ ctre un anumit fiier sau folder, fie adugm n fiierul vizat meta tagul robots. Diferena dintre robots.txt i meta tagul robots este aceea c fiierul nu blocheaz cu adevrat de la indexare fiierele menionate n interiorul su. Acestea sunt indexate de ctre Google, dar nu apar n cutri. Prin urmare, cea mai bun metod de a bloca indexarea unei pagini este prin meta tagul robots:
<meta name=robots content=noindex, nofollow>

HTML5 layout

Am vorbit n numerele trecute despre modul n care motoarele de cutare percep anumite tag-uri HTML, ce pentru noi oamenii par identice (bold sau strong). Spuneam atunci c diferena st n valoarea semantic pe care acestea o ofer. HTML5 vine cu o serie de tag-uri pentru organizarea coninutului. Printre cele mai folosite tag-uri semantice n contrucia unei interfee sunt: <header>, <nav> (meniu, navigare), <footer>, <section>, <article>, <aside>. Pentru a nelege mai bine modul

Cel mai indicat lucru este s folosim fiierul robots pentru a bloca foldere ntregi (de exemplu, un folder care conine fiiere de configurare sau imagini cu layout-ul sitului), iar meta tagul robots este indicat s-l folosim pentru a bloca fiiere de tip HTML. Ca s ntelegem mai bine rolul meta robots, putem observa studiul de caz realizat de Johannes Beus n care prezenta o

Figura 1
www.todaysoftmag.ro | nr. 6/2012

15

programare
Tehnici SEO interne - partea a II-a
de utilizare, n Figura 1 am creat o interfa folosind numai aceste tag-uri. Tag-urile semantice ajut la o parsare mai rapid a codului surs i ofer informaii foarte utile motoarelor de cutare despre coninut. Spre exemplu, n zonele <nav> sau <footer> se vor gsi link-uri interne care ajut la indexarea paginilor pe cnd n zona <aside> vor fi prezente unele bannere sau reclame ce nu au o importan foarte mare pentru vizitator. Anumite versiuni mai vechi ale browser-elor nu suport aceste tag-uri. Exist totui o metod prin care putem s ne bucurm de o interfa HTML5 chiar i pe Internet Explorer 6 de exemplu, adugnd urmtorul script n zona <head>:
<script> document.createElement(header); document.createElement(footer); document.createElement(article); document.createElement(section); document.createElement(nav); document.createElement(aside); </script>

ancore ct mai descriptive. Spre exemplu, dac cineva dorete s adauge un link ctre un articol foarte bun, despre neuromarketing, de pe situl nostru, i va folosi ancora aici (n contextul: un articol pe aceast tem poate s fie gsit aici) nu vor fi generate la fel de multe clickuri precum n cazul folosirii unei ancore mai descriptive de tipul efectele neuromaketingului n publicitate. Un alt lucru foarte important de tiut este c atunci cnd avem dou ancore diferite, care au acelai link, ntr-o singur pagin, conteaz doar prima dintre ele. n exemplul de mai jos, dei a doua ancor e mai descriptiv, ea nu este luat n considerare. SEOMoz.com, a realizat un experiment folosind trei domenii noi spre care a trimis cte zece link-uri externe. Pentru primul domeniu, link-urile aveau ancora click here, pentru al doilea aveau o ancora de tip exact-match (cuvnt cheie principal),

Folosirea adreselor canonice

Adresa canonic reprezint acea adres care este preferat, n dauna altora care au un coninut identic. Pentru a ntelege mai bine acest concept, vom lua un exemplu: s spunem c avem o pagin care ne arat cteva laptopuri (ex. www.site.ro/laptopuri). n acelai timp, produsele de pe acea pagin se pot sorta, dup pre, de la cel mai mic la cel mai mare (ex. www.site.ro/ laptopuri?sort=price&type=asc). De asemenea se pot sorta i dup nume (ex. www. site.ro/laptopuri?sort=name&type=asc) sau dup alte criterii. Toate aceste URLuri reprezint n viziunea Google pagini diferite (care au acelai coninut). Pentru a evita indexarea tuturor acestor pagini (lucru ce poate s fie vzut ca spam) i pentru a nu mpri beneficiile link-building-ului, trebuie s avem o adres unic (canonic) i anume www.site.ro/laptopuri. Pentru a declara o adres canonic, trebuie s introducem n zona de <head> a paginii urmtorul cod:
<link rel=canonical href=http://www.site.ro/laptopuri/>

fi accesate de pe pagina principal, prin link-uri succesive. Pentru a profita la maximum de puterea link-urilor interne trebuie s inem cont de cteva lucruri eseniale: Cu orice pre trebuie evitate linkurile interne din JavaScript sau Flash, pentru c acestea nu pot s fie parsate de ctre motoarele de cutare (n foarte multe cazuri). Link-urile interne ctre pagini blocate prin meta robots sau robots. txt, trebuie s conin atributul rel=nofollow. Trebuie s ne asigurm c nu avem link-uri interne ctre o anumit pagin, doar din rezultatele unui motor de cutare intern. Google nu va executa cutri pe situri, pentru a descoperi pagini noi, ci se va baza pe link-urile interne i sitemap-ul XML despre care am vorbit n numrul trecut. Nu trebuie s abuzm de aceste lnkuri interne. Motoarele de cutare pot accesa un numr maxim de 150200 de link-uri. Prin urmare, sunt de evitat paginile de tip sitemap, pentru site-urile care au mai mult de 150 de pagini.

Optimizarea ancorelor link-urilor

n primul rnd trebuie s nelegem ce este o ancor. Ancora unui link reprezint textul (pe care se poate face click) acelui link. Ea influeneaz foarte mult rata de click i ofer informaii preioase motoarelor de cutare, despre subiectul care se gsete la captul respectivului link. Este bine s evitm ancorele de tipul aici, site sau download i s folosim

De amintit aici este cazul sitului NorthPole.com, care este n acest moment pe locul 2 n rezultatele cutrii cuvantului santa. Situl a reuit aceast performan datorit numarului mare de pagini indeFigura 2 xate n Google i link-urilor interne ntre acestea. Fiecare pagin conine cateva zeci iar pentru al treilea avea mai multe ancore de link-uri ctre alte pagini de pe acelai de tip partial-match (cuvinte cheie secun- domeniu, crend astfel o retea intern dare). Rezultatele au fost surprinztoare. solid. n primele trei zile, situl care avea link-uri externe ce foloseau ancora click here a Atributul ALT detinut prima poziie n cutri. Dupa cele De foarte multe ori este trecut cu vede3 zile, acesta a disprut din SERPS i au rea faptul c i imaginile au nevoie de aprut celelalte dou pe poziiile 1 i 2. optimizare SEO. Atributul ALT este folosit n interiorul tag-ului <img> i are rolul de a Link-urile interne i rolul lor oferi informaii despre coninutul imaginii. De asemenea link-urile interne au un Din cauza faptului c motoarele de cutare rol foarte mare n SEO, nu doar cele venite parseaza codul surs i nu pot s neleag din exterior. Dac ne gndim la modul, imaginile, avem nevoie s le oferim inforstandardizat oarecum, n care sunt con- maii ct mai detaliate despre acestea. Pe struite astzi site-urile, vom observa c lng numele imaginii, atributul ALT ajut dintodeauna n partea de jos avem o mul- la indexarea i afiarea imaginilor dintr-un ime de link-uri interne. Ei bine, aceste site n rezultatele cutarilor. link-uri interne din footer au ajutat mereu Un alt rol foarte important al acesatt din punct de vedere al SEO ct i al tui atribut const n aceea c valoarea din usability. Ele creeaz o ierarhie a paginilor interiorul su este afiat n cazul n care nu din site i transmit o parte din autoritatea se va putea afia imaginea din cauza unor acestora (link juice) celor apropiate. probleme din cod sau a unei surse greite. Trebuie s ne asigurm c nu exist Atributul ALT este foarte util i n cazul pagini (pe care le vrem indexate) ce nu pot celor care folosesc browsere text-based,

16

nr. 6/2012 | www.todaysoftmag.ro

programare
ei neputnd vizualiza imagini. Adugarea unei descrieri a imaginii n atributul ALT iar nu a unor niruiri de cuvinte cheie va avea cele mai bune rezultate. Pe lng acest lucru, este recomandat ca imaginile s aib un nume descriptiv, iar cuvintele din el s fie desprite prin cratim. Un exemplu foarte bun, este al sitului Jeromes.com care comercializeaz mobilier. Lipsa unui coninut cuprinztor i interesant, de tip text, a fcut ca situl s nu prezinte un interes foarte mare pentru motoarele de cutare. Nu exista destul coninut pentru a putea fi relevant n cutri. Partea bun este c avea foarte multe imagini. Prin adaugarea atribulului ALT imaginilor, au reuit s creasc traficul organic. Au avut o cretere de 1400% a traficului venit pe pe Google Images.

TODAY SOFTWARE MAGAZINE

Concluzii

Tehnicile de SEO intern stau n mna proprietarului sitului. Prin urmare ele sunt de multe ori trecute cu vederea. Trebuie s ntelegem c n optimizarea pentru motoarele de cutare, fiecare aciune, orict de mic, poate influena rank-ul. Este imposibil s influenm unele elemente externe, precum vrsta domeniului sau factorul de ncredere astfel nct s avem rezultate bune ntr-un timp relativ scurt. n acelai timp ne este foarte uor s folosim tehnicile SEO interne, asupra crora avem control pentru a crete poziia n SERPS. Nu trebuie s uitm c algoritmii motoarelor de cutare sunt ntr-o continu schimbare. Google este atent la fiecare micare a noastr n online i vede modul cum folosim aceste tehnici de optimizare. De multe ori, anumite persoane le folosesc ntr-un mod abuziv, iar motoarele de cutare ajusteaz algoritmii pentru a nu le ma oferi beneficii. Din pcate, acest lucru nsemn c nu ne vor mai oferi beneficii pentru motoarele de cutare necesit o nici nou, celor care folosim SEO ntr-un atenie constant i o munc susinut. mod corect. Din aceast cauz, optimizarea

www.todaysoftmag.ro | nr. 6/2012

17

diverse

10 principii de design (fabul)


up ce oamenii s-au plictisit s se joace cu dinozaurii (dar i pentru c acetia au disprut la un moment dat gonii de un meteorit) au ncercat s-i gseasc diverse alte preocupri: unii s-au dus sa vneze pinguini, alii au downloadat primul Starcraft (pentru c ultimul nc nu era finalizat - de fapt ultimul nu va fi finalizat niciodat!), iar restul erau nerbdtori s se distreze cu zebre. Rbdarea lor urma s fie pus la grea ncercare deoarece nu exista nici o zebr :-(. Zebrele nici mcar nu fuseser inventate. 1. i pentru c toat lumea voia s neleag ce este o zebr, s-au dus s-l ntrebe pe btrnul satului, care le-a zis c toate aceste informaii pot fi gsite ntr-un document de specificare funcional. ( n aceast seciune se povestete despre cum trebuie scris un document de specificare funcional util pentru a explica ce este o Tcerea nseamn nelepciune i se zice c un guru deine asa ceva din belug. Prin urmare, pentru a-l face s vorbeasc el trebuie s fie ntrebat. ntrebarile corecte sunt ntrebri normale care ne-ar ajuta s facem o zebr adevrat. Pentru a specifica ce este aceea o zebr trebuie s ntrebi guru:

Stefan Baritchii

stefan.baritchii@3pillarglobal.com Technical Lead @ 3Pillar Global Romania

CE NSEAMN... o zebr?

zebr i de ce este ea necesar. ) Btrnul satului era un guru i un guru cunoate totul. Gndete-te la un guru ca la o versiune mbuntit a lui Chuck Norris. El este singurul din sat care stie cum arat o zebr. De asemenea, el tie ct iarb va mnca o zebr. Zebrelor le place iarba, prin urmare sunt foarte lacome cnd vine vorba despre asta. Un guru tie cte zebre trebuie s vad lumina zilei, care sunt primele care trebuie concepute, i ce e mai important pentru aceast seciune cum arat o zebr.

La o astfel de ntrebare vei primi rspunsuri de genul: este un animal colorat n alb i negru. Dar pentru daltonisti, de exemplu, acest rspuns nu este suficient. Chiar i o parte din cei care nu sunt daltoniti i-ar putea imagina c trebuie s fac un panda. Cnd guru a auzit chestia asta i-a reformulat rspunsul: n nici un caz. Panda e panda i zebra e zebr. O zebr trebuie s arate mai mult a... cal, un cal dungat n alb i negru. Dar de aici au aprut alte ntrebari: Ce nseamn o dung?, Ce inseamna alb?, Ce inseamna negru?... si pentru numele lui Dumnezeu, CE E UN CAL? Presupunnd c la un moment dat sumerienii au (re?-)inventat scrisul, toate rspunsurile au fost consemnate n ceva numit document de specificare funcional. Un document de specificare functional conine rspunsurile care definesc entitile proiectului i trebuie explicate n aa fel nct s fie nelese de toat lumea din echipa de proiect. i tocmai cnd toi credeau c au un document de specificare funcional complet, cineva a ntrebat:

18

nr. 6/2012 | www.todaysoftmag.ro

management

TODAY SOFTWARE MAGAZINE

n caz c v punei problema: da, este o ntrebare foarte pertinent care ar trebui s-i gseasc rspunsul ntr-un document de specificare funcional. Avnd rspunsul la aceast ntrebare, viaa zebrei are un scop. Zebra va ti ce problem rezolv i cum se ncadreaz n slbticie (vei auzi mai des termenul de context). tiind care este problema, vom putea refolosi aceeai soluie n caz c apare o problema asemntoare, sau cel putin ne putem inspira. i totui documentul nu este complet fr o idee despre performanele zebrei:

DE CE AVEM NEVOIE DE... o zebr?

CT DE PERFORMANT vrei s fie zebra?

nainte s te gndeti c zebra ar trebui s aib un singur picior, gndete-te c trebuie s fie n stare s scape de lei. Intrebarea este: ct de rapid vrei s fug zebra? ( Care sunt premisele pentru a construi un soft n aa fel nct s i ating performanele? Rspunsul la aceast ntrebare TREBUIE s fie ntr-un document de specificare funcional, pentru c n viaa real exist i clieni care semneaz SLA Service Level Agrrement iar dac performana nu este considerat a fi parte din design, poate costa mult mai mult clientul dup ce produsul este gata ). 2. i pentru c i-au zis zebr, i pentru c fiecare iubea numele att de mult dndui seama imediat la ce se refer ceilali cnd spun acest nume, au decis c numele semnificative joac un rol important. ( n aceast seciune vorbim despre

variabile, atribute, nume de clase, nume de pachete, nume de servicii i nume de metode care corespund comportamentului unei zebre. ) Cnd te gndeti la un nume pentru ceva, trebuie s te gndeti la cum ai descrie acel ceva ntr-un singur cuvnt. Doar att. Daca cineva arat un animal dungat i te intreab: Ce este asta? vei raspunde: este o zebr. Este att de intuitiv c doar un singur cuvnt ii vine n minte. Este att de intuitiv nct cel care te-a ntrebat se gndeste exact la acelai cuvnt fr s-i zic. Aadar, cnd alegi un nume ncearc urmatorul joc: ntreaba pe cineva Ce este chestia asta? i gndete-te la un cuvnt care descrie acel lucru. Dac rspundei amndoi acelai cuvnt (sau dac nu te gndeai chiar la acelai cuvnt, dar versiunea ceiluilalt pare mai bun i triezi puin zicnd c te-ai gndit totui la cuvntul lui), atunci acela este numele pe care il caui! Jocul asta poate fi aplicat la variabile, atribute, clase sau nume de pachete. Lucrurilor ce corespund unei aciuni le asociem alt intrebare. Un nume de metod este o aciune i prin urmare cnd vorbeti despre zebre te ntrebi: Ce fac zebrele? iar raspunsul poate fi: alearg, halesc, seJoac, morDeFoame, sePlictisesc... Toate verbele scrise inclinat sunt nume de metode valide. (evident, clienii vor aprecia foarte mult dac scriei aceste rspunsuri n englez. i foarte probabil ca i colegii vostri.). Cnd este vorba de servicii aplicai aceleai reguli. Un serviciu este de fapt o clas care i expune aciunile prin metode. Ce intrebri pui pentru a stabili numele atunci

cnd vrei faci un serviciu i aciunile lui aferente? 3. i pentru c oamenii erau att de dornici s ajute s creeze o zebr, au decis s pstreze lucrurile simple i clare pentru a realiza rapid ceea ce voiau. (n aceast seciune se povestete despre metode mari, clase mari, liste lungi de parametri care ii pot consuma timp preios ce altfel ar fi folosit n a-i ajuta pe ceilali s creeze o zebr)

Dei cei care au creat zebrele se gndeau acum la ei nii ca la niste zei, ei nu erau totui nemuritori (mai mult, unii dintre ei aveau i neveste acas). Aveau o via finit, deci nu puteau s i-o iroseasc citind o metod lung, sau un miliard de linii de descriere a unei clase. Prin urmare au decis s in totul simplu i clar pentru a salva timp i pentru c atunci cnd cineva intra n echipa lor de construit zebre folosea mai puin timp s nteleag ce fcuser deja, i pe unde se aflau cu proiectul. Ei... dar ce se ntmpl dac, totui,

www.todaysoftmag.ro | nr. 6/2012

19

diverse
10 principii de design (fabul)

o chestie devine prea mare? Nu ezita s o spargi n mai multe buci. Cnd faci acest lucru consider doar faptul c ai putea s o utilizezi n alt parte i de asemenea consider impactul pe care l are asupra performanei. 4. i pentru c doreau s disting o zebr de celelalte, atunci creatorii ei au decis c nu ar trebui s aib duplicate*. (n aceast seciune vom vorbi despre evitarea functionalitilor duplicate sau proiectarea n vederea evitarea duplicrii codului)

la un virus de care industria farmaceutic nu profit atunci cnd apare. Prin urmare suntem sub presiune (industria farmaceutic nefiind interesat, suntem pe cont propriu). Dar stai! Nu numai zebra ta e bolnav, dar toate zebrele care arat la fel au acelai virus. nspimntatoare imagine atunci cnd vezi un cmp plin de zebre, nu? Codul fiind scris de oameni este predispus la erori. Prin duplicarea codului se duplic i erorile. Avnd dou sau mai multe buci de cod care arat la fel vom avea implicit parte de o ntreinere dificil, anevoioas. De asemenea, timpul de testare crete foarte mult cnd testezi soft care face acelai lucru, dar folosete cod diferit. Pentru a ocoli comarul gndete codul n aa fel nct s fie refolosibil; i bineneles refolosete-l oricnd este cazul, n loc s-l duplici; *Aceast seciune a fost scris n memoria oiei Dolly ( 5 Iulie 1996 14 Februarie 2003 ) 5. i pentru c ei credeau la un moment dat c zebra ar trebui s se joace cu toata lumea s-au gndit s evite tight coupling. ( n aceast seciune se povestete cum s separi interfaa de implementare, cum s scrii codul unui serviciu, fie el web/rest/jms, unde este cazul i de asemenea ce au toate lucrurile astea de a face cu o zebr )

Cu totii tim cum cnt Rihanna. Dac vreodat o zebr ar ncerca sa cnte precum Rihanna restul turmei va nnebuni instant. Deci dac chiar vrei cu adevarat ca s nu i se intample turmei aa ceva, las-o pe Rihanna s cnte i pe zebr s fac playback. Cum ar trebui s implementm? E timpul s te pregatesti pentru cteva rnduri plictisitoare despre programare. Putem avea o interfa numit Singer care are o metod sing. Rihanna este o clas care implementeaz (binior) metoda sing. Relaia este: Rihanna is a Singer (Rihanna este o cntrea). Zebra va avea (has a) caracteristica de Singer (o relaie has a nseamn definirea unui atribut de acel tip n cadrul clasei Zebra). Pentru a ne distra puin vom aduga metoda lipSync() care va apela n metoda Singer.sing() (n cazul nostru cntreul va fi Rihanna). Dup cum observai zebra nu va cnta deloc. Va delega doar cntatul cuiva care este capabil de aa ceva. Dar din punct de vedere al unui observator extern, care se uit la zebr, va vedea c zebra cnt. Te gndesti ce avantaje ai obine cu aa ceva? La un moment dat Rihanna se va ndrgosti de vreun blogger i se va opri din cntat. Atunci, zebra ta va putea face playback la atlceva (de exemplu Sepultura), fr ca cineva s fie afectat. va urma

A ti care este zebra ta dintr-o turm de zebre este un lucru destul de complicat. Acum s ne imaginm c cineva ii zice ca zebra ta are un virus cruia nu i s-a prea facut marketing, i ea trebuie vindecat ct de curnd posibil deoarece acel virus se rspndete rapid i afecteaz ntreaga turm. Dac te ntrebi ce e un virus cruia nu i s-a prea facut marketing, gndete-te

20

nr. 6/2012 | www.todaysoftmag.ro

interviu

TODAY SOFTWARE MAGAZINE

Interviu cu Scott Barber


u ocazia conferinei NEXT 2012, organizat de Softvision, am avut plcerea s l cunoatem i s l urmrim pe parcursul a cteva ore pe Scott Barber, supranumit i the face of performance testing (eng. faa testrii performanei). Un geek auto-declarat, care n baza informaiilor pe care le gseti deja publicate despre el nu te pregtete pentru supriza ntlnirii fa n fa i care te frapeaz n mod plcut. Scott este un pragmatic care prefer oricnd implicarea direct, n detrimentul unei abordri academice, dovad fiind i predilecia spre a nva din proiectele n care se implic i a mprti cunotinele acumulate prin articole de natur practic (dar des refereniate), n locul publicrii crilor sau articolelor tiinifice. Abordarea lui principal este s ajute ct mai multe companii, prin servicii de consultan i ct mai muli indivizi prin interaciune direct (n calitate de organizator sau invitat al conferinelor i asociaiilor de testeri). n oricare rol se gsete, ncearc s rezolve rapid problema rspunznd la ntrebrile: ce resurse avem? unde vrem s ajungem? cum ajungem acolo? ct mai rapid, mai ieftin i mai simplu cu putin. n continuare, am ales s i punem i noi cteva ntrebri, iar n cele ce urmeaz gsii rspunsurile lui. Pentru a sparge gheaa l-am ntrebat cum se simte n Romnia, la eveniment alturi de gazda Softvision, i ce crede despre comunitatea local de testeri. Rspunsul: dac acest grup este reprezentativ, cred c avei o comunitate excelent, una dintre constatrile plcute, tot mai des ntlnite n ultima vreme fiind tehnologia este un factor de egalizare grozav. Nu conteaz dac o ar este bogat sau srac, dac tii tehnologie, poi s ai succes, iar asta este un lucru foarte bun; ori att evenimentul, ct i participanii au dat dovad de profesionalism, crend o experien foarte plcut, oamenii au fost grozavi i testerii au fost grozavi, sunt impresionat de abilitile i cunotinele lor [..] m-a ntoarce ntr-o clipit. Legat de atmosfera de la conferin am fost curioi ce anume este diferit, din punct de vedere cultural, att n zona esteuropean, ct i mai specific la NEXT. O prim observaie a fost, nu att de natur cultural, ct mai degrab un specific local: vrsta relativ sczut, fa de conferinele uzuale, i dorina de a nva a participanilor, manifestat activ. Tot specific NEXT ar fi implicarea participanilor, comparat cu multe conferine, unde coninutul i publicul este superficial i generalist, nu neaprat n sensul ru, ci mai degrab plictisitor, aici nu este nimic superficial, ntrebrile sunt adnci i pasionate. Pstrndu-ne n contextul NEXT, am explorat care sunt paii urmtori, att pentru Scott, ct i recomandrile lui pentru noi. Dac o iau ad literam, m duc acas, spl haine i merg la nunt, dar n acest context mi-am schimbat complet prezentarea din Sydney, chiar n aceast diminea, bazat pe ce am nvat aici, iar din cauz c sunt foarte pasionat [..] i iubesc ceea ce fac [..] pasul meu urmtor este s nv eu i s ii nv pe alii mai departe tot mai mult. Dac mi voi petrece timpul umblnd prin lume i nvnd oamenii, vreau ca acetia s mi zic cum a mers, vreau ca urmtorii mei doi pai s fie o mbunatire continu i s strng feedback. Ct despre participani: continuai cu acest format, oameni care au informaii i training-uri relevante pentru comunitatea asta; inei comunitatea laolalt, pentru c cel mai apropiat lucru de o profesie, pe care l avem ca i testeri, este comunitatea, i cred c aceast comunitate este sigura cale ca s nvm i s cretem. Avei o comunitate bogat [..] oferiii o cas, aceasta este provocarea mea pentru voi: nu o lsai s moar! Odat spart gheaa ntrebrile au nceput s curg, iar n continuare m voi mulumi s le reproduc integral, cu unele mici editri i completri de context n cazul rspunsurilor primite.

foto: Scott Barber Q: Care unelte le considerai mai bune, crile sau uneltele software care automatizeaz munca? Wow! Vreau s v zic c sunt nc ataat de unele lucruri tradiionale, fie c sunt cri sau altceva, dar sunt n acelai timp un geek i mi plac i uneltele software, aa c de cele mai multe ori depinde de scopul n care le folosesc. [..] Dar ce mi place cel mai mult este s am de unde alege. Q: Ai anumite instrumente pentru a nva zilnic, surse de informaii gen reviste etc. ? Dei de multe ori oamenii consider blog-urile, doar opinii personale, n lumea testerilor, n care nu exist un manual de utilizare sau diplome de facultate specializat [..] gseti aceeai informaie din revistele de specialitate pe blogul autorilor, mult mai repede. Important este s nvai de la ei, dar privii informaia ca un tester: cum s-au gndit la asta? i cum o aplic eu n cazul meu? O alt soluie foarte bun e ncercnd s nvei pe altcineva nvei singur, aa c opiunea numrul unu pentru mine este s i nv pe alii. Q: Tot la capitolul instrumente, care sunt instrumentele cele mai folosite n rutina zilnic? Aaaahh! Ca s fiu sincer, cele pe care le folosesc cel mai des sunt cele gratuite, open source sau care au o perioad de ncercare suficient de lung. Prin urmare sunt ataat de JMeter, OpenSTA, i n ultima vreme de unealta cloud SOASTA,
www.todaysoftmag.ro | nr. 6/2012

21

interviu
Interviu cu Scott Barber
pentru c au o versiune gratuit suficient de robust pentru a putea face testare real de performan. Acestea fiind zise, unele din cele mai scumpe unelte sunt foarte foarte puternice i mi plac, dar nu mi le permit, aa c depind de clieni s le pot folosi. Dar sunt distractiv de folosit, mai ales cnd altcineva le-a cumprat. Q: La capitolul procese, cum se poate compara testarea n metodologia agile (eng. agil) cu varianta waterfall (eng. cascad)? Cnd a aprut manifestul agile mi-am ntrebat colegii: nu toat lumea lucreaz aa deja? Iar ei au rspuns: cel puin noi aa lucrm. Ani mai trziu cnd am intrat n contact cu companii care nc foloseau waterfall mi-am pus ntrebarea: cum poate cineva s fac metodologia asta s funcioneze?Testarea performanei este n mod inerent agil, iar prin asta vreau s spun c nu poi fii cu adevrat eficient n a furniza, cel puin consistent, aplicaii performante, dac nu faci o minim testare de performan chiar de la nceput. Asta nu nseamn c tot timpul aceasta este fcut de tester, i asta poate crea confuzie, pentru c exist o diferen ntre activiti i roluri. Ceea ce s-a schimbat ns, este c cu cat mai multe companii i echipe lucreaz la adoptarea principiilor agile, cu att mai uor este pentru mine s transmit mesajul c responsabilitatea performanei este mprit i de dezvoltatori i de administratori i de cei de la suport. Trebuie ca toate bucile s se potriveasc i dac nu mprtim informaiile i nu lucrm mpreun, atunci suntem n cazul tradiional waterfall n care testerul furnizeaz mult informaie cnd nu mai este timp pentru reparaii. Iar repararea problemelor de performan este de cele mai multe ori scump, implicnd achiziii hardware i refacerea arhitecturilor. Cu ct integrm performana n activitile agile zilnice, cu att mai capabili vom fi s livrm aplicaii performante consistent i cu att mai fericii vor fii utilizatorii. Q: Poi s alctuieti un top 3 buzzwords (eng. cuvinte la mod), din ultimii ani? Subiecte mari care trezesc pasiuni i polarizeaz lumea n ultimii 4-5 ani ar fi certificarea, automatizarea i.. probabil agile, dar doar pentru c implic o schimbare de cultur organizaional. Dup ani de waterfall [..] la schimbare, testerii nu i mai gsesc locul, o vreme, i asta cauzeaz stres [..] ns muli, odat ce se integreaz le place mult agile. Automatizarea a fost un subiect fierbinte pentru c mult lume crede c prin ea putem nlocui testerul uman. Dar adevrul este c automatizarea poate face foarte multe lucruri i mie mi place s automatizez, dar nc nu am ntlnit o bucat de software care s poat lua decizii i s gseasc erori la fel de bine ca un om instruit. Cu alte cuvinte nu poi nlocui, dar poi mbunti, poi ajuta un tester uman s testeze mai bine, mai rapid, s acopere mai mult, dar nu poi nlocui oamenii cu unelte automate. Iar provocarea cu certificatele este c sunt multe i este greu de neles ce nseamn fiecare. Managerii de recrutare vd certificrile, dar nu neleg ce nseamn. Q: Poi s ne dai exemple de realizri cu care te mndreti? Ceea ce e interesant este definiia realizrii majoritatea oamenilor cred c voi vorbi de rularea unui test grozav, gsirea unui bug important sau oprirea livrrii unui produs, cu probleme, care putea provoca prejudicii de milioane de dolari. Da! sunt realizri, dar se ntmpl odat, cndva, poate am avut noroc, poate sunt bun, nu conteaz, pur i simplu s-au ntmplat. n schimb pentru mine o realizare e cnd ajut o persoan sau o organizaie s li se aprind un becule, s aib o idee sau s i schimbe modul de gndire i perspectiva n aa fel nct s i conduc la succes, mult dup ce am plecat. De multe ori nu aflu de asta dect dup ani. Un mic exemplu: odat, dup doar 90 de minute la un client, tiam care era problema, la fiecare 10 minute un alt vicepreedinte intra i le ddea altceva de lucru. Iar aceti VP nu vorbeau ntre ei. Soluia a fost s m aez cu scaunul n u i s i in de vorb de fiecare dat cnd apreau. Dup doar 3 zile aveau rezultate excelente, iar eu nu m-am atins de nimic. Bineneles c la plecarea mea lucrurile au revenit la problema iniial, dar eful echipei mi-a zis c ntre timp nu mai lucreaz la ei i c are acum propria echip, cu care aplic aceeai reet i lucrurile merg de minune. Cnd am auzit asta am fost att de mndru, un lucru att de simplu i prostu, care nu are nimic de a face cu testarea performanei, dar care poate face o diferen att de mare.

Q: Poi s ne zici care ar fi diferenele ntre metodologiile de testare a dispozitivelor desktop, server i mobile? Iat ce am nvat eu: testarea e ceva ce devine o parte din tine, iar dac eti bun la testat, nu mai conteaz ce anume testezi. O s ii dai seama cum s faci fiecare lucru, cnd ai nevoie de o unealt de automatizare, cnd s testezi manual, cnd ai nevoie de ajutor de la un programator, cnd s o faci mai devreme sau mai trziu sau la mijloc, pentru c nu astea sunt cele mai importante pentru un tester. Ceea ce e important este s nvei cum funcioneaz sau cum ar trebui s funcioneze i apoi s gseti toate felurile n care nu merge cum ar trebui s mearg. tii ceva? .. eu testez totul. Testez frigiderul, testez paharele, mai devreme m jucam cu dopul de la sticl, de ce? Pentru c nu m pot abine. Unii zic c aa sunt eu Scott. Dar eu urmresc oamenii care au instinctul de tester i toi fac asta tot timpul, fr s in de metodologie. Metodologiile difer ca implementare, dar nu ca i proces de gndire. Q: Ai recomandat participanilor s strice din cnd n cnd cte ceva n ncercarea de a nva ceva nou. Ai putea s ne dai exemple n care ai stricat i tu ceva? Eram la al doilea proiect, [..] primul a fost 6 sptmni de training i al doilea 8 sptmni ca i ef de testare pe un proiect n valoare de mai multe milioane de dolari [..] pe vremea cnd 150 de utilizatori ntr-o or erau muli. Testam la client [..] cu 53 de hopuri de reea ntre cele dou maini fizice aflate una lng alta, aa c m-am mutat la biroul propriu de peste drum. Am primit un mail care zicea s urc ncrcarea la 500 de utilizatori, iar eu am refuzat zicnd c nu e o idee bun. Atunci mi s-a spus c au trebuit s conving un ef mare s cumpere o licen de 500 de utilizatori i au nevoie de asta. Am zis c tot nu cred c e o idee bun, dar am totul n email aa c am dat drumu la test i am plecat la un prnz de 3 ore. [..] La ntoarcere, monitorul plin de notie lipite: vino s m vezi! de la managerul meu; vino s m vezi, te rog! de la director; vino s m vezi acum! de la CTO; vino la mine n birou cnd te ntorci! de la

22

nr. 6/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


CEO. Reacia mea: asta nu e bine!, aa c am fcut ce orice tester bun ar face, am dat jos toate notiele i am nceput s m uit la mesajele de eroare s mi dau seama ce s-a ntmplat. n cteva minute toi stteau n spatele meu i m ntrebau: ai idee ce ai fcut? - Da! Am rulat un 500; - i ai idee ce a fcut asta? - Nu, asta ncerc s mi dau seama, pentru c m gndeam c o s m ntrebai i nc m uit. CTO-ul, n mod normal un tip calm i tcut: i zic eu ce ai fcut, le-ai drmat ntreaga reea extern i avocatul lor ne sun din 15 n 15 minute s ne anune c au mai adugat un milion de dolari pierderilor. Reacia mea: .. aaaaaaaaaah! M gndeam c sunt cel puin concediat, dac am noroc. La care m-au ntrebat de ce am rulat un 500, iar eu am rspuns: pentrucaleamziscaeoideeproastasieamiatrimisunmailsiaziscatrebuiesaofac. Iar ei au ntrebat dac am emailul i cnd am rspuns Da! au nceput s rd, s mi bat palma, s mi spun c doar glumeau i totul ii ok. Dar eu am cauzat acelei companii (chiar dac ziceau un milion de dolari la 15 minute) toat reeaua extern a fost picat o sptmna. Am generat o ncrcare asa mare, c dispozitive fizice s-au nclzit att de tare c s-au topit i a fost nevoie s se comande altele n schimb. Cum de s-a ntmplat asta? Pi ntreaga lor infrastructur rula la mult peste limita normal, nc nainte s dau eu drumul la test. A fost vina mea? Nu, dac reeaua i funcioneaz la 95% din capacitate, trebuie s faci un upgrade nainte de a modifica ceva n ncrcarea ei. Q: n ct timp crezi c va afecta testarea, schimbarea de paradigm spre cloud i mobilitate? Companiile inovatoare tehnologic, cele care au software-ul ca i business, nu doar utilizatorii sau dezvoltarea de servicii, intern, pentru a evita achiziii scumpe, sunt deja acolo. La Facebook, singurele lucruri care nu sunt n cloud sunt laptopurile angajailor. Google avea, am s l numesc un cloud intern, acum 10 ani. Ai putea s l numeti reea virtual, dar nu era. Era construit cum este construit n ziua de azi cloud-ul. Multe companii la care m duc, de nalt tehnologie, au totul, cu excepia mainilor proprii ale personalului, n cloud. Muli programatori n ziua de azi, n loc s i comande laptopuri de top pentru dezvoltare, i comand unele relativ ieftine, pentru c lucreaz n cloud. Aa c suntem deja acolo, n sensul c nu mai este cale de ntoarcere. Ct de repede se va muta totul n cloud, este greu de zis din cauza ngrijorrilor vizavi de securitate. Eu am fcut un tur al unui centru de date i pot s v zic c securitatea fizic este dincolo de orice mi pot imagina c poate asigura o companie, camerei de servere proprii. Este incredibil! Dar furnizorii de cloud nu sunt dispui s semneze hrtia care zice: ne asumm responsabilitatea. Prin urmare companiile cu securitate mare nu vor s fac tranziia. Dar pentru toi restul, cred c este foarte curnd. n opinia mea puine companii vor mai face urmtoarea actualizare a infrastructurii hardware proprii i vor prefera s se mute n cloud. Q: Ce anume ai aduga n programa universitar, dac ai avea ocazia? ncercri de injectare a unor cursuri de testare n universiti, nu au dus pn acum nicieri. Cu ct m gndesc mai mult la asta, dei mi-ar place s vd astfel de cursuri, nu doar n dezvoltare software, dar n orice legat de tehnologie, adevrul este c ce mi doresc cu adevrat sunt cursuri n teoria sistemelor. Vreau ca oamenii s nvee cum s gndeasc despre sisteme. Eu ca i inginer n construcii civile, m uit la un pod i vd vectori de fore. tiu c sun ciudat, dar asta vd, pentru c asta am nvat. Dac m uit la schema unui sistem de calcul pe un monitor, m gndesc la unde merg toate pachetele i ce anume fac, i m ajut mai mult dect orice curs de testare sau programare am urmat. Aa c m gndesc c n loc s devenim tot mai specifici n nvmntul universitar, ar trebui s ne ntoarcem la unele cursuri care erau foarte importante, cursuri de baz n inginerie, care nu erau despre a construi ceva, ci erau despre cum trebuie s gndim pentru a rezolva o problem de inginerie. Cred c urmm mult prea multe cursuri cum s programezi n Java i nu destule cum s rezolvi probleme reale. excelente abiliti de comunicare. tiu c toat lumea cere abiliti de comunicare scrise i verbale, dar ce am eu nevoie e un pic diferit. Eu vreau pe cineva care e n stare s explice lucruri tehnice ciudate, unor oameni crora nu le pas, ntr-un fel care ii face s neleag, care are sens i are o acuratee suficient. Eu de exemplu prefer imaginile i analogiile. Apoi vreau oameni cu nclinaii spre tehnologie. Nu trebuie s tie totul despre toate, dar vreau s iubeasc tehnologia i s iubeasc s nvee despre noi tehnologii. i vreau s aib abiliti de business, peste nivelul majoritii oamenilor tehnici, deoarece cnd cineva are nevoie de un nivel de performan ridicat, de obicei nseamn c are multi utilizatori. Iar dac sunt multi utilizatori, nseamn c sunt i multi bani n joc, iar dac nu poi s vorbeti n limbajul banilor cu un manager, o s fie foarte greu s l ajui s ia decizii bune. Sunt doar 4, dar nu mi vine un 5 fabulos aa c nu vreau s intru n alte detalii, care sunt cam echivalente n opinia mea. Sun distractiv nu? Credeai c o s zic scripting?

Q: n ncheiere poi s ne dai o definiie ct mai concis a performanei? Cnd zic performan, m refer la tot ce ine de viteza, scalabilitatea i stabilitatea unui sistem de interes. Exist multe alte definiii, dar la finalul zilei eu o folosesc pe mama ca i model. La Microsoft le zice persona. Mama mea e persona mea, iar ei nu ii pas ci oameni sunt pe site, ce servicii sunt czute, nimic de genul acesta. Tot ce tie ea e c uneori merge cum mergea nainte, alteori nu. Eu vreau ca mama s aib tot timpul aceeai experien, i ar fi chiar mai bine ca aceasta s fie o experien bun de fiecare dat. Aadar cnd m gndesc la mama stnd n faa calculatorului i la experiena ei, presupunnd c funcionalitatea e ok, pentru Q: Care ar fi cele mai importante c funcionalitatea nu ine de performan, 5 abiliti din profilul unui tester de asta e performana, iar cuvintele pe care performan? le folosesc sunt vitez, scalabilitate i Doar 5? Glumesc. Mai demult glu- stabilitate. meam c trebuie s fii nivel mediu n toate, iar apoi c trebuie s fii ca i cei din CSI Las Vegas, adic expert n toate. Dar pe primul loc este s tii cum s abordezi o problem. Vreau s neleag cum s rezolve problema, cum s caute cauzele, indiferent c Marius Mornea marius.mornea@todaysoftmag.com e vorba de o problem de performan sau de business. Vreau s tie cnd e nevoie Fost senior software developer de un pas n spate, s arunce o privire de in cadrul Nokia, n prezent ansamblu, iar apoi s i dea seama unde fondatorul platformei Mintaka Research trebuie s intre iar n detalii. Vreau oameni buni la rezolvarea problemelor. Apoi vreau
www.todaysoftmag.ro | nr. 6/2012

23

programare

A scrie cod frumos dincolo de valoarea estetic

imbajele de programare cele mai cunoscute conin o mulime de funcionaliti i librarii standard. Din acest motiv devine important s tim rspunsul nu doar la ntrebarea cum se face ceva (ntrebare la care exist de obicei o multitudine de rspunsuri), dar i la care este calea recomandat?. n acest articol vom ncerca sa demonstrm c prin cunoaterea i aplicarea practicilor recomandate pentru scrierea codului surs (en. best practices) rezult att programe mai scurte (mai uor de scris), mai uor de citit, mai usor de neles i meninut, dar i programe corecte. Acest articol necesit un minim de cunotine Java pentru a putea fi savurat, dar ideea de baz este general aplicabil: cunoaterea unui limbaj de programare implic mai mult dect nvarea sintaxei. ne surprind: primul exemplu afieaz false iar ce cel de-al doilea afieaz true. Ce se ntmpl? Motivul tehnic pentru acest rezultat este faptul c valorile de tip virgul mobil (en. floating point) sunt stocate de ctre Java (i multe alte limbaje de programare) folosind notaia semni-magnitudine (en. sign and magnitude) definite n standardul IEEE 754. Din cauza acestui detaliu tehnic att plus zero ct i minus zero pot fi reprezentate n variabile de acest tip, iar metoda equals pe obiectele Double (sau Float) din Java consider c aceste valori sunt diferite. Am fi putut evita aceast problem n ntregime prin utilizarea valorilor primitive aa cum s-a artat n al doilea fragment de cod i cum este sugerat n capitolul 49 din Effective Java : Prefer primitive types to boxed primitives. Alte motive pentru utilizarea tipurilor primitive ar fi: eficien din punctul de vedere al memoriei consumate i evitarea definirii cazurilor speciale pentru referina nul (null reference). Avem o situaie similar cu clasa BigDecimal la care valorile scalate n mod diferit nu sunt considerate egale de metoda equals. De exemplu i urmtorul fragment afieaz false:
BigDecimal d1 = new BigDeci-

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

Exemplul 1: Double Trouble

Ce afieaz urmtoarea bucat de cod? Dar aceasta?

Double d1 = (5.0d - 5.0d) * 1.0d; Double d2 = (5.0d - 5.0d) * -1.0d; System.out.println(d1.equals(d2)); double d1 = (5.0d - 5.0d) * 1.0d; double d2 = (5.0d - 5.0d) * -1.0d; System.out.println(d1 == d2);

Rspunsul pare s fie clar: n ambele cazuri nmulim zero cu diferite valori (plus i minus unu) iar rezultatul este tot zero; dac am compara rezultatele, ele ar trebui s fie egale, indiferent de metoda de comparaie utilizat (apelarea metodei equals pe obiecte sau folosind operatorul de egalitate pe valorile primitive). ns rezultatul execuiei s-ar putea s

24

nr. 6/2012 | www.todaysoftmag.ro

management

TODAY SOFTWARE MAGAZINE

mal(1.2); BigDecimal d2 = new BigDecimal(1.20); System.out.println(d1.equals(d2));

Soluia n acest caz (avnd n vedere faptul c nu exist un tip primitiv echivalent pentru aceast clas) ar fi s se utilizeze (n locul metodei equals) metoda compareTo i compararea valorii ntoarse cu zero (o metod care poate fi, de asemenea, folosit pentru a rezolva problema n cazul claselor Double/Float dac nu suntem ngrijorai de valorile nule).

Exemplul 2: Unde a disprut valoarea null?


Double v = null; Double d = true ? v : 0.0d; System.out.println(d);

Ce afieaz urmtorul fragment de cod?

Putem spune c ele sunt echivalente din moment ce o colecie goal conine zero elemente. Cu toate acestea, a doua condiie este mai uor de neles (aproape ca o putem citi cu voce tare: if items is empty then ...). i are nc un avantaj: n unele cazuri poate fi mult, mult mai rapid. Dou exemple din biblioteca standard Java unde timpul necesar pentru a executa size crete liniar cu numrul de elemente din colecie n timp ce isEmpty se execut n timp constant: ConcurrentLinkedQueue i vederile (views) ntoarse de metodele headSet/tailSet din clasa TreeSet . Acesta este nc un exemplu n care codul mai frumos este i mai rapid.

La prima vedere am spune: null, deoarece condiia este adevrat i v are valoarea null (null poate fi atribuit oricrei referine, indiferent de tipul ei, deci codul este corect). Dac rulm codul, rezultatul este un NullPointerException la linia a doua. Acest lucru se datoreaz faptului c tipul expresiei din partea dreapt a atribuirii este de fapt double (tip primitiv) nu Double (tip boxed) cum ne-am atepta, care este transformat n Double de compilator (prin auto-boxing). Codul generat de compilator arat astfel: Acest comportament este specificat n Java Language Specification :
Double d = Double.valueOf(true ? v.doubleValue() : 0.0d);

aceeai ordine de idei trebuie s ne ferim de pattern-ul Singleton care pe lng problemele poteniale de iniializare face codul mai greu de testat. Tot aici trebuie sa menionm c folosirea claselor statice interioare (static inner classes) este de preferat (capitolul 22 n EJ2nd). Clasele statice n Java sunt distincte conceptual de cmpurile statice i este regretabil faptul c acelai cuvnt a fost folosit pentru a descrie amndou conceptele. De asemenea, este foarte recomandat s rulm unelte de analiz static (static analysis tools) pe codul nostru i s verificm frecvent rezultatul lor (n mod ideal la fiecare schimbare de cod). De exemExemplul 4: Atenie la folosirea lui static! plu, problema prezentat este detectat Ce afieaz urmtorul fragment de cod? de Findbugs i uneltele care ncorporeaz public final class Test { Findbugs.
private static final class Foo { static final Foo INSTANCE = new Foo(); // 2 static final String NAME = Foo.class.getName(); // 3 Foo() { System.err.println( Hello, my name is + NAME); } } public static void main( String[] args) { System.err.println( Your name is what?\n+ Your name is who?\n); } new Foo(); // 1 }

Exemplul 5: Eliminarea codului vechi

Enumerai patru lucruri n neregul cu urmtorul fragment de cod:


// WRONG! DONT DO THIS! Vector v1; ... if (!v1.contains(s)) { v1.add(s); }

Rezultatul este

Your name is what? Your name is who?

Dac unul dintre operanzii doi i trei Valoare nul (probabil) neateptat se este de tip T primitiv, i tipul cellalt este afieaz pentru c obinem o referin ctre rezultatul aplicrii operaiei de auto-boxing un obiect parial construit: ( 5.1.7) la T, atunci tipul expresiei ter ncepem s crem o instan a clasei nare este T. Cred c nu muli dintre noi Foo la punctul 1; au parcurs JLS-ul complet i chiar dac Aceasta fiind prima referire la clasa am fi parcurs, nu am fi realizat implicaiFoo, JVM-ul o ncarc i ncepe s-o ile subtile ale fiecrei fraze. Recomandarea iniializeze; din EJ2nd de la exemplul anterior ne ajut Iniializarea clasei Foo implic iniidin nou: s folosim tipuri primitive. De alizarea tuturor cmpurilor statice; asemenea, putem face o paralel cu capi Pentru iniializarea primului cmp tolul 43 din carte: Return empty arrays or static trebuie apelat constructorul de collections, not nulls. Dac am fi folosit un la punctul 2, ceea ce se i ntmpl; element neutru (analogul folosirii tabe n acest moment cmpul static lelor/coleciilor goale) problema nu ar fi NAME nu este nc iniializat i astaprut. (Elementul neutru ar fi 0.0d dac fel constructorul va afia null. nsumm sau 1.0d dac nmulim). Acest cod demonstreaz cum cmpuExemplul 3: Un vas gol rile statice pot fi dificil de folosit n mod Care este diferena dintre urmtoarele corect i c nu ar trebui s le utilizm dect dou expresii condiionale? la declararea constantelor (i chiar i atunci Collection<V> items; s ne gndim dac nu este mai bine s foloif (items.size() == 0) { ... } if (items.isEmpty()) { ... } sim un Enum in locul constantelor). n

Hello, my name is null Hello, my name is Test$Foo

Problemele ar fi: Tipul de container folosit este greit. Se dorete ca fiecare ir s fie prezent cel mult o dat, ceea ce sugereaz utilizarea unui Set<> care rezult n cod mai scurt i mai rapid (timpul de execuie al metodei de mai sus depinde n mod liniar de numrul de elemente); Nu sunt folosite adnotrile de tip (generics); Codul folosete metode sincronizate n mod inutil dac accesul la structur se face doar de pe un singur fir de execuie (thread); n cazul n care structura este utilizat de mai multe fire de execuie, codul nu este thread-safe, numai exception safe (nicio excepie nu va fi aruncat, dar structura de date poate deveni corupt, fapt care poate duce la probleme greu de diagnosticat). Toate acestea pot fi evitate prin abandonarea clasei Vector i fraii si (Hashtable, StringBuffer) i folosind Java Collections Framework (disponibil de 14 de ani ) cu adnotrile de tip (disponibile de 8 ani ).

www.todaysoftmag.ro | nr. 6/2012

25

programare
A scrie cod frumos - dincolo de valoarea estetic

Concluzie

Concluziile sunt valabile i pentru alte Aceste exemple nu sunt singulare. limbaje de programare: Cunoaterea unui limbaj de programare ncercai s citii despre modul cel nseamn mai mult dect stpnirea sintamai bun (best practices) / moduri xei la un nivel de baz. Dac utilizai Java: idiomatice (idiomatic) de a scrie cod facei-v rost de cte o copie din Effective n limbajul dat. De exemplu, cea mai Java, 2nd edition i Java Puzzlers: Traps, bun carte pentru Perl n momentul Pitfalls, and Corner Cases i parcurgeide fa este Modern Perl , scris de le, dac nu ai fcut deja acest lucru. De chromatic i disponibil gratuit. asemenea, utilizai analiza static (static Verificai dac exist o unealt de analysis/linting) pe codul surs (Sonar este analiz static (static analysis / lino alegere bun n acest domeniu) i rezolter) de bun calitate pentru limbajul vai problemele semnalate de aceasta sau respectiv. De exemplu pentru Perl cel puin citii atent descrierile lor. exist Perl::Critic , pentru Python

pep8 i pylint , toate acestea fiind gratuite i open-source. A fi un un bun programator este un proces de nvare continu, iar resursele enumerate mai sus pot fi instrumente care s ne ajute s nvm cu adevrat un limbaj de programare.

Bibliografie
Joshua Bloch: Effective Java, Second Edition. ISBN: 0321356683 http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html # JLS-15.25 http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentLinkedQueue.html # Dimensiune () http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html http://findbugs.sourceforge.net/bugDescriptions.html # SI_INSTANCE_BEFORE_FINALS_ASSIGNED http://en.wikipedia.org/wiki/Java_version_history # J2SE_1.2_.28December_8.2C_1998.29 http://en.wikipedia.org/wiki/Java_version_history # J2SE_5.0_.28September_30.2C_2004.29 http://www.sonarsource.org/ http://www.onyxneon.com/books/modern_perl/index.html http://search.cpan.org/ ~ thaljef/Perl-Critic-1.118/lib/Perl/Critic.pm http://pypi.python.org/pypi/pep8 http://pypi.python.org/pypi/pylint

26

nr. 6/2012 | www.todaysoftmag.ro

management

TODAY SOFTWARE MAGAZINE

Toate drumurile duc la SaaS


7 provocri pentru a ajunge acolo

ompania de cercetare Forrester indic faptul c pn n 2020 piaa global de cloud computing va ajunge la valoarea de 160 de miliarde de dolari, 83% fiind reprezentat de soluiile SaaS. Indiferent de acurateea previziunilor, un lucru este sigur SaaS va avea un impact major asupra companiilor ISV ce-i bazeaz veniturile pe vnzarea de licene.

Lumea se schimb
Mihai Nad mihai.nadas@tss-yonder.com CTO @ Yonder este responsabil de activitile R&D i creterea nivelului de inovaie al produselor partenerilor Yonder.

Ne aflm la trecerea dintre dou paradigme de monetizare a produselor software. Prima este cea bazat pe vnzarea de licene care a ajutat n ultimele decenii companii precum Microsoft s ajung la cea mai mare valoare de pia nregistrat vreodat de o companie public, i anume 618,9 miliarde de dolari, record nregistrat pe data de 30 decembrie 1999. n acest caz, putem discuta n esen de un model prin care produsul software este cumprat de ctre beneficiar, acesta pltind contravalorea sa nmulit cu numrul de licene achiziionate. Convergena internetului cu tehnologia de virtualizare i scderea preului puterii de calcul ne-a druit ceea ce numim acum sub o form sau alta cloud computing un stil nou de a consuma servicii computaionale i de persisten de date. Odat cu aceasta s-a nscut i conceptul de nchiriere de produse software sau Software as a Service (SaaS), model n care beneficiarul achit contravaloarea utilizrii produsului ca serviciu pe baza unui abonament a crui valoare variaz n funcie de numrul de utilizatori finali. Evident, nimic nou sub soare, ns dac privim ctre graficele ce pot fi determinate pe baza studiului Forrester se observ un

lucru interesant curba de cretere anual absolut prinde contur ncepnd cu 2012, culminnd n 2014 cnd piaa ar urma s se mreasc cu 63,19 miliarde de dolari. n termeni practici, aceasta nseamn un singur lucru adopia de soluii SaaS va cunoate cea mai accelerat cretere n urmtorii doi ani, iar aceasta se coreleaz cu scderea pieei de liceniere a produselor software, reprezentnd un aspect ce trebuie s determine companiile ISV s-i pun n execuie strategia legat de SaaS, n cazul n care au una. Exact Software, unul dintre cei mai mari ISV din Olanda, a nregistrat n 2011 o scdere a veniturilor obinute din vnzarea de software cu 13% n Benelux n timp ce soluia bazat pe SaaS a crescut cu 46%, aducnd venituri de 11,6 milioane de euro fa de 7,9 milioane n 2010. Aceeai situaie o regsim i n cazul UNIT4, un alt ISV olandez, care a mizat timpuriu pe SaaS i acum beneficieaz de venituri de peste 9 milioane de dolari din acea soluie.

Dincolo de statistici

Potenialul de a adresa piee noi, avantajul unui venit mai uor de preconizat, cel al costurilor reduse de suport i mentenan
www.todaysoftmag.ro | nr. 6/2012

27

management
Toate drumurile duc la SaaS - 7 provocari n a ajunge acolo

corelate cu oportunitatea de a cunoate mai multe despre comportamentul de utilizare ai propriilor clieni fac din SaaS o perspectiv mai mult dect interesant pentru companiile ISV. Privind obiectiv, companiile ISV au dou motive de a adopta o strategie SaaS: creterea business-ului curent i protejarea acestuia. Google a vzut o oportunitate de cretere n momentul n care a introdus Google Apps, o soluie SaaS ce atac piaa tradiional Microsoft Office. Microsoft pe de alt parte, a reacionat introducnd suita Office 365, o alternativ la propria soluie bazat pe vnzarea de licene. Privind la cele dou motivaii, o concluzie ar fi c exist puine argumente ce ar putea determina companiile ISV s ignore n siguran SaaS. Pentru a face lucrurile i mai clare a spune c exist de fapt un set extrem de limitat de argumente pentru care un ISV debutant ar alege s practice modelul tradiional n defavoarea SaaS.

5.

6.

Cele 7 provocri n drumul unui ISV ctre SaaS

7.

Adopia SaaS n contextul modelului tradiional de liceniere reprezint o schimbare major pentru companiile ISV. Vorbim practic despre dou cateogrii de provocri: cele ce in de business i cele tehnice. Chiar dac provocrile tehnice sunt serioase i presupun investiii majore de renovare a soluiei existente, setul celor de business reprezint de cele mai multe ori cheia succesului deoarece presupun decizii ce au impact direct asupra perspectivelor financiare ale companiei. Pot fi identificate cel puin apte provocri n drumul unui ISV ctre o soluie de succes bazat pe SaaS 1. Identificarea pieei int pentru noua soluie alegerea ntre abordarea unei piee noi sau consolidarea celei existente; 2. Alegerea politicii de preuri balansul ntre accesibilitatea ofertei i riscul de canibalizare a veniturilor existente; 3. Schimbarea stilului de vnzare i de marketing clienii SaaS iau decizia de cumprare ntr-un mod diferit fa de cei ai soluiilor tradiionale, iar aceasta deoarece nsui factorii de decizie se schimb; 4. Consolidarea robusteei produsului n modelul tradiional stabilitatea produsului nu avea un

impact centralizat asupra ntregii baze de clieni pe cnd cu SaaS orice eroare sau ntrerupere a serviciului este sesizat de ctre toat lumea; Agilizarea modelul de dezvoltare software SaaS fructific abilitatea unei companii de a rspunde ntr-un mod agil schimbrii, iar aceasta presupune pe de-o parte schimbarea modelului de dezvoltare bazat pe cicluri de durat lung i totodat profesionalizarea acestuia prin introducerea de procese mature care s scad riscul pe mai multe paliere; Restructurarea organizaional datorit numrului crescut de schimbri ce apar n modul de abordare SaaS, de cele mai multe ori nsi organizaia trebuie schimbat. Povetile de succes pornesc de regul de la o echip nou, independent de cele existente sau chiar de la spin-off-uri; Excelen n abordarea i execuia tehnic nti de toate, SaaS prespune interaciunea cu un UI web, iar de cele mai multe ori acest lucru prezint prima provocare tehnic ntruct modelul tradiional este n general bazat pe aplicaii cu UI non-web. Dincolo de acest aspect trebuie gsite rspunsurile i implementarea potrivit la urmtoarele ntrebri Ce platform de cloud computing se alege i sub ce form? IaaS sau PaaS? Public sau Private? AWS, Windows Azure, Google App Engine, VMware Cloud Foundry, Heroku, CloudBees, AppFog, AppScale, Apprenda sau altceva? Cu m s e t r at e a z a s p e c tu l multi-tenancy? Cum se partiioneaz datele i care este arhitectura aleas pentru izolarea acestora? Cum se asigur scalabilitatea i disponibilitatea ridicat (i.e. 99,95% uptime) a soluiei? Cum se proiecteaz procesele de Onboarding, Feature Bundling, Subscription Management, Billing i Revenue Management? Cum se implementeaz autentificarea i autorizarea i care sunt aspectele arhitecturale care adreseaz problemele de securitate?

Cum se asigur un proces robust i flexibil de Release Management?

Concluzii

Ne aflm n pragul unei schimbri majore pentru companiile ISV. Dac astzi nc vorbim de SaaS n termeni de inovaie, cel mai probabil la finalul acestui deceniu cnd zarurile vor fi deja aruncate, SaaS va reprezenta normalitatea n ceea ce privete consumul de software. Conform prediciilor, acum este cel mai potrivit moment pentru implementarea unei strategii de tranziie la SaaS, iar din experimena acumulat pn acum n Yonder se poate spune c succesul e bazat nti de toate pe decizii nelepte de business ns fr compromisuri n execuia tehnic, unde complexitatea poate fi mai ridicat dect indic aprenele.

Legturi externe
1. 2. 3.

innovation.tss-yonder.com i n n o v a t i o n . t s s - y o n d e r. c o m / sizing-the-cloud mihainadas.com

28

nr. 6/2012 | www.todaysoftmag.ro

programare

TODAY SOFTWARE MAGAZINE

Introducere n Grails

G

Tavi Bolog tavi.bolog@nokia.com Development lead @ Nokia

rails este un framework web bazat pe Java i Groovy. Grails mprumut concepte din frameowork-uri precum Rails n dorina de a simplifica web development-ul n Java. de Grails nainte de nceperea proiectului. n acelai timp am adugat funcionaliti noi, continund s meninem release-ul bazat pe Apache Wicket. Bineneles, nc tot nvm lucruri noi i uimitoare despre lumea Grails i Groovy.

La o scurt privire, Grails folosete: Limbajul Groovy pentru a conecta toate stack-urile de mai jos; Hibernate pentru modelarea datelor folosing GORM (Groovy Object Relational Model); Groovy Server Pages un limbaj dinamic pentru construirea view-urilor; Spring pentru controller, securitate, injectarea de dependine, internaionalizare, etc.; Consol scris n Groovy; Servlet containerul Tomcat inclus pentru a putea face hot-deploy la modificrile de cod (n cele mai multe cazuri). Proiectul meu current (http://primeplace.nokia.com) folosete Grails 2.0.4. Partea web a fost tranziionat n aproximativ dou luni de efort din Apache Wicket (un framework pe care nu l prea plceam) fr a avea un bagaj de cunotine avansate

Setarea Grails

Pentru a folosi Grails, ai nevoie de urmatoarele: Descarc i instaleaz Java JDK de la Oracle: http://www.oracle.com/ technetwork/java/javase/downloads/ index.html; Pentru unele sisteme de operare, va trebui s setezi de mn JAVA_ HOME i s adaugi executabilul java in PATH; Descarc Grails: http://grails.org/ i extrage coninutul; Seteaz GRAILS_HOME spre folderul n care a fost despachetat Grails i adaug executabilul grails n PATH;

www.todaysoftmag.ro | nr. 6/2012

29

programare

Introducere n Grails

Ruleaz Grails, tastnd: grails n Spring; terminalul/consola sistemului de operare; Acum putei rula prima aplicaie Grails, Aceasta va porni consola Grails i va executnd comanda run-app n consola atepta comanda ta: grails > Grails. Aceasta va porni applicaia: http:// localhost:8080/GrailsSocialNetwork. Exist dou IDE-uri care ajut deve- Binenteles acesta este doar un template loperii foarte bine n dezvoltarea folosind fr prea mult valoare. Aplicaia se poate Grails: porni si pe alt port rulnd: run-app Intellij IDEA; Dserver.port=80 (va porni aplicaia pe Eclipse (and Spring Tool Suite) portul 80). i acum Groovy & Grails Tool Suite, ultimele dou dezvoltate de Crearea claselor de domeniu VMware, avnd la baz Eclipse. S crem acum clasele de domeniu pentru aplicaia noastr. n primul rnd, Momentan, folosim STS 3.10 cu avem nevoie de clasa User. Pentru a crea, support de Groovy i Grails bazat pe Eclipse vom folosi din nou consola Grails: create3.8.1. Am ncercat Juno 4.2, dar laptopul de domain-class com.todaysoftmag.gsn.User. abia mai rspundea comenzilor, aa c am Aceasta va crea dou fiiere: revenit la versiunea bazat pe Eclipse 3.8.1. | Created file grails-app/domain/com/

asemenea, Grails permite crearea de validatori customizai pentru a defini contrngeri avansate domeniilor unei aplicaii, dar vom discuta despre ei n articolul urmtor. S adugm acum i cealalt clas domeniu, numit Message. Aceasta va conine un mesaj postat de un utilizator. Folosind consola Grails: create-domainclass com.todaysoftmag.gsn.Message. Comanda va genera clasa domeniu i unit testul asociat. S adugm cteva attribute i o constrngere clasei Message:
String message Date date = new Date() static constraints = { // mesajul nu poate fi gol si trebuie // s aib lungimea ntre 5 i 100. } message size:5..100, blank:false

Crearea unei aplicaii n Grails

Cea mai simpl metod de a introduce Grails, este construirea unei aplicaii web. Exemplul din articol va fi despre o reea social (Grails Social Network) datorit importanei reelelor sociale n ziua de azi. Utilizatorii aplicaiei se vor putea loga, publica mesaje i vedea mesajele publicate de alii.

Pentru a construi structura de stocare a datelor unei aplicaii, Grails trebuie s tie relaia dintre obiectele aplicaiei. n todaysoftmag/gsn/User.groovy aplicaia noastr exist dou relaii: | Created file test/unit/com/todaysoftmag/gsn/UserTests.groovy Un user poate avea mai multe mesaje. Primul fiier este clasa domeniu, iar al Aceast relaie va mbogi clasa User cu un doilea este clasa de unit test asociat. S nou atribut: messages. Mai jos este definite ncercm acum s folosim sintaxa Groovy relaia: i s adaugm context clasei noastre dome- static hasMany = [messages: Message] niu. Groovy este asemanator sintactic cu Un mesaj aparine unui utilizator, Java, dar suport structure dinamice i nu nsemnnd c nu poate exista fr a fi asoeste strict cu tipurile datelor. ciat unui user. Aceast relaie va mbogii Pentru a aduga atribute clasei User, clasa Message cu un nou atribut: user. Mai adaug urmtoarele linii n clas: jos este definit relaia:
String String String String firstName lastName userName password static belongsTo = [user: User]

Crearea structurii aplicaiei

Folosind consola Grails, comanda create-app va crea o nou aplicaie Grails. Sintaxa scriptului este simpl: create-app GrailsSocialNetwork (executat aa cum este descris n Setarea Grails, aceast comand creeaz structura de directoare necesar Grails, care arat astfel(n directorul GrailsSocialNetwork): application.properties conine informaii generale despre aplicaie; grails-app conine majoritatea coninutului Grails cum ar fi controller, servicii, domenii, fiierele de internaionalizare, configurri, tag libs, clase utilitare, etc.; lib conine librriile 3rd party folosite de aplicaie; scripts conine scripturi Gant; src conine clase Java i Groovy folosite de logica aplicaiei; test conine Unit testele i testele de Integrare; web-app conine imagini, js, css i alte fisiere de configurare, incluznd fiierul de iniializare a contextului

Acum dorim s adugm nite limiMomentan, aplicaia noastr nu are tri valorilor atributelor. Grails deja a nici un storage permanent. Grails folosete creat un closure gol pentru adugarea de n mod normal o baz de date n memoconstrngeri: rie care nu are persisten. Dar, putem s static constraints = { ne crem noi nite date de test. Pentru //atributul firstName nu poate fi //gol si trebuie s aib lungimea aceasta, trebuie s specificm o list de //ntre 3 i 10 obiecte pe care le dorim create la pornifirstName size: 3..10, blank:false //atributul lastName nu poate fi rea aplicaiei. La pornire, Grails apeleaz //gol si trebuie s aib lungimea //ntre 3 i 10 closure BootStrap.init. Localizeaz clasa i lastName size: 3..10, blank:false adaug bucata de code de mai jos:
//atributul username nu poate fi //gol, trebuie s fie unic ntre toate //obiectele de tip User i trebuie s //aib lungimea ntre 3 i 10 userName size: 3..10, blank:false, unique:true //atributul password trebuie s //aib dimensiunea ntre 3 i 10 } password size: 3..10 def init = {servletContext -> def user1 = new User(firstName: John, lastName: Doe, userName: jdoe, password: passwd) def user2 = new User(firstName: Joanne, lastName: Doe, userName: jodoe, password: passwd) user1.addToMessages(new Message(message: Good morning!)) user1.addToMessages(new Message(message: Nice movie: Skyfall!)) user2.addToMessages(new Message(message: Waiting for the summer...))

Setarea datelor de test

n cazul n care oricare dintre aceste constrngeri va fi nclcat (verificarea este fcut prin apelul metodei validate disuser1.save(failOnError:true) user2.save(failOnError:true) plonibil in fiecare clas domeniu), Grails } va completa erorile n atributul errors al De asemena, observm c mai exist clasei User. Apoi, controller-ul este cel care un closure destroy care se apeleaz cnd va decide ce se va ntmpla mai departe. De aplicaia este nchis, deci poate fi folosit

30

nr. 6/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

pentru a executa operaii de cleanup, etc.

Crearea controllerilor

} } render(view: login, model: [message: Wrong username or password!]) }

Controllerii sunt cei care determin flow-ul unei aplicaii. Deoarece Grails folosete convenie i nu configurare, numele unui controller este de genul <ClasaDomeniu>Controller, deci vom create UserController i MessageController. Pentru crearea de controller, Grails ofer un script numit create-controller. Rulnd create-controller com.todaysoftmag.gsn. UserController, Grails va crea clasa controller, testul asociat i un folder pentru fiierele de view pe care le vom discuta n capitolul urmtor:
| Created file grails-app/controllers/ com/todaysoftmag/gsn/UserController. groovy | Created file grails-app/views/user | Created file test/unit/com/todaysoftmag/gsn/UserControllerTests. groovy

Acum, repetm exerciiul pentru a crea MessageController. Momentan, controllerii nostri nu fac prea multe, dar vom schimba aceasta n urmtoarele capitole.

Autentificarea aplicaiei

O modalitate de autentificare a aplicaiei este folosirea filtrelor. Pentru a crea un filtru, rulm create-filters com.todaysoftmag. gsn.SecurityFilters. Aceasta va crea clasa Groovy i testul asociat. n filtru vom aduga un closure care va verifica existena unei sesiuni de utilizator nainte de procesare oricrui request pentru fiecare controller i aciune:
def filters = { loginCheck(controller: *, action: *) { before = { if (!session.user && actionName != login) { redirect(controller: user, action: login) return true } } } }

n cazul n care nu exist un obiect user pe sesiune, aplicaia va redirecta user-ul spre controllerul user i aciunea login, care va renderiza view-ul de login pe care l discutm n Crearea viewurilor. Altfel, logica aplicaiei va continua. n UserController, vom aduga aciunea de login care va procesa autentificarea unui utilizator:
def login() { if (request.get) { return } //this is for loading login view def u = User.findByUserName( params.username) if (u) { if (u.password == params.password) { session.user = u redirect( controller: messages, action: list)

Aciunea va verifica username-ul i parola pentru potrivire i va aduga obiectul user gsit pe sesiune, iar apoi va redirecta aplicaia spre pagina care afieaz lista de mesaje pentru user. Altfel, utilizatorul va primi un mesaj de eroare i va vedea din nou pagina de login. Cteva lucruri de menionat aici: ; nu este obligatoriu pentru a delimita linii de comand Groovy; Controller-ii au acces la obiecte Groovy specifice cum ar fi: request, params, session, etc i metode pentru a manipula view-urile, cum ar fi render, redirect, etc.; Valoarea tipurilor de date nu este verificat la compilare; If (u) se evalueaz ca adevrat dac u are valoare, sau false n caz contrar. GORM (Groovy Object Relational Mapping) ofer modaliti la ndemn de a selecta date. In cazul nostru, verificm dac exist un User care are username egal cu cel specificat n formul de login (params. username). Render apeleaz un view cu parametri specifici i produce pagina HTML [ 1 , 2 ] e s t e u n i r, i a r [model:modelObj. User:userObj] este o map Redirect redirecteaz aplicaia spre un controller i aciune. Dac controller-ul nu este specificat, redirectul se va face n controller-ul current spre aciunea specificat. Metodele nu specific foarte clar valoarea returnat (nu trebuie returnat o valoare neaprat sau diferite tipuri pe diferite ci de execuie, deci va trebui s fim ateni pentru c aceasta poate cauza probleme la runtime. Am vzut la un moment dat MissingMethodException n logurile aplicaiei noastre.)

www.todaysoftmag.ro | nr. 6/2012

31

programare

Exemple practice de message paterns pentru Windows Azure


n cadrul acestui articol vom discuta dou design patern-uri pe care le putem folosii cnd trebuie s rezolvm anumite probleme ntr-o solutie enterprise. Cele doua soluii care urmeaz s fie prezentate se bazeaz pe Windows Azure Service Bus. Acesta este un sistem de distribuire de mesaje oferit de ctre Microsoft. Pentru a l putea folosi nu este necesar s instlam sau s configurm nici un server. Toat infrasctructura st n cloud. n principal acest mecanism se folosete cnd avem nevoie de distribuire mesaje spre un singur consumator sau spre mai muli consumatori. Cnd mesajele sunt distribuite la un singur consumator atunci putem s folosim Windows Azure Service Bus Queues. n cazul n care avem nevoie ca acelai mesaj s ajung la mai multi asculttori putem s apelm la Windows Azure Service Bus Topics. Prin intermediul acestui mecanism putem s distribuim acelai mesaj la mai muli consumatori. Fiecare consumator poate s filtreze mesajele i s accepte doar mesajele care respecta o anumit regul. Toate problemele legate de persistarea datelor, operaii tranzacionale sau death lock-uri sunt rezolvate de ctre Windows Azure Service Bus. Haidei s vedem ce problem putem s rezolvm cu acest serviciu. S ne imaginam c avem un client care se ocup cu distribuirea de produse alimentare n toata ara. Acesta se ocupa cu distribuirea acestor produse la diferite magazine att magazine de cartier cat i hiper-marketuri. n funcie de perioada anului, a cursului leu-euro sau a datei de expirare a produselor dorim s oferim un API prin care magazinele pot s fie notificate. n funcie de client, reducerile pot s difere. Fiecare magazin folosete aplicaii diferite, din aceast cauz oferirea unei aplicaii care s fac acest lucru este exclus. Clientul nostru dorete s expun aceste date, iar fiecare magazine si poate implementa integra aceast funcionalitate n sistemul propriu. O soluie la acesta problem este s folosim Content-Based Router Message Pattern. Acest patern se bazeaz pe capacitatea de a trimite mesajele la fiecare consumator n parte n functie de datele pe care mesajul le conine. Fiecare ofert pe care clientul nostru o va aduga va fi reprezentat printr-un mesaj care pe lang datele de pre va conine i atributele care specific la ce magazine trebuie s ajung. De exemplu, vom putea specifica ca mesajele s fie trimise doar la magazinele Tip Top dintr-o anumit regiune. Alte oferte dorim s le trimitem doar la hiper-marketuri. Acest soluie poate s fie implementat extrem de uor folosind Windows Azure Service Bus Topics. Fiecare mesaj care urmeaz s ajung ntr-un topic urmeaz s conin atributele care specific magazinele care urmeaz s fie notificate. Fiecare magazin urmeaz s aib o subscripie unic. n cadrul acestei subscripie vor fi specificate datele despre magazine precum nume, regiune, adresa, tip magazin. Subscripiile urmeaz s fie create doar de ctre clientul nostru, iar magazinele doar doar se vor inregistra la aceste subscripii. n momentul n care va exista un mesaj disponibil pentru acestea, ele l vor primi automat. Clientul nostru va fi extrem de fericit datorit faptului c este nevoit s trimit notificri diferite pentru fiecare magazin n parte. Acesta va putea crea un singur mesaj, n care s specifice cui i este adresat. Primul pas este s cream topicul i cte o subscripie pentru fiecare magazin n parte. Urmeaz s creez doar dou subscripii n cadrul acestui exemplu.
NamespaceManager namespaceManager = NamespaceManager.CreateFromConnectionString( CloudConfigurationManager.GetSett ing(ServiceBusConnectionString)); if (!namespaceManager.TopicExists(di stributionTopic)) { namespaceManager.CreateTopic(dis tributionTopic); }

Radu Vunvulea

Radu.Vunvulea@iquestgroup.com Senior Software Engineer @iQuest, proiectele pe care lucreaz sunt de tip LoB, n general folosind ultimele tehnologii Microsoft. Face parte din grupul entuziatilor, motiv pentru care ii place s fie la curent cu tot ce apare nou in domeniul IT, in special din punct de vedere software.

32

nr. 6/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


SqlFilter tipTop100Filter = new SqlFilter( region LIKE %Banat% OR shopName = Tip Top OR shopType = family); namespaceManager.CreateSubscription( distributionTopic, TipTopShop100Subscription, tipTop100Filter); SqlFilter stefan20Filter = new SqlFilter( region LIKE %Moldova% OR shopName = Stefan OR shopType = minimarker); namespaceManager.CreateSubscription( distributionTopic, stefan20Subscription, stefan20Filter);

Odat create aceste subscripii, putem s ncepem s distribuim mesajele. Fiecare client va fi notificat cnd o nou promoie este disponibil. n orice moment putem s adaugm, modifica sau sterge o subscripie, fr s fie necesar s oprim sistemul sau s notificm clienii. Fiecare magazin umeaz s fie notificat n mod automat. n cazul n care aplicaia sa nu este pornit, mesajul va fi pstrat pn cnd va devini activ. Fiecare mesaj poate s conin i un expiration date. Windows Azure Service Bus Topics urmeaz s tearg n mod automat mesajele care au expiration date invalid. Tot ce trebuie s trimitem la fiecare magazin n parte, pe lng datele de autentificare i numele la topic, este numele la subscripie. Pentru acetia, putem s creem o component care se ocup automat de acest lucru. Codul care poate s extrag mesajul din subscripie ar fi urmtorul:
SubscriptionClient subscriptionClient = SubscriptionClient.CreateFromConnectionString( CloudConfigurationManager.GetSetti ng(ServiceBusConnectionString), distributionTopic, stefan20Subscription); while(true) { BrokeredMessage offerMessage = subscriptionClient.Receive(); if (message != null) { try { ... offerMessage.Complete(); } catch (Exception) { offerMessage.Abandon(); } } } }

Dup cum puteti s observai, n cazul n care oferta nu este procesat cu success, oferta nu va fi pierdut i va fi procesat din nou de ctre magazin. Odat ce am creat subscripiile pentru fiecare magazine n parte, tot ce ne rmane de fcut este s adaugm mesajul n topic. Acesta va ajunge la toate magazinele pentru care filtrul de pe subscripii va returna TRUE.
TopicClient distributionTopicClient = TopicClient.CreateFromConnectionString( CloudConfigurationManager.GetSetti ng(ServiceBusConnectionString), distributionTopic); BrokeredMessage offerMessage = new BrokeredMessage();

adaugat doar filtre. Fiecare filtru poate s fie nsoit de un nume. Totodat, n loc de filtre putem s adugm reguli, iar fiecare distributionTopicClient. Send(offerMessage); regul s aib un nume unic. n general, o n exemplul de mai sus am vzut ct de regul conine cte un filtru. usor este s distribuim ofertele la mai multe SubscriptionClient groupFirstRegionSubscription = SubscriptionClient. magazine fr s ne punem problema dac CreateFromConnectionString( CloudConfigurationManager. magazinul va primi sau nu mesajul. Iar GetSetting( ServiceBusConnectionString), modul n care specificm ce magazine trecommandTopic, groupFirstRegionSubscription); buie s primeasca oferta dat este extreme SqlFilter groupFirstRegionFilter = de simplu. new SqlFilter( region LIKE %Moldova% Din punct de vedere al scalabilitaii, OR region LIKE %Banat%); un topic poate s aib pan la 2000 de sub- groupFirstRegionSubscription. AddRule(ruleForMoldovaAndBanat, scripii. Aceasta nu nseamn c suntem groupFirstRegionFilter); limitai doar la 2000 de mesaje. Ne este groupFirstRegionSubscription. RemoveRule( extrem de usor s includem un alt topic. ruleForMoldovaAndBanat); SqlFilter banatRegionFilter = n continuare ne imaginm clientul new SqlFilter( region LIKE %Moldova%); nostru venind cu urmtoarea cerin. Din groupFirstRegionSubscription. cauz c s-a extins extrem de mult n ultiAddRule(ruleForMoldovaAndBanat ,banatRegionFilter); mul timp, i-a creat responsabili regionali care se ocup de procesarea comenzilor n exemplul de mai sus am adugat un pe care le face fiecare magazin. Din cauz filtru pe care apoi l-am ters, iar apoi am c nu cunoaste modul n care piaa se va adugat o nou regul. Aceste reguli se dezvolta, clientul nostru are nevoie s gru- aplic automat din momentul cnd sunt peze mai multe regiuni, iar apoi cu costuri adugate. minime s poat mpari din nou regiuPrin acest mecanism, putem s schimnile. Totodata pentru a putea supraveghea bm n mod dinamic regiunile deservite de activitatea pe care acetia o au, el dorete ctre un responsabil. n cazul n care este sa creeze un mecanism de audit, iar toate nevoie, avem posibilitatea s adugam sau comenzile trimise de ctre magazine s fie s stergem o subscripie ori o regul fr s nregistrate. fie necesar s oprim sistemul. Ca s rezolvm aceasta cerin, putem O alt cerin a clientului nostru era s apelm la Dynamic Router Message ca toate comenzile s fie salvate, pentru a Pattern. Acest patern ne permite s ne putea s fie mai tarziu verificate. Aceast definim o list de reguli de direcionare a cerin este ca i implementat. Avem mesajelor, care poate s fie schimbat la nevoie s adaugm o subscripie care nu are runtime far nici un fel de probleme. nici o regul sau nici un filtru definit. Mai Iniial clietul nostru va porni doar cu simplu de att nici nu putea s fie. dou grupuri de regiuni, iar n timp, n namespaceManager.CreateSubscription( commandTopic, functie de cum se schimb piaa, acesta o allCommandsSubscription); s i defineasca grupe de regiuni mai mici. Fiecare magazin va trebui s creeze Fiecare grupare de regiuni va avea cate o un mesaj pentru fiecare comand, unde subscripie care acept comenzile pentru region va fi setat n mod automat cu regio list de regiuni. Nu vom mai prezinta unea din care face parte. modul n care se creaz un topic, acest Dac v punei problema costului, trelucru l-am vzut puin mai sus. buie s v zic c ase milioane de mesaje SqlFilter groupFirstRegionFilter = trimise prin intermediul Windows Azure new SqlFilter( region LIKE %Moldova% Service Bus ne costa 6$, dac 10 magazine OR region LIKE %Banat%); namespaceManager.CreateSubscription( ascult 24 de ore din 24 la o subcripie ne commandTopic, groupFirstRegionSubscription, costa circa 7$ pe lun. n viitor este posibil groupFirstRegionFilter); ca aceste preuri s scad i mai mult. Aceast prim subscripie va deservi n cadrul acestui articol am vzut cat dou regiuni. n cazul n care clientul nos- de usor este sa distribuim mesaje folosind tru hotrste ca cele doua regiuni s fie infrastructura pe care Windows Azure deservite de persoane diferite va fi necesar o pune la dispozitie. Paternuri precum s modifice aceast subscripie i s adauge Content-Based Router Message Pattern i o alt subscripie. Dynamic Router Message Pattern pot s Pentru fiecare subscripie se poate ad- fie implementate cu uurin i cu costuri uga sau terge o regula la runtime. n acest minime. Scalabilitatea ne este oferit buildcaz putem s tergem regula deja definit in de ctre Windows Azure. i s adugm alt regul. Pan acum am
offerMessage.Properties[shopType]= family;

offerMessage.Properties[region] = Banat Moldova;

www.todaysoftmag.ro | nr. 6/2012

33

management

Poi fi agile n proiecte


de pre fix?

etodologiile de tip agile sunt tot mai preferate de ctre dezvoltatorii de software ntr-o lume n care cerinele funcionale, dictate de dinamica pieei, se schimb continu iar timpul ct mai redus n care produsul software trebuie s ajung n folosina utilizatorilor finali are o pondere tot mai mare n obinerea rezultatelor dorite. n acelai timp foarte multe companii care au nevoie de produse software nu sunt dezvoltatori software i opereaz ntr-o pia tot mai apsat de constrngeri de cost i timp; marea majoritate a acestor companii doresc livrarea produselor software n condiiile unui proiect de pre fix. Prin proiect de pre fix nelegem c de la bun nceput stabilim mpreun cu clientul: Scopul (cerine funcionale i nefuncionale); Termenele de livrare; Preul. n cele va fi prezentat experiena pe care am avut-o n contextul unui proiect software de pre fix din domeniul telecom, unde elementele agile ne-au ajutat s livrm la timp funcionalitile cerute n condiii de profitabilitate. Clientul, o companie care dezvolt produse software pentru operatorii de telefonie mobil, avea n dezvoltare o soluie ce consta din mai multe sisteme; sistemul din partea de backend nu dispunea de un GUI de administrare; clientul a dorit un partener care s dezvolte acest Admin GUI n condiiile unui proiect de pre fix pentru a avea garania livrrii n condiii invariabile de pre, scop, termen de livrare. Datorit termenelor strnse de proiect a fost nevoie de nceperea dezvoltrii aplicaiei de administrare n paralel cu dezvoltarea sistemului din backend. Ca urmare a rezultat urmtorul context la startul proiectului: Specificaii funcionale cu un nivel de detaliere insuficient; Servicii externe indisponibile pentru integrare; Detaliile tehnice de integrare necesitau clarificri semnificative. Ce am fcut noi? Iniial am implicat colegi cu experien tehnic mare pentru a analiza specificaiile existente i bazat pe analiza lor am fcut o ofert de pre fix. Ulterior dup ce oferta noastr a fost acceptat, am creat echipa de proiect i proiectul a nceput; ca manager de proiect prima intenie a fost de a crea un plan de proiect mai detaliat cu task-uri granulare, cu dependene, repartizare n echip, identificare de poteniale ci critice etc. . Din primele zile discutnd cu echipa am realizat c, dat fiind contextul de proiect, acest lucru nu este fezabil. M-am gndit atunci la avantajele pe care le aduc elementele din metodologiile de tip agile: Angajamentul echipei n locul unui plan de proiect impus; Responsabilitatea echipei de a se organiza; Colaborare n echip, ntre echip i client, 3rd parties pentru a clarifica i rezolva (n cazul nostru aceasta includea clarificarea specificaiilor funcionale, a detaliilor de integrare

Claudiu Anghel
Project Manager @iQuest

claudiu.anghel@iquestgroup.com

Certified ScrumMaster are 11 ani de exeprien n domeniu, conduce echipe mari, dezvolt soluii software pentru eCommerce, Airline, Telecom; experien n aplicarea diferitelor metodologii: waterfall, RUP, Agile / SCRUM

34

nr. 6/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


cu sistemele externe). Am realizat c nu am cum s impun echipei un plan forat i fiind clar c avem n fa un proiect cu riscuri i provocri, era esenial ca echipa s cread pas cu pas n angajamentele intermediare i s fie cea care are responsabilitatea att n a influena modul de avansare al proiectului ct i de a livra conform cu angajamentele luate. n primele zile, sptamni, specificaiile fiind insuficient de clare, energia echipei a mers pe lng clarificrile de specificaii ctre engineering practices: a fost pus pe roate nc de la nceput un proces care includea: Task & bug tracking, Source control, Packaging, Continuous Integration (CI), Unit testing & Mocking, Code coverage, Code review. Serviciile externe nefiind oricum nc disponibile, s-a pus la punct un mod de a utiliza stub-uri n locul acestor servicii. Pe parcurs echipa a fost cea care a gsit pas cu pas soluiile, a clarificat specificaiile, a gsit alternative, a discutat continuu cu clientul i a stabilit alternativele mai potrivite pentru naintarea proiectului. A fost esenial faptul c am avut n cadrul echipei roluri specializate precum: Business Analyst la nivelul ntregii soluii i nu doar pentru Admin GUI, Software Architect la nivelul ntregii soluii i nu doar pentru Admin GUI, User Experience specialist. Aceti colegi ne-au ajutat mult n clarificarea cerinelor, interaciunea cu clientul, promovarea celor mai bune soluii care s uureze progresul proiectului. Dac facem o paralel cu rolurile din SCRUM, ei au fost pentru noi Product Owner-ul din SCRUM i chiar mai mult. De asemenea, colegi din echip au fost n mai multe rnduri onsite la client, dar i ntr-un workshop n locaia dezvoltatorului soluiei din backend cu care trebuia s ne integram: ne-a ajutat mult, foarte multe lucruri s-au clarificat, comunicarea ulterioar a mers mult mai uor din perspectiva costurilor cred c a meritat deoarece clarificrile de la distan tind s treneze uneori (mai ales ntre supplieri diferii) i ntrzierile ca timp de livrare ar fi adus costuri mai mari. Desigur c rulnd ntr-un context de pre fix, nu am putut uita nici un moment de ceea ce am stabilit la nceput: termene de livrare, scop, cost. Pentru fiecare dintre acestea au fost cteva elemente care ne-au ajutat. Termene de livrare: ne-am neles cu clientul de la nceput s avem dou faze de livrare: soft launch i hard launch; fiecare din aceste faze a avut sub-faze corespunztoare fazelor de testare pe care le avea clientul (i n context de telecom ele nu sunt puine); ca s ne ncadrm n termene am progresat faze diferite n paralel (de exemplu faz de testare de soft launch n paralel cu faza de development de hard launch) aici procesul de code review, expunerea continu a colegilor din echip la zone diferite de cod a permis flexibilitate colegilor de a prelua task-uri diverse; comunicarea n echip a fost continu indiferent de locaie (skype grup deschis permanent a ajutat); elementele de process engineering pe care le-am amintit deja au fost eseniale, ne-au ajutat s avem o calitate bun, am ctigat timp prin automatizarea build-urilor, rularea testelor automate i desigur mult mai puin efort necesar pentru bug fixing. Scop: aa cum am subliniat deja am discutat foarte mult cu clientul pentru a clarifica specificaiile: n unele situaii am stabilit cu clientul alternative mai bune i care s-au tradus n efort de dezvoltare mai redus per ansamblu scopul nu s-a schimbat: nevoia GUI-ului de a articula toate funcionalitile din backend a rmas neschimbat n alte situaii am artat clar clientului c funcionalitatea cerut nu se regsea n specificaiile iniiale aici am avut Change Requests (CRs) care au nsemnat costuri adiionale, n alte situaii ne-am adaptat noi avnd feedback prin release-urile intermediare (am avut multe release-uri avnd pentru fiecare din cele dou faze principale de livrare (soft i hard launch) mai multe subfaze de testare).

Cost: dat fiind c am reuit s ne ncadrm n termenele de livrare i unde a fost cazul s obinem CRs, am reuit s inem costul sub control i n final s avem un proiect profitabil; desigur faptul c echipa a reuit s livreze la timp, s neleag ce are de fcut i sa gseasc soluiile potrivite a fost factorul cheie aici. Ca o concluzie nu credem c rspunsul la ntrebarea din titlu este da sau nu, 0 sau 1, el poate fi da n anumite condiii i poate fi nu n alte condiii. n cazul proiectului nostru a fost da i personal nu cred c am fi reuit altfel dar am avut condiiile de care v-am vorbit. ncurajarea mea este de a investi ct mai mult n: Responsabilizarea echipei, I n t e r a c i u n e , c o m u n i c a r e , colaborare, Engineering practices calitate nc de la nceput, Posibilitatea de a avea roluri specializate n propria echip.

www.todaysoftmag.ro | nr. 6/2012

35

tehnologii

O incursiune prin atacurile informatice din 2012 i poziionarea Romniei n rzboiul cibernetic
nul 2012 a fost unul dintre cei mai activi din istoria Internetului atunci cnd discutm de atacuri informatice asupra unor sisteme i infrastructuri mari. Prin acest articol atingem un subiect sensibil referitor la securitatea IT n Romnia prin prisma interveniilor din rile strine folosind un top 10 al celor mai importante atacuri din 2012. 7. Yahoo! Voice Concluziile articolului ncearc s un grup intitlulat D33DS Company scoat n eviden riscurile la care sunt au obinut prin SQL Injection supuse infrastructurile romaneti i ct de aproape 454,000 de conturi Y! Voice bine suntem pregtii pentru atacuri inforprintr-un simplu SQL Injection; matice serioase. Prezentarea clasamentului parolele erau stocate n plain text. va fi realizat n ordine descresctoare, n 6. Global Data Inc. (Visa & Master funcie de complexitatea i pagubele Card) fcute, dezvoltnd un clasament realizat de o bre n sistemul de procesare a ThreatMatrix. datelor de card a dus la pierderea a 1.5 milioane de numere ale unor 10. GHOSTSHELL carduri bancare; g r upu l A nony mou s i nt itu l at brea nu a dus i la pierderea datelor GHOSTSHELL a furat peste 120,000 de facturare nici a numelor. de nregistrri de la universiti de 5. Microsoft Internet Explorer top din lume injectnd malware n o problem de securitate descoperit site-uri; n septembrie permite hackerilor printre faculti se numr Harvard, s instaleze aplicaii maliioase pe John Hopkins, The University of computerele personale; Michigan etc. 41% dintre utilizatorii din America 9. U.S Enviromental Protection de Nord sunt afectai de vulnerabiliAgency tate i peste 31% la nivel global; o bre n securitate a dus la compro vulnerabilitatea de tip RCE(Remote miterea datelor a 8,000 de angajai i Code Execution) poate rula un alte conturi bancare; script de la distan pe IE 6,7,8,9 dar e amuzant c au fost necesare 4 luni nu pe 10; pn cnd US EPA a anunat persoa nici IE 10 nu scap pentru c exist nele afectate. o vulnerabilitate n Flash ce este 8. Go Daddy folosit world wide. Anonymous i-a nsuit numeroase 4. Android atacuri DDoS pe 10 septembrie; n aceast toamn a fost sesizat c pentru o perioad de timp au fost aproape 200 de milioane de teleafectate zeci de site-uri world wide, foane cu Android sunt n pericol de pn i serviciile de email; a fi resetate complet, pierzndu-se Go Daddy a infirmat ipoteza. absolut toate datele de pe ele, existnd posibilitatea distrugerii i a SIM-urilor; sunt afectate telefoanele produse de Samsung, HTC, Motorola i Sony Ericsson i majoritatea versiunilor

Andrei Avdnei andrei@worldit.info Fondator si CEO DefCamp CEO worldit.info

36

nr. 6/2012 | www.todaysoftmag.ro

UIX
de Android sunt vizate; a fost scos patch dar pn n acest moment doar versiunile foarte noi de mobile l-au aplicat. 3. Linkedin & eHarmony n mai puin de 24 de ore 65 de milioane de conturi de Linkedin au fost scpate de sub control, 30,000 dintre acestea au fost sparte; 1.5 milioane de parole eHarmony au fost furate i publicate pe un site de spargere a parolelor; au fost diverse interpretri ale atacului, cert e c Linkedin a sczut n ochii multora atunci. 2. Wells Fargo site-ul a fost suprancrcat printr-un atac de tipul DDoS; estimrile susin c peste 70 de milioane de poteniali clieni au fost compromii i peste 8.5 milioane de spectatori; atacul i l-au nsuit Cyber Fighters of Izz ad-din Al Qassam c protest mpotriva unui videoclip anti-islamez aprut pe Youtube - Innocence of Muslims dei analizele ulterioare au scos la iveal c tehnologia i lista suspecilor indic spre o implicare guvernamental a Iranului; au fost afectate mai multe bnci n timpul aceleiai campanii, printre care Bank of America, JPMorgan Chase, Citigroup, U.S. Bancorp. 1. Zappos / Amazon Inc. un singur atac a dus la compromiterea a 24 de milioane de conturi Zappos / Amazon Inc.; au fost comrpomise nume, adrese de email, numere de telefon, cri de credit, adrese de facturare; The individual isnt the value here its the list thats the value, a declarat Rob Holmes, CEO al ageniei de detectivi IPCybercrime. com n urma atacului; una din cele mai mari greeli ale celor de la Amazon e c dup momentul cumprrii n 2009 a celor de la Zappos, acetia le-au dat mn liber pe partea de management i au fcut transfer de ncredere ce s-a resimit asupra lor; Zappos a trimis un email tuturor utilizatorilor i le-au cerut s schimbe parolele aproape imediat.

TODAY SOFTWARE MAGAZINE


targetate ce au vizat n ultima vreme att Europa ct i orientul mijlociu. Nu trebuie s uitm c pn i Google a fost vizat, printre alii la numeroase atacuri informatice targetate, extrem de complexe i bine puse la punct. Nu trebuie s uitm de Sony, de Flame, Duqu samd. din domeniul INFOSEC & hacking din Romnia de pn acum, fiind ateptate n capital aproape 250 de persoane, ce vor asista la peste 20 de prezentri susinute de speakeri din cinci ri. Evenimentul va avea loc in perioada 30 noiembrie 2 decembrie la Hotelul Yesterday in Bucureti i promite o conferin de trei zile desfurat n cele mai bune condiii pentru ca orice participant s poate interaciona cu numeroase persoane cu experien vast n domeniul INFOSEC. Pe parcursul celor trei zile, participanii vor putea urmri numeroase prezentri susinute de oameni cu experien n domeniul INFOSEC, vor putea monitoriza Wall of Sheep, ar putea participa la concursul DCTF (DefCamp Capture the Flag) sau i vor putea pune site-ul la dispoziia unei echipe de testare. Evenimentul din aceast toamn atinge n cele peste 20 de prezentri subiecte precum 0days, captcha breaking, mail security, digipass bypass, mobile security problems, DDOS, networking, P2P networks, D&D APTs, social engineering i lista continu, prezentrile fiind susinute att de specialiti din Romnia ct i din strintate. Competiia DCTF (DefCamp Capture the Flag) va avea o etap de pre-calificri online urmat de un duel n timpul evenimentului ntre echipele finaliste. Temele competiiei sunt extrem de variate i provocatoare exploits, cryptography, programming, steganography, forensics, reverse engineering, aceste subiecte fiind atinse n 30 de probleme din etapa de calificare. Una dintre noutile cu care vine DefCamp 2012 @Bucuresti este DHME (DefCamp Hack ME). Orice participant i poate nscrie website-ul, aplicaia sau proiectul iar echipa DHME se va ocupa pe perioada evenimentului de analiza i realizarea unui audit de securitate asupra lui. La finalul evenimentului, cei nscrii vor primi pe email cte un raport cu privire la analiza fcut. Poate mai e o ans. :-)

Unde se regsete Romnia n acest moment?

Rspunsul simplu e c ne aflm pe teren neutru, dar, din pcate, din perspectiva geografiei virtuale suntem tot la mijloc. Mai ru dect att, se pare c n acest moment suntem complet nepregtii. Nu cred c suntem capabili s gestionm un atac informatic asupra unei infrastructuri romneti important, nu cred c suntem pregtii s analizm un atac informatic complex. De asemenea, nu cred c exist vreun program de contra-ofensiv pregtit mcar teoretic, dup cum nu cred i sunt aproape sigur c nu exist echipe de intervenie care sa fie pregtite n acest sens i s tie exact ce e de fcut ntr-o astfel de situaie. ntr-adevar, n acest moment, din punct de vedere al tehnologiei, stm puin mai jos dect alte state Europene, dar n curnd majoritatea cumprturilor, majoritatea facturilor i multe altele le vom realiza virtual. Infrastructura migreaz spre Internet i nu suntem pregtii pentru incidente. Nu exist nici mcar promisiuni concrete care s susin n acest moment nite iniiative adevrate pentru dezvoltarea intern la incidente din spaiul cibernetic. Dac China, Iran, Israel, SUA, Rusia i numeroase alte ri din Europa i din afara ei au investitiii semnificative n aceasta direcie i au chiar echipe oficiale de intervenie, de cercetare, de spionaj, de contra-ofensiv pentru spaiul cibernetic, noi nc discutm despre nfiinarea programelor de protecie cibernetic la modul general. Ne putem uita i la vecini, iar unul n cunotin de cauz e chiar Ungaria. Are cel mai mare eveniment de securitate informatic din Europa de Est, de aproape un deceniu, a deschis Crysys, un centru de cercetare malware care a contribuit la cele mai complexe i populare analize din istoria noastr ca planet tehnologizat Stuxnet, Flame, Duqu etc. .De asemenea, are au un sistem CERT mult mai bine pus la punct i lista continu.

Dei aceste atacuri au fost extrem de hacking & securitate! de mediatizate, acestea sunt doar cireaa Aflat la a treia ediie, DefCamp 2012 de pe tort, sunt informaiile care ies la @Bucuresti (http://defcamp.ro) este una suprafa. Nu trebuie s uitm de atacurile dintre cele mai importante iniiative
www.todaysoftmag.ro | nr. 6/2012

Noi ce avem? DefCamp conferin

37

management

Agile, crash course

rice revist dac am deschide sau la orice conferin am merge, cu certitudine am da peste un articol sau o prezentare despre Agile. Toat lumea vorbete despre Agile i agilitate, experii au aprut i ei n cantiti uriae i orice companie, cu att mai mult n software, pretinde c face Agile. Cei mai sceptici, rmn rezervai i ateapt s treac moda asta cu Agile. Doar c moda nu numai c nu trece, au trecut deja mai bine de 10 ani de cnd a aprut, ba chiar tinde s se dezvolte dac nu chiar s explodeze. Nokia, Microsoft, Adobe, Google, Philips, Siemens, Yahoo sunt nume grele care au pariat pe Agile. Avnd n vedere mizele uriae, parc am tinde s ne lum dup ei. Mai mult chiar, rigidul PMI (Project Management Institute) a creat chiar o certificare special pentru Agile demumit Agile Certified Practitioner (ACP). Dei a fost lansat cu numai cteva luni n urm, ACP numr deja peste 1000 de certificai la nivel mondial. Aadar, pare un lucru serios, n plin dezvoltare i plin de nvminte. Nu ne rmne dect s i acordm importana cuvenit. Agile nu este un silver bullet. Sunt nc multe domenii n care abordarea tradiional, waterfall, nc d foarte multe rezultate. Datorit naturii sale iterative, Agile i gsete o aplicabilitate perfect n situaiile n care scopul proiectului nu este sau nu poate fi definit n detaliu nc de la nceput precum i n mediile supuse unor schimbri frecvente. Fie c este vorba de un client care se rzgndete n fiecare zi sau ntr-o pia extrem de dinamic ce comport modificri succesive ntr-o perioad scurt de timp. Pentru cei mai muli Agile nseamn sprinturi, daily stand ups i backlog. Ceea ce este corect, dar nu i complet. Agile este mai degrab o micare, un curent chiar o atitudine. Era s folosesc cuvntul filosofie, dar e un cuvnt care are colurile att de tocite c e greu s mai discerni ce ascunde. Agile este o umbrel mare sub care se adpostesc lucuri mai concrete, mai palpabile cum sunt cele menionate mai sus: sprinturi, review-uri i retrospective, product sau sprint backlog. Acestea constituie partea mai pmntean a filosofiei Agile i anume unelte puse la dispoziie de unele metodologii. Agile nu este o metodologie, este o grupare de metodologii. i aceste metodologii, cel puin cele mai faimoase sunt: Scrum (att de faimos c este confundat de multe ori chiar cu Agile), XP (extreme programming), Kanban, Lean, FDD. Problema cea mai mare cu metodologiile este c ele nu funcioneaz. Pare ciudat afirmaia? Cel puin asta e ce tot aud de la foarte multe companii. C oricare dintre metodologii ar folosi (dei n 99% din cazuri este vorba despre Scrum), cei mai muli spun c de fapt metodologia este bun dar mai trebuie adaptat la specificul companiei. Pentru c, nu-i aa, fiecare dintre noi suntem foarte speciali i nicio metodologie nu ni se potrivete. Prima ntrebare care vine n minte n asemenea situaii este de ct timp folosii Agile? urmat invariabil de rspunsul: abia acum implementm.

Florian Ivan, PMP, ACP, CSM, MVP


florian.ivan@rolf-consulting.com Project MVP

38

nr. 6/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Dincolo de perplexitatea c putem judeca, uneori att de dur, o metodologie fr s o cunoatem suficient, recomandm tuturor celor aflai la nceput de drum modelul ShuHaRi al lui Alistair Cockburn (Agile Software Development: The Cooperative Game, 2007 sau, mai simplu, Google it) n care unul dintre fondatorii acestei micri vorbete exact despre asta. nainte de a emite orice judecat, folosete o metodologie pn i decoperi limitele. Abia apoi poi spune care i sunt limitrile. Este suficient s ne gndim la numele mari pe care le-am dat la nceputul articolului i s constatm c daca metodele Agile funcioneaz pentru ei i pentru noi nu, probabil facem ceva greit. i acum s ne uitm rapid la fiecare dintre metodologiile prezentate mai sus. ncepem cu cea mai titrat dintre ele, Scrum. Aceast metodologie, ca mai toate celelalte, se caracterizeaz printr-o producie iterativ i incremental a scopului final al proiectului. Ceea ce nseamn c, la nceput facem un schelet asupra cruia tot revenim pn cnd seamn cu ceea ce i dorete clientul. Atenie, clientul de cele mai multe ori nu tie ce i dorete de fapt i are nevoie de aceste increment-uri de funcionalitate pentru a afla. Rolurile tipice pentru un proiect Scrum sunt: Product Owner (responsabil cu maximizarea valorii a ceea ce se livreaz), echipa de dezvoltare (responsabil cu livrarea unui potentially releasable, increment de funcionalitate) i un Scrum Master (responsabil cu mprtirea conceptelor de Scrum ctre echip i respectarea proceselor specifice). Documentele cele mai uzual folosite n Scrum sunt: product backlog (lista de cerine prioritizat n funcie de valoarea pentru client a fiecrei funcionaliti), sprint backlog (un subset din product backlog care va ntra n producie n sprintul imediat urmtor), burndown/ burnup charts (pentru ilustrarea evoluiei cumulative a progresului). Ceremoniile din Scrum sunt: daily stand-ups (ntlnirea zilnic a echipei n care fiecare membru spune despre ce a lucrat ieri, la ce va lucra azi i ce eventuale piedici sau probleme ntmpin), sprint planning meetings (n care product ownerul i echipa decid ce se va livra n sprintul urmtor), sprint review (n care se discut ce anume s-a livrat n sprintul proaspt ncheiat) i sprint retrospective (n care se analizeaz modul cum echipa a lucrat, dac s-au respectat toate procesele, etc.). A doua metodologie, n ordinea faimei i rspndirii este XP - Extreme Programming. n mod sigur niciun client ntreg la cap, nu i-ar dori ca proiectul lui s fie gestionat ntr-o chestie care include cuvntul extreme. De aceea, este nevoie s nelegem bine ce se ascunde n spatele acestei metodologii i, de ce nu, chiar s i-o prezentm i clientului drept poli de asigurare pentru proiectul su. Valorile pe care XP le promoveaz sunt: comunicarea, simplitatea, curajul, feedback-ul i respectul. Cnd vei citi n cele ce urmeaz despre practicile XP, n mod sigur le vei pune cap la cap i vei nelege ce e cu aceaste valori. Rolurile din XP sunt (poate vrei s aruncai o privire mai sus pe rolurile din Scrum nainte de a citi mai departe): coach (este mentor i facilitator pentru echip), customer (stabilete ce anume se dezvolt i n ce ordine), programmer (cred c este evident ce face el!), tester (vom vedea imediat c XP are un mare focus pe testare). Menionam mai sus practicile XP. Ele sunt cele care transform o teorie n ceva foarte practic i pragmatic. Acestea sunt: small releases (v aducei aminte de incremental?), whole team (XP este un fel de echip de muchetari n care toi trag pentru echip), system metaphor (funcionalitatea de implementat trebuie descris ct mai clar), test-driven development (testele sunt stabilite i scrise nc nainte de a ncepe dezvoltarea), simple design (clientul trebuie s vad repede ceva funcional), refactoring (curaarea codului fr a-i schimba efectul), continuous integration (fiecare membru trebuie s ofere propria contribuie tot timpul), collective code ownership (ntreaga echip lucreaz la cod i oricnd membrii echipei se pot roti ntre ei), planning games (Google planning poker!), coding standards (fr de care nu poi avea codul partajat cu toat echipa), sustainable pace (toat lumea n acelai ritm, pe toat durata proiectului = fr ore suplimentare), pair programming (doi programatori la un calculator lucreaz la acelai cod) i customer tests (clientul, foarte implicat n proiect este parte din echip i i aduce aportul). Parc nu mai pare aa extrem, nu? Kanban este una dintre cele mai noi metodologii aprute n peisajul Agile i vine, aa cum i banuiai, de la japonezi. Kanban se uit la tot fluxul pe care l are un proiect, cu toate fazele i etapele sale i se concentrez pe a limita ceea ce se numete work in progress. Lucrurile sunt foarte simple i pornesc de la principiul c, dac te apuci de mai multe lucruri n acelai timp , probabil nu vei termina niciunul i nici nu vei face o treab foarte bun. Secretul este s i limitezi acest work in progress dup ce ai aflat care este limita la care performezi cel mai bine fr s i faci pe alii s atepte dup tine. Lean, foarte la mod i el alturi de Kanban, cu care se i aseamn. Lean privete i tot fluxul proiectului i mparte toate activitile n activiti care aduc valoare i activiti rezidue (denumite waste). Dup cum probabil intuii, tot secretul este s reduci ct mai mult activitile waste astfel nct cea mai mare parte din munca fcut la un proiect s fie de valoare. i mai simplu, prin lean aflai ct de mult stai pe Facebook n timpul unui proiect. i da, Facebook e considerat waste! FDD (Feature Driven Developement) este extrem de popular n special n dezvoltarea de aplicaii software. Procesul are cinci pai i urmrete: construirea unui model general, construirea unei liste de feature-uri care trebuie dezvoltate, planificarea n funcie de aceste feature-uri iar apoi design-ul i dezvoltarea fiecrui feature. Cei mnai de curiozitate vei descoperi c mai exist i alte metodologii demne de interes (Crystal i DSDM sunt doar doua dintre ele) dar cele menionate mai sus sunt nucleul micrii Agile. Pare simplu, nu-i aa? Din pcate, aceasta este i marea problem cu implementarea lor. Tocmai pentru c totul pare aa de simplu, de cele mai multe ori abordarea este superficial, ceea ce duce la un eec rapid. nchei prin a meniona nc o dat modelul ShuHaRi alturi de dou recomandri: asigurai-v c avei alturi pe cineva care tie bine metodologia aleas i evitai s criticai o metodologie la mai puin de un an de la implementare.

www.todaysoftmag.ro | nr. 6/2012

39

HR

Echilibrul dintre viaa profesional i cea personal


fascineaz conceptul de work-life balance sau mai simplu gsirea acelui echilibru despre care se vorbete din ce n ce mai des, ntre viaa personal i cea profesional. ntr-o er tehnologic, n care timpul parc zboar, este din ce n ce mai greu s mbini cariera cu viaa personal. Am ntlnit persoane care s reueasc cu brio acest lucru i care mi-au ridicat cteva semne de ntrebare despre cum ar fi necesar s mi organizez timpul ct mai bine pentru a avea rezultate excepionale la serviciu, pentru a avea suficient timp, pentru a practica hobby-urile pe care le am, pentru a iei la o cafea cu prietenii. Nu pot spune c am descoperit secretul, deoarece nc sunt momente n care agenda nu arat chiar cum mi-a dori eu s fie. Puini sunt cei care tiu c acest concept a fost de-a lungul timpului studiat. Cel care a introdus acest termen a fost Echilibrul spiritual: obinerea acelei angajailor: lipsa de educaie a Byrne, care l definea ca fiind echilibrul satisfacii spirituale, care te deterangajaiilor despre acest concept ntre cele cinci aspecte eseniale ale vieii: min s fii mulumit cu tine nsui/ nou ntlnit pe pia. serviciu, familie, prieteni, sntate i spinsi. Presiunea business-ului: orice comrit, care nu nseamn neaprat o divizare Echilibrul via personal via propanie va nclina mereu balana exact a timpului aferent fiecrui aspect, fesional perceput n cultura trii. Pe de nspre interesele care i vor pstra ci este vorba despre crearea acelui nivel alt parte, consider c un impact mare avantajul competitiv pe pia, dect care s aduc satisfacia dorit pentru fie- asupra stabilirii acestui echilibru l are culnspre echilibrarea vieii personale care dintre cele cinci roluri. Nu a vrea s tura rii n care trim. De menionat c a angajatului cu cea profesional, insist foarte mult pe aspectele teoretice ale au fost implementate politici la nivel eurodeoarece nu este neles pe deplin acestui concept, dar consider c pentru o pean care ncearc s mbunteasc viaa impactul pozitiv pe care aceasta l nelegere ct mai bun a lui, este necesar prin trei obiective ale acestei strategii de poate avea n dezvoltarea companiei. o trece succint prin una dintre cele mai dezvoltare. Timpul de lucru: dei este stabilit importante i cunoscute teorii, dezvoltat 1. Ct mai multe i mai bune locuri de un program de lucru de 8 ore pe zi, de ctre Tim OBrien Diferitele pri ale munc pentru cetenii europeni, muli dintre anjagai petrec mai mult unei viei echilibrate (en. the many sides prin dezvoltarea unei politici active timp la birou datorit volumului de of a balaced life), care susine c exist mai de angajare. munc foarte ridicat pe care l au, multe feluri de echilibru: 2. Dezvoltarea unor programe de deoarece foarte rare sunt situaiile Echilibrul social: timpul pe care educaie i training pentru dezvoltan care angajatorii iau msuri pentru petrecut cu sine sau cu ceilali. rea cunotinelor. o reorganizare a muncii. Chiar dac Teoriile psihologice susin c dou 3. Programe de incluziune social. legislaia muncii ncearc s protedintre nevoile primare ale omului Prin acestea se dorete creterea calitii jeze angajaii de astfel de abuzuri, sunt: nevoia de socializare i nevoia vieii, nu doar definirea unui standard posibilitatea de a lucra de acas, dezde solitudine, astfel cu ct petreci minim acceptat. n multe din statele vest echilibreaz mai mult acest balans. mai mult timp singur riti s devi europene deja exist o mbuntire viziEchilibrul via personal via profemai izolat si orientat ctre sine, iar bil a echilibrului ntre viaa personal sional perceput n cultura organizaional cu ct socializezi mai mult cu ceilali i cea profesional. Cu toate acestea ce se a companiei. Cu toate aceste impedimente, riti s duci o via superficial. ntmpl la nivelul fiecrei ri este departe fiecare dintre noi ar trebui s neleag c Echilibrul mental: timpul petre- de situaia ideal definit de ctre Comisia echilibrul ntre viaa personal i cea procut pentru nvare i n scop European, iar principalele probleme iden- fesional este dat de eficiena i eficacitatea recreaional. Echilibrul const n tificate au fost: la locul de munc. Cu ct reuesi s faci mbinarea plcutului cu nvatul. Neuniforma adoptare: dei regle- mai multe ntr-un timp mai scurt, cu att Echilibrul emoional: const n mentrile sunt agreate la nivel global, ele ai mai mult timp pentru a-l dedica familiei sensibilitatea la probleme i obiec- nu sunt implementate n fiecare ar i cu i prietenilor. Drept o soluie la toate acestivitatea cu care sunt soluionate att mai mult n fiecare companie i sector tea companiile ar putea implementa politici acestea. Cu ct devenim mai n care aceasta activeaz. Studiile efectuate care s ncurajeze: emoional implicai, cu att deciziile la nivel european, demonstreaz c mai Programul flexibil: realizarea celor luate sunt mai dezechilibrate. mult de o treime dintre companiile care 40 ore legale conform codului mun Echilibrul fizic: implic sntate activeaz n domeniul manufacturier nici cii, dar permiterea unei flexibiliti corporal i mental. Este nece- mcar nu iau n considerare aceste polipentru rezolvarea unor situaii persar un echilibru n ceea ce privete tici. Pe de alt parte, companiile care au un sonale, cu condiia ca de ncrederea exerciiile fizice i nutriia, pentru departament dezvoltat de resurse umane, care i este acordat angajatului s nu c nivelul de oboseal corporal i au demonstrat o cretere semnificativ n se abuzeze i s se respecte timpul de nivelul de stres au un impact asupra crearea acelui echilibru ntre viaa persolucru i mai ales s se ndeplineasc deciziilor luate. nal i cea profesional. sarcinile de lucru. Echilibrul financiar: gsirea echi Lips de formalizare: puine tri Posibilitatea de a lucra de acas: librul ntre cheltuieli, venituri i au legi scrise care s reglementeze permite angajailor s i organizeze economii i implic decizii care au aceste politici europene. timpul i n jurul valorilor personale un impact asupra stilului de via. Cenzura i restriciile impuse i n funcie de nevoile familiale. Mai

40

nr. 6/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


mult dect att le permite s lucreze ntr-un mediul propriu, care poate fi mai relaxant dect cel de la job. Sunt ns puine companiile care adopt o astfel de politic, deoarece de cele mai multe ori s-a demonstrat c angajaii din Romnia nu rmn concentrai pe sarcinile care este necesar s le realizeze. Prin implementarea acestor politici, multe dintre companii au vzut beneficiile mari pe care le-au obinut: Reducerea absenteismului; Creterea productivitii; Creterea beneficiului de imagine al companiei; Creterea loialitii i a angajamentului fa de companie; Creterea reteniei angajaiilor; Reducerea stresului. Pe de alt parte beneficiile angajaiilor sunt i ele ridicate: Creterea satisfaciei la locul de munc; Gsirea unui echilibru ntre viaa personal i cea profesional; Reducerea nivelului de stres la locul de munc; Crearea echilibrului ntre viaa personal i profesional este pentru binele tuturor: creterea business-ului, facilitarea procesului de recrutare printr-o cretere a ratei reteniei angajaiilor n companie, cretere economic printr-o cretere a productivitii muncii, dezvoltarea unei cariere care s permit i petrecerea timpului liber cu familia, dar n acelai timp asigurare unei bunstrri financiare. Cu ct angajaii simt c au un control mai mare asupra vieii lor, cu att i gsesc mai bine echilibrul n viaa personal. Cu toate acestea implementarea unei culturi organizaionale care s ncurajeze echilibrului ntre personal i profesional este nc un proces ndelungat pe care multe dintre companii abia l-au nceput sau altele, din pcate nici mcar nu au fcut primii pai n aceast direcie. Echilibrul via personal via profesional perceput ca obicei personal Martin Seligman spunea c fericirea autentic este un obiectiv final al ceea ce nseamn obinerea acestui echilibru. Dorina i mpinge pe oameni la atingere unui nivel de fericire n momentul n care acetia ndeplinesc o list de obiective: realizrile n carier, relaiile de prietenie, confort material, dobndirea unui nivel ridicat de educaie, etc. Echilibrul este reflectarea satisfaciei i mplinirii n mai multe domenii, cu implicaii negative sczute n altele. De exemplu, o persoan materialist, care poate ajunge la un nivel de satisfacie financiar ridicat nu este neaprat fericit n alte domenii, deoarece nenumrate studii au demonstrat c astfel de persoane au tentina clar de a-i neglija viaa personal, familia, prietenii, comunitatea. Crearea acestei stri negative, n final i afecteaz i satisfacia financiar, care n prim faz era extrem de ridicat i de mulumitoare. Teoria dezvoltat pe aceast tem susine c exist dou lucruri care contribuie la atingerea echilibrului: 1. Definirea unor limite de satisfacie, care const n definirea a ceea ce nseamn satisfacie pentru fiecare domeniu i care este impactul atingerii acelui nivel fa de celelalte domenii. Cu ct sunt indeplinite mai multe nevoi pe care oamenii le au, cu att nivelul lor de satisfacie este mai ridicat. 2. S a t i s f a c e r e a n e v o i l o r d e supravieuire i nevoia de cretere: se poate argumenta c nivelul ridicat al vieii nu poate fi neaprat atins doar prin satisfacerea nevoilor de supravieuire, este nevoie de o cretere a lor i de ajungere la un alt nivel. Ceea a aduce n completare este c aceast stare de satisfacie i stabilirea echilibrului ntre viaa personal i profesional sunt date de personalitatea fiecruia dintre noi. Au fost realizate numeroase studii n care s-a demonstrat c persoanele workaholice, care sunt caracterizate ca fiind acele persoane care lucreaz peste program, chiar dac nu sunt nevoite s o fac, au tentina de a se concentra prea mult asupra carierei, pierzndu-i focusul pentru alte domenii ale vieii lor. Scopul articolului a fost de a prezenta succint conceptul de echilibru ntre viaa personal i profesional (en. Work life balance), pentru o mai bun nelegere a impactului pe care fiecare comportament al nostru ca indivizi, dar i mediul organizaional n care ne desfurm activitatea l poate avea n obinerea unor satisfacii profesionale care s nu fie umbrite de nempliniri personale. Pai n aceast direcie au fost ntreprini, este necesar n schimb o continu mbuntire i implementare a politicilor care s ncurajeze acest aspect att de important ntr-o er n care tehnologia controleaz incontient mare parte a vieii noastre. A vrea s nchei prin a v ridica mingea la fileu i a v adresa urmtoarea ntrebare: Ct de mult importan acordai gsirii echilibrului ntre viaa personal i cea profesional?

Andreea Prvu

andreea.parvu@endava.com Recruiter n cadrul Endava

www.todaysoftmag.ro | nr. 6/2012

41

diverse

Gogu
i imaginea de ansamblu
Sngele lui Gogu fierbea iar el simea c ncet, ncet, presiunea n interiorul capului su crete ireversibil. Deveni subit contient c va exploda, iar sentimentul l umplu de o linite nefireasc care i terse parc orice emoie, rmsese doar un gust amar... Era momentul pentru o reacie, acum ori niciodat. l ntrerupse pe ef: - Zu, efu, chiar nu e drept... Te iei de dou sptmni de ntrziere n condiiile n care am reuit s finalizm proiectul cu bine, e acceptat de client, am fcut profit, am economisit din bugetul de risc... Iar clientul ne cere s mai lucrm cu ei... Zu c nu e drept. Vocea lui Gogu era calm i nimeni nu zise nimic, toate privirile care nainte erau adnc nfipte n podeaua slii de edine, acum se ntoarser spre efu. Era clar c Gogu exprimase frustrarea fiecruia dintre ei: chiar fcuser o treab bun. i condiiile n-au fost chiar ideale. Pn la ntlnirea cu efu, fuseser foarte mndri de ce au reuit s fac, s-au felicitat unii pe alii... - Hmm... - fcu efu oarecum descumpnit. Te pomeneti c mi d dreptate, gndi Gogu uor descumpnit. Era deja pornit i vroia o discuie clarificatoare i era pregtit de lupt, chiar vreau o recunoatere oficial a meritelor noastre i zise el decis s nu se lase cu una cu dou. - Mda... continu efu onomatopeele. Se vedea c proceseaz la greu, lucru oarecum nou la el. Rar reuea cineva s-l prind pe efu pe picior greit, venic avea replic, venic avea el ultimul cuvnt. Deh, ca de-aia e ef. - Hmm... repet efu. Auzi efu, zici ceva odat ori ba? ntrebarea n-a fost pus cu voce tare, evident, dar aproape c i scp lui Gogu. efu i mai drese o dat vocea, se uit ptrunztor la Gogu, apoi la fiecare dintre ei. Era unul dintre momentele acelea despre care mai apoi i aduci aminte ca putnd s tai tcerea cu cuitul. - Da. (linite). Cred... (iar linite). Se pare c Gogu are dreptate de aceast dat. (i iar linite). Gogu fcea eforturi disperate s nu i afieze zmbetul victorios. Se pare ns c nu i reui prea bine: - Hai, Gogule, las rnjetul de satisfacie pe mai trziu, ai dat-o n bar cu ncadrarea n timp dar, ntr-adevr, n rest, proiectul s-a finalizat cu succes i mai degrab meritai laude dect observaii. M mir c v-au acceptat crcotaii ia proiectul dar adevrul e c v-ai strduit i i-ai dat clientului ceea ce vroia. Mi, ce mai ncolo i ncoace, meritai felicitri. Bravo. Ce zicei, ieim s srbtorim? Tonul efului se schimbase total, parc nu era el cel ce se ndoise de rezultate doar cu cteva minute mai nainte. Echipa era n cea iar privirile se mutau de la ef la Gogu, de la Gogu la ef. Pn i monologul intern al lui Gogu era redus la tcere. - Pi, dac n-avei obiecii, facem o rezervare de la ase la tia de peste drum, zmbi efu mecherete. Fac cinste... Ajuns acas, Gogu nc nu nceta s se mire de rapiditatea cu care i schimbase efu atitudinea. Era adncit n fotoliul favorit cnd apru fiul lui de la footbal. Tocmai luase vacan i, evident, era ct se poate de fericit. tiind foarte bine care va fi prima ntrebare a tatlui su, se nfiin rapid naintea acestuia cu carnetul de note. Zece, zece, nou, zece, ASE?!, zece, nou, zece, nou... - Ce e cu asele sta? Cum s-a ajuns la media asta, ce s-a ntamplat?! - Zu, mi tata, i-aa sunt aproape tocilarul clasei. Nu vezi ce medie am?! Ce conteaz asele sta cnd n rest am numai note bune. Chiar vrei sa fiu un geniu la desen? Pe Gogu l strfulger ntmplarea de la serviciu. Doamne gndi el fac i eu ca efu... pierd din vedere imaginea de ansamblu. i reveni ns rapid. - Hai mi, gata, ce, nu mai tii de glum deloc?

Simona Bonghez, Ph.D.

simona.bonghez@confucius.ro Speaker, trainer i consultant n managementul proiectelor, Owner al Confucius Consulting

42

nr. 6/2012 | www.todaysoftmag.ro

sponsori

powered by

You might also like