Sunteți pe pagina 1din 48

Nr. 35 Mai 2015 www.todaysoftmag.ro www.todaysoftmag.

com

TSM

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

Download from

Windows Store

Keep Calm and Start playing Dart


Cum surprinde Microsoft viitorul

Loguri i metrici n Java


Introducere n Couchbase NoSQL Document Database
Transfer de Date prin NFC

Portretul unui tester bun
Organizaii bine crescute
Fizbo, Simply rent

Ce nseamn TDD ?
Acceptarea schimbrii.
Drumul ctre un bug pe lun
SeedForTech
Startup Weekend Cluj 2015 n
retrospectiv
BattleLab Robotica
Totul despre PFA din punct de vedere
fiscal n 2015

6
Seed For Tech
Mircea Vdan

8
Startup Weekend Cluj 2015
n retrospectiv
Cristina Juc

10
MVP Academy Demo Day
Irina Scarlat

12
BattleLab Robotica
Ioana Bucur

13
SprintPoint
Horia Mircea Boto

15
Cum surprinde
Microsoft viitorul?!
Paul Hrimiuc

19
Transfer de Date prin NFC
Larisa Hoga

21
Keep Calm and
Start playing Dart
Kuki Edina

24
Introducere n Couchbase
Alexandru Objelean

30
Portretul unui
tester bun
Daniela Crian

32
Ce este de fapt TDD?
Alexandru Bolboac

34
Loguri i metrici n Java
Vasile Mihali

37
Organizaii bine crescute
Cristian Philipp

39
Fizbo, Simply rent aplicaie mobil
pentru nchirieri imobiliare
Lucian Pop

41
Totul despre Persoana Fizic Autorizat
Ioana Varga i Ioana Costea

44
Acceptarea schimbrii.
Drumul ctre un bug pe lun
Patks Csaba

editorial

Ovidiu Man

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

a eferverscena de evenimente culturale i educaionale care a cuprins Clujul


n luna mai i-au adus contribuia i evenimentele din domeniul IT-ului. Unul
dintre acestea, Romanian Testing Camp, a reunit o bun parte a testerilor clujeni
ntr-o locaie inedit, patru sli de cinematograf dintr-un mall local, remarcndu-se mai
ales prin prestigiul invitailor i al abordrilor interesante. Alt eveniment, IT Camp, ne-a
invitat s cltorim n fascinanta lume Microsoft, meninnd n organizare, desfurare
i selecia invitailor aceleai standarde nalte cu care ne-a obinuit din anii trecui.
Pentru nceputul lunii iunie, recomandarea TSM este Techsylvania, o conferin dedicat antreprenorilor.
Un alt moment pe care l plasez n categoria evenimentele pozitive ale lunii mai
este colaborarea revistei TSM n regim de internship cu trei studeni. La iniiativa Cluj
IT Cluster, am acceptat acum dou luni s colaborm sub forma unui program de
internship pentru studeni. Studenii cu care colaboreaz TSM, lucreaz la completarea
website-ului revistei precum i la implementarea unor proiecte. Domeniile lor de
specializare sunt informatic, informatic economic, jurnalism i marketing. Nu
insist asupra detaliilor de selecie a candidailor deoarece avem promisiunea din
partea Cluj IT Cluster a realizrii unui articol destinat acestui subiect. Dar vreau s
subliniez pasiunea i dedicaia studenilor care, chiar dac nu dein cunotinele unor
programatori seniori, cu siguran i depesc pe majoritatea n ceea ce privete ideile
noi, entuziasmul, dorina de a nva i implicarea n proiecte. Planificarea practicii de
var este nc n desfurare. Dac nu avei studeni n organizaie v sugerez s o facei,
pentru c i vor aduce cu siguran un aport consistent n dezvoltarea de produse noi
sau mbuntirea celor existente.
n acest numr putei gsi articole pe diverse teme de programare precum:
Introducere n Couchbase, Transfer de Date prin NFC i Loguri i metrici n Java. Testarea
este reprezentat de articolul cu titlul: Portretul unui tester bun. Zona Scrum/Agile,
conine titluri ca : Acceptarea schimbrii. Drumul ctre un bug pe lun i Ce este TDD?
V lsm s descoperii singuri restul articolelor i v dorim o lectur plcut !

Ovidiu Man

Fondator al Today Software Magazine

nr. 35/2015 | www.todaysoftmag.ro

Redacia Today Software Magazine


Fondator / Editor in chief: Ovidiu Man
ovidiu.matan@todaysoftmag.com
Graphic designer: Dan Hdru
dan.hadarau@todaysoftmag.com
Copyright/Corector: Emilia Toma
emilia.toma@todaysoftmag.com
Traductor: Roxana Elena
roxana.elena@todaysoftmag.com

Lista autorilor
Alexandru Bolboac

Larisa Hoga

Agile Coach and Trainer, with a


focus on technical practices
@Mozaic Works

Android Developer
@ Yardi Romnia

Alexandru Objelean

Vasile Mihali

alex.bolboaca@mozaicworks.com

alexandru.objelean@betfair.com

patkoscsaba@syneto.eu
Agile Software Developer
@ Syneto

Contabil : Delia Coman


delia.coman@todaysoftmag.com

Produs de

Daniela Crian

daniela.crisan@isdc.eu
Senior Tester
@ ISDC Romania

Kuki Edina

Lucian Pop

Tipar realizat de Daisler Print House

vasile.mihali@arobs.com
Senior Software Engineer
@ Arobs

Senior Developer
@ Betfair

Patks Csaba

Reviewer: Tavi Bolog


tavi.bolog@todaysoftmag.com

larisa.hogas@yardi.com

lucian.pop@fizbo.ro

Tester Senior Analyst


Cofondator
@ Fizbo

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

Cristian Philipp

Mircea Vdan

Senior Consultant & Managing Director


@ Essential Training and Consulting

www.clujstartups.com

Ioana Bucur

Irina Scarlat

Public Relations Responsable


@ BattleLab Robotica

PR Manager
@ How to Web &
TechHub Bucharest

cristian.philipp@essentialtm.ro

ioanabucur1812@gmail.com

mircea.vadan@gmail.com

irina.scarlat@howtoweb.co

Paul Hrimiuc

Horia Mircea Boto

Business Development Manager


@ Accesa

Program coordinator
@ SprintPoint

paul.hrimiuc@accesa.eu

incubator@clujhub.ro

Ioana Varga

Ioana Costea

Expert contabil
Managing Partner
@ A&I Consulting

Expert contabil
Managing Partner
@ A&I Consulting

ioana.varga@aiconsulting.ro

ioana.varga@aiconsulting.ro

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. 35/mai, 2015

startups

Seed For Tech

nou iniiativ a fost lansat n aceast primvar n Cluj: Seed For Tech este
un fond destinat dezvoltrii de produse tech, incluznd i investiii de tip seed
i sprijin n lansarea pe pia. Fondul i programul afiliat se adreseaz celor
care au expertiz ntr-un domeniu de activitate, au o idee de startup n acel domeniu
i se afl n cutarea unui partener mpreun cu care s dezvolte produsul i afacerea.
Mircea Vdan

mircea.vadan@gmail.com
www.clujstartups.com

Se pot nscrie n program att antreprenori cu proiecte aflate n stadiul de


idee, ct i cei care au format deja o echip
i lucreaz la produs. Fondatorii/antreprenorii care intr n parteneriat cu Seed
For Tech pot beneficia de echip pentru
dezvoltarea produsului software, investiie
financiar i sprijin n cercetarea de pia
i validarea ideii, consultan n elaborarea
strategiei de marketing, suport logistic i
ulterior conexiune cu posibili investitori,
clieni i mentori. Modelul este structurat
n trei faze, fiecare faz adresnd un set de
aspecte specifice etapelor din dezvoltarea
startup-ului.

Faza nti: Customer discovery and validation


mpreun cu fondatorii, vom trece
printr-o faz de validare a ideii, cu scopul
de a ajunge la problem-solution fit i
de a determina fezabilitatea de business.
Vrem s fim ct mai siguri c produsul
software ce va fi construit rezolv o problem/nevoie clar pentru un segment
clar de utilizatori/clieni. Seed For Tech va
ajuta antreprenorii n acest proces i poate

nr. 35/2015 | www.todaysoftmag.ro

pune resurse financiare (pn n 3000 de


euro) pentru cercetarea de pia i prevalidare. Aceast faz dureaz dou luni i
nu necesit o implicare full-time pentru
antreprenori. n acesta faz nu e nevoie s
se formeze o firm nou i nu se ia nc o
decizie de investiie, fiind o perioad i de
cunoatere i de a vedea cum putem lucra
mpreun. Dac toate aceste pregtiri i
analize au fost deja fcute, atunci putem
trece direct la faza a doua.

Faza a 2-a: Product development and


launch
Aceasta este faza n care se ncepe
dezvoltarea produsului. O echip tehnic
(product manager/CTO, UX/UI designer,
front-end dev, back-end dev) este format,
iar sub coordonarea antreprenorului i sub
viziunea conturat de acesta, se lucreaz
la dezvoltarea produsului. Dup lansare
i campania iniial, se fac alte iteraii de
mbuntire a produsului i promovare,
cu scopul de a ajunge la product-market fit, faza ce poate dura pn la un an.
Antreprenorul este cel care conduce tot
acest proces, cu sprijinul nostru.

TODAY SOFTWARE MAGAZINE

Faza a 3-a: Growth and scaling


n aceast faz, ne concentram pe marketing, vnzri i
promovare, cu mententana i mbuntirea produsului. Scopul
este de a redimensiona afacerea i de a intra n zona de profitabilitate. Aceast faz poate dura civa ani, iar Seed For Tech va
facilita conexiuni cu investitori ce pot furniza fonduri de cretere
pn la sute de mii de euro.
Ideea fondului a prins contur n urma interaciunilor cu
diveri poteniali antreprenori. Prea multe idei rmn blocate
ntru-un stadiu iniial de dezvoltare din cauza unui cumul de
probleme. Aceste probleme variaz de la lipsa capitalului iniial,
a unui partener tehnic, expertiz n zona de marketing sau de
business i altele. mpreun cu Fortech, n calitate de investitor,
am reuit s propunem o formul care s soluioneze aceste provocri. Valoarea adugat a programului deriv att din aportul
de resurse i expertiz, precum i din orientarea acestuia pe termen lung.
Prin Seed for Tech ne dorim s contribuim att la dezvoltarea culturii antreprenoriale, ct i la dezvoltarea ecosistemului
local de startupuri. n luna mai, am avut discutii avansate cu
aproximativ 20 de antreprenori, iar pn la sfritul anului ne
propunem s avem ntre dou i cinci parteneriate i investitii de pn la 50 000 de euro. Suntem deschii la discuii i cu

startupuri ce au deja o echip complet i un produs lansat (sau


aproape de lansare) i au nevoie doar de investiie financiar.
Detalii suplimentare privind Seed For Tech sunt disponibile
pe www.seedfortech.ro sau pot fi solicitate prin e-mail la adresa
contact@seedfortech.ro.

Young spirit
Mature organization
A shared vision
Join our journey!
www.fortech.ro

www.todaysoftmag.ro | nr. 35/mai, 2015

eveniment

Startup Weekend Cluj 2015 n


retrospectiv: 30 de idei i 12 echipe

up cteva edine, e-mailuri multe, telefoane i mai multe - s-a ntmplat.


n 24-26 aprilie, la Exclusiv Catering, a avut loc cea de-a patra ediie Startup
Weekend Cluj. Dei a durat doar trei zile, a fost un proiect foarte intens i cu
rezultate mbucurtoare.

Cristina Juc

cristinajuc@gmail.com
Organizatoare
@ Startup Weekend Cluj

nr. 35/2015 | www.todaysoftmag.ro

Cele trei zile de eveniment au nceput


cu prezentrile a doi speakeri, Philipp
Kandal i Salim Virani, dup care gazda
noastr, Adrian Pop, ne-a mprtit un
pic din experiena lui privitoare la astfel de
evenimente.
n aceeai sear a avut loc sesiunea de
pitching. Au fost prezentate 30 de idei,
dintre care participanii au ales prin vot 12
propuneri care li s-au prut cele mai interesante. Ulterior s-au format echipele n
jurul ideilor votate. Btlia suprem s-a dat
pe designeri, care au fost n numr de ase,
din totalul de 85 de participani nscrii n
aceast ediie. Seara de vineri a fost un pic
mai destins. Participanii au avut ansa
s se cunoasc mai bine ntre ei, s descopere care sunt atuurile fiecruia i care
este partea/ domeniul n care i-ar putea
aduce contribuia. Fiecare echip a primit
i cte un business canvas care s-i ajute s
ntocmeasc un plan pentru proiect.
Cea mai intens zi a fost smbt.
Fiecare echip a avut ocazia s apeleze
la cunotinele mentorilor, care au trecut
pe la fiecare dintre ele pentru a le oferi
feedback i a le mprti idei. Duminic
dimineaa majoritatea echipelor aveau
deja o propunere clar, iar unele dintre

ele au avansat pn la etapa de prezentare.


Dup masa de prnz atmosfera a devenit din ce n ce mai tensionat, pentru c
eram cu toii pregtii s aflm cine vor
fi ctigtorii acestei ediii. V invitm s
aruncai o privire asupra celor 12 idei la
care s-a lucrat timp de 54 de ore. Mai jos
sunt cele 12 proiecte care au fost prezentate
n faa juriului:
Tutora (locul 3) - Oamenii nva pe
oameni. O aplicaie care vrea s schimbe
modul de nvare/predare/oferire a
consultaiilor prin intermediul unei platforme on-line.
Travique (locul 1) - O aplicaie care
are ca scop prezentarea evenimentelor i a
festivalurilor din Romnia pentru cei din
afara rii.
Clear Future - Au vrut s arate o nou
viziune asupra educaiei superioare, att
pentru studeni ct i pentru elevi.
Timber.ro (premiul special) - O
platform care faciliteaz interaciunea
dintre contractori i beneficiari. De
asemenea, clienii au ocazia de ntlni
profesioniti din diverse domenii precum
construcii, instalaii, etc. . Posibilitatea de
a accesa servicii de calitate prin intermediul unei platforme on-line care s ajute

programare

ambele pri s ctige timp i s ajung la persoanele potrivite.


Awesome 1st Date - i dorete s detensioneze atmosfera
primelor ntlniri care pot fi destul de stinghere, prin intermediul
unei aplicaii de coaching.
Mountain Report (premiu special) - O aplicaie care te
ajut s-i programezi excursia la munte n cel mai scurt timp,
oferindu-i informaiile de care ai nevoie, ncepnd cu locurile
de unde i-ai putea cumpra/nchiria echipamentul i pn la
condiiile meteo pe care le-ai putea ntlni pe traseu.
Flowcal - O aplicaie care s-i contorizeze nivelul de
productivitate.
CPoints - O aplicaie care te pune n legtur cu cele mai
apropiate locuri unde ai putea s-i ncarci bateriile, metaforic i
la propriu. Locuri de networking, de co-work, special amenajate
cu surse de ncrcare a dispozitivelor electronice.
TapSit (locul 2) - O aplicaie de mobil care i permite s vezi
n timp real cte mese libere sunt n cafeneaua/restaurantul unde
ai vrea s mergi, i prin intermediul creia poi s-i faci rezervare
simplu i rapid apsnd un singur buton.
SnapIt (premiul special) - Este o camer mic, pe care o poi
anexa ochelarilor, pe oricare dintre laturi, prin intermediul creia
poi captura imagini cu o singur apsare de buton, fr riscul de
a pierde din experiena pe care o trieti.
Foveo - O aplicaie care te ajut s-i atingi obiectivele mult
mai repede. Se bazeaz pe crearea unor echipe care au scopuri
comune, dar i pe obinerea de ncurajri din partea prietenilor,
factori de motivare care s te ajute s obii rezultatele dorite.
City 365 - O metod de-a obine cele mai bune experiene pe
care i le poate oferi oraul, la cele mai bune preuri.
Ctigtorii Startup Weekend Cluj 2015 au avut parte de mai
multe premii techie. Travique, ctigtorii locului I, au primit un
MacBook Air, din partea Telenav, trei luni de spaiu de co-work
la Cluj Hub, o or de mentorat din partea The HYVE i cte un

TODAY SOFTWARE MAGAZINE

ncrctor solar pentru fiecare membru al echipei, din partea


Pitech+Plus.
TapSit au ctigat un Apple Watch din partea Telenav, trei
luni de spaiu co-work la Cluj Hub, bilete la Techsylvania, cel mai
mare eveniment de tech din Transilvania i Led Lamps din partea
Pitech+Plus, pentru fiecare membru al echipei.
Ctigtorii locului III au obinut trei luni de spaiu co-work
la Cluj Hub, iar fiecare membru al echipei a ctigat un loc la
Techsylvania i Led Lamps din partea Pitech+Plus.
n acest an, trei echipe au ctigat premii speciale, acestea sunt
Mountain Report - dou bilete la Pioneers Festival - cel mai mare
eveniment din Europa dedicat startup-urilor, o lun de spaiu
co-work gratuit la Cluj Cowork i bilete la Techsylvania; SnapIt
- o invitaie la Seed For Tech Investment Program, din partea
Fortech, i Timber.ro - care au trecut automat n cea de-a doua
etap a programului SprintPoint.
Suntem curioi s aflm n ce mod se vor dezvolta n viitor
aceste proiecte lucrate cu att de mult drag i implicare. Vom
urmri evoluia echipelor i a ideilor ca s v comunicm detalii
pe parcurs, pe blogul Startup Weekend Cluj. Dac avei mai multe
curioziti despre proiect ne putei urmri pe facebook i ne
putei scrie pe adresa de e-mail: cluj@startupweekend.org
Suntem mndri de oamenii pentru care am organizat acest
eveniment, fcndu-ne o deosebit plcere s-i cunoatem pe
fiecare n parte. V salutm, echipa Startup Weekend Cluj 2015:
Adela Chende, Adrian Pica, Anca Suciu, Ctlina Mironescu,
Cristina Juc, Cristina Tare, Fele Eniko, Irina Rotaru, Mdlina
Grecu, Mircea Vadan, Philipp Kandal, Roxana Oroian, Roxana
Rugin, Vlad Ciurca.

www.todaysoftmag.ro | nr. 35/mai, 2015

startups

12 startup-uri cu potenial i-au


prezentat produsele pe scena MVP Academy Demo Day

ucureti, 19 mai 2015. Cele 12 startup-uri care fac parte din al doilea lot al programului de preaccelerare MVP Academy au
urcat pe scen vineri, 15 mai, la Demo Day, pentru a prezenta rezultatele a dou luni de munc intens. Acestea au avut astfel ocazia s i expun pentru prima oar produsele i progresul nregistrat n faa audienei, dar i s demareze discuii cu
poteniali investitori i parteneri strategici.
Organizat n parteneriat cu Telekom
Romania i Bitdefender, cu sprijinul
CyberGhost, Raiffeisen Bank, hub:raum,
Microsoft i SendGrid, a doua ediie a programului de pre-accelerare MVP Academy
s-a desfurat n perioada 23 martie 14
mai la TechHub Bucharest i a ajutat
startup-urile finaliste s i defineasc
mai bine produsele, pregtindu-le pentru urmtoarea etap n dezvoltarea lor:
redimensionarea produsului n funcie de
posibilitile oferite (scalarea), obinerea
de investiii i ncheierea de parteneriate.
Fiind un program educaional gratuit,
adaptat nevoilor individuale ale echipelor
participante, MVP Academy le-a oferit
startup-urilor acces la resurse educaionale
care s corespund nevoilor proprii de dezvoltare i a facilitat interaciunea direct
a acestora cu mentori cu experien
relevant,cu investitori de tip angel i
reprezentani ai fondurilor de investiii
early stage i programelor de accelerare
din regiune.
Pe parcursul programului, finalitii au
nvat mai multe despre cum dezvoli un
startup de succes, networking, dezvoltarea
de produs & metrici, storytelling & pitching, customer development, finanare sau
aspecte legale participnd la workshopurile practice susinute de profesioniti
consacrai n domeniu. Printre acetia
se numr Bobby Voicu (Co-Fondator,
MavenHut), Paul Renaud (Executive
Coach & autor al A networking book),
B ogdan Rpa (ex-Master Pro duc t
Owner, Adobe Romania), Alex Barrera
(Co-Fondator Tech.eu & Press42), Salim
Virani (Partner, Founder Centric), sau Ana
Maria Andronic (Partner, Biri-Goran).
n plus, startup-urile au beneficiat
de sesiuni de mentorat 1 la 1 cu peste
50 de profesioniti i lideri cunoscui

10

din industrie i au primit feedback i


recomandri de la acetia. Echipele au
avut astfel ocazia s i rafineze produsul
discutnd cu reprezentani ai unora dintre
cele mai cunoscute programe de accelerare

cu Demo Day, eveniment care a adus


mpreun 200 de personaliti de vaz
din ecosistemul tech regional: investitori,
programe de accelerare, antreprenori,
jurnalii i profesioniti cu experien.

la nivel internaional (Techstars London,


Startupbootcamp sau Ignite 100) i cu
profesioniti de excepie printre care se
numr Florin Talpe, Fondator & CEO,
Bitdefender, Olaf Lausen, Chief of Staff
(of the CEO) and Business Development
Director, Telekom Romania, sau Cristi
Badea, Co-Fondator, MavenHut.
La toate acestea se adaug sesiunile
de coaching 1 la 1, discuiile de grup pe
diferite teme, organizate la cererea echipelor participante i sesiunile de pitching
practice n cadrul crora fondatorii i-au
perfecionat pitch-ul lucrnd sub atenta
ndrumare a echipei MVP Academy i a
unor profesioniti de excepie precum Jon
Bradford (Managing Director, TechStars
London) sau Mike Butcher (Senior Editor,
TechCrunch).
Programul s-a ncheiat vineri, 15 mai,

Dousprezece startup-uri au urcat pe scena


Cinematografului Elvira Popescu pentru a
prezenta publicului rezultatele a dou luni
de munc intens, crend astfel ocazia de a
demara discuii cu poteniali investitori i
parteneri strategici.
Dup-amiaza a fost deschis de George
Di, Program Manager MVP Academy,
i a continuat cu un discurs introductiv
susinut de George Lemnaru, Fondator
Green Horse Games, care a mprtit
audienei leciile nvate n timp ce a
dezvoltat dou startup-uri care au primit
finanri de la fonduri de venture capital.
George a discutat despre miturile asociate
cu a fi antreprenor i a ncheiat spunnd
c dac eti determinat i bine pregtit vei
reui, indiferent de ara n care te afli.
Ulterior, startup-urile au urcat rnd pe
rnd pe scen pentru a prezenta audienei

nr. 35/mai, 2015 | www.todaysoftmag.ro

produsele la care lucreaz i progresul


nregistrat n ultimele saptmni. Echipele
care au prezentat n cadrul Demo Day sunt:
1. Accelerole: software de management pay-as-you-go care ajut companiile
s gestioneze cu uurin profesionitii
independeni;
2. Catwalk15: aplicaie mobil care
ajut utilizatorii s primeasc sfaturi vestimentare i s se inspire, oriunde i oricnd;
3. Clepsisoft CyberFog: soluie
proactiv de securitate care deviaz atacurile cibernetice mpotriva companiei tale;
4. CloudHero: PaaS care automatizeaz
procesele de management i scalare ale
unei aplicaii pentru orice tip de public;
5. Conversion Network: software de
marketing integrat care permite marketerilor afiliai s i dezvolte i afacerile fr
efort, cu rezultate mai bune;
6. Inner Trends: soluie de web analytics care permite utilizatorilor s pun
ntrebri i s primeasc rspunsuri precise
i la obiect, imediat. Este un limbaj comun
pentru date i oamenii de business;
7. myDog: platform care ajut stpnii
de cini s ia legtura unii cu alii i s le
ofere astfel ceilor oportunitatea de a se
juca cu ali cei compatibili;
8. SafeDrive: aplicaie mobil care
mbuntete sigurana traficului
rspltind oferii care nu utilizeaz telefonul la volan cu puncte care pot fi apoi
convertite n produse i servicii;
9. Seeds: platform care permite utilizatorilor s creeze, s distribuie i s
analizeze chestionare avansate pentru orice
industrie;
10. Swapr: aplicaie mobil care ajut
femeile s fac schimb de haine n funcie
de locaie i preferinele vestimentare ale
acestora;
11. SwipeTapSell: aplicaie care
mbuntete experiena cumprtorilor,

ajutnd magazinele online s mreasc rata


de conversie de pe smartphones i tablete;
12. Unloq: software care propune
o nou modalitate de autentificare i
autorizare a tranzaciilor care nlocuiete
parolele cu dispozitive, oferind astfel utilizatorilor mai mult siguran, simplu i
gratuit.
MVP Academy a fost o investiie
de timp excelent care ne-a ajutat s
identificm zonele n care trebuie s ne
concentrm pentru dezvoltarea produsului, dar i s ne perfecionm abilitile de
prezentare pentru a exprima cele mai valoroase aspecte ale produsului i startup-ului
nostru. Sunt lucruri eseniale din moment ce
te lupi ntotdeauna pentru a ctiga atenia
audienei , a declarant Tudor Cobla,
Co-Fondator SafeDrive, startup care a fost
recent medaliat cu aur n cadrul Edison
Awards, la categoria Lifestyle & Social
Impact.
La finalul evenimentului, startupurile au avut ocazia s interacioneze n
mod direct cu persoanele din audien

interesate de produsele la care lucreaz i s


demareze astfel discuii despre poteniale
investiii i parteneriate strategice.
Am realizat potenialul uria al startupurilor finaliste nc din perioada de selecie,
atunci cnd am remarcat echipele puternice
din spatele produselor. n ultimele dou
luni, finalitii s-au implicat fervent pentru
a-i crete afacerile i produsele, au lucrat
intens i au sacrificat multe lucruri pentru a
livra bine i rapid. Suntem mndri de fiecare dintre ei i de evoluia lor i ne bucurm
c am reuit s transformm ceea ce ar fi
durat 5-6 luni n mod tradiional n dou
luni intense de progres. Suntem convini c
vom vedea rezultate excelente curnd! , a
declarat George Di, Program Manager
MVP Academy.
Irina Scarlat

irina.scarlat@howtoweb.co
PR Manager
@ How to Web &
TechHub Bucharest

www.todaysoftmag.ro | nr. 35/mai, 2015

11

eveniment

BattleLab Robotica cea mai mare competiie de


megasumo robotic din Transilvania

acultatea de Inginerie Electric din cadrul Universitii Tehnice din Cluj-Napoca n colaborare cu organizaia studeneasc
BEST Cluj-Napoca a organizat n data de 9 mai 2015 cea de-a V-a ediie a competiiei BattleLab Robotica.

Competiia a constat n implementarea


de roboi sumo autonomi, capabili s identifice i s elimine de pe suprafaa de joc
robotul advers n competiii de tip 1 la 1.
n cadrul acestei ediii au participat 27
de echipe de studeni de la universitile
cu profil tehnic din Romnia, care au
muncit luni n ir la realizarea robotului.
Construirea roboilor reprezint un proiect complex care implic att cunotine
de inginerie electric, mecanic ct i de
automatic i calculatoare.
Echipele au fost formate din patru
studeni, competiia respectnd regulile
internaionale de sumo robotic n ceea ce
privete dimensiunile suprafeei de joc i
regulile de desfurare.
Peste 200 de spectatori de toate
vrstele au venit s vad concursul,
susinndu-i favoritul cu pancarte i
aplauze rsuntoare.
Roboii puternici, luptele strnse, multiplele remize au fcut ca spectacolul s se
prelungeasc pn n jurul orei 20.
.I. Dr. Ing. Septimiu Crian, organizatorul evenimentului a afirmat n legtur
cu acest concurs:
n timpul anului abia atept s se
ntmple evenimentul. n ziua concursului
nici nu vreau s-aud de el. i cnd se termin

12

spun: mai vreau o dat!


Pe locul 1 s-a clasat robotul WOLF,
echip care a venit pentru al doilea an
consecutiv tocmai de la Bucureti ca s
participe.
Premiul publicului pentru cel mai
bun design l-au luat acas cei de la
ROBOTROLL. Cel mai viteaz robot a fost
THORQUE, iar premiul Bosch pentru
cel mai inovativ robot a fost ctigawt de
NYAN.
Evenimentul BattleLab Robotica
2015 a fost susinut de companiile partenere: Emerson, Yardi, Bosch,
Garmin, Telenav, TME Polonia, Stratec

nr. 35/mai, 2015 | www.todaysoftmag.ro

Biomedical. Sponsorii au fost: MSG,


Fortech, Accenture, Wenglor, Robofun i
Frequentis.
Premiile oferite au fost n valoare de
peste 7000 lei i au constat n componente
electronice i vouchere cadou.
Ediia de anul urmtor i va deschide
porile pentru participani internaionali i
sper s i cimenteze un loc de renume n
scena mondial de lupte ntre roboi.
Ioana Bucur

ioanabucur1812@gmail.com
Public Relations Responsable
@ BattleLab Robotica

TODAY SOFTWARE MAGAZINE

startups

SprintPoint: un program de preaccelerare clujean care


vrea s te ajute s reueti!

enomenul de acceleratoare de tip seed este n cretere la nivel mondial, cu un numr tot mai mare de programe active, n
special n SUA dar i n alte pri ale lumii. Seed capital, acceleratoarele care ajut cu capitalul iniial, precum Y Combinator,
au primit mult atenie din partea comunitii antreprenoriale i caut mereu startup-uri n faz de lansare. Acest trend a
fost observat de L. Barrehag ntr-un studiu din 2012 despre acceleratoare i trei ani mai trziu, acceleratoarele de tip seed sunt mai
dezvoltate ca niciodat.
Acest lucru mi-a atras atenia asupra pentru livrarea pitch-ului, workshop-uri i tine personal, trebuie s fii capabil()
importanei de a nelege diferena ntre networking profesional.
s gndeti deschis, s fii dedicat() i
un accelerator i un incubator atunci
Programul este creat pentru echipele capabil() s colaborezi, s lucrezi din greu
cnd vrei s intri ntr-un program de dez- de profesioniti i antreprenori care doresc i s nvei de la alii. Aceste caliti sunt,
voltare. O diferen este formulat de Paul s aib propria afacere i le ofer acestora dup prerea noastr, eseniale pentru a
Bricault, cofondatorul unui accelerator din ocazia s pun ntrebri i s nvee de la reui n program.
Los Angeles, care constat c acceleratorul ambasadori i mentori din domeniul tech.
Pentru a-i susine dezvoltarea, pe
ia un capital al ideilor dezvoltate extern, n
Pentru a aplica, echipa selecteaz i parcursul programului SprintPoint vei
schimbul unei investiii i a mentoratului. nscrie ideea pe baza creia se va crea plus- participa la traininguri, la sesiuni de
La finalul celor trei sau patru luni startup- valoare.Gradul de efort pe care echipa l-a coaching i mentorat. Toate acestea vor
ul absolv. Incubatorul aduce o echip depus n conceperea produsului sau ser- avea loc la Cluj HUB, un spaiu modern
extern s lucreze pe ideea unui investitor. viciului pe care vor s l livreze i nivelul de de co-working n centrul oraului. Vei avea
Cu ct ideea necesit mai multe resurse nelegere a pieei pe care vor s o acceseze de asemenea posibilitatea s socializezi
pentru a ajunge la maturitate, cu att capi- se va reflecta n aceast plusvaloare.
cu mentorii i investitorii din program
talul luat crete.
Programul se va derula pe perioada i s participi la diferite evenimente tech,
Pe scurt, incubatorul dureaz mai verii i participanii vor fi iniiai n precum workshop-urile de folosire a platmult i preia mai mult capital n schimbul metodologiile prezentate n dou cri formei FiWare, Transilvania Demo Days,
asistenei, pe cnd programele de acceler- foarte importante pentru orice startup Techsylvania i altele. La finalul programare sunt mai scurte, mai specializate i cer tehnic. Prima este Lean Canvas de ului toate echipele vor avea ocazia s i
mai puin capital la final.
Eric Ries (2011) i cea de-a doua este susin pitch-ul ntr-un Demo Day.
D e ace e a, noi, e chip a St ar tup Disciplined Entprepreneurship: 24 Steps to
Scopul nostru, al Startup Transilvania,
Transilvania, am hotrt s concepem a Successful Startup, de Bill Aulet (2013). este s i artm c nu te nati antreprenor
un program de pre-accelerare care va Mai multe detalii despre cri vei afla n ci poi s nvei s devii unul.
ajuta startup-urile din zona tech i IT din timpul programului.
Cluj-Napoca s i ating potenialul.
Vrem s atragem n program acele
Horia Mircea Boto
incubator@clujhub.ro
Acest program se numete SprintPoint. startup-uri care au dorina de a reui.
n timpul celor opt sptmni ale pro- Pentru a fi eligibil(), trebuie s faci parte
Program coordinator
@ SprintPoint
gramului, echipele vor trece printr-o serie dintr-o echip (nu se poate s aplici n mod
de experiene utile i interesante, precum individual), proiectul vostru trebuie s fie
consiliere i mentorat de echip, pregtire mai mult dect o simpl idee. Ct despre
Our core competencies include:

Product
Strategy

Product
Development

Product
Support

3Pillar Global, a product development partner creating software that accelerates


speed to market in a content rich world, increasingly connected world.
Our oerings are business focused, they drive real, tangible value.

www.3pillarglobal.com

www.todaysoftmag.ro | nr. 35/mai, 2015

13

comuniti

Comuniti IT

inalul lui mai i nceputul lunii iunie se anun plin de evenimente n zona IT-ului romnesc. V invitm s participai la I
T.A.K.E 28-29 mai, ce se va desfura n Bucureti. La Cluj, n 2 iunie are loc o nou ediie a JS Camp, iar n 6-9 iunie are loc
Techsylvania. Ne vedem la evenimente !!!

Transylvania Java User Group


Comunitate dedicat tehnologiilor Java.
Website: www.transylvania-jug.org
Data nfiinrii: 15.05.2008 / Nr. Membri: 599 / Nr. Evenimente: 47
Comunitatea TSM
Comunitate construit n jurul revistei Today Software Magazine.
Websites: www.facebook.com/todaysoftmag
www.meetup.com/todaysoftmag

www.youtube.com/todaysoftmag
Data nfiinrii: 06.02.2012 /Nr. Membri: 2270/Nr. Evenimente: 31
Cluj Business Analysts
Comunitate dedicat analizei de business
Website: www.meetup.com/Business-Analysts-Cluj
Data nfiinrii: 10.07.2013 / Nr. Membri: 91 / Nr. Evenimente: 8
Cluj Mobile Developers
Comunitate dedicat tehnologiilor mobile
Website: www.meetup.com/Cluj-Mobile-Developers
Data nfiinrii: 05.08.2011 / Nr. Membri: 264 / Nr. Evenimente: 17
The Cluj Napoca Agile Software Meetup Group
Comunitate dedicat metodelor Agile de dezvoltare software.
Website: www.agileworks.ro
Data nfiinrii: 04.10.2010 / Nr. Membri: 437 / Nr. Evenimente: 93
Cluj Semantic WEB Meetup
Comunitate dedicat tehnologiilor semantice.
Website: www.meetup.com/Cluj-Semantic-WEB
Data nfiinrii: 08.05.2010 / Nr. Membri: 192/ Nr. Evenimente: 29
Romanian Association for Better Software
Comunitate dedicat oamenilor cu experien din IT indiferent de
tehnologie sau specializare.
Website: www.rabs.ro
Data nfiinrii: 10.02.2011 / Nr. Membri: 251/ Nr. Evenimente: 14
Tabra de testare
Comunitate format din testeri i ali profesioniti din industria
IT care, n cadrul unor ntlniri informale lunare, mprtesc
din cunotinele proprii i nva din experienele profesionale ale
celorlali membri.
Website: www.tabaradetestare.ro
Data nfiinrii: 15.01.2012/Nr. Membri: 1243/ Nr. Evenimente: 107

14

nr. 35/mai, 2015 | www.todaysoftmag.ro

Calendar
Mai 27 (Cluj)
Lansarea numrului 35 al Today Software Magazine
www.todaysoftmag.ro
Mai 27-28 (Cluj)
2 Fast & Curious: Angular JS Basic
https://www.eventbrite.com/e/2-fast-curious-2x2-angularjs-workshops-tickets-16988047708
Mai 28-29 (Bucureti)
I T.A.K.E - recomandat de TSM
2015.itakeunconf.com
Mai 28 (Cluj)
OpenStack Kilo Release Overview
meetup.com/OpenStack-Cluj/events/221754372/
Iunie 3 (Cluj)
Meetup #40 - Enhance your web testing with Fiddler
meetup.com/Tabara-de-Testare-Cluj/events/221508203/
Iunie 3 (Bucureti)
Hands-on Code: Programming by Wishful Thinking
meetup.com/The-Bucharest-Agile-Software-MeetupGroup/ events/222502856/
Mai 28 (Bucureti)
#2 AngularJS Meetup
http://www.meetup.com/Bucharest-Angular-JS-Meetup/
events/221929288/
Iunie 2 (Bucureti)
JS Camp
www.jscamp.ro
Iunie 3-4 (Cluj)
2 Fast & Curious: Angular JS Advanced
https://www.eventbrite.com/e/2-fast-curious-2x2-angularjs-workshops-tickets-16988047708
Iunie 6-9 (Cluj)
Techsylvania - recomandat TSM
www.itcamp.ro

tendine

Cum surprinde Microsoft viitorul?!

n perioada 4 - 8 mai am participat la Microsoft Ignite, un eveniment aflat la prima ediie,


care a reunit peste 23.000 de profesioniti n IT i oameni de business. n cadrul evenimentului, Microsoft a prezentat realizrile din ultima perioad precum i planurile de
viitor pentru cea mai mare parte din serviciile i produsele din portofoliu. Dac te ateptai la
anunuri suprinztoare, atunci te-ai aflat n locul nepotrivit, pentru c nici mcar HoloLens
nu a fost prezentat.
Paul Hrimiuc

paul.hrimiuc@accesa.eu
Business Development Manager
@ Accesa

Discursul de deschidere al lui Satya


Nadella, CEO Microsoft, nu a fost att de
proaspt i de vibrant precum m-am ateptat,
n comparaie cu ceea ce am auzit anul trecut
la Conferina din DC dedicat partenerilor.
Poate c o cauz a dilurii discursului au fost
audiena cu background-uri diferite i multitudinea de subiecte abordate. Dincolo de
reiterarea viziunilor sale Cloud First, Mobile
First, cu care suntem deja familiari, el a subliniat rolul n cretere al profesionitilor IT
de a conduce transformarea n organizaii.
n acest context, consider c transformarea
pe care MSFT o experimenteaz este uimitoare. Chiar oamenii care nu i apreciaz,
pot remarca faptul c numrul de produse
i inovaii MSFT este n cretere. E incredibil pentru o organizaie att de mare,

complex i cu tradiie.
Mai interesant dect discursul inaugural
a fost discursul lui Gurdeep Singh Pall, care
s-a referit la modalitatea n care Windows
10 i propune s abordeze personal computing. Cred c Microsoft a fcut o treab foarte
bun n zona aceasta: n loc s se concentreze
pe device, ei au pus accent pe experiena utilizatorului i au oferit o interfa consistent i
familiar n raport cu toate tipurile de deviceuri. innd cont de afirmaia lui Gurdeep
conform creia device-ul nu este mobil,
utilizatorul este, este de ateptat ca acesta s
fie capabil s lucreze oricnd i de oriunde.
Dac se adaug i Continuum, care faciliteaz
tranziia utilizatorilor ntre interfaa touch i
cea non-touch i Windows 10 Universal App
ca platform de aplicaii pentru developer-i,

www.todaysoftmag.ro | nr. 35/mai, 2015

15

tendine
Cum surprinde Microsoft viitorul?!
atunci rezultatul este ceva
greu de depit. n plus,
nu ar trebui s uitm de
Cortana, asistentul personal, care va fi omniprezent
chiar i n situaiile n care
creezi jocuri sau aplicaii
business.
Noul browser, Edge,
(anterior numit Spartan)
va fi livrat mpreun
cu IE11, care, potrivit
Microsoft, va beneficia de
suport tot atta timp ct
Windows 10. Considerat
a fi mai mult o micare
de marketing pentru a
se detaa de trecut, Edge
ncearc s vin cu noi
funcionaliti care pun
accentul pe aciune i
interaciune (ex: permite luarea de notie) i evalueaz ca perimate
benchmark-urile legate de vitez. Informaiile pot fi, de asemenea,
parcurse mai uor n browser cu ajutorul Reading View (chiar i
offline). Website-urile care se bazeaz puternic pe publicitate, vor
putea alege dac s includ sau nu aceast funcionalitate.
Pe lng acestea, cteva subiecte merit prezentate mai n
detaliu:

Noul Digital Workplace


Generaia Y intr tot mai mult pe piaa muncii: industria IT (i
nu numai) trebuie s accepte acest val i s-l valorifice. Generaia
Y sau Millennials acceseaz i folosete diferit informaia, comunic i colaboreaz diferit fa de generaiile anterioare, iar
aceast atitudine se reflect i n mediul de lucru. Liderii care

One Note (2003), Live Communications Server (2003) numit


Lync mai trziu i, recent, redenumit Skype for Business, OneDrive
(2008), Skype (achiziionat n 2011), Office 365 (2011), Yammer
(achiziionat n 2012) i Delve (2014). Ultimul pare s se integreze
n a patra generaie de tehnologii, aa cum a identificat Gartner
(foto).
Acest aspect creeaz confuzie n contextul n care Microsoft
lanseaz mai multe tool-uri destinate colaborrii, care au
funcionaliti similare sau chiar identice. Prin urmare, utilizatorii devin frustrai i cer clarificri. Confuzia nu se oprete aici;
MSFT tocmai a pierdut o alt disput1 cu Sky n Europa, pe tema
nregistrrii mrcii Skype, problem care se poate amplifica n
timp.
Am participat la cteva sesiuni pe subiectul digital workplace,
dar dou dintre ele s-au difereniat:
2toLead 2 i Cargill, care a adoptat
Yammer (dei, n prezent, Cargill folosete
SharePoint 2007).
n final, constructiv este ca discuia
s se distaneze de modelul tehnologie/tool vs. alt tehnologie/alt tool i
s se concentreze pe identificarea contextului organizaional, a nivelurilor la
care se comunic (individual, de grup,
organizaional) i s se decid cnd i ce
s se foloseasc n funcie de audien i
prioritate.

13 scenarii posibile de utilizare


contientizeaz valorile la care se raporteaz noile generaii tiu
c angajaii motivai, dotai cu instrumentele potrivite pot accelera creterea veniturilor pn la de dou ori i jumtate (http://
www.haygroup.com/en/your-challenges/engaging-your-people).
De aceea, astzi e mai bine s fructifici cunotinele angajailor
punnd accent pe o colaborare interactiv.
Te-ai ntrebat vreodat cum abordeaz Microsoft acest trend?
Rspunsul scurt i confuz este: n moduri infinite.
Microsoft a nceput cu Outlook (1992), SharePoint (2001),

16

nr. 35/mai, 2015 | www.todaysoftmag.ro

Datorit scenariilor din ce n ce mai


diversificate pentru SharePoint on-premise, ne-am nscris n programul TAP, fiind nerbdtori s
primim versiunea 2016 i s vedem ce opiuni avem.
Cum arat viitorul? Grupurile care se autoorganizeaz reprezint principalul concept promovat de toate aceste tool-uri, pe
care le poi integra cu Delve pentru a agrega coninutul. Cum se
1 http://www.windowscentral.com/eu-court-rules-skypes-name-too-similar-skynetwork-claim-trademark

2 http://www.2tolead.com/whitepaper-when-to-use-what-in-office-365

TODAY SOFTWARE MAGAZINE


va ntmpla acest lucru n realitate? Rmne de vzut n urmtorii public i gestiona aplicaiile lor LOB (foto).
ani.
Sfat #1: Dac intenionezi s adopi Yammer la nivel IoT
organizaional, trebuie s tii c adoptarea poate fi accelerat
Majoritatea oamenilor au auzit deja de IoT sau au dezvoltat
crend un grup al creatorilor de grupuri (ambasadori/power- aplicaii pentru IoT. Pe msur ce devine din ce n ce mai tangi-

user-i) care s mprteasc bune practici, s ncurajeze folosirea


tool-ului i s administreze comunitatea. De asemenea, un lucru
necesar este implicarea top management-ului n comunicare.
Sfat #2: Eti interesat s ncerci ceva nou pe lng PowerPoint
sau Prezi? Atunci merit s explorezi i s foloseti Sway (http://
www.sway.com).
Sfat #3: Ia n considerare c tool-uri precum Delve pot fi
percepute negativ la nivel intern din cauza temerilor asociate
cu meninerea confidenialitii documentelor, a conversaiilor.
Pentru a preveni escaladarea temerilor, este important o comunicare puternic cu stakeholder-ii.

Enterprise Mobility

bil i Microsoft avanseaz n aceast direcie. De exemplu, se va


putea rula Windows 10 pe orice device care are putere minim de
computing-Microsoft avnd deja trei versiuni diferite ale sistemului su de operare-acoperind industry devices, device-uri mobile i
chiar device-uri mai mici care pot s ruleze Windows IoT gratuit
(foto).
Desigur, cu platforma Windows 10 Universal ai API-uri puternice care faciliteaz accesul i integrarea de senzori. Microsoft i
propune s ncurajeze consumul suitei Azure IoT, care nu doar
c pstreaz datele colectate, dar cu ajutorul ei se poate folosi
Machine Learning pentru analitice predictive, se poate gestiona
ntreaga reea de senzori i multe altele.
n timp ce consumatorii sunt interesai, n principal, de
aplicaiile specifice locuinei (automatizare, securitate, entertainment), exist nenumrate oportuniti de business care pot
fi explorate i definite n zona IoT. Dou exemple relevante sunt
Connected Cow (http://www.ibtimes.co.uk/connected-cattle-howwearables-cloud-help-farmers-get-their-cows-pregnant-1499220)
de la Fujitsu, monitorizarea comportamentului conductorilor
auto din cadrul companiilor de asigurri.

Dac utilizatorii sunt cei mobile i pentru ei e important s


acceseze informaiile nu numai din birou- i poi imagina un
asistent comercial care lucreaz doar de la birou?!- atunci mobilitatea devine o provocare, mai ales la nivelul unei companii de
mari dimensiuni. Abordarea Microsoft pare s se concentreze n
mod particular pe securizarea datelor indiferent de locaie i s
menin datele companiei sigure. Cu Intune este posibil acum
gestionarea unor device-uri diverse. Folosindu-se Windows 10
Universal App aplicaiile create pot fi instalate pe orice tip device.
Desigur, exist probleme legate de standardizare, o zon unde
Aici, ns, rmne o zon neacoperit deoarece companiile tre- dou noi organizaii lucreaz la definirea unei cooperri eficiente:
buie s construiasc i
s gestioneze aceeai
aplicaie pentru orice
sistem de op erare
mobil. La acest nivel
este punctul n care se
remarc ali provider-i
precum Kony3.
Pn la sfritul
acestui an, adiional
Windows Store, companiile vor putea crea
propriul lor Business
Store sau Company
Portal unde pot descrca aplicaii din
Public Store pentru
utilizare intern i/sau
3 http://www.kony.com

www.todaysoftmag.ro | nr. 35/mai, 2015

17

tendine
Cum surprinde Microsoft viitorul?!

AllSeen i AllJoin. Securitatea este o alt provocare legat de IoT,


dar i aceasta este n curs de rezolvare.
#Sfat: Mai multe informaii despre abordarea DIY (Do It
Yourself?) se pot accesa pe www.windowsondevices.com.
Evaluare personal Microsoft Ignite, pe o scar de la 1 la 5,
unde 1 este cea mai mic not:
Echipa: 5 (oricnd dispui s ajute);
Locaia evenimentului: 4 (lipsa staiilor de tren n apropiere a fcut mai dificil accesul pentru cei cazai ntr-un hotel
care nu era n apropiere);
Disponibilitatea sesiunilor: 4 (multe dintre ele s-au repetat
din cauza spaiului insuficient pentru public);
Calitatea sesiunilor: 4 (m refer la cele business, cteva
introduceri n concepte i-ar fi ajutat pe participani s neleag

18

nr. 35/mai, 2015 | www.todaysoftmag.ro

mai bine tool-urile, mai ales cele noi);


Spaiul expoziional: 3 (nefiind grupai expozanii, a gsi
ceea ce e potrivit pentru tine, ca vizitator, a fost mai dificil);
Meniul: 2 (prea dulce pentru gustul meu i fr prea mare
diversitate).

TODAY SOFTWARE MAGAZINE

programare

Transfer de Date prin NFC

a n cazul multor lucruri pe care le folosim, mbuntim, sau pe care le inovm, experiena mea cu NFC a nceput din
dorina de a gsi o soluie pentru o problem simpl: s nu uit s fac anumite lucruri nainte de a iei din cas, cum ar fi s
m asigur c setez temperatura corect la central. O alt soluie ar fi fost s gsesc ceva care s fac aceste lucruri n locul
meu. Bineneles, mi-am dat seama c aveam i alte idei care mi-ar fi putut simplifica viaa sau care mi-ar putea face fiecare zi mai
distractiv.
Bineneles, mi-am dat seama c aveam i alte idei care mi-ar
fi putut simplifica viaa sau care mi-ar putea face fiecare zi mai
distractiv. De exemplu, mi-ar fi plcut s gsesc o modalitate
de a-mi debloca telefonul fr a-l atinge sau s deschid portiera
prin simpla apropiere de scaunul oferului i multe alte astfel de
dorine. i apoi a aprut NFC, exact ca Mo Crciun, i cteva din
aceste dorine chiar s-au ndeplinit.

Ce este NFC?

Near Field Communication (NFC) reprezint un set de


standarde de comunicare fr fir cu raz scurt, care de obicei
necesit o distan de cel mult 10 cm pentru a realiza o conexiune.
NFC uureaz viaa consumatorilor din lumea ntreag datorit
aplicabilitii sale: simplificarea tranzaciilor i a schimburilor de
coninut digital i conectarea unor device-uri electronice printr-o
simpl atingere. Un alt avantaj este faptul c NFC este compatibil
cu sute de milioane de carduri i cititoare din lumea ntreag.
Tehnologia NFC poate lua multe forme i dimensiuni, dar
cele mai ntlnite sunt Tag-urile NFC (dispozitive pasive) i
smartphone-urile (dispozitive active). Tag-urile variaz ca nivel
de complexitate. Cele simple au memorie puin i un chip radio
ataat de o anten, oferind numai o semantic de tip citit-scris.
Uneori, aceste dispozitive pot fi programate pentru a fi de tip
read-only. Tag-urile mai complexe ofer operaii matematice i
au hardware criptografic pentru a autentifica accesul la un anumit sector. Cele mai sofisticate tag-uri conin sisteme de operare,
permind interaciuni complexe cu codul care opereaz pe tag.
Datele stocate pe tag pot s fie scrise ntr-o multitudine de
formate, dar multe dintre API-uri se bazeaz pe un standard
definit de NFC Forum
numit NDEF (NFC Data
Exchange Format).
Chiar dac aceast
tehnologie este pe pia
deja de civa ani, dup
prerea mea ea nc nu
este folosit la potenial
maxim. Primul telefon cu
sistem de operare Android
i suport NFC a fost lansat

n 2010 (Samsung Nexus S), urmat de Windows in 2012 (Nokia


Lumia 610) i apoi de Apple n 2014 (iPhone 6, numai pentru
Apple Pay).

De ce NFC nu are nc parte de notorietate?


Informaiile de mai sus sunt de ajuns s demonstreze c NFC
se preteaz la o gam vast de utilizri i, prin urmare, ar trebui s
cucereasc un procentaj foarte mare din utilizatori i afaceri. Dar
acest lucru nu se ntmpl. S ncercm s ne dm seama de ce.
Modelele de business timpurii, cum ar fi aplicaiile de advertising i cele industriale nu au avut mare succes, fiind depite
de tehnologii alternative cum ar fi codurile QR, codurile de
bare sau tag-urile UHF, dar avantajul tehnologiei NFC este c
device-urile sunt de cele mai multe ori conectate n cloud. Toate
smartphone-urile pe baz de NFC au acces la aplicaii speciale,
incluznd cititoare de carduri(tag-uri), spre deosebire de infrastructurile tradiionale, care impun un anumit standard (de cele
mai multe ori patentat) pentru fiecare tip de card n parte, de control al accesului sau platforme de pli. Spre deosebire de aceste
cazuri, utilizatorii NFC se pot conecta la un third-party device
NFC, care se comport ca un server pentru orice fel de aciune
(sau reconfigurare).
n urmtoarele paragrafe voi ncerca s analizez avantajele i
potenialul de utilizare al acestei tehnologii din diferite puncte
de vedere.

Perspectiva de business
NFC nu este o tehnologie incredibil de inovatoare. Ca i
Bluetooth sau WiFi, este un standard radio de comunicare wireless. n lumea wireless, cea mai asemntoare tehnologie este
RFID (radio frequency identification). Datorit costurilor mai
reduse de implementare, necesitilor i modificrilor, NFC poate
fi util n foarte multe situaii. Tag-urile NFC au forme diferite,
pornind de la stickere simple pn la cele care se autodistrug
sau care sunt rezistente la ap i condiii meteo extrem de dure.
Capacitatea de citire i scriere difer i ea: de la device-uri care
au doar capacitate de write-once sau read-only, pn la un numr
nelimitat de operaii sau spaiu de memorie protejat prin parol.
Toate companiile care in evidena unor obiecte ar trebui s
aprecieze aceast tehnologie. Vnztorii, companiile de transport,
www.todaysoftmag.ro | nr. 35/mai, 2015

19

programare
Transfer de Date prin NFC
spltoriile care folosesc tag-uri NFC ncorporate n pachete,
haine i alte obiecte de vnzare, se pot folosi de NFC pentru a
ine inventarul tuturor obiectelor.
Un tag de tip smart poate fi introdus n orice flutura. Dac
atingi tag-ul eti redirecionat ctre un site, primeti detaliile unui
contact sau poi chiar accesa CV-ul unui candidat sau o biografie scurt sub form de text sau imagine. Unele mall-uri, chiar
din Romnia, folosesc aceste tag-uri n scopuri publicitare sau ca
gift-carduri, reduceri i chiar organizeaz concursuri de treasure
hunting prin intermediul lor.
Dar de vreme ce suntem n era n care se dezvolt tot mai mult
aa-numitul domeniu al Internet of Things, au aprut soluii i
idei mult mai inovatoare. Companiile folosesc tag-uri pentru a
urmri activitatea angajailor, dar i pentru a estima timpul anumitor task-uri sau pentru a administra concediile. n combinaie
cu NFC, angajaii pot foarte uor s nceap i s termine taskurile proprii din orice punct al companiei s-ar afla cu ajutorul
telefonului, sau, i mai convenabil, pot face asta cnd intr n
birou sau prsesc locul de munc.
Servicii medicale, marketing, pli exist foarte multe
aplicaii i posibiliti. Dar aplicaia mea preferat este un device
care poate fi purtat-de exemplu un inel sau o brar- i prin intermediul cruia se poate debloca sau deschide cu o simpl atingere,
telefonul, ua sau chiar maina personal. Folosit n combinaie
cu un sistem GPS, un modul NFC poate localiza orice, de la
lucruri, la animale de companie pierdute sau chiar persoane.

Care sunt prerile utilizatorilor?

aceste ipoteze mai trziu.

Dar dac eti developer?


Dac nu eti developer de Android sau Windows, ratezi toat
distracia. Sistemul de operare Android a fost primul care a oferit
suportul API pentru a interaciona cu tag-uri NFC i a introdus
noiunea de Beaming un feature care permite datelor s fie
transferate via NFC ctre alte telefoane Android. Acest feature
permite schimbul de bookmark-uri web, informaii de contact,
instruciuni, videoclipuri pe Youtube i altele.

Concluzie
NFC ncepe s cucereasc din ce n ce mai muli utilizatori
n fiecare zi i cu siguran ne putem folosi de aceast tehnologie
n multe domenii. Dezvoltarea aplicaiilor este facil; protocoalele de securitate(NFC Signature RTD 2.0) pentru semnarea i
verificarea integritii datelor sunt acum folosite; tag-urile cu
acces protejat al memoriei sunt disponibile. Prin urmare, nu vd
motive pentru care NFC nu ar trebui s cucereasc piaa n perioada urmtoare. Pcat c Apple pierde toat distracia.Voi ncheia
acest articol aici i v atept ntr-un numr viitor pentru a analiza
mai n amnunt caracteristicile NFC de pe Android.

Bibliografie:
1.
2.

Dac nu lucrezi n domeniul IT sau nu eti foarte pasionat de 3.


astfel de lucuri, probabil c nici nu ai auzit despre aceast tehnologie, cu toate c este disponibil pe pia deja de cinci ani.
Utilizatorii trebuie s afle detalii despre aceast tehnologie.
Dup prerea mea, i mi-e destul de greu s afirm acest lucru din
postura mea de Android developer, probabil c singurul motiv
pentru care aceast tehnologie nu este nc recunoscut i folosit
la scar larg este c nu are susinerea iOS. Apple susine doar
Apple Pay prin NFC i nu exist deloc suport API, nici mcar n
cazul celei mai recente versiuni, iOS 8. Motivul principal pentru
acest spaiu gol se datoreaz, dup cum chiar ei afirm, problemelor de securitate pe care folosirea tag-urilor le ridic. Voi investiga

20

nr. 35/mai, 2015 | www.todaysoftmag.ro

http://nfc-forum.org/
https://developer.android.com/guide/topics/connectivity/nfc/index.
html
http://www.nearfieldcommunication.org/
Larisa Hoga

larisa.hogas@yardi.com
Android Developer
@ Yardi Romnia

programare

Keep Calm and Start playing Dart

Kuki Edina
Tester Senior Analyst

rezentul articol nu-i are ca int pe manageri nu a vrea s le dau idei despre
optimizarea pauzelor recreaionale din birou asigurnd un singur dart i nici pe
extremitii jocului binecunoscut, pentru c nu am cunotine de mprtit despre
darts-ul rusesc. Tema acestui articol vine de la big-brotherul nostru cellalt, adic Dont-beevil Google. Datorit expertizei acestuia n domeniul tehnologiilor web, n octombrie 2011,
Aarhus, oraul lui Bjarne Stroustrup i Lars Bak, s-ar putea s fi fost martor la naterea unui
produs revoluionar al industriei IT, fiind locul unde Dart a fost dezvluit prima oar n faa
publicului larg.
Asemenea oricrui frate responsabil, el
nu doar ne prezint noul su gadget, ci ne
invit i s-l ncercm. Am avut ocazia s
aflm de ce, de unde i cum s ncepem
jocul cu Dart. Iar de la prima iniiere ncoace
fr s l acuzm de arogan cum apare o
versiune mai nou, imediat suntem anunai.
O prima afirmaie important despre
Dart ar fi c nu se refer doar la un limbaj
de programare. Este o platform complet
incluznd un toolchain, obiectivul creia
fiind sprijinirea etapelor de dezvoltare i lansare a aplicaiilor web structurate, scalabile
i care au totodat o performan ridicat.
Dac ar trebui s numim experi n astfel de
aplicaii, fratele nostru cu singuran ar face
parte din ei. Probabil v amintii de browserul lui propriu, Chrome sau de motorul V8
de JavaScript, fiind un urma de onoare a

versiunii asamblate pentru automobile n


ceea ce privete acceleraia i viteza dovedit
n timpul navigrilor pe internet.
Ideea din spatele Dartului este de a
neutraliza discrepana dintre evoluia semnificativ a browser-elor i practicile de startup,
dezvoltare sau mentenan a aplicaiilor web
uor rmase n urm.
Dart este all-inclusive i totui simplu
de folosit, avem parte de tutoriale practice,
precum API i documentaie extinse sau
susinerea comunitii muli dintre programatori au sperana de a-l opri pe JavaScript
din monarhia singuratic a browser-elor.
Toate cele menionate mai sus, separat
sau combinate, au ca rezultate realizarea
mai multor aplicaii web performante, fapt
care impune i mai mult spaiu comercial i
DoubleClick pentru Google.

www.todaysoftmag.ro | nr. 35/mai, 2015

21

programare

Keep Calm and Start playing Dart

Limbajul de programare, Dart, are urmtoarele caracteristici:


este open-source sub licen BSD;
este orientat pe obiecte, permite motenirea simpl i
polimorfismul prin Mixins i implementarea implicit a
interfeelor;
este gndit cu o singur ramur de execuie i ofer Isolates
pentru realizarea operaiilor concurente, interacionnd exclusiv prin mesaje fr s foloseasc zone comune de memorie;
prefer Future-ul pentru a gestiona eficient procesele asincrone i a preveni blocarea aplicaiei de ctre operaii care
necesit mult timp;
este lexically-scoped, tipurile de baz sunt opionale, existnd i tipuri speciale ca Generics (tipuri parametrizate) i
Iterables;
ofer un set impozant de biblioteci de baz i creeaz premisele unei accesri mai facile a package-urilor provenite de
la teri;
fiind conceput pentru adoptare masiv, deine o sintax
familiar att pentru utilizatorii de limbaje scripting ct i pentru cei obinuii cu limbajele structurate;
se claseaz ca o alternativ recomandat pentru proiectele
n care transparena, structura sau ritmul ridicat de dezvoltare erau considerate doar avantaje; propune o schimbare din
quick-and-dirty n quick-and-darty.
Putem opta pentru editorul nativ Dart Editor sau putem
alege un plugin, pe care s-l integram n IDE-ul cu care suntem
deja obisnuii cum ar fi WebStorm, IntelliJ sau Eclipse.
n ambele cazuri vom avea acces la unelte folositoare din kitul de dezvoltare Dart care pot fi lansate de la linia de comand:
pub package manager pentru a lucra n mod simplu i
rapid cu pachetele third-party;
dart2js compilatorul Dart-to-JavaScript, optimizat cu
tree-shaking, minificare opional, inferena tipurilor, ca la
sfritul dezvoltrii, aplicaia s fie lansat cu uurin n oricare alt browser dect Dartium. n cazul n care aveam nevoie
de debugging, ne st la dispoziie maparea surselor, adic a
codului dart, chiar i n Mozilla sau Internet Explorer;
observatory unelt de profiling, pentru a verifica comportamentul aplicaiei n ceea ce privete performana i utilizarea
memoriei interne;
dartfmt pentru a formata codul n mod automat, conform conveniilor din Dart Style Guide;
docgen generator de documentaie pentru pachetele
Dart.
Maina virtual Dart VM poate fi folosit pentru a rula
aplicaii de la linia de comand, scriptur-i pe servere, servere sau
alte aplicaii Dart, care nu ruleaz neaprat n browser. Dart VM
a fost extins recent pentru a folosi instruciuni SIMD(SingleInstruction Multiple-Data). Lund in considerare ca n ultimele
procesoare aprute 30% din silicon este destinat instruciunilor
SIMD, ca de exemplu NEON i vectori, maina virtual Dart
profit de mai mult spaiu de execuie, reflectndu-se ulterior n
primul rnd la performana aplicaiei.
n fazele de dezvoltare este recomandat folosirea lui
Dartium, o versiune special de Chromium, avnd Dart VM
integrat. Se poate rencrca codul/pagina n loc de a-l recompila- este vorba despre nc un feature a lui Dart care ne ajut s
obinem un timp mai scurt de dezvoltare, testare i debugging.
Lista este mult mai lung, dar singurul lucru de care nu

22

nr. 35/mai, 2015 | www.todaysoftmag.ro

trebuie s uitm, e c Dart trece prin mbuntiri continue n


ceea ce privete limbajul, uneltele, stabilitatea i rezultatele de
benchmarking.
Sun puin utopic? Dont be evil, citete mai departe.

Atta vorbrie, unde este codul?


Orice aplicaie scris n Dart va conine cel puin:
un fiier Dart fiind alctuit din operaii Dart i avnd
extensia .dart;
o funcie main() care servete ca punct de pornire a
aplicaiei.
Difereniem dou tipuri de aplicaii Dart: cele pornite de la
linia de comand i cele rulate din browser.
O aplicaie Dart de tip command-line este un program independent care va fi rulat cu ajutorul mainei virtuale Dart VM
ntr-o fereastr de consol. Aplicaia Dart scris pentru web
va fi gzduit n cadrul unui document HTML i rulat fie din
browser-ul Dartium, avnd Dart VM integrat, fie din oricare alt
browser modern dup compilarea codului in JavaScript numit
n prezent i limbajul de asamblare a browser-elor.
Aspectele arhitecturale de baz pot fi aadar urmtoarele:

Fig.1 Aplicaie tip command-line executat din Dart VM

Fig.2 Aplicaie tip web rulat din Dartium

Fig. 3 Aplicaie Dart compilat n JS i rulat din orice alt browser modern

S ptrundem mai detaliat ntr-un program Dart:


import dart:async;
import dart:io;
class Counter // fiecare clas este motenit din
Object, implicit
{
var _toCount; // dac numele ncepe cu _, va fi
implicit privat
num counted;
// Funciile Get i Set(dac este cazul) vor fi
furnizate implicit
// Zahr sintactic pentru iniializarea variabilei

TODAY SOFTWARE MAGAZINE


_toCount
// nainte de apelarea constructorului
Counter (this._toCount);
// Un exemplu a unui Named-Constructor
Counter.stave (String text, String s) {
for (var char in text.split()) {
if (char.toLowerCase() == s.toLowerCase())
counted++;
}
}
// Definiia unei metode, n care - fiindc
returneaz o expresie // return-ul poate fi nlocuit cu =>
void printCounted() => print($_toCount occurred
$counted times.);
};
// Funcia top-level servete ca punct de pornire a
aplicaiei
main() {
// Declararea i iniializarea variabilelor
var stave = S;
File file = new File (Keep_Calm.txt);
// Calculele care pot dura mult timp
// vor fi gestionate n mod asincron, folosind Future
Future future = file.readAsString();
future.then((String content) {
var sCounter = new Counter.stave(content, S);
sCounter.printCounted();
})
.catchError((e) {
print (Counter encountered $e error!)
});
}

De asemenea, avem acces la pachete pentru testare i mocking,


la Chrome pentru testare folosind linia de comand. Recent a
aprut suport nativ pentru integrare-continu folosind drone.io.
O prim ediie a lui Dart de asociaia Ecma International a
fost acceptat n mai puin de trei ani de la apariia acestuia. A
obinut un loc n topul 20 al celor mai populare limbaje. Conform
Tiobe Index, Dart a a ajuns nc n toamna anului trecut n faa lui
F# de la Microsoft sau a Swift-ului de la Apple.

n scurt timp va avea loc primul Dart-Summit n San


Francisco, unde vom putea afla tirile cele mai actuale referitoare
la strategia de lung durat, la angajamentul fa de platforma
Dart, precum i noutile i ideile inovatoare despre cum putem
s folosim Dart n producie.
Pn atunci, lsai deoparte cititul i ncepei s jucai Dart!
Singuri sau ntr-un hackathon mpreun cu echipa, resursele
disponibile on-line i comunitatea activ pe G+, github i stackoverflow, ne ajut s intim i s nscriem cu un singur Dart. Nu
ezitai, vizitai: dartlang.org, dartosphere.org, g.co/dartisans

Dart are o sintax familiar. n cele cteva linii de mai sus se


vede cum sunt puse n practic ideile unui viitor Dart.
Am folosit dou biblioteci de baz, io si async, constructorul
cu nume, sintaxa fat-arrow pentru a obine funcii mai suple,
interpolare de string-uri i cteva lucruri interesante n jurul lui
then. Procesarea de evenimente asincron din Dart, se poate face
n modul urmtor: declanm o operaie, prin metoda then()
ne nregistrm la un callback care va fi apelat dup terminarea
operaiei i tot n cadrul funciei then() pregtim instruciunile
care la rndul lor ateapt rezultatul operaiei. Aadar, totul are
loc ntr-un context lexical restrns.
n afar de I/O i procesare asincron alte biblioteci utile din
SDK sunt: core, html, math, mirrors, isolate, indexed_db, collection, web_gl sau web_sql.

www.todaysoftmag.ro | nr. 35/mai, 2015

23

programare

Introducere n Couchbase - soluie


NoSQL bazat pe Documente

Alexandru Objelean

alexandru.objelean@betfair.com
Senior Developer
@ Betfair

n prezent, industria IT abund de termeni precum NoSQL, Big Data sau NewSQL.
De multe ori, persoanele cu putere decizonal au dificulti n alegerea soluiei
potrivite. n condiiile n care soluiile clasice - bazele de date relaionale sunt folosite de mai bine de dou decenii, de ce ar trebui ncercate soluiile alternative? Marile
companii apeleaz deja de civa ani la soluiile alternative ceea ce le permite s economiseasc bani, s inoveze rapid i s ajung cu produsele finale pe pia mult mai
repede dect o fceau nainte. Scopul acestui articol e s prezinte soluia NoSQL bazat
pe documente, care este Couchbase. Pe lng detaliile tehnice se vor gsi i motivele
pentru care aceast tehnologie merit s fie aleas i cteva exemple de proiecte n care
Couchbase este folosit cu succes.

De ce NoSQL?

Un a d i n c e l e m ai i mp or t ant e
decizii luate de arhiteci, ine de
alegerea tehnologiei potrivite pentru rezolvarea problemelor specifice produselor ce
urmeaz a fi dezvoltate. n acest context,
cnd vine vorba de alegerea ntre o baz
de date relaional i o soluie NoSQL, este
important s se ia n considerare cteva
aspecte importante.

Natura datelor
Modelul relaional este foarte potrivit
pentru datele ce au o structur tabular,
cum ar fi un registru contabil. Datele
complexe, care conin multe nivele de
imbricare, sunt mai greu de modelat folosind structuri bidimensionale. n astfel
de cazuri, alegerea bazelor de date de tip
NoSQL pare a fi potrivit, pentru c datele
pot fi stocate n formatul JSON. Acest format este suportat de marea majoritate a
tehnologiilor NoSQL.
Un alt aspect l reprezint volatilitatea
datelor. Este important s se tie ct de des
se va schimba i va evolua modelul de date

24

nr. 35/2015 | www.todaysoftmag.ro

. De cele mai multe ori, modelul de date nu


este bine definit de la nceput i flexibilitatea este necesar. Rigiditatea modelului de
date este una dintre potenialele probleme
pe care o putem avea cu baze de date
relaionale.

Eficiena de dezvoltare
Agilitatea i rapiditatea de dezvoltare
sunt caracteristicile cele mai importante n
cadrul unui proces de dezvoltare. n acest
sens, tehnologiile NoSQL i-au demonstrat avantajul. Folosirea formatului de
tip JSON pentru modelarea datelor, le d
posibilitatea programatorilor de a elabora
versiuni iniiale ale produselor ntr-un
timp mult mai scurt.

Probleme operaionale
Creterea volumului de date i a numrului de utilizatori, duce la degradarea
performanei. Unica soluie oferit n astfel
de cazuri de ctre tehnologiile relaionale,
este bazat pe scalare pe vertical
(hardware) care este foarte costisitoare.
Pe de alt parte, tehnologiile NoSQL ofer

TODAY SOFTWARE MAGAZINE


posibilitatea de a scala pe orizontal, prin adugarea mai mul- serverele din cluster i rezultatele gsite pe toate nodurile sunt
tor servere care, dei nu sunt foarte performante, nu necesit agregate ntr-un singur rspuns i trimise napoi la client.
investiii la fel de mari ca n primul caz.
Pentru operaia de scriere, Couchbase ofer un mecanism de
modificare bazat pe chei. Clientul trimite o solicitare de modiStocarea i analiza datelor
ficare, n care e trimis att documentul modificat ct i cheia
Modelele de date relaionale sunt potrivite pentru interogri asociat documentului. Serverul trimite rspuns solicitrii clisofisticate de date i reprezint o alegere bun cnd interogarea entului imediat ce documentul este salvat n memoria nodului
complex i crearea de rapoarte este critic.
primar (responsabil de gzduirea acelui document), ceea ce faciAnaliza n timp real a datelor operaionale este mult mai liteaz obinerea unei latene mici pentru operaiile de scriere.
potrivit pentru tehnologii NoSQL.

Ce este Couchbase

Couchbase Server este o baz de date NoSQL bazat pe documente pentru aplicaii web interactive. Aceasta ofer avantajele
clasice unei soluii NoSQL, cum ar fi flexibilitatea modelului de
date, uurina , performana i capacitatea de a oferi disponibilitate 100%.
Couchbase a aprut ca urmare a mbinrii a dou tehnologii
populare NoSQL:
Membase - ce ofer persisten, replicare i partiionare
folosind tehnologia performant memcached.
CouchDB - care a fost iniiatorul folosirii formatului JSON
pentru modelarea datelor.

Caracteristicile principale
Model de date flexibil

Performan predictibil

Designul Couchbase-ului este centrat pe concuren


performan i randament (throughput) ridicat. Acesta ofer
timp de rspuns de ordinul milisecundelor, ceea ce mbuntete
experiena utilizatorului final. De asemenea, serverul distribuie
automat procesarea la toate nodurile din cluster pentru a menine
performana constant i a reduce ncrcarea excesiv a unui singur nod.

Fiabilitate i securitate
Couchbase ofer posibilitatea de a controla accesul la date pe
baza combinaiei username/parola. Credenialele sunt transmise
ntr-un mod securizat prin reea. Datele senzitive sunt protejate
n timpul transmiterii de la client la aplicaie i viceversa.
Fiabilitatea Couchbase-ului este dat de faptul c nu exist
un singur nod care ar putea provoca indisponibilitatea sistemului, atta timp ct datele sunt replicate pe mai multe noduri.
Funcionalitile precum XDCR (Cross Data Center Replication),
failover, backup i restore ajut asigurarea unei disponibiliti a
sistemului n cazul unor probleme neprevzute, fie la nivel de nod
sau de centru de date.

Couchbase folosete documentele n formatul JSON pentru


reprezentarea obiectelor aplicaiei i a relaiilor dintre obiecte.
Acest model e suficient de flexibil pentru a suporta schimbri
ulterioare ale obiectelor fr a fi necesar migrarea schemei bazei
de date sau planificarea unei perioade de mentenan ce ar putea
perturba disponibilitatea aplicaiei. Un alt avantaj al modelului Concepte Cheie
bazat pe document este uurina cu care pot fi reprezentate obiectele din lumea real, cu posibilitatea de a folosi mai multe nivele Couchbase - soluie de stocare pe baz de documente
de imbricare, precum i folosirea atributelor pentru a reprezenta
Unitatea de baz de stocare n Couchbase Server o reprerelaiile dintre obiecte.
zint documentele. De cele mai multe ori, formatul preferat este
JSON, ceea ce permite aplicaiilor s modeleze datele fr s aib
Scalabilitate
constrngeri specifice modelelor de date relaionale, legate de
E foarte uor s scalezi aplicaia folosind Couchbase Server, flexibilitatea modelului. Aceasta se datoraz faptului c datele
att n cadrul unui cluster de servere ct i la nivel de cluster-e sunt stocate sub form de documente, nefiind necesare migrri
aflate n centre de date diferite. Se pot aduga noduri noi pen- de scheme.
tru a ntmpina nevoia de a face fa unui trafic crescut specific
Coninutul documentelor poate fi i n alt format dect JSON
perioadelor de vrf. Ce e i mai important, adugarea de servere -cum ar fi date binare- , dar avantajele folosirii formatului JSON
nu necesit ntreruperea operaional a aplicaiei sau schimba- sunt posibilitatea de a indexa i a interoga datele. Couchbase ofer
rea codului aplicaiei. Noile servere pot prelua traficul adiional un motor de cutare bazat pe JavaScript ce permite cutarea datei pstrez distribuia echilibrat a datelor. Couchbase ofer o lor bazate pe valorile cmpurilor din documente.
partajare automat i rebalansare a datelor, ceea ce permite redimensionarea cluster-ului n funcie de nevoile aplicaiei.

Uurina integrrii
Couchbase ofer o suit de librrii pentru diverse limbaje de
programare cum ar fi: Java / .NET / PHP / Ruby / C / Python /
Node.js. Aceste librrii faciliteaz integrarea soluiei n orice tip
de aplicaie.
Pentru operaia de citire, Couchbase ofer un mecanism de
cutare bazat pe chei. Clientul cere un document pe baza unei
chei i doar serverul responsabil de gzduirea partiiei n care se
afl cheia, va fi contactat.
Couchbase ofer i un mecanism de cutare bazat pe interogarea unui index (View). Cutarea este distribuit la toate

Couchbase Data

www.todaysoftmag.ro | nr. 35/mai, 2015

25

programare
Introducere n Couchbase - soluie NoSQL bazat pe Documente
Data Buckets
Datele sunt stocate n cluster-ul Couchbase folosind aa numitele Data Buckets. Buckets-urile sunt containere virtuale izolate,
ce formeaz un group logic de date n cadrul unui cluster. Un
Bucket este echivalentul unei baze de date. Bucket-urile ofer un
mecanism securizat de organizare, configurare (memorie, numrul de replici, etc.) i analiz a datelor stocate.

vBuckets
Un vBucket este o entitate logic responsabil de un subset
din spaiul de chei ale unui cluster Couchbase, fiind folosite pentru distribuia uniform a informaiei n cluster. Acestea sunt
responsabile att de distribuia datelor ct i de suportul replicilor
pe mai multe noduri.
Fiecare identificator de document (cheie) aparine unui
vBucket. O funcie de mapare este folosit pentru determinarea
vBucket-ului de care aparine un document. Aceast funcie ia
ca parametru ID-ul documentului i returneaz un identificator
de vBucket. Odat calculat, se consult un tabel ce ine maprile
dintre vBucket-uri i nodurile gazd. Acest tabel conine un rnd
pentru fiecare vBucket. Un server poate fi responsabil pentru mai
multe vBucket-uri.

Arhitectura

Couchbase a fost construit de la nceput cu fundamentele


bazate pe o arhitectur distribuit, datele partiionate pe toate
nodurile disponibile din cluster.
ntr-o configurare tipic, o baz de date Couchbase este
instalat ntr-un cluster ce folosete mai multe noduri. Librriile
client se vor conecta la nodurile responsabile de datele cu care
interacioneaz clientul.
Pentru a facilita scalarea pe orizontal, Couchbase
utilizeazpartiionarea bazat pe un hash care asigur distribuia
uniform a datelor pe toate nodurile. Sistemul definete 1024 de
partiii (numr fix) i odat ce pentru cheia unui document se
calculeaz un hash asociat unei partiii - aceast partiie devine
gazda documentului. Fiecare partiie are asignat un nod din cluster. Dac topologia cluster-ului se schimb (un nod adugat sau
eliminat), sistemul se rebalanseaz prin migrarea partiiilor de la
un nod la altul.

Chei i metadate
Toate datele salvate n Couchbase reprezint documente cu
chei asociate. Cheile reprezint identificatori unici per document,
iar valorile pot fi documente n format JSON sau un stream de bii
sau alte obiecte serializate ntr-o alt form.
Cheile sunt cunoscute i ca ID-uri de documente i reprezint
similarea un chei primare n SQL. O cheie poate fi format din
orice caractere i trebuie s fie unic.
Toate documentele conin metadate. Metadatale sunt stocate
mpreun cu documentele i sunt folosite pentru administrarea
acestora. Ele sunt de trei tipuri:
CAS Value - o form de baz de concuren optimistic;
Time to Live (ttl) timpul de expirare a unui document;
Flags - o varietate de opiuni folosite la stocare, extragere,
modificare i tergere de documente;

Couchbase SDK

Cunoscut i sub numele de librrii-client, acesta reprezint


uneltele de dezvoltare pentru diverse limbaje de programare. Sunt
responsabile de comunicarea cu un Couchbase Server i ofer
interfee specifice limbajelor de programare necesare pentru a
efectua operaii pe baza de date. Librriile-client tiu s citeasc
i s scrie datele direct de pe nodul primar. Odat cu schimbarea
topologiei, librriile-client redirecioneaz solicitrile ce urmeaz
ctre noile noduri gazd.

Couchbase SDK

26

nr. 35/mai, 2015 | www.todaysoftmag.ro

vBuckets

Nu exist o singur verig slab n sistem, deoarece toate


nodurile dintr-un cluster sunt egale. Fiecare nod este responsabil doar de un set de date care i-au fost asignate. Toate nodurile
dintr-un cluster ruleaz dou procese primare: data manager i
cluster manager. Data manager-ul este responsabil de administrarea datelor din partiiile acelui nod, n timp ce cluster manager
se ocup de operaiile de comunicare ntre nodurile cluster-ului.
Reziliena sistemului este posibil datorit replicrii de documente. Procesul cluster manager coordoneaz comunicarea dintre
datele replicate cu alte noduri din cluster, iar procesul data manager supervizeaz replicile ce sunt asignate de ctre cluster ctre
nodul local. n mod natural, partiiile replicate sunt distribuite pe
mai multe noduri, astfel nct s se evite situaia n care partiiile
replicate sunt stocate pe acelai nod ca cele active.

Resilience

TODAY SOFTWARE MAGAZINE


Documentele sunt situate n Bucket-uri i documentele dintrun Bucket sunt izolate de documentele din alte Bucket-uri din
perspectiva operaiilor de cutare i interogare. Cnd se creaz
un nou Bucket, este posibil configurarea numrului de replici
(maxim trei) pentru acest Bucket. n cazul indisponibilitii unui
nod (server crash), sistemul va detecta problema, va localiza replicile documentelor ce au fost plasate n acel nod i le va promova
la statusul de activ. Sistemul menine o mapare de cluster care
definete topologia cluster-ului, iar acest mapare este modificat
la fiecare problem aprut ce afecteaz nodurile din cluster.
Aceast funcionalitate se bazeaz mult pe implementarea
librriilor-client folosite de aplicaiile ce necesit interacionarea
cu un server Couchbase. Clienii sunt ntr-o comunicare continu cu nodurile din cluster. Acetia extrag maparea actualizat a
clusterului, dup care redirecioaneaz cererile ctre noile noduri
ca urmare a schimbrii topologiei. De asemenea, clienii particip
la balansarea load-ului de request-uri emise spre baza de date.
Procesul responsabil de balansarea load-ului este i el distribuit
ntre mai multi clieni.
Schimbrile de topologie sunt coordonate de ctre un
orchestrator, care nu este altceva dect un nod ales s joace
rolul arbitrului n cazul schimbrilor de configurare din cluster.
Schimbrile de topologie sunt comunicate ctre toate nodurile
din cluster. Chiar i n cazul n care nodul orchestrator devine
indisponibil, un alt nod poate fi ales pentru a prelua rolul de arbitru pentru a asigura funcionarea nentrerupt a sistemului.

Interogarea datelor
Exist dou abloane de interogare a datelor din Couchbase.
Cel mai eficient este bazat pe interogarea de chei. Dac este
cunoscut cheia documentului cutat, complexitatea cutrii
unui astfel de document este de O(1). Este de asemenea posibil cutarea documentelor multiple folosind operaia multi-get.
Extragerea documentelor multiple este foarte eficient n cazul n
care aplicaia client are de a face cu o list de documente, deoarece numrul de interaciuni este redus la minim.
Un alt ablon de interogare a datelor este bazat pe aa
numitele View-uri, cunoscut i sub numele de index. Acestea
reprezint un mecanism folosit pentru interogarea de date din
Couchbase. Pentru a defini un View, se creeaz un document specific numit design document, care conine un cod JavaScript ce

implementeaz operaiile de map-reduce. Design document-ele


sunt legate de un anumit Bucket, ceea ce nseamn c interogrile
nu se pot efectua pe mai multe Bucket-uri. Consistena eventual
joac un rol important n cadrul View-urilor. Adugarea, modificarea sau tergerea unor documente dintr-un Bucket nu produce
schimbri ce sunt vizibile imediat.
Parametrii de interogare ofer posibilitatea de filtrare a unui
index. Spre exemplu, se poate defini o cutare ce returneaz un
singur document sau un set de documente aflate ntr-un interval.
Indexii din Couchbase sunt actualizai incremental. O modificare nu produce reconstrucia ntregului index. Modificrile
implic doar acele documente care au fost adugate sau terse
de la ultima modificare. Un index se poate configura n anumite
circumstane. Spre exemplu, dup un interval de timp sau cnd
un numr de documente au fost actualizate.

Performana
Performana trebuie msurat folosind scenariile similare
unui mediu din producie. Acest lucru poate ajuta s nelegem
caracteristicile performanei pentru anumite tipuri de situaii i s
alegem tehnologia potrivit pentru cerinele aplicaiei dezvoltate.
Unul dintre testele de performan de referin pentru compararea tehnologiilor NoSQL este YCSB (Yahoo Cloud Serving
Benchmark). Scopul acestuia este s se canalizeze asupra testrii
diverselor tipuri de baze de date i asupra analizei performanei.
YCSB este open-source, extensibil, are un numr mare de conectori pentru diverse tipuri de tehnologii, este reproductibil i
compar latena vs randament (throughput).

Reads P99

www.todaysoftmag.ro | nr. 35/mai, 2015

27

programare

Introducere n Couchbase - soluie NoSQL bazat pe Documente


Toate operaiile de citire/scriere sunt executate pe nodurile
primare.

Monitorizare
Couchbase Server include un set complet de statistici i
informaii de monitorizare. Statisticile sunt oferite prin intermediul interfeelor de administrare. Una dintre ele este consola de
administrare web, care include grafice n timp real a datelor de
performan.

Writes P99

Rezultatele au artat c tehnologia Couchbase ofer latena


cea mai mic i throughput-ul cu valori mai mari prin comparaie
cu tehnologiile concurente.

Performan i consisten
Pentru asigurarea consistenei, este important execuia
operaiilor de citire/scriere pe nodurile primare. Soluiile NoSQL
ce se bazeaz pe un singur nod primar sunt limitate din punct de
vedere al performanei, deoarece clienii nu pot folosi la capaciMonitor Graph
tate maxim celelalte noduri aflate n cluster. Prima alternativ
Statisticile sunt mprite n mai multe grupuri, permind
este de a efectua operaia de citire pe toate nodurile (att primare identificarea diferitelor tipuri de probleme:
ct i secundare). n acest caz, performana de citire este foarte
Per Nod - indic utilizarea de procesor, memorie, I/O pe
bun, ns nu mai este garantat consistena pentru c replicarea
fiecare server din cluster;
datelor este asincron. A doua alternativ este replicarea sincron
Per vBucket - indic statisticile de utilizare i datele de
care asigur consistena datelor, ns contribuie la degradarea
performan pentru fiecare vBucket;
performanei.
Per cozi de disc - monitorizeaza cozile folosite pentru citirea i scrierea informaiilor pe disc i ntre replici. Poate fi util
pentru a vedea dac cluster-ul necesit extindere prin adugare
de noduri noi.

Exemple
Activitatea utilizatorului n timp real
Evenimentele legate de activitatea utilizatorului sunt consumate de un sistem de messaging (kafka) pentru a stoca informaiile
relevante n Couchbase. Acest serviciu este capabil s rspund
n timp real la urmtoarele ntrebri: cnd un anumit utilizator
Single Primary Node
a fost activ ultima dat? A jucat vreodat un anumit joc? Toate
Prin comparaie cu prima abordare, Server-ul Couchbase asi- interogrile pe acest serviciu se execut extrem de rapid. Bazat pe
gur consistena datelor. De asemena, acesta execut operaiile de rspunsuri la aceste ntrebri, alte aplicaii sunt capabile s segcitire doar pe nodurile primare pentru asigurarea consistenei. menteze clienii pentru diverse flow-uri de business.
Singura diferen este c toate nodurile sunt utilizate la capacitate
maxim, pentru c fiecare nod este primar pentru un subset de Stocarea preferinelor utilizatorului
partiii de date.
Stocarea diverselor informaii despre preferinele utilizatorului ce pot fi folosite ntre mai multe produse ale unei aplicaii web.
Aceast soluie poate fi folosit ca alternativ la folosirea sesiunii
HTTP, cookie-urilor sau stocarea n baze de date relaionale.

Managementul de promoii i monitorizarea progresului

Multiple Primary Nodes

28

nr. 35/mai, 2015 | www.todaysoftmag.ro

Promoiile sunt necesare pentru atragerea clienilor pentru a


folosi diverse produse bazate pe criterii de calificare predefinite.
Pe lng stocarea promoiilor definite, sunt stocate i documente
care monitorizeaz progresul fiecrui utilizator care a optat pentru o anumit promoie. Sistemul este capabil s identifice n
timp real dac un utilizator a ndeplinit toate cerinele promoiei
i dac acord diverse tipuri de premii configurate per promoie.

TODAY SOFTWARE MAGAZINE


Concluzii
Folosirea exploziv a internetului, creterea volumului de
date procesat de aplicaiile moderne, natura diferit a datelor,
necesit o analiz foarte atent pentru alegerea tehnologiei responsabil de stocarea datelor. Folosirea unei tehnologii NoSQL
poate fi o decizie bun n cazul n care este necesar un model
flexibil de date, suportul pentru un numr foarte mare de utilizatori concureni, scalabilitatea i performana sunt aspecte critice
pentru a rspunde cerinelor de business.
Couchbase este un juctor important n piaa tehnologiilor
NoSQL. Acesta se comport excelent n situaiile unui load
masiv att la citire ct i la scriere, oferind posibilitatea unei scalri facile prin adugare/eliminare de noduri din cluster n funcie
de nevoile aplicaiei. Arhitectura i designul acestei tehnologii
garanteaz consisten datelor i a performanei foarte bune n
acelai timp. Testele au artat c aceast tehnologie este lider pe
piaa soluiilor similare. Dei nu se poate spune c aceast tehnologie e potrivit pentru orice problem, Couchbase poate fi o
soluie foarte bun pentru anumite tipuri de aplicaii.

Resurse
1.
2.
3.
4.
5.
6.
7.
8.

RDBMS vs NoSQL;
Couchbase Server Architecture Review;
Betfair plus Couchbase;
Couchbase blows competition;
Couchbase performance benchmarking;
No SQL performance series;
10 enterprise usecases for Couchbase;
MongoDB vs Coucbase showdown.

www.todaysoftmag.ro | nr. 35/mai, 2015

29

testare

Portretul unui tester bun

otul ncepe cu dorina de a reui


A deveni un tester bun nu nseamn a ajunge la o destinaie, ci mai
degrab a te afla n mod constant ntr-o cltorie pe trmuri noi.

Daniela Crian

daniela.crisan@isdc.eu
Senior Tester
@ ISDC Romania

Este important
s dezvoltm aptitudini care ne vor
ajuta s nelegem
fe lu l n c are s e
abordeaz testarea software-ului.
Aceste aptitudini ne
ajut s dobndim
credibilitate i s
ctigm respectul
altor profesioniti
implicai n dezvoltarea software.
Cu o baz solid de aptitudini i
competene avem o ans mai mare de a
reui n ceea ce facem: vom fi capabili s
oferim produse mai bune, i n sfrit, vom
avea clieni i utilizatori mai satisfcui.

Ce este un tester?

Un tester este o persoan care tie c


lucrurile pot fi diferite. Jerry Weinberg
O persoan care este n msur s
descopere informaii extrem de relevante
ntr-un mod rapid cu privire la un produs,
care folosete la maxim orice resurs care
este disponibil pentru el/ea i care respect
oamenii implicai n proiect. Este o persoan n care se poate avea ncredere. Ilari
Henrik Aegerter
Definiiile de mai sus ale unui tester, ne amintesc faptul c testarea ine de
gndirea critic i de creativitate. Testarea
nu nseamn s crezi tot ce se vede, ci n
permanen s continui s pstrezi un spirit de investigaie. Prin urmare, dorina
noastr de-a reui i de-a deveni buni testeri, se reflect n ctigarea respectului i
ncrederii echipei noastre. Noi nu suntem
acolo doar la vntoare de greeli, ci suntem acolo pentru a ctiga ncrederea c

30

nr. 35/2015 | www.todaysoftmag.ro

noi suntem gardienii care asigurm calitatea unui produs i satisfacia clientului.

CE face un tester?

Testarea nseamn punerea sub semnul


ntrebrii a produsului cu scopul de a-l evalua. James Bach
Aceast definiie a testrii include unul
din cele mai importante aspecte ale testrii: identificarea i livrarea informaiei.
Testarea presupune dezvluirea necunoscutului. n cazul n care calitate nseamn
valoare pentru o persoan (aa cum a fost
definit de Weinberg), atunci testarea presupune descoperirea oricrui lucru care
amenin aceast valoare. Pentru a descoperi care sunt ameninrile, un tester
trebuie s fie capabil s realizeze o varietate de activiti, cum ar fi un review al
cerinelor, s adresezez ntrebri bune i s
interacioneze cu produsul astfel nct s
identifice orice informaie util i posibile
riscuri.
Avnd aceste definiii, vom prezenta
cele mai dorite aptitudini i ce ne face pe
noi s fim buni testeri.
Dup ce am citit opiniile unor experi
n domeniu (James McCaffrey, Tony Bruce,
Jennifer Lent, Lorinda Brandon, Ilari
Henrik Aegerter), am intervievat de asemenea membrii unei echipe (project manager,

arhiteci, programatori i requirements engineer), reieind urmFr o gndire critic ar fi dificil de planificat testele care
toarea list de aptitudini:
verific c totul e conform obiectivelor proiectului. Persoanele
cu o bun gndire critic pot s i identifice propriile lipsuri n
nelegere: ele tiu exact cnd i cum s cear clarificri. Aceste
persoane pot ctiga mai mult respect din partea unui coleg recunoscnd ceea ce nu tiu, dect s trateze superficial ceea ce nu
neleg.

Pune intrebri bune


James Bach afirm: Exist o deosebire ntre a avea o ntrebare
i a pune o ntrebare.
ntrebrile bune genereaz rspunsuri bune.
Bazat pe aceste rezultate doresc s subliniez cele mai imporEste important s punem ntrebri cu scopul de a obine ct
tante cinci aptitudini ale unui tester:
mai multe informaii posibile i de a clarifica orice dubiu, astfel
nct s nu facem presupuneri atunci cnd testm. Cu ct tim
Comunicarea
mai bine ceea ce este important pentru business cu att e mai
Dac nu poi scrie mesajul tu ntr-o propoziie, atunci nu vei bun hotrrea pe care o lum. Nu este suficient s ntrebm, este
fi capabil s l prezini ntr-o or. Dianna Booher
foarte important s ntrebm persoana potrivit, ntrebarea potrin calitate de testeri profesioniti trebuie s avem aptitudini vit, la momentul potrivit, cu tonul potrivit i n locul potrivit.
bune de scriere i de comunicare verbal. Trebuie s fim capabili
s citim i s analizm cerinele produsului, s adunm informaia Dorina de a nva
necesar, s planificm testarea, s scriem rapoarte clare i coeBach a afirmat: E nevoie de abilitatea de a iubi confuzia care
rente pentru management (att rapoarte formale ct i rapoarte vine odat cu nvarea lucrurilor complicate. Totul const n
ad-hoc). Avem nevoie de abilitatea de a asculta n mod critic i de perseveren i n dorina de a nu renuna atunci cnd ceva te
a vorbi raional n cadrul oricror ntlniri.
face s te simi prost pentru cteva minute.
Avem nevoie sa fim lideri, tehnicieni i politicieni n acelai
Cunoaterea nu e ceva static, mai ales n domeniul tehnic.
timp. Este una dintre cele mai dificile aptitudini de gestionat, Procesul de nvare continuu este esenial pentru a deveni mai
aceea de a transmite o problem n mod clar i concis, pe un buni n ceea ce facem.
ton constructiv, care s denote gravitatea problemei. Devine i
mai complicat pe msur ce realizezi ct de diferit este publicul Flexibilitate
tu - pe de o parte, o problem trebuie s fie bine definit tehnic
De ce flexibilitate? Avem nevoie de aceast aptitudine pentru
atunci cnd este adresat unui programator, pe de alt parte, s a identifica cnd este necesar s ne mutm atenia de la detalii
fie descris suficient de clar stakeholder-ului non-tehnic pentru a la explorare.
putea lua o decizie adecvat cu privire la impactul problemei asuPentru a fi capabili s vedem detaliile trebuie s ne ncetinim
pra proiectului. Deseori, testerii trebuie s i foloseasc puterea ritmul, s ne uitm mai ndeaproape i s observm cu atenie.
de convingere, atunci cnd se afl n situaia de a pleda pentru
Capacitatea de a observa cnd ceva nu funcioneaz coreso anumit aciune. Persuasiunea este o problem cu care muli punztor este crucial n identificarea problemei, ca s nu mai
testeri se lupt i care, dac este folosit n mod greit, poate crea vorbim despre validarea logic a unei afaceri complexe.
probleme de lung durat n echipa de proiect.
Dac nu dorim s ne pierdem prea mult n detalii atunci ar
trebui s continum explorarea, care ne ofer de altfel oportuniGndire critic
tatea de a fi mult mai creativi.
Un tester specialist poate analiza un produs sau o cerin prin
Lista abilitilor poate continua la fel cum i noi suntem ntrobservare. El este capabil s vad ntregul context i, n acelai o continu cltorie. Secretul meu pentru a deveni un tester bun
timp i piesele care l compun. Acest lucru este esenial atunci const n pasiune i curajul de a continua cltoria pe teritorii
cnd vine vorba de a nelege ct mai bine produsul i de atribuire noi. Aceste teritorii noi au aprut odat cu curiozitate de a le
adecvat a prioritilor pentru defecte.
descoperi.

www.todaysoftmag.ro | nr. 35/mai, 2015

31

programare

Ce este de fapt TDD?

in cnd n cnd particip la discuii cu oameni despre ceea ce este TDD .


Datorit faptului c utilizez TDD , dar i c l explic altora , am dezvoltat o
anumit cunoatere n timp referitoare la acest subiect. De aceea, m-am hotrt
s scriu acest articol care detaliaz punctul meu de vedere n legtur cu ce este TDD.
Sper c l vei gsi util. Cum ar putea fi un articol lung, voi scrie pentru Today Software
Magazine o serie de articole mai scurte pe aceast tem. Iat-l pe primul.
Alexandru Bolboac

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

32

nr. 35/2015 | www.todaysoftmag.ro

Versiune scurt
Designul concepe i d form n
mod intenionat artefactelor care rezolv
probleme.
Codul pentru computer este un astfel
de artefact; de aceea, orice bucat de cod
care rezolv n mod intenionat o problem este conceput.
Astfel, TDD este o metod pentru a
obine design.
Un design bun nseamn un design
care are anumite caliti. Cea mai comun
calitate pe care o cutm astzi este aceea
de a putea fi schimbat.
TDD ofer cteva caliti integrate:
testabilitate i rezisten la erori crescut. Dezvoltatorul trebuie s lucreze la
mbuntirea altor caliti, precum aceea
de a fi anjabil. De aceea, specialitii folosesc principiile SOLID pentru a-i ghida
deciziile legate de design.
n acest fel se justific faptul c designul care deine aceste caliti obinute
prin TDD, depinde n mare msur de
abilitile designerului.
Atunci cnd face TDD, dezvoltatorul
concepe design nainte de a ncepe (deoarece utilizeaz un cadru web MVC) i pe
toat durata ciclurilor TDD: cnd scrie testul (alege numele clasei/ metodei, decide

ce tipuri de clase s utilizeze, etc.), cnd


implementeaz codul (nume variabile) i
cnd face restructurare.
Eu propun ideea c TDD este o metod
pentru design incremental, deoarece
soluia crete pas cu pas. Aceasta are legtur cu rezolvarea de probleme, iar cercul
se nchide deoarece designul nseamn
soluionarea unei probleme.
Interesant? Mai avem nc multe!

Design nseamn s creezi un artefact care


rezolv o problem
Dintr-un oarecare motiv, termenul de
design a devenit suprancrcat i ambiguu. S lum pentru un moment exemplul
unui smartphone. Ce definete designul su? Cum arat? Cum se comport?
Materialele care l compun? Au telefoanele
mobile mai vechi un design sau numai
smartphone-urile mai noi i mai ingenioase au design?
Lucrurile devin mai complicate cnd
vorbim despre software. Are design o
bucat de cod care urmeaz principiile
SOLID? Exist design atunci cnd este
cod procedural? Exist design cnd are
metode lungi?
Eu am nceput s pun aceste ntrebri
n urm cu civa ani, deoarece nu aveam

nicio idee n legtur cu rspunsul. Singura


modalitate de a gsi rspunsuri era s nv
mai multe despre design n alte domenii
dect software. La urma urmei, designul
este o disciplin care a existat timp de sute
de ani nainte de industria noastr.
n sfrit, am gsit un rspuns categoric
i satisfctor:
Designul nseamn s concepi i
s dai form unor artefacte care rezolv
probleme; artefactul (este) orice produs de creare intenionat, inclusiv
software-ul.
Karl T. Ulrich, Design crearea artefactelor n societate
De aceea, orice bucat de cod
care rezolv o problem ntr-un mod
intenionat este design. Telefoanele mai
vechi aveau design deoarece ele rezolvau
o problem: conversaiile la telefon cu ali
oameni.
Dar dac design este orice bucat
de cod care rezolv o problem n mod
intenionat, de ce utilizm principiile
SOLID sau cod curat sau alte lucruri?
Probabil din aceleai motive pentru care
designerii grafici utilizeaz principii precum alinierea sau accentuarea. Pentru a
face designul mai bun.

Designul bun este design cu anumite


caliti
Lucrul cel mai dificil de neles n
legtur cu designul este c designul are
anumite caliti. De exemplu, una dintre calitile designului experienei de
utilizator este calitatea sa de a fi comod
n utilizare ct de uor este s foloseti
aplicaia i ct de repede poate utilizatorul
s i rezolve problema cu ea.
Aceste caliti sunt contextuale. De
exemplu, o experien a utilizatorului de
mobil este diferit de experiena utilizatorului web. Mediul conteaz n acest caz.
Dar designul software? Care sunt

cteva dintre calitile sale? Iat o list


rapid care mi-a trecut prin cap:
Caliti statice (cnd codul nu
ruleaz):
Lizibilitatea: codul poate fi citit
uor.
Navigabilitatea: se poate naviga
uor n cod.
Logica: prin citirea codului, poi s
i dai seama uor cum se comport n
perioada de rulare.
Calitatea de a fi schimbat: codul
poate fi modificat rapid cnd repari un
bug sau adaugi o funcionalitate.
Caliti dinamice (valabile n perioada
de rulare):
Performana,
Scalabilitatea,
Securitatea,
Rezistena la dezastre,
Rezistena la erori: este dificil s faci
o greeal atunci cnd modifici codul.
Calitile designului software sunt
contextuale, de asemenea. n cazul unei
aplicaii web tipice, calitatea de a fi anjabil
i performana sunt n mod tipic cele mai
importante, urmate ndeaproape de scalabilitate i securitate. Pentru aplicaiile
mobile, performana i modificabilitatea
sunt importante. Pentru serviciile web de
date cu volum mare, performana i scalabilitatea sunt cheia. i aa mai departe.
Un lucru este constant: capacitatea de a
fi modificat este important n aproximativ
90% dintre aplicaiile pe care le dezvoltm
azi. Noi trebuie s le modificm des, deci
este util s le putem schimba rapid.
Date fiind toate acestea, ce este un
design bun? Ar trebui s fie uor:
Designul bun este o bucat de
cod care rezolv o problem n mod
intenionat i care etaleaz calitile de
design necesare n contextul dat.

Motivul pentru care noi tot vorbim


despre lucruri precum cele patru principii
ale designului simplu, principiile SOLID
i Cod Curat este pentru c avem nevoie
de o calitate pe care aceste principii o
ofer: modificabilitatea. Faptul c avem
teste ne ajut s evitm greelile atunci
cnd modificm codul. Principiile SOLID
sunt toate despre uurina de a modifica
codul. Duplicarea ne mpiedic s facem
schimbri rapid. Numele nepotrivite ne
mpiedic s nelegem codul i doar l fac
mai dificil de modificat.
Este important de notat, totui, c
aceasta nu este singura calitate a designului pe care ar trebui s o urmrim.
Tehnologii precum nodejs sau vertx prefer performana n locul calitii de a
putea fi schimbat. Proceduri memorate
sau concepii pentru crearea rapoartelor
au acelai efect.
Punerea n balan a calitilor designului este unul dintre cele mai dificile lucruri
pentru un programator. Modificabilitatea
este, totui, un bun nceput, fiind o preocupare att de larg rspndit.
Dac nelegem ce este designul i ce
este un design bun, atunci ce este TDD de
fapt?
Urmrii-ne n articolul urmtor, din
numrul viitor al revistei.

www.todaysoftmag.ro | nr. 35/mai, 2015

33

programare

Loguri i metrici n Java

untem ntr-o form mai mare sau mai mic dependeni de loguri aceasta este realitatea. Scopul acestui articol nu este s
prezint o anumit tehnologie Java de logare ci nivele superioare de abstractizare pentru colectarea, memorarea i analiza lor.
De asemenea, intenia este de a prezenta cum acestea ne ajut pentru a avea o privire de ansamblu mai clar asupra ceea ce se
ntmpl n aplicaia/aplicaiile noastre dac logm informaii cu sens i un scop clar definit n utilizarea lor.
Dar ce sunt aceste loguri i de ce avem nevoie de ele? Un
mesaj de log este un mic punct, dar mai multe astfel de puncte
nseamn o linie, liniile, o form sau o direcie care trebuie interpretat. Menionm mai jos i alte trsturi:
Starea lor e constant, nu se modific.
Sunt sute de mii, milioane pe zi numrul lor depinde de
natura aplicaiei, de utilizarea sistemelor adiionale pentru
auditarea ei, precum i de prezena aplicaiilor complexe.
Durata de via de dup creare e relativ scurt: 30 de zile,
6 luni sau poate chiar mai mult pentru sistemele financiare
sau care conin informaii mai sensibile. Depinde din nou de
natura aplicaiei, de linia de business care o acoper i dac
se folosesc sisteme adiionale pentru auditare dup care pot
ajunge s fie meninute n mod pasiv n arhive, etc..
n aplicaiile monolitice gruparea logurilor se face de obicei
pe zile i.e. JBoss filename+.yyyy-MM-dd iar analiza lor este de
cele mai multe ori anevoioas, fiind necesare cunotine destul
de avansate n expresii regulare i comenzi Linux sau scripturi de
Python, Scala, etc.. De asemenea, aplicaiile sunt rulate n general
de servicii de hosting private (cloud), iar conectarea din exterior
necesar prelurii acestor fiiere de log, care pot s aib o mrire
considerabil chiar i arhivate, devine consumatoare de timp. La
acestea se adaug i o ngreunare a procesului de analiz. Astfel c
de cele mai multe ori, nu sunt analizate dect atunci cnd cineva
ncepe s se plng de o problem, cnd sistemul nu mai rspunde cu aceeai viteza solicitrilor sau cnd o greeal se repet

Img. Load-balancer/proxy (tutorialspoint.com)

34

nr. 35/mai, 2015 | www.todaysoftmag.ro

pentru o durat de timp ndelungat. Ori n cazul extremis - nu


mai funcioneaz.
Chiar i n aplicai monolitice ncepem s observm sisteme
adiacente aplicaiei noastre (proxy-uri, load-balance) care la rndul lor au loguri care conin informaii importante despre modul
n care e folosit aplicaia, atacuri de securitate, timpi de rspuns,
etc..
Dar ce e de fcut atunci cnd trecem aplicaiile pe arhitectur
descentralizat i.e. micro-services? Cum colectm atunci aceste
loguri de pe fiecare main n parte? Cum facem legtura ntre
aceste loguri acolo unde este necesar, ct de uor puteam realiza
acest lucru?

Arhitectur micro-service (tigerteam.dk)

Dac prelucrm aceste loguri doar atunci cnd lucrurile merg


prost, s-ar putea, n unele cazuri, s fie prea trziu. De aceea, sunt
de prere c o analiz continu a lor e imperios necesar n fazele
de validare, staging. Acest demers se impune i n primele luni
de dup punerea n producie sau cel puin pn cnd lucrurile
devin stabile. Calitatea de stabil depinde de fiecare funcionalitate
/ produs / politic a companiei / contract de mentenan ncheiat, etc.. Chiar i n faza de dezvoltare putem avea beneficii dac
urmrim anumite informaii/metrici din aceste loguri.
S nu neglijm importana a ceea ce conin logurile generate
de aplicaie . Coninutul lor aduce valen pozitiv prin informaii
care pot fi de ajutor n procesele urmtoare.
Aici avem libertatea deplin asupra coninutului i putem
s ni-l personalizm cum dorim recomand totui folosirea
unui template de logare n proiect/module. ntruct foarte multe

aplicaii Java enterprise au i module de procesare, migrri de


date, task-uri asincron, rapoarte, etc. care nu i ofer un feedback direct (cum se ntmpl cu un request web) atunci aceste
informaii devin vitale pentru a putea garanta i cunoate dac
sistemul funcioneaz corect.
Soluia aplicat de noi - i nu doar de noi pentru c este o
soluie foarte popular i des folosit:

1. ELK (Elastic, Logstash (+ loggregator), Kibana)

Apeluri ale metodelor:

public void incIdsToMigrate(long d) {


migrationSizes.update(d);
}
public void incFailedMigrationSessions() {
failedMigrationSessions.inc();
}
//migration util class
@Override
public Response migrate(String entityCanonicalName,
List<String> idSToMigrate) {
final Timer.Context context = MetricsUtils.getInstance().getMigrationTimer().time();
final MigrationSession migrationSession =
new MigrationSession(entityCanonicalName,
idSToMigrate.size());
try {

Img.Logs - Pipeline (blog.xebia.fr - Vincent S.)

//validation, others
MetricsUtils.getInstance().
incIdsToMigrate(idSToMigrate.size());
.
} finally {
context.stop();
if (migrationSession.isGeneralError()) {
MetricsUtils.getInstance().

incFailedMigrationSessions();
}
}

Proces:
1. Aplicaiile folosesc appender-ul pentru consol (log4j +
slf4j) - stdout.
2. De aici folosim loggregator (CloudFoundry) agent care
preia stream-ul de date de la stdout.
3. Logstash primete logurile, le proceseaz (ETL, transformare date n formate generice, etc.).
Loguri:
[MetricsUtils.info:110] type=TIMER, name=com....
4. Logurile sunt indexate apoi n Elastic.
MigrationUtilsImpl.migration-timer, count=463,
5. Folosim Kibana pentru a le afia.
min=14185.432459, max=120866.415675,

mean=48638.78311404348, stddev=33618.49316878979,
median=33732.338869, p75=68521.92468899999,
p95=120788.85010139999, p98=120866.415675,
p99=120866.415675, p999=120866.415675, mean_
rate=0.0023544359078945367, m1=2.964393875E-314,
m5=2.2626576149598838E-82, m15=4.532485314583121E-30,
rate_unit=events/second, duration_unit=milliseconds
[MetricsUtils.info:108] type=HISTOGRAM, name=com..
MigrationUtilsImpl.migration-sizes, count=463,
min=4, max=35, mean=19.541666666666668, stddev=12.021644127831763, median=19.5, p75=33.75,
p95=35.0, p98=35.0, p99=35.0, p999=35.0

Astfel se creeaz un sistem centralizat de loguri a tuturor


aplicaiilor/modulelor care deservesc aceluiai scop, cu formate [MetricsUtils.info:104] type=COUNTER, name=com.Mide loguri comune, aceleai formatri de date, decupare de text ce grationUtilsImpl.migration-sessions-failed, count=0
poate fi ignorant, precum i alte mbuntiri pentru a le face mai
uor de urmrit, corelat i interpretat.
Totodat analiza zilnic/sptmnal a logurilor i corelarea
lor cu valori lunare ntr-o aplicaie sau serviciu web i nu numai,
2. Metrics. Core Metrics.
ne poate ajuta s monitorizm starea actual precum i evoluia
Librria de la CodaHale e una dintre cele mai populare librrii aplicaiei sau cum e folosit pentru a putea rspunde proactiv la
de metrici folosit n aplicaii open source de succes (Cassandra). noi provocri.
[LoggingFilter.filter:100] 13bd85d2-1464-406a-70eeAceasta pune la dispoziie un registru:
99ef10545989 - method=GET code=200 url=workbases Logger log = LoggerFactory.getLogger(MetricsUtils.
class);
MetricRegistry metrics = new MetricRegistry();
Slf4jReporter reporter = Slf4jReporter.
forRegistry(metrics)
.outputTo(log)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.build();

care e ulterior folosit de ctre:


1. counter

Counter failedMigrationSessions = metrics.counter(


MetricRegistry.name(Entity.class,
migration-sessions-failed));

2. histograme

Histogram migrationSizes = metrics.


histogram(MetricRegistry.name(MigrationUtilsImpl.
class, migration-sizes));

3. timer

Timer migrationTimer = metrics.timer(MetricRegistry.


name(MigrationUtilsImpl.class, migration-timer));

4. altele - care nu intr n scopul acestui articol.

Round trip response duration=25 millis


[LoggingFilter.filter:100] 084f6732-8824-4311-7d3dd8596f8bfc43 - method=GET code=200 url=workbases Round trip response duration=29 millis
[LoggingFilter.filter:100] 71ddc0fa-281f4f80-6664-1374aa14b0c2 - method=GET code=200
url=registrationruns - Round trip response duration=232 millis
[LoggingFilter.filter:100] ebbf5225-7800-46b9-5e1c-bfec7d25dec1 - method=GET code=200 url=registrationruns
- Round trip response duration=318 millis
[LoggingFilter.filter:100] cb721bc3-adea-4bfd-708d8f8a7c39c9aa - method=POST code=201 url= registrationruns - Round trip response duration=5 millis

Acest tip de loguri ne permit s meninem astfel de statistici:

Concluzii:
Trecerea de la aplicaii monolitice la arhitecturi distribuite
aduce flexibilitate i noi provocri. Una dintre ele e modul n care
se realizeaz logarea, modul cum le salvm i accesm. Un aspect
important l are i calitatea informaiilor pe care le logm. tim
www.todaysoftmag.ro | nr. 35/mai, 2015

35

programare
Loguri i metrici n Java

c loguri precumSave <entity> nu aduc prea mult sens. Astfel posibilitatea s reacionam la variaii ( a timpilor de rspuns, a
trebuie s ne asigurm ca logm acele informaii preioase care numrului de itemuri procesate pe minut ) care sunt primul semn
au sens n timp i ne ajut s nelegem modul n care e utilizat sis- c nu avem un sistem stabil.
temul, precum i performana actual a acestuia sau necesitile
viitoare.
O continu monitorizare a logurilor, corelarea lor poate s
Vasile Mihali
vasile.mihali@arobs.com
ne dea o nou viziune asupra cum putem mbunti un sistem
sau ct de stabil l putem face. Condiii de baz ntr-un sistem
Senior Software Engineer
@ Arobs
distribuit sunt vizibilitatea pe care noi o avem asupra a ceea ce
se ntmpl i monitorizarea logurilor. Numai aa vom avea

36

nr. 35/mai, 2015 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

management

Organizaii bine crescute

a fel ca i n cazul oamenilor, i n cel al organizaiilor, buna cretere se refer la principiile, valorile, credinele i comenzile
transmise prin educaie. n context profesional, numim acest pachet educaional Cultur Organizaional. n rndurile urmtoare vom analiza cteva din elementele care influeneaz buna cretere organizaional.

Ce l determin pe angajat s ascund


greelile, atunci cnd greete? S dea vina
pe altcineva sau pe destin? Ce l face s
spun da, atunci cnd vrea s spun nu?
Cum ajunge s se ascund dup sau s i
justifice aciunile prin proceduri? De ce se
ajunge la situaia n care, n loc s inteasc
rezultatele, prefer s caute vinovai? De ce
refuz schimbarea?
Care este motivul pentru care oamenii ajung s caute defecte n tot ce vd n
jur? S i controleze tot timpul pe cei din
preajma lor. Cum ajunge un angajat s
ascund o informaie de care are nevoie un
coleg sau s ncerce s dea bine n detrimentul altuia? De unde nevoia unora de a
realiza totul perfect, n detaliu?
Cum se justific faptul c n unele
companii, angajaii lucreaz eficient i
obin rezultate? Ce i face s i comunice
punctele de vedere fr team? S ncerce
lucruri noi? De ce n unele organizaii
oamenii se ajut reciproc i ofer suport,
celor din jur, necondiionat? Cum ajung
oamenii s cread c n echip se rezolv
totul mai eficient i s acioneze n sensul
acesta?
Cum ajungem s avem angajai
motivai sau, dimpotriv, frustrai? Ce
i face pe angajai s i doreasc s fac
lucruri bune pentru organizaie? i ce i
determin pe oamenii valoroi s aleag
o companie n detrimentul alteia? De ce
auzim oamenii vorbind n termeni negativi despre organizaia din care fac parte?
Rspunsul la toate ntrebrile de mai
sus se leag, evident, de individualitatea fiecruia, de ct de constructiv sau distructiv
a ajuns s gndeasc, prin prisma educaiei
primite i a experienelor de via.
Aceste stiluri personale de gndire
i aciune sunt influenabile, ns, de

contextul n care suntem poziionai.


La locul de munc, cu toii ne adaptm comportamentele la criteriile
de succes pe care le promoveaz
organizaia, la ceea ce valorizeaz
aceasta i la normele comportamentale vizate de cultura pe care
compania o promoveaz.
Cu alte cuvinte, din elementele
culturale valorizate de organizaie
extragem asemenea angajailor,
concluzii referitoare la ceea ce se ateapt
de la noi la locul de munc, n termeni
comportamentali.
Dinamica stilurilor noastre de gndire
este dat de dou tipuri de nevoi aflate la
poli opui: nevoia de siguran i cea de
satisfacie, de fericire.
Culturile organizaionale constructive
sunt cele care dezvolt un context ce faciliteaz gndirea orientat ctre satisfacie,
care cresc angajai ghidai de dorina de a
fi fericii, de a avea rezultate, de a crete
odat cu organizaia i de a-i da plus
valoare prin dezvoltare personal i valorizarea celor din jur.
La polul opus, culturile distructive
mping angajaii ctre stiluri de gndire
orientate ctre siguran, ctre protejarea sinelui. i determin pe acetia s
acioneze cu team i nesiguran. S acumuleze frustrri i s vad serviciul ca un
ru necesar. Evident, n cele din urm, s
aleag s prseasc respectiva organizaie.
Cultura organizaional se traduce n
mintea angajatului n presupunerile acestuia despre ateptrile pe care organizaia
le are de la el ca mod de a aciona. Altfel
spus, ce are n minte un angajat cnd intr
pe ua de la birou, referitor la cum ar trebui s se comporte pentru a avea succes.
Dac, n calitate de angajai, nelegem

c exprimndu-ne gndurile avem de


suferit att timp ct ele nu coincid cu ale
celorlali, vom nceta s le comunicm.
Sau, dac avnd alte idei dect ale efului
s-ar putea s fim penalizai ntr-un fel,
vom nceta s le exprimm. Dac ncercnd s schimbm procedurile pentru a le
mbunti avem de pierdut, vom ncepe s
ne conformm. Ori, dac nu este dezirabil s tulburm apele, vom evita s facem
lucrul acesta, chiar i atunci cnd starea de
fapt ne deranjeaz.
Astfel de exemple definesc culturile
pasiv defensive, orientate ctre siguran,
caracterizate prin stiluri de aprobare,
convenionalism, dependen fa de autoritate i evitarea asumrii responsabilitii.
Ca angajai n organizaii cu astfel de culturi nelegem succesul prin rmnerea n
zona de confort, lipsa de iniiativ, docilitate i refuzul schimbrii. Sunt culturi care
ne fac s acionm din team i, n timp, s
acumulm frustrri.
Dac nelegem c organizaia dorete
de la noi s fim tot timpul n control, s
demonstram c suntem mai buni dect
ceilali sau s facem lucrurile perfect,
atunci genul de comportamente pe care
vom fi determinai s le asumam sunt cele
de impunere, rivalitate, suspiciune, de
exercitare de presiuni asupra noastr i a

www.todaysoftmag.ro | nr. 35/mai, 2015

37

management
celorlali. Dac nelegem c n organizaia
n care muncim nu este de dorit s greim,
atunci cnd o vom face vom ncerca s
ascundem aceste greeli sau s i gsim pe
alii responsabili pentru ele. La astfel de
concluzii ajungem cnd suntem angajai
ai unor organizaii care promoveaz culturi agresiv defensive, de competiie ntre
angajai, control i presiune. Aceste culturi ne fac s acionm din nesiguran, s
simim tot timpul nevoia de a demonstra
ceva i, n timp, duc la conflicte, lips de
cooperare, tensiuni i relaii de proast
calitate.
Organizaiile constructive sunt
cele care ne stimuleaz s nelegem c
ateptrile de la noi sunt legate de a gndi
n termeni de soluii, nu de a detecta probleme sau de a afla vinovai. Ne ncurajeaz
s ne exprimm ideile i s gndim n afara
cutiei, s i valorizam pe cei din jur i s fim
orientai ctre a dezvolta reele de suport
i a face echip cu ceilali. n astfel de
organizaii lipsete teama de a grei, nevoia
de control i individualism, competiia
distructiv i teama de schimbare.
Astfel de culturi constructive se
dezvolt prin valorizarea deopotriv a
oamenilor i a rezultatelor pe termen lung,
prin orientarea ctre mbuntire continu i inovaie, prin stimularea gndirii pe
termen lung, a modurilor de lucru structurate, prin crearea premiselor de respect,
ncredere, comunicare deschis i suport.
Acestea sunt culturile n care oamenii se
simt bine, ajung s fie fericii i motivai
s aduc plus valoare. Ceea ce motiveaz
cu adevrat angajaii este cultura n care
este resimit sentimentul de apartenen,
este organizaia n care angajaii se simt
valorizai, protejai, ncurajai. i, nu n
ultimul rnd, c rezultatul muncii lor este
de valoare.
Culturile constructive asigur succesul
organizaiilor pe termen lung, iar impactul
lor este vizibil n:
Motivaie crescut,
Excelen n gestionarea clienilor i
calitate a serviciilor oferite,
Inovaie,

38

Organizaii bine crescute


Cooperare, sinergie n echipe i
creterea valorii fiecrui angajat,
Lipsa fluctuaiei de personal,
At r a c t i v i t at e a b r a n d u l u i d e
angajator,
i multe altele.

Cum ajungem s dezvoltm culturi constructive?


Prin definirea unor valori constructive, interiorizarea acestora de ctre
liderii organizaiei i alinierea stilurilor
de leadership la aceste valori i crearea
premiselor de sustenabilitate la nivel de
structuri organizaionale, sisteme de
suport, clarificare a rolurilor i dezvoltare
a competenelor necesare.
Toate acestea pot fi dezvoltate prin
aciuni venite din definirea unei direcii
strategice sntoase, care s ia n considerare factorul cultural, nelegnd
impactul decisiv pe care acesta l are asupra
eficacitii organizaiei i asupra atmosferei
din interiorul acesteia.
Punctul de pornire este analiza culturii
curente i a factorilor cauzali care duc la
aceast situaie.
n paralel are loc definirea culturii
dorite/ideale. Comparaia dintre curent i
ideal va scoate la lumin diferenele dintre situaia actual i cea dorit i ariile n
care ar trebui s se intervin.
n baza acestei analize putem extrage
concluzii despre direcia strategic de
urmat i crea premisele pentru a trece de
la curent la ideal.
Schema de mai jos arat modul n
care cultura organizaional influeneaz
satisfacia clientului, cel mai important
indicator al succesului companiei pe termen lung.
Succesul companiei pe termen lung
este condiionat de asigurarea premiselor
pentru o cultur constructiv, alinierea
practicilor de leadership la aceste premise
i asigurarea sustenabilitii.
Factorii care influeneaz cultura
sunt: Misiune i filosofie (definirea misiunii i orientarea ctre client); Structuri
(influen, mputernicire, implicare);

nr. 35/mai, 2015 | www.todaysoftmag.ro

Sisteme (recrutare i plasare, training i


dezvoltare, gestionarea performanelor);
Tehnologii (autonomie, diversitate, feedback, job design, interdependen) i
Competene (comunicare, bazele puterii,
leadership).
Toate acestea devin ancore pentru
schimbare.
Cnd, ntr-o organizaie, sistemele,
structurile, tehnologiile i competenele
se aliniaz valorilor, viziunii, misiunii i
obiectivelor pe de alt parte, atunci se
creeaz premisele de dezvoltare ale unei
culturi constructive.
Cristian Philipp

cristian.philipp@essentialtm.ro
Senior Consultant & Managing Director
@ Essential Training and Consulting

programare

startup

Fizbo, Simply rent aplicaie mobil


pentru nchirieri imobiliare

plicaia a aprut n urma unei ambiii a unui fost student de la Facultatea de


Automatic i Calculatoare din cadrul Universitii Tehnice Cluj, care i cuta
ntr-o zi o chirie n zona Observatorului. Vizitnd un apartament de care nu a fost
mulumit i nemaivoind s se ntoarc acas pentru a caut alte oferte pe calculator, acesta a
cutat o aplicaie pe telefon care s i arate ce chirii sunt disponibile n zon i negsind nimic
s-a gndit s dezvolte el una. Astfel s-a nscut Fizbo.

Utilitate / funcionaliti
Lucian Pop

lucian.pop@fizbo.ro
Cofondator
@ Fizbo

i caui chirie n regim normal sau hotelier, eti proprietar i vrei s ai o legtur
direct cu potenialii clieni? Fizbo i vine
n ajutor prin aplicaia mobil de Android i
IOS care simplific i inoveaz ntregul proces de nchiriere.

Ce face ca aceast aplicaie s fie simpl i


inovativ?
Printr-un simplu buton de switch,
aplicaia se transform ntr-o platform de
nchirieri n regim hotelier sau ntr-o platform de nchirieri n regim normal.
Dispozitivul este localizat automat
chiar i cu GPS-ul oprit. Se expun pe hart
ofertele din proximitatea dumneavoastr.
Harta interactiv afieaz pinurile cu
locaia exact a chiriilor precum i preul
acestora.
Ofer vizualizarea detaliilor unei chirii: poze, compartimentare, dotri, locaie
i descrierea detaliat.
Proprietarul poate fi contactat direct
din anun.
Eti direcionat pan la locaia
imobilului.
Salvarea chiriei.
Chiria poate fi raportat ca fiind abuz,
dac exist aceast problem.
Anunurile pot fi cutate, filtrate
dup locaie, pre, specificaii, suprafa,
faciliti.
Se poate aduga n mai puin de dou

minute o alt chirie.


Editarea chiriilor adugate.
Chiriile adugate sau salvate pot fi
terse printr-un simplu swype.
Autentificarea rapid prin Facebook,
dar se permite i autentificare clasic prin
crearea unui cont cu e-mail i parol.
Editarea datelor utilizatorului.
Datele utilizatorului sunt securizate
prin comunicarea cu serverul peste http.

Arhitectura aplicaiei
Partea de client este reprezentat de
aplicaia nativ de Android i aplicaia nativ
de IOS.
Partea de server este constituit din servicii web Java RESTful care ruleaz ntr-un
server web Tomcat, o instan de MySQL
pentru stocarea metadatelor i un File Server
pentru stocarea pozelor.
Comunicarea ntre client i server se face
peste protocolul https, mesajele trimise fiind
n format JSON.
1. Aplicaia de Android
Aplicaia de Android este disponibil pentru toate telefoanele i tabletele cu
Android ncepnd de la versiunea 2.2 Froyo
i pn la ultima versiune 5.1 Lollipop.
Arhitectura aplicaiei se muleaz perfect
pe sistemul de operare i nu interfereaz
cu procesul principal responsabil pentru
managementul aplicaiilor i rspunderea la
comenzile utilizatorului.

www.todaysoftmag.ro | nr. 35/mai, 2015

39

startup
Fizbo, Simply rent aplicaie mobil pentru nchirieri imobiliare
SDWebImageView, iar
persistena datelor este
asigurat de sistemul de
management al datelor
CoreData. Harta interactiv folosete framework-ul
MapKit, iar pentru preluarea datelor de pe server
i parsarea lor se folosesc
tot framework-uri native
Objective C. Pentru logarea
utilizatorului cu Facebook,
se utilizeaz kit-ul de dezvoltare Facebook iOS.

Serverul

n construirea aplicaiei s-au folosit


urmtoarele tehnologii:
Java Core: logica de business,
Google Maps, Google Geocoding
API: harta interactiv,
Google Places: sugestii i autocompletare de locaii,
Volley: caching-ul imaginilor,
Retrofit: client REST,
Facebook Android SDK : autentificare cu Facebook.

Aplicaia de IOS
Aplicaia Fizbo este conceput pentru
a funciona pe toate tipurile de dispozitive
mobile Apple: iPod, iPhone i iPad, iar versiunea minim a sistemului de operare iOS
suportat este 7.0
n ceea ce privete arhitectura aplicaiei
se folosete ablonul arhitectural MVC,
mpreun cu alte tehnici de programare
specifice limbajului Objective C. Astfel,
arhitectura proiectat este modular i
permite modificarea componentelor existente sau adugarea unor noi componente
cu uurin.
Pentru scalarea interfeei utilizatorului
pentru toate dimensiunile dispozitivelor
s-a folosit AutoLayout. Caching-ul imaginilor se realizeaz folosind componenta

40

S e r ve r u l apl i c a i e i
Fizbo are o arhitectur light i expune
funcionalitile accesibile
din aplicaia mobil printrun Faade de servicii web
Java RESTful.
Sub acest Faade gsim
clase Java responsabile
pentru logica de business a aplicaiei.
Mai departe avem Data Access Objects
care opereaz pe metadatele din baza de
date MySQL.
Serverul prezint de asemenea i un
File Server pentru stocarea pozelor ofertelor din aplicaie care sunt servite peste
https.
Arhitectura light a serverului face ca
pachetele care circul ntre client i server
s aib dimensiuni foarte mici i s fie servite n mai puin de o jumtate de secund.

Provocri n dezvoltare
Prima noastr provocare a fost crearea
unei aplicaii prietenoase i simplu de utilizat. Am reuit s realizm acest lucru prin
interfaa intuitiv care faciliteaz accesibilitatea imediat la orice informaie sau
operaie legat de procesul de nchiriere.
Cea de-a doua provocare a fost
uurarea efortului depus de proprietar
pentru publicarea unei oferte. Pe baza
modulelor de localizare a dispozitivului,
a camerei i a geolocalizrii facilitate de
Google Geocoding API am reuit s facilitm adugarea unei chirii n mai puin
de dou minute. Dup adugare, chiria
devine imediat vizibil pe hart celor care
caut chirie n zon.

nr. 35/mai, 2015 | www.todaysoftmag.ro

Cea de-a treia provocare a fost crearea


unei aplicaii extensibile. Modelul de date
i serviciile au fost astfel construite ca prin
mici modificri s permit adugarea unor
noi tipuri de oferte i servicii.
O alt mare provocare a fost implementarea unei arhitecturi light care s
faciliteze o scalabilitate ridicat. Am reuit
s realizm acest lucru printr-o arhitectur
construit din componente stateless organizat pe nivele slab cuplate ntre ele i prin
expunerea funcionalitii prin servicii
web RESTful care servesc peste protocolul
https pachete de dimensiuni foarte mici n
format JSON.

Invitaie
Echipa Fizbo te invit s-i caui chirie
sau s-i publici gratuit chiria cu aplicaia
mobil Fizbo. Aceasta este disponibil att
n Google Play pentru utilizatorii Android
ct i n App Store pentru utilizatorii iOS.
Un scurt video de prezentare poate
fi vizionat la adresa https://www.youtube.
com/watch?v=tMG9krOf-BY

TODAY SOFTWARE MAGAZINE

contabilitate

Totul despre Persoana Fizic Autorizat din punct de vedere


fiscal n 2015

ersoana fizic autorizat- P.F.A.- se definete ca persoana autorizat s desfoare orice form de activitate economic permis de lege, folosind n principal fora sa de munc. Activitile economice pot fi desfurate n toate domeniile, meseriile,
ocupaiile sau profesiile pe care legea nu le interzice n mod expres pentru libera iniiativ.

Activitile economice pe care o persoan fizic le poate desfura ca P.F.A.


sunt cele prevzute de Codul C.A.E.N.
a cror desfurare nu este reglementat
exclusiv potrivit unei legi speciale.
Orice activitate economic desfurat
permanent, ocazional sau temporar n
Romnia de ctre PFA trebuie s fie nregistrat i autorizat, n condiiile O.U.G.
nr. 44/2008. Autorizarea funcionrii,
nu exonereaz P.F.A. de obligaia de a
obine, nainte de nceperea activitii,
autorizaiile, avizele, licenele i altele
asemenea, prevzute n legi speciale,
pentru desfurarea anumitor activiti
economice.
Persoana Fizic Autorizat se poate
nregistra prin Registrul Comerului, caz
n care se emite un certificat de nregistrare
emis de Registrul Comerului sau, n cazul
profesiilor liberale, prin ANAF, situaie n
care ANAF emite un certificat de nregistrare fiscal .

Ce fel de taxe i impozite pltete o


persoan fizic autorizat?
n ceea ce privete modul de impozitare, o persoan fizic autorizat poate fi
pltitoare de impozit n sistem real sau
prin impozitare pe norm de venit.
Impozitarea n sistem real nseamn
aplicarea cotelor de impozit asupra
diferenei dintre ncasri i pli.
Impozitarea pe norm de venit se
poate aplica doar persoanelor fizice autorizate care nu au salariai. Acest tip de
impozitare const n aplicarea cotelor de
impozit asupra unei sume fixe, stabilite
anual de ctre ANAF prin direciile
locale, n funcie de tipul de activitate i de
anumite criterii. La nivelul fiecrui jude
sunt stabilite codurile C.A.E.N. pentru
care exist posibilitatea opiunii de impozitare pe norm de venit. Potrivit Codului

fiscal, norma de venit nu poate fi mai


mic dect salariul de baz minim brut
pe ar garantat, n vigoare la momentul
stabilirii acesteia, nmulit cu 12. Acum,
salariul minim este de 975 de lei, urmnd
s creasc la 1.050 de lei de la 1 iulie 2015.
Normele de venit difer destul de mult de
la un jude la altul.
De exemplu pentru o persoan
fizic autorizat pe codul CAEN 6202
Consultan n tehnologia informaiei, cu
un venit mediu aproximativ de 6.000 lei/
lun, cu domiciliul n Cluj-Napoca, norma
de venit reglementat pentru anul 2015
este 36.270 lei/an.
Dac persoana respectiv are un contract de munc ca salariat, taxele aplicabile
pe norma de venit sunt 16% impozit pe
venit i 5,5% C.A.S.S. (Contribuia pentru
asigurri sociale de sntate). Deci, ar avea
de plat ctre bugetul statului i asigurrilor sociale suma de 7.798 lei/an, n patru
trane trimestriale.
Dac aceeai P.F.A. ar avea sediul n
oraul Bistria, norma de venit reglementat ar fi 19.700 lei/an, taxele totale de plat
fiind aproximativ 4.235 lei/an.
Dac revenim la exemplul de mai sus,
n sistem real acea P.F.A. ar avea de plat
anual suma de 15.480 lei/an, presupunnd
c nu exist cheltuieli deductibile aferente
acelor venituri.
n situaia n care contractul de
munc este ca salariat cu norm ntreag,
aceast P.F.A. are dreptul de a solicita
administraiei locale reducerea normei de
venit cu 50%.
Tendina ultimilor ani din partea
legiuitorului a fost de a reduce tot mai
mult numrul codurilor C.A.E.N. pentru
care exist norm de venit i de a crete de
la an la an aceste norme.
Contribuabilii care au realizat n
anul anterior venituri din activiti

independente i au fost impui la norma


de venit au posibilitatea s i modifice sistemul de impunere, devenind pltitori de
impozit n sistem real.
Trecerea de la sistemul de impozitare
pe norm de venit la sistem real este obligatorie dac venitul brut anual pentru anul
precedent este mai mare de echivalentul n
lei a 100.000 euro, sistem care este obligatoriu a fi pstrat minim doi ani consecutivi.
Cursul de schimb folosit pentru calcul este
cursul de schimb mediu anual comunicat
de Banca Naional a Romniei, la sfritul
anului fiscal.
n cazul n care se desfoar mai
multe activiti pentru care venitul net
se determin pe baza normelor de venit,
venitul net anual se calculeaz prin nsumarea nivelului normelor de venit de la
locul desfurrii fiecrei activiti.

Trebuie sau nu trebuie achitat contribuia


pentru pensii?
n prezent, pe lng taxele menionate
ca fiind obligatorii n cazul exemplului avut n vedere (impozit pe venit i
C.A.S.S.), dac P.F.A. nu are i un contract
de munc n calitate de salariat, datoreaz
i contribuia la pensii (C.A.S.). Astfel,
pentru pensii, contribuia este de 26,3%
din venitul declarat, adic venitul pentru
care dorete persoana respectiv s se asigure. Potrivit reglementrilor, acest venit
nu poate fi mai mic de 35% din ctigul
salarial mediu brut utilizat la fundamentarea bugetului asigurrilor sociale de
stat, dar nici mai mare de echivalentul a
de cinci ori ctigul salarial mediu brut
utilizat la fundamentarea bugetului asigurrilor sociale de stat.
Astfel, pentru anul fiscal 2015, ctigul
salarial mediu brut este de 2.415 lei, n
urcare de la 2.298 lei, ct a fost n 2014.
n aceste condiii, baza de calcul pentru

www.todaysoftmag.ro | nr. 35/mai, 2015

41

contabilitate
management

Totul despre Persoana Fizic Autorizat din punct de vedere fiscal n 2015

C.A.S. nu poate fi mai mic de 845 lei, dar nici mai mare de12.075 ca activitate dependent de pltitorul de venituri salariale, n
lei. Aplicnd cota de CAS de 26,3% asupra acestor valori, PFA condiiile n care P.F.A. are i un contract de munc activ, ca
va plti la pensie minimum 222 lei (35% x 2.415 lei x 26,3%) i salariat.
maximum 3.176 lei (5 x 2.415 lei x 26,3%) pe lun.
n acest an tema principal a controalelor inopinate i a
controalelor fiscale extinse efectuate de ANAF la firme (att din
Beneficiaz o persoan fizic autorizat de omaj sau concedii
domeniul IT, ct i din alte domenii) au fost veniturile salariale,
medicale?
prin acesta nelegndu-se verificarea amnunit a tuturor chelPe lng contribuiile obligatorii amintite pn acum exist tuielilor realizate de firme, fie c e vorba de cheltuieli cu prestarea
i contribuii opionale cum sunt cea la bugetul asigurrilor pen- de servicii de ctre cei nregistrai ca P.F.A., fie c e vorba de alte
tru omaj, cea pentru asigurarea n caz de accidente de munc i cheltuieli care pot fi considerate avantaje n natur ale salariailor.
boli profesionale, precum i cea pentru concedii i indemnizaii Mergnd pe relaia firm P.F.A., prin controale ncruciate
(F.N.U.A.S.S.).
exist posibilitatea verificrii naturii relaiilor, dac sunt relaii
Astfel, dei asigurarea pentru omaj nu este obligatorie pentru dependente sau independente ntre firme i persoanele fizice
o persoan fizic autorizat, ea poate alege s o plteasc, n cazul autorizate.
n care dorete s beneficieze de ajutor de omaj, atunci cnd, nu
Consecina reconsiderrii activitii de tip P.F.A. ca fiind una
va mai avea activitate. Contribuia lunar la omaj este de 0,5% dependent este aceea c impozitul pe venit i contribuiile socidin venitul asigurat. Persoanele fizice pot ncheia contract de asi- ale obligatorii vor fi recalculate la nivelul contribuiilor salariale,
gurare pentru omaj cu Agenia pentru ocuparea forei de munc fiind datorate solidar att de angajator, ct i de angajat. Termenul
n a crei raz teritorial i au domiciliul.
de solidaritate se refer la posibilitatea organului fiscal de a se
Nici contribuia pentru concedii i indemnizaii (F.N.U.A.S.S.) adresa fie pltitorului de venit (angajatorului), fie prestatorului
nu este obligatorie, ns P.F.A. poate alege s o plteasc dac de munc (angajatul).
dorete s beneficieze de indemnizaii pentru concediile medicale.
Conform O.U.G. nr. 158/2005 privind concediile i
Codul fiscal definete la art. 7, alin. (1), pct. 2.1 criteriile pe
indemnizaiile de asigurri sociale de sntate, contribuia pen- care trebuie s le ndeplineasc o activitate pentru ca ea s fie
tru concedii i indemnizaii este de 0,85% din veniturile supuse considerat activitate dependent:
impozitului pe venit.
a. Beneficiarul de venit se afl ntr-o relaie de subordonare
fa de pltitorul de venit, respectiv organele de conducere ale
Registre obligatorii
pltitorului de venit, i respect condiiile de munc impuse de
n afara modului de impozitare, diferenele dintre cele dou
acesta, cum ar fi: atribuiile ce i revin i modul de ndeplinire a
sisteme de impozitare sunt legate i de modul de inere a evidenei
acestora, locul desfurrii activitii, programul de lucru.
contabile.
b. n prestarea activitii, beneficiarul de venit folosete excluPersoanele fizice autorizate care aplic sistemul de impozisiv baza material a pltitorului de venit, respectiv spaii cu
tare pe norm de venit aplic cel mai simplu mod de eviden
nzestrare corespunztoare, echipament special de lucru sau de
contabil i declarare ctre A.N.A.F., acestea fiind obligate s
protecie, unelte de munc sau altele asemenea i contribuie cu
completeze numai partea din Registrul-jurnal de ncasri i
prestaia fizic sau cu capacitatea intelectual, nu i cu capitalul
pli referitoare la ncasri pentru activitatea respectiv. Scopul
propriu.
urmrit cu inerea evidenei ncasrilor este legat de urmrirea
c. Pltitorul de venit suport n interesul desfurrii
atingerii/depirii plafonului de cifr de afaceri pentru ncadraactivitii cheltuielile de deplasare ale beneficiarului de venit,
rea P.F.A. la pltitor de T.V.A. (atenie, venitul i nu ncasrile,
cum ar fi indemnizaia de delegare-detaare n ar i n stridetermin cifra de afaceri, i acesta trebuie s fie sub 220.000 lei/
ntate, precum i alte cheltuieli de aceast natur.
an pentru ca P.F.A. s fie nepltitor de T.V.A.).
d. Pltitorul de venit suport indemnizaia de concediu de
ncepnd cu 1 Martie 2015 contabilitatea n partid simpl,
odihn i indemnizaia pentru incapacitate temporar de
obligatorie pentru P.F.A., pltitoare de impozit n sistem real, se
munc, n contul beneficiarului de venit.
ine conform OMFP 170/2015. Principalele modificri aduse de
acest ordin sunt:
Dac oricare dintre cele patru criterii de mai sus este nde Registrul Jurnal de ncasri i pli i Registrul Inventar nu plinit n relaia firm P.F.A., activitatea poate fi reconsiderat
mai trebuie vizate de ctre ANAF;
ca fiind dependent.
Persoana fizic care este interesat de conducerea
contabilitii n partid dubl, aceasta poate conduce contabilin decizia de a ncepe o activitate comercial ca P.F.A. tretatea n acest mod de la nceputul exerciiului financiar ulterior buie, de asemenea, avut n vedere faptul c rspunderea persoanei
celui n care s-a decis schimbarea conducerii contabilitii;
pentru obligaiile asumate n legtur cu activitatea desfurat
Persoanele nfiinate dup 1 martie 2015 pot opta nc de este cu ntreg patrimoniul su personal. Avnd calitatea de
la nfiinare la conducerea contabilitii n partid dubl sau n comerciant, persoana fizic autorizat poate fi supus procedurii
partid simpl. Dac se opteaz pentru contabilitate n partid insolvenei.
dubl, aceasta se va conduce aplicnd reglementrile valabile
operatorilor economici, pn la nivel de balan inclusiv i fr Ce modificri legislative se pregtesc pentru 2016?
a se ntocmi situaii financiare anuale.
Cu toate c ar trebui s fie cea mai simpl form de desfurare
a unei activiti comerciale, legislaia s-a modificat continuu penCe nseamn activitate dependent?
tru acest segment.
Indiferent de modul de impozitare, un posibil risc legat
n prezent exist n curs de aprobare un proiect de modide activitatea de tip P.F.A. este reinterpretarea de ctre ANAF ficri ale Codului Fiscal care vizeaz i modificri la nivelul de

42

nr. 35/mai, 2015 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


impozitare al veniturilor obinute din activiti independente, MODIFICAREA 7 (favorabil) P.F.A. nu vor mai plti C.A.S.S. dac
unele favorabile, altele mai puin favorabile.
nu obin venituri, iar dac obin venituri sub plafonul minim, vor

pltit C.A.S.S. la acest plafon.

V prezentm pe scurt principalele modificri existente n


proiectul noului Cod Fiscal:

MODIFICAREA 1 (favorabil) - Cotele de C.A.S. se reduc ncepnd cu


data de 1 ianuarie 2017.
MODIFICAREA 8 (favorabil) C.A.S.S. se va regulariza anual.
MODIFICAREA 2 (nefavorabil) - PFA vor datora CAS, chiar dac sunt
salariai.

Aadar, n desfurarea activitii comerciale ca persoan


fizic autorizat, trebuie inut cont de tipul impozitrii pe norm
de venit sau n sistem real.
MODIFICAREA 3 (nefavorabil) P.F.A. vor datora C.A.S. la nivelul cel
De asemenea, pentru a nu exista probleme legale, este impormai mare dintre venitul realizat i plafonul minim, dar nu mai mare tant ca P.F.A. s nu fie dependent de un beneficiar. Anul 2016
de plafonul maxim de cinci ori ctigul salarial mediu brut.
pregtete o list de modificri fiscale att favorabile ct i nefavorabile. Recomandarea noastr este s se int cont de acestea
n planificarea financiar pentru luarea celor mai bune decizii.
Mult succes!
Ioana Varga

ioana.varga@aiconsulting.ro

MODIFICAREA 4 (nefavorabil) - Plile anticipate de CAS nu se


restituie i nu se regularizeaz.

Expert contabil
Managing Partner
@ A&I Consulting

Ioana Costea

ioana.costea@aiconsulting.ro
Expert contabil
Managing Partner
@ A&I Consulting

MODIFICAREA 5 (favorabil) - PFA nu vor datora CAS, dac n anul


anterior au realizat venituri lunare sub plafonul minim.

MODIFICAREA 6 (favorabil) - Baza de calcul pentru C.A.S.S.


plafonat la de 5 ori ctigul salarial mediu brut.

www.todaysoftmag.ro | nr. 35/mai, 2015

43

programare

Acceptarea schimbrii.
Drumul ctre un bug pe lun

u cred n capacitatea programatorilor deosebii de a crea aplicaii unice n moduri


n care nu s-au mai fcut niciodat. Acest articol este povestea devenirii mele ca
parte a unei echipe, alturi de care am btut un drum lung, de la un proces de
dezvoltare software tradiional la unul agile.

Patks Csaba

patkoscsaba@syneto.eu
Agile Software Developer
@ Syneto

44

nr. 35/2015 | www.todaysoftmag.ro

n vara anului 2010 eram n cutarea unui nou loc de munc. ntmplarea
a fcut s ajung la compania Syneto. Aici
am fost repartizat la un proiect mai vechi,
acum retras din dezvoltare. Cariera mea
de programator de pn atunci a constat
n programare individual. Mai precis,
realizare programelor de dimensiuni mai
reduse pentru companiile la care activam
pe post de administrator de reea.
nainte s ajung la Syneto, att la coal
precum i la joburile precedente, am folosit tehnici de management de proiecte
Waterfall. ncepndu-mi activitatea la
aceast companie pe un proiect planificat
ntr-o manier similar, nu am putut dect
s fiu fericit c voi activa ntr-un mediu ct
de ct familiar. Puin tiam eu atunci despre
ce m ateapt.
Dup cteva luni ns, anumite probleme legate de proiect au nceput s
devin evidente. Lansrile noilor versiuni
erau mereu n ntrziere i bugetul proiectului era pe cale s fie epuizat nainte de
termen. Aadar o nou viziune, gndire i
mod de lucru erau absolut necesare.
ntre anii 2000 i 2005 compania a
avut o metod de dezvoltare haotic. Pur

i simplu se implementau funcionaliti


cnd i cum cereau clienii. Acest lucru
poate prea agile la prima vedere, dar nu a
fost aa. Nu exista o viziune pentru produs.
Nu exista o metod bine definit de ierarhizare a importanei a task-urilor. Managerul
pur i simplu repartiza activitatea pe nite
bileele programatorilor. Nimeni nu tia
exact ce e de fcut i ncotro ne ndreptm.
Pn la mijlocul anului 2008 procesul
de dezvoltare a devenit ns mai organizat.
S-a trecut de la haos la Waterfall. nc o
aparen neltoare de progres. Nu numai
c nu s-a mbuntit calitatea produsului, dar odat cu introducerea Waterfall,
a crescut numrul de bug-uri i timpii de
ntrziere. Mai mult, bugetul asumat de un
an i jumtate permitea doar trei lansri de
noi versiuni considernd perioada de ase
luni planificat cu mare grij prin diagrame
Gantt i documente complexe.
O schimbare era absolut necesar.

Cltoria noastr
Provocri organizatorice
Orice echip poate fi definit prin
practicile de lucru care le aplic zi de zi.

programare
Gsirea i adoptarea continu de noi astfel de practici n vederea
mbuntirii procesului de dezvoltare este una din provocrile
majore n agile. Noi la Syneto, suntem ferm convini c cea mai
bun metoda de a gsi practicile potrivite pentru proiectul curent
este de a adopta astfel practici poteniale, de a le face cu rigurozitate ase luni i de a evalua la finalul perioadei utilitatea lor.
Dac gsim o practic inutil, renunm. Dac o gsim perfect,
o continum. Dar cele mai multe ori identificm doar pri izolate
ale unei practici care ne pot fi de folos. n aceste cazuri, adoptm
aceste bucele ca parte a procesului nostru n ansamblu.

Descoperirea scrum-ului

programare
release. Sprint Backlog coninea ceea ce urma s facem n sptmna curent. Development coninea task-urile n lucru, iar Done
cele terminate.
Am fcut primul pas n transformarea noastr agile. Am
acceptat prima schimbare, aceea de a urmri ntreaga activitate
de development prin acele sticky notes.
Cu trecerea timpului, n mod treptat, Flavius ne-a introdus
i n celelalte aspecte ale scrum-ului. Dup cteva sptmni am
avut prima retrospectiv, dup aceea am nceput s facem planificare de sprint-uri cu ocazia asta am nvat termenul de sprint.
Culminnd n miniretrospective de sprint i n daily standups.
Dar nu numai edinele de scrum erau noi, ci i felul n care
am nceput s comunicm. Am nvat mpreun termeni precum
user story, story points, technical tasks, standup meeting, definition
of done, etc. . Nu toate aceste lucruri erau noi n ceea ce privete
activitatea noastr, dar pn atunci nu erau bine definite i formalizate n spatele unor expresii.
Dup primele cteva lansri de versiuni noi am nceput s
simim efectele pozitive ale retrospectivelor i ale urmririi
activitii cu grafice burndown. n anii ce au urmat am experimentat cu mai multe tipuri de retrospective, dintre care ne-au
marcat activitatea dou: good-bad-actions i the sinking ship.

i acum in minte acea zi nsorit de primvar cnd managerul nostru de atunci, Flavius, a venit cu o or ntrziere la lucru.
Foarte necaracteristic lui, care de regul era prima persoan sosit
la serviciu.
La puin timp dup l-a trimis pe Bogdan, un coleg de-al
nostru, s cumpere ceva. Eram prea concentrai i ocupai cu
programarea, aa c iniial nu am acordat mare atenie evenimentelor. Dup cteva minute Bogdan s-a ntors cu mai multe foi
de A3, un munte de sticky notes i o grmad de carioci. Pentru
un moment lucrurile parc erau interesante dar programarea
era mai interesant. Ne-am ascuns toi n spatele monitoarelor
noastre i ne-am continuat activitatea de coding.
Revizuirea Planning Board-ului
Nu mi pot da seama ct timp a trecut nainte ca Flavius s ne
Cndva pe la mijlocul lui 2011 am nceput s folosim board-ul
ntrerup din activitate. Spre surprinderea tuturor, pe perete, a ntr-un mod tot mai avansat. Iat cteva aspecte cheie ale revizufost construit un fel de planning board. Nu prea ne-am dat seama irii ntreprinse:
despre ce este vorba, dar Flavius a continuat cu explicaii rigu1. Coloana de Development a fost mprit n altele trei: una
roase. Prima coloan Release Backlog va conine tot ce trebuie
de design pentru activitile de planificare API i UI, una de
fcut n viitor. Dup aceea, vom lucra n iteraii, i vom discuta ce
programare efectiv, numit n continuare tot Development i
vom face n fiecare iteraie. Aceste lucruri vor fi puse pe Sprint
una de testing. Orice task trebuia s treac printr-o procedur
Backlog. Dup care, fiecare dintre noi i va alege ceva de fcut
de testare de ctre o alt persoan nainte s fie considerat
i va muta sticky note-ul n coloana Development. Cnd e gata,
terminat.
notia se va muta n coloana Done. Simplu, aa-i? Nu chiar
2. Fiecare coloan a fost mbuntit cu o definiie a lui done.
Politica era c numai un task ce ndeplinete toate condiiile
poate fi mutat n coloana urmtoare.
3. Au fost create categorii pentru activitile noastre: story,
pentru mbuntiri i funcionaliti noi , bugs, pentru defecte,
technical tasks, pentru activiti adiacente proiectului, cum ar fi
instalarea unui server de compilare sau testare automat.
4. Totui, consider c cea mai important schimbare a fost
asumarea rspunderii pentru task-uri prin ataarea unei etichete mici cu numele celor ce lucreaz la task-ul respectiv.

Adoptarea Lean
Scrum era bun pentru disciplin, dar am identificat cteva
probleme cu el. Alocarea resurselor era una din ele. Aa c am
nceput s studiem i s aplicm tehnici lean n cadrul proiectului
nostru.
Am ncercat s inem cont de toate principiile lean, dar
dou din ele au ieit n eviden: eliminarea pierderilor prin
eliminarea timpilor mori n lanul dependinelor dintre programatori cu ajutorul pair-programming-ului, sau prin ncurajarea
unor activiti de minor bugfixing n timpii mori amplificarea
nvrii prin participarea la conferine, cursuri, ncurajarea
experimentrilor prin code retreat-uri i oferirea unei biblioteci
de specialitate exhaustiv.

Eu m ateptam ca acest board s aib un efect mai profund.


S aduc un pic de ordine n haosul nostru, care ncet cu ncetul a
revenit peste planurile Waterfall. n continuare fceam prea mult
planificare prealabil i ierarhizam prea puin task-urile.
A aprut ns un alt efect deosebit. Board-ul ne-a oferit o cale
surprinztor de eficient de a vizualiza activitatea noastr. Am
nceput s contientizm ce i ct mai avem de fcut. Am putut s
vedem la ce se lucreaz, i mai presus de toate am putut s vedem
tot ce s-a fcut.
Aplicarea Kanban
Board-ul nostru era organizat destul de simplu. O coloan de
Inevitabil, dup o schimbare de cunotine i practici, o
Release Backlog coninea tot ce trebuie s facem pn la urmtorul schimbare a board-ului era necesar.
www.todaysoftmag.ro | nr. 35/mai, 2015

45

programare

Acceptarea schimbrii. Drumul ctre un bug pe lun.

Schimbarea este determinat de mai muli factori, externi i


interni nou, cum ar fi cerine noi ale pieei, respectiv monotonia
locului de munc.
Iat schimbrile eseniale:
Pn la urm este irelevant ce determin schimbarea. Trebuie
1. Nu mai este coloan Working On. n schimb toate coloanele s fim pregtii pentru ea. Cu siguran va veni, inevitabil.
sunt de aceeai prioritate, fr subcoloane.
Acest articol este unul mai sumar, punnd accent pe punc2. Nu mai avem Design, avem n schimb Design Spikes, un tele cheie din studiul agile prezentat n detaliu pe site-ul Agile
concept de Agile Architecture definit de Rebecca Wirfs-Brock.
Alliance (http://www.agilealliance.org/index.php/download_file/
3. Fiecare coloan are o limit maxim de task-uri ce se poate view/482/1410/) ca parte a Agile Experience Reports Program.
acomoda. Aceast limit nu poate fi depit, i dac se atinge
trebuie luate msuri pentru eliberarea task-urilor ntrziate.
4. Nu mai exist criteriul de ieire sub forma definiiei de
done. Nu pentru c nu ne mai pas, ci pentru c a devenit parte
a culturii noastre i nu mai este nevoie s expunem aceast
informaie.

Era digital
La un moment dat am identificat o problem cu board-ul
fizic: era mult prea dificil s organizm i s identificm task-uri
pe backlog. Aa c am trecut la un board digital, sub forma unei
aplicaii. Acesta ne-a permis identificare i organizare rapid, ns
a introdus o problem profund i neateptat. Oamenii nu mai
aveau ceva vizibil tot timpul n fa, ci din contra, trebuiau s fac
o aciune contient de a deschide un web browser i a naviga
la pagina aplicaiei. Iar cum programatorii sunt lenei notorii,
board-ul digital a fost un eec iniial.
Totui un televizor pe perete a rezolvat problema vizibilitii.
Dup ce programatorii s-au obinuit s aib mereu un tab cu
aplicaia deschis, chiar i televizorul a devenit inutil.

Ce am nvat
Probabil cel mai important lucru pe care l-am nvat este
c singura constant n via este schimbarea. Indiferent c este
vorba de viaa personal, profesional sau de proiectul favorit,
felul n care ne manifestm i ne organizm este n continu
schimbare.

46

nr. 35/mai, 2015 | www.todaysoftmag.ro

sponsori

powered by

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