You are on page 1of 48

No. 14 August 2013 www.todaysoftmag.ro www.todaysoftmag.

com

TSM
un e l i r oc Prov

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

P iul SA d e n m e r e c e trodu Azur n i s w t indo Scur W d n i folos t s e T Load

ana s s e sin u b i u

Ag n t s y

Haskell (IV) IEEE Congress on Evolutionary Computation, 2013, Cancun Migrare website MVC 3 i DB n Azure (III) Istoria IT-ului clujean: Ford i incai WPF cum stm cu performana? Startup Transilvania

Project Manager i Business Analyst - un duet care poate face diferena n outsourcingul romnesc ITC Spring 2013 (II) Cum invata un artizan software: deliberate practice Team building (II) Conferina Romanian Testing Community 2013

6 ICT SPRING EUROPE 2013 (II)


Ovidiu Man

27 Team building (II)


Andreea Prvu

9 Istoria IT-ului
Marius Mornea

29 Provocrile unui business analyst n Agile


Monica Petraru

10 Conferina Romanian Testing Community 2013


Marius Mornea

32 Project Manager i Business Analyst - un duet care poate face diferena n outsourcingul romnesc
Adrian Cighi

11 Startup Transilvania
Cristian Dasclu

34 Recenzia crii: Android Apps with Eclipse de Onur Cinar


Silviu Dumitrescu

12 Despre finalitii Romanian Startup Awards


Bogdan Iordache

36 Load Test folosind Windows Azure


Radu Vunvulea

15 Aplicaii pentru previziuni financiare la IEEE Congres on Evolutionary Computation, 2013, Cancun
Silvia Ruanu

39 Programare Funcional n Haskell (IV)


Mihai Maruseac

18 Cum nva un artizan software: deliberate practice


Alexandru Bolboaca i Adrian Bolboac

41 Migrare website MVC 3 i DB n Azure (III)


Drago Andronic

21 Scurt introducere n mediul SAP


Victor Ionescu

43 Design pattern-ul MVVM


Andrei Moldovan

23 WPF cum stm cu performana?


Daniel Lctu

45 Complicat sau complex


Simona Bonghez

editorial

Ovidiu Man, PMP

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

remea vacanelor a nceput, o parte am fost norocoi i ne-am luat deja concediile aa c putem s ne relum plini de elan lucrul la birou. Revenim la proiectele noastre, i sigur avei o idee despre un produs nou ce ar putea s ne fac viaa mai uoar, cum ar fi o mic pomp solar care s umfle colacele i brcuele copiilor. V sugerez s nu abandonai aceste idei i s v gndii serios cum s-ar putea realiza. Se ntmpl uneori s avem o idee foarte bun de produs pe care s o vedem n civa ani implementat cu succes, din pcate de ctre altcineva. Este paradoxal faptul c n Romnia avem un grad ridicat de ingeniozitate, c suntem buni n execuia proiectelor, lucru demonstrat prin ntreaga industrie de IT orientat spre outsourcing, dar n acelai timp avem un numr relativ mic de startup-uri, succesul acestora se lsndu-se ateptat. Presupun c n timp toate acestea se vor schimba, iar ansa de succes a noilor venii este mult mai mare acum fa de condiiile de la nceputul lui 2000. Trip Hawkins, spunea n cadrul ICT Spring Europe 2013 c inovaia trece n faa branding-ului. Industria cu cel mai mare impact n momentul de fa este cea mobile iar n cadrul acesteia jocurile mpreun cu social media ocup cel mai mare spaiu n device-urile utilizatorilor. Mai mult, dac ne uitm la procentul jocurilor indie fa de cele produse de marile companii, acestea dominau n prima parte a 2012 cu 68% pentru platformele ios i android. Dac ar trebui s pornesc un startup astzi, a considera i crearea unui joc. Exist exemple de succes autohtone pe piaa local, iar suportul acestora pentru noi venii nu ar trebui s fie o problem. Rmnem n sfera indie, iar cea mai mare platform de finanare crowdsourcing, disponibil i din Romnia este IndieGoGo.com. Este cea mai bun modalitate de a valida faptul c prototipul vostru va avea cu adevrat un impact global i de a obine o finanare. Proiecte din ce n ce mai mari i gsesc finanarea n acest mod iar un exemplu recent este Ubuntu Edge, un proiect ce urmrete crearea primului telefon high-end al celor de la Ubuntu. inta lor pentru obinerea a 32,000,000$ ntr-o lun va reprezenta un adevrat succes n ceea ce privete finanarea crowdsourcing. Nu puteam vorbi despre crowdsourcing fr a meniona i dou platforme locale: multifinantare.ro i crestemidei.ro ce reprezent o alternativ bun atunci cnd vorbim de proiecte cu impact naional. n acest numr TSM putei citi o serie de articole tehnice dintre care enumr cteva titluri: WPF cum stm cu performana?, Design pattern-ul MVVM. De asemenea se continu seriile n numerele trecute despre Programare Funcional n Haskell i Migrare website MVC 3 i DB n Azure. O noutate const n prezena a dou articole, Provocrile unui business analyst n Agile i Project Manager i Business Analyst care pun accentul pe rolul unui business analyst-ului n echip i interaciunea cu aceasta. Load Test folosind Windows Azure ne propune o modalitate simpl de a realiza un load test sau stress test. SAP reprezint un domeniu de interes i ne face plcere s publicm un prim articol de introducere n SAP. La final, Gogu ne propune s nvm diferena dintre complicat i complex. V dorim o lectur plcut !!!

Fondator i CEO al Today Software Magazine

Ovidiu Man

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Lista autorilor Redacia Today Software Magazine
Fondator / Editor n chief: Ovidiu Man ovidiu.matan@todaysoftmag.com Editor (startups i interviuri): Marius Mornea marius.mornea@todaysoftmag.com Graphic designer: Dan Hdru dan.hadarau@todaysoftmag.com Copyright/Corector: Emilia Toma emilia.toma@todaysoftmag.com Traductor: Roxana Elena roxana.elena@todaysoftmag.com Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Reviewer: Adrian Lupei adrian.lupei@todaysoftmag.com Produs de
Alexandru Bolboaca Adrian Cighi

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

adrian.cighi@tss-yonder.com Project Manager @ Yonder

Daniel Lctu

Daniel.Lacatus@accesa.eu Senior Software Developer @ Accesa

Mihai Maruseac

mihai.maruseac@gmail.com IxNovation @ IXIA membru ROSEdu, ARIA

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

Radu Vunvulea

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

Silvia Ruanu

Silvia.Rausanu@isdc.eu Software Developer @ ISDC

Adrian Bolboaca

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

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

Victor Ionescu

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

Today Software Solutions SRL


Monica Petraru

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

monica.petraru@urss.ro Senior Business Analyst @ UNIQA Raiffeisen Software Service

Andrei Moldovan andrei.moldovan@businesslogic.co.uk Software Developer @ Business Logic Systems Ltd.

Simona Bonghez, Ph.D.

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

Andreea Prvu

andreea.parvu@endava.com Recruiter n cadrul Endava

Drago Andronic Cristian Dasclu


Cofondator @ Cluj Hub cristian@clujhub.ro CTO @ TXTFeedback

dragos@txtfeedback.net

Marius Mornea

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

Ovidiu Man, PMP

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

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

www.todaysoftmag.ro | nr. 14/August, 2013

evenimente

ICT SPRING EUROPE 2013 (II)


n acest articol continum relatrile de la ICT Spring Europe unde mpreun cu colegul meu Marius Mornea am avut plcerea s participm. A fost prima delegaie TSM n afara rii i am avut ocazia s ne conectm la pulsul lumii de IT din Europa. Viitorul arat bine i nu m-ar surprinde ca n viitor s asistm la o redefinire a importanei btrnului continent n dezvoltarea aplicaiilor de mine.

A doua zi a evenimentului a debutat cu prezentarea lui Jimmy Walles, fondatorul Wikipedia a crui tem a fost Democraie i internet. Am reinut invitaia la un exerciiu de imaginaie care sintetizeaz filozofia Wikipedia: Imaginai-v o lume unde fiecare persoan are liber acces la toate cunotiinelor omenirii. Un lucru distractiv, relatat de fondatorul Wikipedia, se refer la China unde au aprut denumiri de mncruri ce conin cuvntul Wikipedia. Nimeni nu a tiut iniial cum au aprut, dar s-a dovedit c n urma cutrilor unor termeni n limba englez folosind Google, rezultatul ncepea de multe ori cu cuvntul Wikipedia. Aceasta se ntmpla, deoarece nainte de Olimpiada din Beijing, toate restaurantele i traduceau meniurile n limba engleza. Astfel dac se cuta, cum se numete aceast ciuperc n englez rezultatul cutrii, ncepea cu: Wikipedia. Un aspect interesant menionat de fondatorul Wikipedia este legat de diferenele observate la nivelul rilor sau comunitilor n ceea ce privete tipul sau cantitatea de informaie accesate. Astfel

aceleai categorii de articole i statistici legate de accesul la acestea. Apar totui diferene n popularitatea acestora cum ar fi pop culture in Japonia sau faptul c germanii sunt cei mai curioi n geografie !!! Revenind la statistici, Wikipedia are pn acum 490.000.000 vizitatori unici i bazat pe estimrile lor, se va ajunge la 500.000.000 nainte de finalul anului. Cine scrie n Wikipedia? 87% sunt brbai din cauz c Wikipedia este destul de tehnic. Se ncearc s se mbunteasc interfaa de editare a articolelor astfel nct s fie mult mai uor s se editeze un articol. Exist un mare numr de doctoranzi printre cei ce scriu articole. Fondurile pentru Wikipedia vin de la fundaia Wikimedia, marea majoritate a sumei primite fiind de la publicul larg. Cum funcioneaz Wikipedia ? Wikipedia este o enciclopedie. NPDV Wikipedia nu judeca deciziile, Free licensing respectarea copyright-ului. Tot coninutul a fost generat de ctre colaboratorii Wikipedia. IAR no firm rules. Nu se fac lucrurile doar pentru c exist o regul Jimmy Wales a continuat cu prezentarea a ctorva cazuri reale n ceea ce priveste folosirea internet-ului n ri cu un nivel mai sczut de trai. De exemplu n Nigeria, dei este o ar n Africa unde accesul la internet era sczut, iar limea de band alocat era foart mic n 2002, tot acest handicap a fost eliminat, iar acum topul celor mai folosite site-uri este similar cu cel de pe alte continente: Google, Facebook, Twitter, Wikipedia, ziare locale. Tot acest proces este mult mai rapid dect i-a nchipuit mult lume. Dac ne gndim cum va fi lumea peste 20 de ani, remarcm

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


conectivitatea mare la Internet pentru mii de milioane de oameni care nu vor vorbi englez sau francez. Urmtorul subiect abordat a fost proiectul Wikia. Scopul acestui proiect este s ajute pe toat lumea s i creeze o librrie personal. Utilizitatorii pot s i creeze librriile lor, nu neaprat academice. Au fost date cteva exemple precum cea a serialul Lost sau Lostpedia, un alt serial unde productorii l-au folosit pentru a deschide un canal de comunicare cu fanii. Practic oricine i celor spuse de Trip Hawkins la o transformare a balenelor n delfini. Performana jocurilor a fost nlocuit de comoditatea rulrii acestora pe tablete sau telefoane. De asemenea, dexteritatea necesar jocurilor a trecut pe un loc secund fa de cumprarea unor bunuri virtuale. Acestea pot fi schimbate ntre juctori iar evoluia acestora s le transforme beneficii reale. Ce cumprm de fapt? Cumprm timp, item-urile primite n schimb ne ajut s trecem mai repede la urmtorul nivel. Un punct interesant atins n aceast prezentare vizeaz educaia. Se anticipeaz schimbri ale modului n care copii nva n sala de clas. Copiii de mine, vor fi dependeni de dispozitivele mobile iar modul de predare va trebui schimbat printr-o folosire mai larg a jocurilor, gamifications, n clase. Revenind la partea de disruption, s-a fcut o comparaie edificatoare n ceea ce privete modul de distribuie a jocurilor. Dac acum 10 ani, era foarte important modul n care un joc poate ajunge la utilizatorul final n ct mai multe regiuni geografice, acum toate acestea au disprut, fiind nlocuite de magazinele virtuale de jocuri cum ar fi Apple Store. Descoperirea jocurilor va ctiga n faa distribuiei, iar originalitatea va ctiga n faa brand-ului. Conform prezentrii lui Trip Hawkins, puin lume anticip aceste aspecte. Avantajele fa de competiie pot fi create n timp considerndu-se: poate crea wiki-ul su. V sugerez s accesai acest site, nu foarte originalitatea IP (Intellectual Property), cunoscut. Am gsit multe proiecte interesante precum Logopedia, cultura inovaiei, o enciclopedie ce conine 24.434 de logo-uri de companii. folosirea avantajului date de framework-uri precum: Trip Hawkins , un alt prezentator care a atras atenia, este lider NativeX, Unity, Extreme Reality 3D. n Hall of Hame-ul industriei de jocuri. Fondator al Electronics Arts, a jucat un rol important n definirea industriei PC la nivel O ncercare de sintetizare a ntregii prezentri Digital disrupglobal. Este de asemenea co-fondator al companiei You Can, care tion du Jourpoate fi materializat n urmtoarele idei: produce jocuri educaionale i ofer consultan pentru jocuri i 1. Trim ntr-o era a comoditii. companiilor IT precum Kixeye, NativeX sau Extreme Reality 3D. 2. inta trebuie s fie delfinii - juctori ai jocurilor integrate n i-a petrecut ntreaga carier ca pionier al industriei PC-urilor social media. iniial alturi de fondatorii Apple, cnd compania sa nu avea mai 3. Aplicaiile de astzi vor rula mine n browsere. muli de 25 de angajai. 4. nvarea foarte bun a gestionrii bunurilor virtuale. Prezentarea din cadrul ICT Spring care s-a numit Digital disruption du Jour a urmrit canibalizarea pieei de jocuri PC Urmtorul panel a fost Gamification now: how Games are de ctre social networking i de ctre dispozitivele mobile, antici- impacting the global Social and Business landscapes ce i-a avut pndu-se posibila evoluie a acesteia. Apelnd la o terminologie ca invitai pe: original, gamerii nrii care se joac pe console au fost denumii Trip Hawkins - Fondator al Electronic Arts - CEO, balene, iar ce-i care se joac jocuri sociale: delfini. Asistm conform Digital Chocolate
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. 14/August, 2013

startups
David Gardner - Co-fondator & General Partner, London Venture Partners Raphael Goumot - Fondator, CREAgile (moderator) Boris Pfeiffer - Managing Director, Kabam Europe Volker Hirsch - Global Head of Business Development Games, BlackBerry Relatez principalele idei postate pe contul nostru de Twitter (@ todaysoftmag) n timpul desfurrii panel-ului: - Angry Birds a avut un succes mai mare dect Mickey Mouse; - Japonia este locul de nvat deoarece sunt pionieri n multe domenii; - Jocurile nseamn stimulare iar noi nu suntem legume. Creterea activitii cerebrale se poate face prin jocuri; - Conceptul de gamification este natural i a fcut ntotdeauna parte din viaa noastr; - Viitorul jocurilor sunt cele ce dureaz 30 de secunde, poate 1

minut, chiar i n cazul celor complexe; - n concluzie, jocurile trebuie s fie distractive, dac nu vor fi vor rata aspectul de gamification. Caracterele pozitive ctig ntotdeauna. ncheiem aici relatarea evenimentului. Vom publica n curnd i un scurt film realizat din cadrul acestuia. Mulumim nc odata organizatorilor, Cline TARRAUBE i Kamel AMROUNE pentru invitaia la eveniment i oportunitatea de a distribui revista TSM n cadrul acestuia.

Ovidiu Man, PMP

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

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

istorie

Istoria IT-ului clujean: Ford i incai

ncepem cu Henry Ford, responsabil de invenia linei de asamblare, dar mai ales a ctorva politici de HR revoluionare pentru perioada n care au aprut. Practic, ca orice om de afaceri, a ncercat s creasc productivitatea apelnd la mbuntiri, n primul rnd la procesul de fabricaie. ntr-o industrie nou (Ford a nfiinat compania n 1906, la 17 ani de la patentarea motorului pe benzin de ctre Karl Benz), Ford a optimizat timpul de producere a unei maini de la 12 ore jumtate la o or i 33 de minute, prin invenia liniei de asamblare mobil i a conceptului de producie de mas. Dei aceste inovaii i-au permis s creasc de la o producie anual de 18.000 uniti, la peste un milion, n doar 10 ani, efectul asupra angajailor a fost unul dezastruos, rata de demisii fiind foarte mare. Accelerat i de creterea ponderii proceselor automate, care scdeau i mai mult cererea de personal. Demisiile constante au crescut foarte mult costurile de angajare, au introdus ntrzieri cauzate de cursuri de pregtire i au atins limita de resurse umane a pieei destul de repede. Soluia a fost simpl, n 1914, Ford a dublat salariul de la 2,5$ la 5$ pe zi, a sczut cu o or ziua de lucru la 8 ore i a introdus conceptul de profit-sharing, prin care angajaii puteau s i cumpere propria main n 4 luni de munc. n acelai timp a modificat radical strategiile de angajare, concentrndu-se pe achiziia de talente, noile salarii i-au permis s aleag cei mai buni mecanici din pia. Dei opinia public internaional, de la sindicate la aristocraia european, a fost ocat de aceast abordare i au inventat termenul de fordism pentru a descrie strategia de producie de mas, motivat de consumerism i salarii mult peste media din pia, strategia a dat roade i demisiile au sczut, productivitatea a crescut, iar costul per main a sczut la nivelul la care cei ce produceau mainile au devenit i piaa int. n

m ales dou nume din istorie, pentru a ncerca s ofer o soluie unei probleme foarte actuale n IT-ul clujean. Problema discrepanei ntre cererea mare i oferta sczut de resurse umane. scurt timp Ford producea 50% din automobilele din SUA, 40% din UK i din 200 de competitori, doar 17 au fcut fa strategiei lui Ford. Acest model de succes bazat pe optimizarea eficienei i loializarea talentelor printr-un pachet salarial atractiv, a fost considerat responsabil pentru crearea unei noi clase sociale i a transformat industria auto dintr-o ni specializat ntr-una de mas. Problema este c pe termen lung a dus la falimentul celor care nu au adoptat modelul, i la o segregare mai mare a claselor sociale n raport cu veniturile. Prin urmare, s arunci cu bani n angajai este o soluie de moment i limitat ca eficien pe termen lung. Acest lucru poate fi observat i n piaa IT local. Gheorghe incai a ales o alt abordare. Reprezentant al Scolii Ardelene, se confrunta cu problema recunoaterii drepturilor poporului romn n Transilvania i a fost unul dintre responsabilii emanciprii naionale prin nfiinarea nvmntului romnesc. Practic burghezia romn transilvnean ncearc la 1791 s capitalizeze pe ultimul deceniu, n care a obinut acces la educaie, att nalt (Roma i Viena), ct i nfiinarea de coli locale, prin micri politice (vezi eforturile lui Ioan Bob i Inoceniu Micu-Klein, de obinere a drepturilor n schimbul unirii bisericilor cu Roma) sau revolte (vezi efectele rscoalei lui Horea, Cloca i Crian), i s obin drepturi egale cu celelalte trei naiuni, prin memoriul Supplex Libellus Valachorum. Citnd din Wikipedia: izolat prin refuzul rezolvrii memorandumului, prea slab economic i politic pentru a iniia o micare revoluionar, burghezia romn se concentreaz ntr-o micare de emancipare naional pe plan cultural. Se nfiineaz numeroase coli cu predare n limba romn ( Gheorghe incai1 nfiineaz 300 de coli ), se tipresc
1 http://ro.wikipedia.org/wiki/Gheorghe_incai

calendare, catehisme, manuale, cri de popularizare a tiinei, cri populare pentru ptrunderea informaiei n masele populare largi; Aadar, incai a ales emanciparea prin educaia de mas. A luat ceva ce era apanajul burgheziei i l-a formalizat ntr-o form accesibil maselor, prin elaborarea de manuale fundamentale: Abecedarul, Gramatica, Aritmetica i Catehismul. Aceast micare iluminist va avea ca efect acumularea unei mase critice de intelectuali romni ce vor contribui activ la Revoluia de la 1848 i la drumul spre independena romnilor din Transilvania. Eu prefer aceast abordare, datorit efectelor pozitive pe termen lung asupra ntregii populaii i privesc admirativ o mn de oameni care au reuit, n condiiile cele mai aspre, s nfiineze 300 de coli i s educe un popor ntreg. IT-ul clujean are att resursele, ct i condiii infinit mai propice de a se implica n schimbarea calitii educaiei la nivel de mas i s i rezolve pe termen mediu i lung problema resurselor umane.

Marius Mornea

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

www.todaysoftmag.ro | nr. 14/August, 2013

eveniment

Conferina Romanian Testing Community 2013


onferina anual organizat de RTC (Romanian Testing Community) a crescut de la ediia precedent la capitolul cel mai important: coninut. De la trei prezentatori la zece, de la o zi cu trei seminarii la dou zile, una cu dou serii-uri paralele, a cte patru seminarii, i una dedicat celor dou sesiuni practice inute de Paul Gerrard i Andy Harding. Practic anul acesta acelai numr de participani au primit de cinci ori mai mult coninut. Iar schimbul de informaii nu s-a limitat la sesiunile de prezentri. Punctul forte al conferinei a fost atmosfera familial i interactivitatea prezentatorilor. n fiecare pauz puteai s ii angajezi n discuii, care de multe ori se lungeau ntr-o sesiune privat pn la urmtoarea pauz. Exemplul cel mai elocvent este Scott Barber , care a ajuns la conferin total ntmpltor (era n zon, avea o pauz de 2-3 zile ntre contracte i a trimis un mail comunitilor din zon, oferindu-se voluntar), dar oferea constat feedback, att n timpul seminariilor, ct i dup, att participanilor, dar mai ales vorbitorilor. Tot el mi-a mrturisit ca se bucur de alegerea fcut, deoarece atmosfera i interesul participanilor pentru coninut, plaseaz conferinele din Cluj n topul lui personal, devansnd marile conferine internaionale supraaglomerate de marketing i vnztori. Am profitat i noi de aceast atmosfer deschis a vorbitorilor i am pus cteva ntrebri pentru cititorii notri: 1. Care ar fi top trei conferine internaionale care nu trebuie ratate? 2. Numii top trei surse de informare n domeniul QA. 3. Dintre toate uneltele din rutina zilnic, numii top trei ca utilizare/utilitate i, n cazul n care avei, una mai puin cunoscut, dar esenial. 4. Care ar fi urmtoarea paradigm n testarea software? invitaie i un topic foarte bine definit, cu scopul de a rezolva o problem specific din testare. Pe acestea din urm le recomand cu cea mai mare cldur. De exemplu: WOPR (Workshop on Performance and Reliability) sau DEWT (Dutch Exploratory Workshop on Testing). 2. Blogul AST (Association for Software Testing) este o foarte bun surs agregat de informaii. 3. MindMap, Lucidchart, Jing i Skype. O unealt subestimat ar fi SmartDraw. 4. Aproape toate conferinele sunt pline de discuii despre alinierea testrii cu obiectivele de business (ex. profitabilitatea). Eu o numesc Latura de Business a Testrii (The Business Side of Testing) i este principala preocupare la nivel nalt a comunitii de testri. d e i n for m a i e : Mi c h a e l B o lt on , Miagi-Do blog. Crile i interaciunea direct: meetups, gatherings (SheffieldTestGathering). 3. Jira, Confluence, TestRail, Twitter. Unealta cea mai important i totui cea mai subestimat este creierul. Eu l folosesc zilnic! 4. TDD + schimbul de informaii ntre diferite roluri n echipele de dezvoltare. 1. ALE Agile Lean Europe, Agile Testing Days, Lets Test, Agile Testing Meetup, Zappers Meetup. 2. Software Testing Club (ministryoftesting.com), Gojko.net, Michael Bolton, Seth Godin. 3. Mindmap, LeanCanvas, JMeter. Indirect legat de testare Competing Values Framework. 4. Evoluia de la dezvoltarea bazat pe proces la procese axate pe relaii ntre coechipieri cu responsabiliti diferite.

Brndua Axon

1. E x i s t d ou t ipur i d e conferine: a. c e l e m a r i , dominate de prezentri ale produselor noi, orientate mai degrab pe networking i vnzri. De exemplu: CAST (Conference of the Association for Software Testing) care va avea loc n August n U.S.A.; sau Lets Test care are loc anual n Suedia n mai i n Australia n august i septembrie. b. cele mici, cu acces bazat doar pe

Scott Barber

1. G o o g l e Testing Conference, Selenium Conference, DevOps Day Europe. 2. G oj ko Ac c e pt an c e T DD newsletter sptmnal; Google Testing Sperm c i la anul vom fi rsfai cu blog. acelai volum mare de coninut de calitate, 3. Emacs (cod), Twist (teste), Jenkins, poate chiar mai mult, n aceeai atmosfer HipChat (Atlassian). relaxat de familie. 4. NoQa team evoluia spre eliminarea distinciei ntre rolul de programator i tester, prin mutarea diferenelor n unelte i procese automatizate. 1. Te s t B a s h Brighton (atmosfera prietenoas i evenimente pre-conferin foarte utile); EuroSTAR; STARWest & STAREast. 2. Oamenii sunt o surs esenial

Gabor Torok

Stephen Blower

Marius Mornea

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

10

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

startup

Startup Transilvania

ot mai mult se vorbete despre nevoia companiilor de soft din Romnia de a trece de la outsourcing la dezvoltarea propriilor produse. Nu se tie ct timp serviciile companiilor de soft locale vor mai fi alese n detrimentul altor companii. Momentan ne avantajeaz un pre sczut i o calitate crescut pentru servicii de soft. i nt e r n a i o n a l n c o n s t r u i r e a i poziionarea pe piee regionale i globale. Programul STEP-Up include 3 luni de munc susinut i relevant asistat, sesiuni de studiu sptmnale cu mentorii i partenerii programului, serii de seminarii cu anteprenori de succes, evenimente sociale lunare cu liderii din business din comunitate, interaciuni frecvente Lista complet de mentori este cu fondatorii companiilor i echipele de disponibil pe site-ul programului management, dar i provocri de a nva startuptransilvania.ro de la persoan la persoan. Programul ncepe la sfritul lunii Noi am selectat cei mai buni mentori august i se va ncheia n noiembrie cu o zi locali i internaionali, cele mai avantajoase de prezentare n care startup-urile vor arta beneficii marginale i am creat legturile rezultatul muncii lor n cadrul unui demo cu cele mai bune reele de profesioniti din day. ncurajm companiile locale de soft s industrie. participe cu startup-urile interne i s fac Dintre mentorii din cadrul programu- un pas semnificativ spre propriile afaceri. lui STEP UP i menionm: Philipp Kandal - CTO & founder Skobbler, Drago Roua - investitor i antreprenor romn, Kate Lowes - CEO la UK Innovation Group.

Probabil c multe companii de soft i-au stabilit o strategie de dezvoltare pe 5-10 ani n avans. Dac n aceast strategie e inclus i crearea de produse proprii atunci acest articol cred c va fi de interes. Vineri, 19 iulie 2013, s-a lansat la ClujNapoca programul pentru startup-uri STEP UP. Scopul acestui program este s ajute startup-urile s mearg rapid i lean de la idee la prototip. S transforme un set de resurse (input): idee, oameni i timp (3 luni) ntr-un rezultat (output): MVP - prototip al produsului propriu. MVP-ul sau minimum viable product-ul este de dorit i foarte posibil s fie atins n 3 luni de zile. STEP-Up vizeaza s: Asigure sprijin i continuitate antreprenorilor dup participarea la evenimente i competiii start-up. Aduc mentori i resurse care s susin dezvoltarea echip elor antreprenoriale. Dezvolte legturi financiare pentru start-up-urile din Transilvania cu alte centre i comuniti din Europa i America. Ad u c l o c a l k n ow - h ow u l

Cristian Dasclu
Cofondator @ Cluj Hub

cristian@clujhub.ro

www.todaysoftmag.ro | nr. 14/August, 2013

11

startups

Despre finalitii Romanian Startup Awards

up cum probabil titi, TheNextWeb premiaz cele mai importante startupuri, antreprenori i investitori locali. Pe lista celor 12 se afl i Romnia, evenimentul din Bucureti fiind co-organizat de Geekcelerator. Voi face n continuare o scurt analiz a celor nominalizai. Erepublik 012 a fost un an fr mari tiri din partea Erepublik, cu excepia plecrii co-fondatorului George Lemnaru, ce lucreaz de zor la noul su proiect GreenHorseGames. Ateptm lansarea noii versiuni a Erepublik pentru 2013. KeenSkim nc un one-man-show, KeenSkim este dezvoltat de Tudor Vlad i a absolvit ( Magna cum Laude, a spune) ediia de var a Eleven, unul dintre cele dou acceleratoare din ara vecin i prieten, Bulgaria. Proiectul a progresat mult n termeni de tehnologie i produs, partea de business mai are timp s creasc. Felicitri lui Tudor Vlad, care a prins finala How to Web 2012 / Startup Spotlight, apoi a ctigat Best Pitch la Venture Connect n toamn, un antreprenor ce i mbuntete vizibil abilitile de business. M av e n h u t / S o l i t a i r e A r e n a Mavenhut au avut un an plin: au absolvit Startupbootcamp Dublin (am dat i noi o mn de ajutor), a ctigat Best Pitch la How to Web 2012 / Startup Spotlight i au primit o finanare de 550k de la SOS Ventures, cea mai mare prim rund de finanare primit de la Braininent ncoace. E greu de crezut, dar acum un an echipa condus de Bobby Voicu de-abia se forma. Cu siguran, Mavenhut sunt unul dintre principalii pretendeni la titlul de startupul anului. RealColors Echipa Makan Studios a lansat n primvara o prim aplicaie, numit RealColors, ce a fost ulterior prezentat de Friday App Review ( emisiune a Android Developers) ca Staff Pick of the Week. Momentan, echipa i pregtete urmtoarea aplicaie i marele come-back n 2013. S l i c k F l i c k f on d at d e Ma r i a Constantinescu, SlickFlick i-a stabilit cartierul general la Timioara dup o prim

Despre startupuri si co-fondatorii nominalizati

123ContactForm fondat acum 5 ani, 123ContactForm a trecut de la cenureasa la prinesa n ultimii doi ani. Dup ce echipa original (Tudor Bastea i Florin Cornianu) a fost completat cu Adrian Ghear ca investitor, 123ContactForm i-a GoodMomming Pornit de doi schimbat interfaa, i-a mbuntit mone- antreprenori moldoveni super-activi, tizarea i i-a crescut n permanen echipa GoodMomming a fost lansat n 2012, a pnla 10 canguri. vizitat TechCrunch Disrupt, apoi a fost finalist i Runner-up la How to Web 2012 5minutes.to fondat de Ctlin / Startup Spotlight i, spre finalul anului, a Zorzini i Iulia David, 5minutes.to a fost acceptat la acceleratorul GrowLab. Un fcut parte din batch-ul de primvara al an plin de evenimente pozitive, sperm ca Springboard 2012. Interfaa uor de utili- 2013 s fie i mai i. zat i-a adus dou nominalizari, pentru cea mai buna aplicaie web i cea mai bun DocTrackr dei nu este un startup experien de utilizare. 100% romnesc, DockTrackr, co-fondat de Alex Negrea, a atras atenia datorit Appscend finaliti n 2011 la How investiiei primite dup absolvirea accelerato Web / Startup Challenge, Sebastian torului TechStars Boston $2M USD de la Vduva i echipa au crescut afacerea liniar, cteva dintre cele mai importante fonduri an de an. 2012 a prut a fi un an n care de capital din domeniul tech. i urm lui i-au propus s scaleze vnzarile, blogul i Alex s cheltuie cu grija banii n 2013. PR-ul fiind hiper-active. Ctre finalul anului, startupul a fost acceptat n programul i-Rewind fondat de Bogdan Manoiu Startup Chile i i-au extins vnzarile ctre dupa How to Web 2011 (stii celebrul email America Latin. cu subiectul Felicitari eti bunic !) si cu Andrei Piti (din nou) n rol de business CleverTaxi lansat n a doua jum- angel / co-fondator a fost lansat n 2012 tate a anului n parteneriat cu Orange, pe prtia de la Predeal, n parteneriat cu CleverTaxi faciliteaz comandarea taxiu- Orange. Conceptul inovator (i-Rewind te lui cu ajutorul telefonului mobil. n ciuda filmeaz n timp ce cobori pe prtie i i unor mici turbulene imediat dup lansare, face ad-hoc un film personalizat) i echipa CleverTaxi a reuit s creasca (pe o piaa experimentat, condus de entuziastul relativ aglomerat), extinzndu-se i in Bogdan Manoiu, i face s fie unele dintre Cluj. Startupul l are ca angel investor (i cele mai interesante startupuri de urmrit uneori programator sef) pe Andrei Piti. n 2013.

12

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


runda de investiii de la mai muli business angels din UK. Echipa include co-fondatorii NextRoot, firm ce a dezvoltat Instamap, aadar o echip experimentat i foarte interesant. Tjobs firma murean a avut n 2012 un an linitit, avnd ca repere participarea la mai multe competitii de startupuri unde s-au clasat onorabil in finala (Dublin Web Summit, Pioneers Festival, Europas). Tjobs pare foarte interesat de construirea unei imagini in afara Romaniei, dorind probabil s se extind la nivel internaional. Efortul a fost condus de Andreas Cser, business ange- lul care are un mare merit n ambiiile crescnde ale Tjobs. Zonga nceputul anului a adus lansarea Zonga, un serviciu de muzic romnesc. Ca utilizator de Zonga sunt foarte ncntat de experiena din aplicaie (cu cteva mici excepii) i admir tenacitatea lui Sergiu Biri, mai cunoscut de la Trilulilu.ro, care a reuit s aduc la aceeai mas o serie de companii importante din industria muzicii. Later edit: Zonga a fcut apoi un parteneriat interesant de distrbutie cu Vodafone. Zyway Zyway este singurul proiect despre care nu tiu s v spun nimic. Proprietate a firmei ieene ThinSlices, Zyway este nc n faza de lansare.

Despre investitori

Din lista celor 5 investitori propui pentru a fi votati, unul singur a fost activ n 2012 i acela este Andrei Piti. Ultimele investiii ale lui Vlad Stan i Victor Anastasiu ( prin Seedmoney ) au avut loc n noiembrie 2010 ( Squeeqly ) i vara lui 2011 ( SkinScan ), ultima investiie a lui Andreas Cser este Tjobs ( 2010 ) i ultima investiie a lui Adrian Ghear este 123ContactForm ( 2011 ).

Despre cei neselectati

Summify Mircea Pasoi i Cristian Strat au avut un nceput de an spectaculos, odat cu vnzarea Summify ctre Twitter. Cifrele tranzaciei nu au fost fcute publice, ns chiar i un acqui-hire sun spectaculos n peisajul lipsit de veti al achiziiilor startupurilor romnesti. uberVU Angajarea unui CEO american, dou birouri de vnzari deschise n USA i America Latin, o nou versiune orientat ctre entreprise, acestea au fost cele mai importante repere ale echipei Ubervu, care acum a ajuns la un total de peste 50 de angajai. Brainient n 2012 Brainient a ridicat o runda de finantare de $1.8M pentru a-i scala operaiunile de vnzare i a deschis birouri n SUA. Peter Barta Discret n legtur cu investiiile sale, Peter a adugat pe lng Appscend ( unde este investitor din 2011) i Traderion ( n 2012 ) i teoretic mai exist nc 1-2 investiii pe care nu le cunoatem.

De final

Romanian Startup Awards au generat un val de interes extraordinar, i pare a fi un moment foarte bun de ntlnire a comunitii locale, cu toate c este vorba de o competiie de tip Eurovision, unde publicul i voteaz favoriii din motive ce nu au neaparat legtur cu rezultatele obinute n ultimul an. Am vzut grupuri de Facebook care ii ndemnau membrii s voteze fondatorii / startupurile / investitorii dintr-o anumit locaie geografic (eterna lupt contra Bucuretiului, deh), o adevarat campanie de presa dus de Mavenhut, i chiar cteva posturi dezinformatoare i trunchiate care analizau startupurile i indicau ctre favoriii autorului, plus suspiciuni de fraud (). Una peste alta, Romanian Startup Awards ramne un exerciiu interesant i util de promovare a startupurilor romneti, sperm s fie i ct mai relevant.
Bogdan Iordache bogdan.iordache@howtoweb.co

Disclaimer: sunt prieten/amic cu majoritatea celor menionati n acest post, dar nu am nicio legtura financiar cu niciunul dintre ei.

este Co-Fondator al How to Web, cel mai important eveniment web din Europa de Est

www.todaysoftmag.ro | nr. 14/August, 2013

13

comuniti

Comuniti IT
m crezut c nu vor fi suficiente evenimente pentru rubrica de calendar n luna August, dar am avut parte de o surpriz plcut. ncepem seria de evenimente din aceast lun cu lansarea numrului 14 TSM care va avea loc la sediul msg systems din ClujNapoca i unde vom avea parte de un mini-summer party la finalul prezentrilor. Un eveniment important ce va avea loc n Bucureti la finalul lunii august este Agile Learning Europe (ALE) 2013, acesta reprezint i recomandarea TSM pentru luna august. Transylvania Java User Group Comunitate dedicat tehnologiilor Java. Website: http://www.transylvania-jug.org/ Data nfiinrii: 15.05.2008 / Nr. Membri: 546 / Nr. Evenimente: 43 Comunitatea TSM Comunitate construit n jurul revistei Today Software Magazine. Website: www.facebook.com/todaysoftmag Data nfiinrii: 06.02.2012 / Nr. Membri: 745 / Nr. Evenimente: 11 Romanian Testing Community Comunitate dedicata testerilor. Website: http://www.romaniatesting.ro Data nfiinrii: 10.05.2011 / Nr. Membri: 626 / Nr. Evenimente: 2 GeekMeet Romnia Comunitate dedicat tehnologiilor web. Website: http://geekmeet.ro/ Data nfiinrii: 10.06.2006 / Nr. Membri: 278 / Nr. Evenimente: 17 Cluj.rb Comunitate dedicat tehnologiilor Ruby. Website: http://www.meetup.com/cluj-rb/ Data nfiinrii: 25.08.2010 / Nr. Membri: 139 / Nr. Evenimente: 34 The Cluj Napoca Agile Software Meetup Group Comunitate dedicat metodelor Agile de dezvoltare software. Website: http://www.agileworks.ro Data nfiinrii: 04.10.2010 / Nr. Membri: 326 / Nr. Evenimente: 33 Cluj Semantic WEB Meetup Comunitate dedicat tehnologiilor semantice. Website: http://www.meetup.com/Cluj-Semantic-WEB/ Data nfiinrii: 08.05.2010 / Nr. Membri: 144/ Nr. Evenimente: 22 Romanian Association for Better Software Comunitate dedicat oamenilor cu experien din IT indiferent de tehnologie sau specializare. Website: http://www.rabs.ro Data nfiinrii: 10.02.2011 / Nr. Membri: 226/ Nr. Evenimente: 12 Tabra de testare Un proiect care i dorete s strng ct mai muli oameni care lucreaz ca i testeri. Website: http://tabaradetestare.ro Data nfiinrii: 15.01.2012 / Nr. Membri: 227/ Nr. Evenimente: 19

Calendar
August 5 Lansarea numrului 14 TSM (Cluj) www.todaysoftmag.ro August 7 Summer evening on a terrace (Cluj) w w w . m e e t u p . c o m / Ta b a r a - d e - Te s t a r e - C l u j / events/127909542/ August 7 Building Startup Communities it-events.ro/events/buildingstartup-communities-with-brad-feld-and-anca-albu/ August 9 International Coworking Day (Cluj) it-events.ro/events/international-coworking-day/ August 17 Open Space on Technology in Startups (Bucureti) it-events.ro/events/open-space-on-technology-in-startups/ August 18-19 coala de var Informatica la Castel (Macea, Arad) it-events.ro/events/scoala-de-vara-informatica-la-castel/ August 19-24 Moodle Moot Romnia 2013 (Braov) it-events.ro/events/oracle-summer-school-2nd-edition/ August 23-25 SummerHacks (Timioara) it-events.ro/events/summerhacks/ August 28-30 ALE 2013 (Bucureti) - recomandarea TSM ale2013.alenetwork.eu August 29 Linked Data Technology Stack (Cluj) www.meetup.com/Cluj-Semantic-WEB/events/115920132/ Joi/sptmnal OpenConnect (Cluj) www.facebook.com/groups/355893314491424/ Miercuri/bilunar OpenCoffee (Cluj) www.facebook.com/opencoffeecluj

14

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

eveniment

Aplicaii pentru previziuni financiare la IEEE Congres on Evolutionary Computation, 2013, Cancun

diia 2013 a congresului IEEE Evolutionary Computation (CEC) s-a desfurat in Mexic, Cancun un decor cel puin exotic pentru noi, europenii. Pe lnga locaia atrgtoare, merit precizat i faptul c CEC este una dintre cele mai mari i importante conferine, avnd ca subiect principal calculul evolutiv dnd astfel cel putin dou motive pentru participarea la eveniment entuziatilor metodelor de calcul evolutiv, printre care m numr i eu. Peste 200 de cercettori, profesori, doctoranzi, cu preponderen din America si Asia, au luat parte la eveniment, pentru a-i prezenta rezultatele, dar i pentru a beneficia de ansa unic de a schimba idei i a ncepe noi colaborri cu nume celebre din domeniu. Lumea companiilor IT a fost reprezentat aproape imperceptibil, eu fiind proabil singura reprezentant a industriei mediul academic conduce detaat n domeniul descoperirilor prin tehnici si metode specifice IT-ului, fr suportul companiilor de profil, din nefericire. Subiectele funcionale abordate la conferin acoper o gam foarte variat: biochimie, biologie, medicin, economie, teoria jocurilor, meteorologie, etc. Aplicaiile algoritmilor evolutivi reuesc sa mbrace experimentele de hibridizare i optimizare a unor metode cunoscute n ateptarea unor descoperiri importante sau, pur i simplu, a unui software performant ce ar micora numarul erorilor umane ca urmare a interpretrilor de exemplu, aflarea tipului unei tumori prin analiza unei radiografii. Posednd cunotine de baz despre calculul evolutiv, asistarea la prezentrile de la CEC aduce noi perspective asupra domeniului, dar i deschide apetitul de cercetare orientat pe aplicabilitate.

Aplicaii financiare folosing calcul evolutiv

Silvia Rusanu

Silvia.Rausanu@isdc.eu Software Developer @ ISDC

Aplicaiile financiare din cadrul CEC au fost orientate n mod exclusiv pe domeniul previzunilor aciunilor la burs. Chiar de la nceputul prezentrilor, autorii recunoteau hazardul abordrii unei asemenea tematici, datorat scepticismului multora asupra existenei unui tipar n fluctuaiile financiare, sau unei linii fine ntre legalitate i ilegalitate. Ipoteza pieei eficiente (Efficient Market Hypothesis - EMH) ncurajeaz scepticii, susinnd c informaia este imediat disponibil tuturor participanilor, iar preurile aciunilor reflect instant starea curent a pieei. EMH presupune ca toi participanii la burs pot obine acelai ctig, indiferent de experiena lor n domeniu deoarece preurile sunt complet aleatorii. Makiel, n The Efficient Market Hypothesis and Its Critics, explic cum EMH respinge utilitatea analizei tehnice sau fundamentale metode de baz ncorporate n aplicaiile de acest tip cu o rat de succes ce reuete s aduc ndoial asupra validitii EMH. n ultimul timp, investitorii folosesc n mod independent analiza fundamental, folosind indici macroenomici, cursul valutar, sau analiza tehnic, folosind preul aciunilor i volumul tranzaciilor. Analiza tehnic pe date istorice ale bursei este utilizat n

www.todaysoftmag.ro | nr. 14/August, 2013

15

eveniment
Aplicaii pentru previziuni financiare la IEEE Congres on Evolutionary Computation
Indicii analizei tehnice folosii sunt: media n micare (MA), trade break out (TBR), filtru (FLR), volatilitate (Vol), momentum (Mom), i media n micare pe momentum (MomMA). Valorile indicilor implicai n algoritm sunt calculate pentru un anumit numr de zile, pe termen scurt i pe terment lung. n ED7 valorile de calculare a indicatorilor tehnici erau fixe, 12, respectiv, 50 de zile aceste perioade fiind preluate direct din modul cotidian de lucru al analitilor economici. Structura de optimizat a algoritmului este un arbore genetic de decizie constrns de gramatica urmtoare:
<arbore> ::= if-then-else <condiie> <arbore> <arbore> | <decizie> <condiie> ::= <condiie> AND <condiie> | <condiie> OR <condiie> | NOT <condiie> | <variabil> <operator relaional> <prag> <variabil> ::= MA12 | MA50 | TBR12 | TBR50 | FLR12 | FLR50 | Vol12 | Vol50 | Mom12 | Mom12 | MomMA12 | MomMA12 <operator relaional> ::= < | > | = <prag> ::= numar raional <decizie> ::= 0 | 1

aplicaiile prezentate la CEC 2013, ele difereniindu-se prin algoritmi de optimizare folosii programare genetic, cutare tabu. Metodele de optimizare din lucrarile ce fac scopul acestui articol funcioneaz pe structuri interne, dar toate intesc spre a rspunde utilizatorului dac un pachet de aciuni merit cumprat sau vndut i ce profit i va aduce aceast operaiune.

Previziuni financiare folosind programare genetic

Kampouridis et all. n Metaheuristics Application on a Financial Forecasting Problem propune hibridizri peste firul principal al algoritmului unei aplicaii ajunse deja la versiunea 8, EDDIE (ED), ce a fcut obiectul cercetrii lui pentru mai muli ani. ED are la baz o versiune a programrii genetice ce ncearc s genereze strategii optime de tranzacionare. Algoritmul folosete ca date de intrare valorile analizei tehnice aplicate asupra datelor istorice (preul zilnic de nchidere i indici tranzactionali), valorile efective ale preului pe o perioada delimitat i rezultatul clasificrii istorice ( 1 decizia de cumprare, 0 decizia de a nu cumpra).

Un arbore descris de gramatica anterioar reprezint o soluie pentru o decizie tranzacional pentru un pachet specific de aciuni. Un set de astfel de decizii este evaluat prin calcularea proporiilor ntre deciziile corecte i cele greite, cu diferite ponderi eroarea ntr-o decizie de cumprare avnd cea mai mare pondere. Algoritmul genetic din ED7 genereaz arbori dintr-un spaiu de cutare limitat de perioada fix de aplicare a indicilor tehnici; ns cu ED8 perioadele devin variabile,

deschiznd astfel spaiu de cutare i evitnd o convergen prea rapid. Rezultatele ED8 au fost raportate a fi promitoare, dar eficiena cutrii a sczut, de aceea, pentru a menine diversitatea soluiilor, dar n acelai timp, pentru a recupera eficiena cutrii, meta-euristici de cutare au fost implicate n algoritm pentru a optimiza caracteristici punctuale are arborilor: variabilele ce descriu noile perioade de calculare a indicilor tehnici. Simulated annealing (SA) este un algoritm ce permite alegerea unei soluii mai puin bune cu o anumit probabilitate (pentru evitarea gsirii unui optim local); n ED8, SA se aplic nodurilor limitrofe ale unor arbori aleatorii din populaie, modificnd perioada cu o valoare din intervalul [-10, +10]. Cutarea tabu (TS) este o meta-euristic ce foreaz cutarea unei soluii mai bune s nu se ntoarc la soluii vizitate crend din acestea o lista tabu cu o existen limitat; n ED8, TS se aplic n acelai mod ca SA. Aceast aplicaie a fost testat fa de 10 seturi de date obinute prin finance. yahoo.com. Dac ED8 era capabil sa ofere n medie o rat a corectitudinii de 0.5735 pentru 10 seturi de date, i pentru cele mai bune soluii 0.75, ED8-SA ntoarce 0.5773 pentru aceleai date, iar cea mai bun soluie 0.81; ED8-TS ntoarce 0.5591, iar cea mai bun soluie 0.81. Din rezultatele tocmai enunate, mbuntirea nu e remarcabil la nivel de medie, ns investitorii care ar folosi aplicaia cu siguran vor cauta cea mai bun soluie, astfel noi hibrizi devin eficace.

16

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


software complex i independent. La nivelul implementrii, cele dou se aseamn prin utilizarea indicilor de analiz tehnic ca suport decizional. Din punct de vedere algoritmic, cele dou propuneri sufer la capitolul de dimensionare a spaiului de cutare Kampouridis l extinde foarte mult, iar Kuo, a putea spune, l ine foarte bine controlat (dei autorii nu intra n detalii). Aceste comparaii sunt fcute doar cu scopul de a indica diversitatea abordrilor ce poate rezulta n soluii performante, nu ca o recenzie a acestor lucrri foarte apreciate de audien la CEC. Ca not de final, de inspiraie liric, participarea la CEC 2013 a fost o experien unic prin numrul mare de idei i metode noi prezentate, prin numrul mare de participani doritori de discuii i dezbateri la nivel algoritmic, prin organizarea demn de invidiat a organizatorilor, i prin tot exoticul oferit de locaia conferinei. Asemenea conferine se organizeaz anual urmtoarea ediie CEC 2014 va fi n Beijing, China. Aadar, cercetai!

Previziuni financiare folosind cutarea tabu

Kuo et all. n Dynamic Stock Trading System based on Quantum-Inspired Tabu Search Algorithm vine cu un sistem dinamic ce e capabil s genereze ntr-un context real strategii complete vnzare i cumprare. Algoritmul de baz al aplicaiei, o form nou pentru cutarea tabu, avnd concepte mprumutate din fizica cuantic, a fost dezvoltat de aceeai echip. Ideea algoritmului este de a asigna fiecrei soluii posibile o matrice cuantic, fiecare caracteristic a soluiei avnd o valoare din intervalul [0,1] probabilitatea cuantic. Cutarea tabu se traduce n acest context prin actualizarea matricilor tuturor soluiilor prin scderea ponderilor din matrici pentru caracteristicile din cea mai slab soluie, respectiv, prin creterea ponderilor pentru caracteristicile din cea mai bun soluie. Dinamismul aplicaiei este dat prin aplicarea conceptului de fereastra

glisant ( sliding window ) seturile de date de antrenament de la o iteraie la alta se modfic, n acelai timp cu seturile de test. Din teoria economic, se aleg din nou indici de analiz tehnic, cu perioade fixe de aplicabilitate per indice. Alegerea unor indici reprezint o strategie de cumprare/ vnzare, o soluie. O soluie este apreciat prin estimarea profitului n valut i numr de aciuni. Evaluarea sistemului s-a fcut pe date istorice, n comparaie cu alte soluii propuse n trecut. Simulrile prezentate n lucrare raporteaz pentru unele seturi de date un profit maxim de 69.94%, fa de doar aproximativ 14% pentru alte implementri pe aceleai date.

Concluzii i alte impresii

Cele dou aplicaii descrise anterior sunt comparabile doar la nivel de domeniu de aplicabilitate, ntruct prima dintre ele ofer doar un mecanism de suport al deciziilor investitorilor, iar cea de-a doua, un

www.todaysoftmag.ro | nr. 14/August, 2013

17

programare

Cum nva un artizan software: deliberate practice


icarea software craftsmanship promoveaz ideea c singurul mod n care un dezvoltator poate fi rapid este prin a se comporta raional n perioade de criz. Aceast gndire este o reacie la comportamentul de a scrie cod greu de modificat i de neles, practic de a produce datorie tehnic (eng. Technical debt), n momentul n care trebuie s livrezi software ntr-o perioad scurt de timp. Modul prin care micarea software craftsmanship crede c un dezvoltator poate s devin att de rapid este prin a practica ct mai des, n contexte ct mai diferite, pe platforme i limbaje ct mai diferite. Astfel deliberate practice este foarte strns legat de orice dezvoltator care se numete aspiring software craftsman sau software craftsman. proporie prea mare din timp pe scen i prea puin timp ntr-un mediu de nvare. Iar aceasta se ntmpl ntr-un domeniu foarte dinamic, unde schimbarea i noutatea este la ordinea zilei. Atunci un aspiring software craftsman trebuie s i aloce timp pentru a se perfeciona. Acesta poate face o investiie, iar n loc s lucreze efectiv 40 de ore pe sptmn, lucreaz doar 30, iar restul de timp i-l dedic practicii. Alt opiune este s aloce timp seara i/sau dimineaa n fiecare zi precum i zilele de smbat i/sau duminic pentru a nva lucruri noi. Dar cum s practicm? Ei, bine, exist un numr de formate consacrate de deliberate practice, dar n cele ce urmeaz ne vom concentra pe urmtoarele: Coding Kata, Performing Coding Kata, Coding Dojo, Cyber Dojo, Testing Dojo, Coderetreat, Te s t Au t o m a t i o n R e t r e a t , Pa i rprogramming, Pet projects, Coaching.

Alexandru Bolboaca

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

Ce este practica?

Adrian Bolboaca

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

Practica este un act de repetare a unui comportament sau de implicare repetitiv ntr-o activitate n scopul de a se mbunti sau de a o stpni, ca n fraza prin practic devine perfect (eng practice makes perfect. Echipele de sport practic pentru a se pregti pentru jocuri concrete. A cnta la un instrument necesit foarte mult practic. Este o metod de nvare i de dobndire de experien. Cuvntul deriv din grecescul (praktike), femininul lui (praktikos), pregtit pentru sau realizeaz o aciune, practic i din ver- Coding Kata bul (prasso),a dobndi, a nfptui, Conceptul acestui tip de de practic efect, realizare. (Ref http://en.wikipedia.org/ este foarte simplu: aflu unde vreau s m wiki/Practice_%28learning_method%29) perfecionez i vreau s practic ntr-un interval scurt de 10 minute o or o activiExist nenumrate asemnri ntre tate care m va ajuta s fiu mai bun. Aceast sport, muzic i programare. Performana idee vine tot din artele mariale, unde un pe teren, pe scen sau n producie este nvcel trebuie s repete anumite micri un factor esenial pentru succes n aceste pn este mulumit de progres i poate s domenii. Dar la fel cum un sportiv sau un i arate sensei-ului cum a progresat. Pentru muzician are nevoie de practic pentru a dezvoltatori se aplic acelai model: acesta deveni expert n momentul n care acti- repet rezolvarea aceleiai probleme, n veaza, la fel i un dezvoltator software are acelai mod, pentru aceeai perioad de nevoie de practic pentru a stpni tot mai timp pn cnd consider c rezolvarea, bine domeniul su. dar i etapele ei, sunt unele corecte ntr-un Problema esenial n industria timp foarte scurt. software este c, spre deosebire de sport Un artizan software dorete s pracsau muzic, un dezvoltator si petrece o tice minim 10 ore pe sptmn, pentru

18

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


c acesta este singura modalitate prin care poate s fie mai rapid i mai eficient. Tu ct de mult exersezi pe sptmn?

Performing Coding Kata

Un prezentator scrie cod n faa unei audiene pe o tematic prestabilit i ntrun interval de timp prestabilit. Acesta trebuie s explice audienei ce face n timp ce progreseaz. Audiena este rugat s nu intervin dect n cazul n care chiar nu neleg ce se ntmpl. Acest gen de exerciiu este foarte intens pentru prezentator i poate fi foarte educativ pentru audien, pentru c cei din audien pot s nvee lucruri noi vznd cum un coleg de breasl rezolv o problem. tiu c ai vrea s faci un coding kata. Cnd il faci?

Coding Dojo

Este un format ce provine din artele mariale i este adaptat pentru dezvoltatori. Coding dojo este un exerciiu de grup cu scopul de a transmite cunotine ntre participani. Este propus o tematica i o perioad de timp n care grupul va ncerca s rezolve o problem, exersnd anumite practici. O caracteristic esenial a acestui format este ca el s aiba un timp prestabilit de desfurare i o tematic foarte specific. O persoan experimentat faciliteaz aceast ntlnire, concentrndu-se ca regulile s fie aplicate, timpul s fie respectat i scopul convenit al exerciiului s fie pstrat. Coding dojo randori. Este forma cea mai rspndit, n care doi programatori scriu cod folosind un proiector pentru ca toat lumea s poat vedea. Ei folosesc pair-programming, iar primul care a nceput sesiunea este nlocuit la un interval de timp (n jur de 5-7 minute), de urmtorul programator din sal. Perechea celui care pleac ncepe s scrie cod, iar cel nou-venit doar observ. Dup acelai interval de timp cel care scrie cod se retrage i este nlocuit din nou cu cineva din sal. Se poate face o list n avans, pentru ca s se tie de fiecare dat cine va fi la rnd. Astfel, prin rotaie, toat lumea va scrie cod i va vedea cum scriu cod ceilali. O variaie este ca atunci cnd cineva din sal are ceva de spus trebuie s mearg la tastatur i s vorbeasca. Astfel nimeni din sal nu are voie s vorbeasc, dect atunci cnd scrie cod pe proiector. Coding dojo mai are o variaie: o persoan foarte experimentat face un coding

kata cu un scop bine nefinit i cu o durat de timp prestabilit (20-30 minute). Apoi audiena este rugat s repete paii realizai de prezentator. n etapa a doua, n care audiena repet paii iniiali, prezentatorul se transform n facilitator, asigurndu-se c scopul exerciiului este pstrat i c regulile sunt respectate. Acest format este mult mai aproape de ceea ce se ntmpl cnd un sensei vrea s arate clasei cum trebuie s realizeze anumite micri i apoi i pune s repete dndu-le sugestii continue de mbuntire. Ai aflat unde i cnd e urmtorul coding dojo la tine n ora?

testingdojo.org. Ce mai atepi s participi la un testing dojo?

Coderetreat

Cyber Dojo

Cyber dojo este o aplicaie online creat de Jon Jagger pe principiile coding dojo. Aceasta permite conectarea n paralel a mai multor persoane sau grupuri, sau accesarea individual a unui server. n aplicaia online se poate scrie cod n majoritatea limbajelor curente. Aceasta conine un numr destul de mare de probleme care pot s fie rezolvate. Avantajul cyber dojo este uurina i rapiditatea utilizrii. Nu este nevoie de nicio setare pentru un mediu de dezvoltare. Dup ce termini de citit acest articol ncepi s-l foloseti, nu? Iat link-ul: http:// www.cyber-dojo.com. Dup ce coding dojo a devenit foarte popular ntre programatori, aceleai principii au fost aplicate pentru ca i testerii s poat nva unii de la ceilali. Pentru mai multe detalii accesai http://www.

Testing Dojo

n anul 2009 un grup de programatori s-au ntlnit la conferina Code Mash n SUA i s-au gndit c ar vrea s aib un format de o zi ntreag pentru a exersa, spre deosebire de formatul uzual al coding dojo de cteva ore. Ideea unui code retreat este de a combina mai multe din elementele dintr-un coding dojo sau coding kata ntr-o singur zi de exersare. Code retreat-urile au loc de obicei smbta i dureaz toat ziua. Evenimentul este structurat n 6 sesiuni de 45 de minute, separate de retrospective scurte. Regulile sunt simple: n cadrul fiecrei sesiuni, programatorii lucreaz n pereche cu scopul de a scrie cod cu anumite constrngeri impuse de facilitator i care faciliteaz nvarea. Dup fiecare sesiune, codul scris este ters complet, perechile i constrngerile se schimb i scrisul de cod rencepe. Romnia a fost de la bun nceput foarte activ n acest domeniu, Alexandru Bolboac i Maria Diaconu fiind doi dintre cei care au ajutat la cristalizarea formatului actual. De asemenea coderetreat-uri sunt organizate n mod uzual n comunitile AgileWorks din Romnia. n fiecare an este organizat Global Day of Coderetreat, cnd orae din ntreaga lume sunt invitate s participe la un eveniment cu acelai format. Timp de 32 de ore programatori de pe toate continentele nva s devin mai buni prin practic.

www.todaysoftmag.ro | nr. 14/August, 2013

19

programare
Cum nva un artizan software: deliberate practice
Multe dintre orae comunic prin video Pet projects conferine pentru a se cunoate i pentru a O modalitate foarte bun de a exersa mprti nvturile din acea zi. este un proiect personal. Orice tehnologie i orice tematic este bienvenit cu o sinCnd este urmtorul coderetreat? gur condiie: s fii foarte pasionat de ceea Rspunsul este aici: http://coderetreat.org! ce faci. Un proiect personal ajut pentru c este un mediu real de dezvoltare, dar deciTest Automation Retreat ziile nu sunt luate de un client sau de un Urmnd formatul unui coderetreat, ef, ci chiar de tine. Astfel poi s nvei s Makus Grtner a creat aceast variaie iei decizii de arhitectur, de design. Ct de unde testerii sunt invitai s participe la 6 bine este s ai codul curat i alte practici sesiuni de 45 de minute pentru a automa- uzuale din lumea artizanilor software. tiza teste pentru o aplicaie web. Formatul A ncepe un proiect personal este foarte este nc nou i proaspt, dar foarte valo- simplu. Oricare dintre noi are o idee pe care ros. (Ref http://www.shino.de/2012/04/28/ ar vrea s-o exploreze scriind un program. coderetreat-goes-testautomation) Aa c trebuie doar s ne alocm puin timp pentru a o pune n oper. Adesea se Cnd participi la urmtorul test auto- ntampl ca un proiect personal s se transmation retreat? forme ntr-un produs vandabil. ultima dat?

Comunitate

Pair-programming

Aceasta este o form foarte simpl de practic. Vrei s faci ceva i chemi pe altcineva s te ajute pentru c nc un punct de vedere este binevenit. Din experien putem spune c pair-programming este cea mai rapid modalitate de nvare. Ai nevoie doar de un alt profesionist care s aiba acelai interes ca tine. Apoi lucrnd mpreun amandoi vei nva foarte multe unul de la cellalt. Este de asemenea i obositor, deci ncercai s nu exagerai, dar devine mai uor de acceptat pe msur ce crete exeperiena cu aceast practic. Pair-programming poate fi fcut chiar i remote. Tu cnd ai fcut pair-programming ultima dat?

Tu ct timp lucrezi pe luna la proiectul tu personal? Orice form de deliberate practice poate fi realizat de unul singur, sau sprijinit de un coach tehnic. Cnd este implicat i un coach tehnic procesul de nvare este accelerat puternic, pentru c feedback-ul continuu i sugestiile concrete, chiar lucrul n sesiuni de pair-programming, sunt factorii determinani pentru o nvare eficient. Aceast relaie se aseamn cu relaia dintre nvcel i sensei n artele mariale. Oricine poate nva arte mariale din cri, sau de la practicani puin experimentai, dar un sensei ajut cu sfaturi pentru a avea un proces rapid i coerent de nvare.

Coaching

Participarea ntr-o comunitate de profesioniti din domeniul de activitate este un alt factor care ajut la mbuntirea continu. Aici putei cunoate oameni cu aceleai pasiuni, cu nivele diverse de cunotine, dar care au un scop comun: s nvee unii de la ceilali. Exist comuniti de programatori, testeri, arhiteci n toate oraele mari din Romnia i din Europa. De asemenea exist comuniti care se ocup de un limbaj specific sau o tehnologie specific, n cazul n care scopul nvrii este o tehnologie n sine. Maj or it ate a e ve n i me ntel or d i n comunitile locale sunt gratis, acesta fiind un factor n plus pentru a atrage ct mai muli oameni pasionai din lumea IT i nu numai. Comunitile Software Craftsmanship (AgileWorks n Romnia) se concentreaz mai curnd pe lucrurile fundamentale pe care profesionitii din lumea software ar trebui s le stpneasc. Membrii acestora au specializri, vrst sau experien foarte diverse. Dac nu tii deja care sunt comunitile din oraul tu, d o cutare pe internet sau pe meetup.com!

Un expert separ abilitile care sunt necesare pentru a fi un expert i se concentreaz pe mbuntirea acelor abiliti n timpul practicii zilnice, adesea prin pairing i ajutat ndeaproape de feedback-ul unui Tu cnd ai lucrat cu un coach tehnic coach. Un alt factor important al deliberate practice st n practicarea continu a unei abiliti la niveluri tot mai provocatoare cu intenia de a o stpni. (Ref Mayer, R. E. (2008). Learning and Instruction. Upper Saddle River, New Jersey: Pearson Education, Inc) Un lucru este clar, fr practic nu putem deveni experi ntr-un domeniu att de vast i dinamic precum industria software. Astfel v invitm s ncepei s practicai acas sau la serviciu. Iar apoi v invitm s v implicai n comunitatea local prin activiti de practic n group. Ce mai ateptai?

Concluzie

20

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Scurt introducere n mediul SAP

up ce n urma publicrii ultimelor articole pe teme SAP ni s-a sugerat din partea cititorilor c o scurt introducere n mediul SAP ar fi foarte bine venit, am hotrt s urmm acest sfat iniiind o serie de articole cu scopul de a oferi o vedere de ansamblu asupra aspectelor care in de specificul SAP. Astfel, n acest articol ne propunem s analizm cteva detalii ale produselor respectiv tehnologiei SAP, ncercnd s rspundem la unele ntrebri precum: Ce este SAP de fapt? Care este specificul produselor SAP? Ce anume este deosebit la tehnologia SAP i ce presupune dezvoltarea software n acest domeniu? calitii software-ului, fiind adesea i un factor care determin concurena din aceeai bran s aleag la rndul ei aceast soluie. i n cazul soluiilor SAP, acest afirmaie este ct se poate de valabil, cu att mai mult cu ct portofoliul SAP cuprinde n exclusivitate soluii informatice dezvoltate nu pentru un anumit client, ci pentru o ntreag bran. n terminologie SAP (dar nu numai) aceste produse sunt numite soluii standard. Mai mult dect att, implementarea unei soluii informatice consacrate n cadrul unui enterprise, spre deosebire de dezvoltarea uneia noi (from scratch), poate avea un impact pozitiv i asupra imaginii companiei respective, putnd influena pn i ratingul primit de aceasta ca urmare a unui audit.

Victor Ionescu

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

Soluii i clieni SAP

SAP este provider-ul de enterprise business software numrul 1 la nivel global, avnd peste 230000 de clieni i un portofoliu ce acoper ntreg spectrul de produse, de la soluii enterprise tipice precum Financial/Accounting, HR, Customer Relationship Management i pn la unele foarte specifice, aa numitele Focused Business Solutions. O problem interesant ar fi cu siguran identificarea motivelor pentru care un numr att de mare de clieni enterprise aleg SAP. Desigur acestea sunt diverse, ceea ce se spune ns de multe ori, este c cel mai bun promotor al unei soluii informatice l reprezint portofoliul de clieni i povetile de succes ale acestora, sau cu alte cuvinte: implementarea unei soluii IT care reuete s eficientizeze procesele de business ale unei companii, reprezint o dovad a

Provocri ntlnite n dezvoltarea unei soluii standard

Avnd n vedere abordarea SAP, de a nu deservi un anumit client ci mai degrab o ntreag industrie prin produsele sale, n cele ce urmeaz vom analiza care sunt provocrile de care se lovete un dezvoltator software atunci cnd urmrete implementarea unei noi soluii standard, i mai ales

www.todaysoftmag.ro | nr. 14/August, 2013

21

programare
Scurt introducere n mediul SAP
care este aportul pe care l aduce platforma tehnic SAP n vederea soluionrii acestor provocri. Din punct de vedere al funcionalitii pe care o va pune la dispoziie, softul standard trebuie proiectat astfel nct s suporte toate procesele de business tipice ale branei, n acelai timp fcnd ns abstracie de orice detaliu care este specific doar anumitor clieni. De aceea, faza de specificare funcional a noii soluii standard implic adesea colectarea de informaii de la clieni multipli din cadrul domeniului respectiv. Aceast activitate are ca scop final definirea produsului la un nivel de abstractizare suficient de nalt, astfel nct s fie posibil implementarea acestuia la oricare client din acea bran. Prin urmare, specificarea funcional a produsului reprezint o activitate de o importan major, care necesit o foarte bun cunoatere a business-ului , de ea depinznd n mare parte succesul ulterior al produsului. tehnic pe baza creia se dezvolt noul produs s vin n ajutorul dezvoltatorului, punnd la dispoziia acestuia mecanisme care s fac posibil implementarea unui produs nu pentru un client, ci pentru o ntreag industrie. Acest lucru este ct se poate de valabil n cazul soluiilor SAP, platforma tehnic i mediul de dezvoltare fiind gndite de la bun nceput cu aceste eluri n minte. n cele ce urmeaz vom prezenta succint cteva din conceptele specifice SAP, care vin tocmai n ntmpinarea problemelor ce in de flexibilitatea produselor standard. folosite acestea.

Enhancements
Dup cum am menionat deja, atunci cnd se dezvolt o soluie standard, se vor ivi adesea situaii n care un anumit proces nu poate fi definit n totalitate n cadrul soluiei standard, fie pentru c anumite aspecte nu sunt cunoscute de la acel moment, fie pentru c acestea difer de la client la client neexistnd astfel o soluie standard pentru acea situaie. Astfel apare nevoia pentru un mecanism prin intermediul cruia clientul s aib posibilitatea de a extinde comportamentul sistemului cu funcionaliti specifice propriului su business, funcionaliti care ar fi fost prea specifice pentru a fi incluse n soluia standard. n cazul tehnologiei SAP, un exemplu pentru un astfel de mecanism sunt aa numitele Business Add-Ins. Un Business Add-In (sau BadI) reprezint un user exit cu o interfa predefinit, integrat n flow-ul soluiei standard. Prin utilizarea de BadI-uri clientul are posibilitatea s i defineasc implementri proprii prin care s extind comportamentul standard al sistemului, i mai mult de att, s specifice condiiile (numite de obicei filtre) pentru care o implementare s fie executat. Astfel se ofer posibilitatea unui client s extind un produs standard cu propria logic de business, aceasta fiind integrat i executat la un moment predefinit n cadrul procesului standard. Utilizarea conceptului de Business Add-in implic ntotdeauna dou faze distincte: dezvoltatorul soluiei standard definete Business Add-inul ( interfaa i filtrul acestuia ) i integreaz apelul acestui user exit n flow-ul soluiei standard. fiecare client va avea posibilitatea de a defini propriile implementri ale BadIului, i de a specifica n ce situaii vor fi

Figura 1 - Business Add-In: Definirea interfeei i apelul BadI-ului n cadrul software-ului SAP standard, i adaugarea de implementri de ctre client

Fazele de dezvoltare ale soluiilor SAP

Datorit faptului c o soluie standard nu poate fi specificat pn n ultimul detaliu astfel nct ea s poat fi achiziionat la cheie de ctre un client, orice produs SAP va trece de-a lungul timpului prin dou faze distincte: dezvoltarea soluiei standard i adaptarea soluiei standard explicit la cerinele clientului (faz numit de obicei implementarea produsului la client) Cele dou faze reprezint, din punct de vedere al dezvoltrii software, dou proiecte independente: proiecte de dezvoltare standard i proiecte client (customer development projects). Prin urmare i un dezvoltator ABAP poate fi la rndul su implicat n dou tipuri diferite de proiecte, fiecare avnd specificul su, astfel nct i skill-setul necesar pentru un dezvoltator ABAP difer de la un tip de proiect la cellalt .

n timp ce conceptul n sine ar putea fi implementat fr probleme i utiliznd alte tehnologii, ceea ce e deosebit este faptul c limbajul ABAP vine cu un set de instruciuni specifice pentru utilizarea BadI-urilor n aplicaii ABAP, iar mediul de dezvoltare SAP pune la dispoziie tool-uri care uureaz activitile ce in de gestionarea BadI-urilor: definirea BadI-ului, a interfeei i a filtrelor, adugarea de noi implementri
GET BADI lr_badi FILTERS iv_entity = lv_filter_value. CALL BADI lr_badi->do_checks EXPORTING is_key = ls_key iv_lob_cd = lv_lob_cd CHANGING ct_msgtab = lt_msgtab .
Exemplu de apel al unui Business Add-In. Implementarea BadI-ului va fi determinat dinamic la ru time, pe baza valorii filtrului lv_filter_value

Aspecte tehnice

Din punct de vedere tehnic, nc de la design-time software-ul trebuie s fie proiectat n aa fel nct acesta s permit extinderea proceselor standard acolo unde este cazul, sau definirea acelor detalii care au fost prea specifice pentru a putea fi incluse n soluia standard, de ctre fiecare client n parte. Pentru a putea implementa cerinele legate de flexibilitate i extensibilitate ale software-ului, e nevoie ca i platforma

Pe lng Business Add-Ins, platforma SAP mai pune la dispoziie i o serie de alte mecanisme (Program Exits, Screen Exits, Menu Exit, Business Transaction Events), toate acestea fcnd posibil dezvoltarea de soluii standard SAP care mai apoi vor putea fi extinse cu uurin de ctre fiecare client n parte.

Customizing

Customizing-ul n terminologie SAP se refer la activitatea prin care un produs SAP este personalizat pentru un anumit client prin ajustarea diverilor parametri de sistem ai produsului. Customizing-ul este un pas obligatoriu n faza de implementare a unei soluii SAP la un anumit client.

22

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Procesul de customizare al unei soluii SAP include o gam Clients variat de activiti de nivele de complexitate diferit: Conceptul de clieni SAP permite separarea unui sistem SAP ncepnd de la o banal configurare a monedei i valorii ntr-o serie de subuniti logice fiecare astfel de subunitate fiind TVA-ului folosit ntr-un anumit sistem numit un client. n condiiile n care adesea este nevoie ca mai multe subuniti ale unei organizaii s se foloseasc de aceeai soluie SAP, existena acestui concept permite reutilizarea aceleai infrastructuri hardware, astfel obinndu-se o diminuare a costurilor de instalare, configurare i ntreinere, ale soluiei SAP. ntre clienii unui sistem exist posibilitatea de a face o separare att la nivelul configurrii customizrii soluiei SAP de pe Figura 2 - Configurare TVA la configurarea modulului SAP SD sistemul respectiv, dar i a datelor propriu-zise. Astfel n cadrul unui enterprise, mai multe subuniti pot folosi aceeai soluie la configurri de reguli de business de exemplu sub forma SAP, instalat pe un singur sistem fizic, dar care funcioneaz difeunor arbori de decizie, tabele de decizie, .a.m.d. rit n funcie de client, customizarea fiind specific fiecrui client n parte. Mergnd pe exemplul configurrii TVA-ului, o companie multinaional avnd filiale n mai multe ri poate utiliza un singur sistem SAP, asignnd filialele din diverse ri la clieni diferii ai sistemului, pe fiecare client TVA-ul fiind configurat corespunztor pentru fiecare ar n parte. Toate aceste aspecte, mpreun cu alte mecanisme i tool-uri specifice SAP, uureaz n mod simitor job-ul dezvoltatorilor, Figura 3 - Configurarea unor reguli de business utiliatunci cnd accentul n cadrul dezvoltrii software se pune n znd SAP BRF+(Business Rule Framework plus) special pe flexibilitatea i posibilitatea de extindere a soluiei informatice implementate. Enumerarea acestor aspecte nu a avut scopul de a fi una exha i pn la customizri de natur tehnic, prin care se poate controla n mod dinamic comportamentul sistemului la run- ustiv, rolul ei fiind mai degrab de a face o scurt introducere n ceea ce poate fi considerat a fi specificul SAP. n articolele time, de exemplu dup principiul de Dependency injection urmtoare, vom detalia acest subiect, prin abordarea altor aspecte ale dezvoltrii software SAP, cu accent n special pe diferenele fa de alte limbaje i tehnologii.

Figura 4 - Exemplu tipic de Dependency injection prin specificarea implementrii unei funcionalii n cadrul unui customizing SAP

www.todaysoftmag.ro | nr. 14/August, 2013

23

programare

WPF cum stm cu performana?

nd vine vorba de aplicaii client n familia .Net, Windows Presentation Foundation e un nume care apare tot mai des. WPF nu mai e o noutate, el fiind introdus nc din .Net Framework 3.0 dar aduce avantaje pe partea de interfa grafic care l fac competitiv. Tentaia atunci cnd apare ceva nou, e de a-l face soluia ideal pentru orice problem. Exist o discuie continu cnd vine vorba despre alegerea unei tehnologii client Microsoft, dar dac nu se beneficiaz de avantajele specifice aduse de WPF ( data-binding, stilizarea dinamic, serviciile media, animaii), din motive de performan o mare parte din dezvoltatori nc aleg WinForms. pentru schimbari n UI automat atunci cnd reprezentarea datelor din ViewModel se schimb.

Daniel Lctu

Daniel.Lacatus@accesa.eu Senior Software Developer @ Accesa

To Blend, or not to Blend

Lumea XAML i Binding-ul

Modul declarativ a fost un succes n mediul de dezvoltare web i aceasta a inspirat un nou limbaj, bazat pe XML, numit eXtensible Application Markup Language (XAML). XAML are multe avantaje , dar ce merit menionat e c scap de codul procedural i permite developer-ului sau chiar designer-ului, s descrie modul n care controalele arat i interacioneaz ntre ele. View-ul n WPF conine un fiier XAML i unul de code-behind. Dac e s urmm pattern-ul MVVM i n design nu s-au facut compromisuri, n code-behind ar trebui s nu fie nimic mai mult dect ce e general automat iar legtura ntre datele din View i datele din ViewModel ar trebui realizata prin Binding. Binding-ul este un mecanism puternic; el lanseaz notificrile necesare

n mod clar unul din avantajele pe care le aduce WPF-ul e extensibilitatea cnd vine vorba de customizare. Fiind cu un pas n fata WinForms-ului dac vorbim de design, WPF-ul ofer dezvoltatorilor foarte multe posibiliti i tehnici s schimbe look and feel-ul controalelor, iar acest lucru st la baza aplicaiilor rich client moderne centrate pe user i modul de interacionare cu el. Microsoft vine in ntmpinarea lor cu un tool orientat spre design, care are propriul build engine i e capabil s creeze applicaii WPF separat de Visual Studio. Expression Blend separ puin rolurile, oferind designerilor posibilitatea de a se focusa pe design, i programatorilor pe partea de cod (presentation logic sau back-end), conferind confortul de a nu se bloca unu pe cellalt. n Blend aplicaia e dezvoltat vizual, desennd pur i simplu forme, path-uri i controale pe plana de lucru, ca mai apoi s fie descris modul de apariie i behavior. n concluzie, dac aplicaia a fost aleas s fie dezvoltat n WPF, este clar o nevoie

24

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


de o interfa complex, iar Blend aduce un probabil impus la nivel mondial prin setul mare ajutor pe aceast parte. de controale de WPF pe care l ofer. Controalele 3rd party pot fi pe de o MVVM parte o mare provocare / oportunitate Model View ViewModel e un pattern pentru cei care doresc s le implementeze, UI, creeat de Microsoft ca o specializare a pe de alta parte un mare ajutor pentru o pattern-ului Presentation Model (introdus echip care dorete s implementeze o de Martin Fowler). Bazat n mare pe MVC, soluie rapid la o problem. MVVM se preteaza mediilor de dezvoltare Din nevoia de a nu reinventa roata, unde platforma de UI suporta event-dri- pare o opiune viabil s achiziionezi un ven programming, cum ar fi HTML, WPF, set de controale existent, care a dovedit Silverlight. de-a lungul timpului c i aduce soluia de Scopul acestui pattern e de a separa care ai nevoie. Printre marii dezvoltatori Interfaa Grafic (fie ea markup sau cod) de controale de WPF se numr Telerik, - View, de logica de business (backend) - Infragistics, DevExpress, care ofer o suit Model. ViewModel-ul e responsabil s fac destul de diversificat de controale. Nivelul legtura ntre cele dou, expunnd datele de experien la care s-a ajuns n dezvoltadin Model n aa fel nct s fie consumate rea acestor controale, e de multe ori greu de View, descriind n acelai timp logica. de egalat, i probabil mult mai costisitor, iar MVVM a fost conceput s foloseasc prin aceasta persist pe piaa cam de cnd a data binding n WPF, pentru a facilita mai aparut WPF-ul. bine separarea de UI, renunnd n marea Una din tentaiile pe care le aduce parte la code behind-ul din View. Avantajele setul de controale e suportul tehnic de sunt clar vizibile, i ar fi un pattern de care beneficiezi, contra cost, bineneles. Pe urmat n orice aplicaie dezvoltat n WPF. lng documentaia disponibil abundent Cu timpul, criticile nu ntrzie s apar, pe Internet, fiecare provider are un departiar una vine chiar de la John Gossman, ment tehnic i un mod prin care primeti inventatorul MVVM, care arat c aduce un o lmurire la ntrebrile, nelmuririle i overhead semnificativ dac avem operaii eventualele bug-uri legate de controale. mari la nivel UI. Iar n cazul aplicaiilor Dac vorbim de aplicaii industriale, mari cu UI complex, fine tuning-ul pe par- performana acestor controale este importea de View devine tot mai dificil de aplicat. tant i ea, ele find n mare parte black-box pentru consumatori. Se observ o anumit Controale 3rd party ngreunare dac vorbim de un UI consisn WPF conceptul de controale st tent, iar aceasta poate deveni o problem. la baza structurii UI-ului, i sunt create Poate cel mai problematic control pentru a obine interfaa grafic dorit si din punct de vedere al performanei e ar putea fi refolosite. De-a lungul timpu- DataGrid-ul. Aceasta i din cauz c ine lui, au fost provideri care s-au consacrat, i multe date spre a fi afiate. Majoritatea dezvoltatorilor de controale ofer ci pentru a face produsule lor performante. Ce ar trebui avut n vedere n acest sens: Virtualizarea: mare parte dintre controalele de grid sunt virtualizate, i dac nu au un flag n acest sens ce trebuie setat (poate fi fcut pe Row/ Column). Hint: nu punei un DataGrid ntr-un ScrollViewer, practic pierdei virtualizarea. Paginarea: paginarea poate fi fcut la nivel de UI, avnd toate datele deja ncrcate, dar putei ncerca i un sistem de ncrcare de date dinamic, paginat n funcie de View ncrcarea asyncron: pe binding puteti folosi IsAsync = True, pentru c n acest caz ncrcarea de date poate dura mai mult, i nu vrei s blocai UI-ul. Performana e unul din aspectele cheie ce trebuie avute n vedere cnd se alege un set de controale, pentru a nu avea o aplicaie matur cu un UI bogat, dar aa de nceat nct nimeni nu ar lucra cu ea.

Performana

WPF-ul e cunoscut pentru avantajele care de UI pe care le aduce, dar cum rmne cu performana? Am avut ocazia s lucrez pe mai multe proiecte WPF, din care dou se remarc pentru timpul de implementare lung i amploarea produsului n sine, unde performana era una din necesitile proiectului. WPF nu a fost creat s fie performant by design. Binding-ul e mecanismul care st la baza WPF-ului, iar pentru realizarea fiecrui binding se ocup memorie. Cnd se

www.todaysoftmag.ro | nr. 14/August, 2013

25

programare
WPF cum stm cu performana?
ajunge la screen-uri complexe, cu multe controale, n care fiecare subparte e legat de un obiect de date, se observ c exista i un cost pentru toate avantajele sale. O alt problem apare la date ierarhice, cnd se schimb data context-ul. Propagarea se face descendent pe toate nivelele, i refacerea binding-urilor necesit timp. Acest aspect poate deveni vizibil pentru utilizator, iar o alternativ nu e tot timpul la ndemn. Din pcate, nu se mai vede un avans al Microsoft spre mbuntirea controalelor, dovada st n faptul c cea mai bun mbuntire adus n direcia aceasta n .Net Framework 4.5 e Virtualizarea la TreeView. Roadmap-ul pentru WPF nu poate fi confirmat dect n linii mari, aa c este neclar care e viitorul pe aceasta directie, innd cont ca i Silverlight dei promitor la un moment dat, a fost brusc ntrerupt. Se ntlnete destul de des o paralel ntre WPF i WinRT, i aceasta nu din motive nefondate. Amndou au la baz XAML i un API asemntor, dar WinRT a fost gndit n manier de performan. A lsat deoparte bagajul acumulat de WPF i are un API nativ n C++. Din C# (sau javascript) se apeleaz componentele native, iar acest lucru se simte n viteza de reacie. n SDK-ul de Windows 7 se gsete o suit de programe de profiling, care dau posibilitatea de a analiza la run-time modul n care aplicaiile WPF se comport i de a analiza ce optimizri se pot face pentru a spori performana. n aceast suit se gsesc dou componente care merit menionate. Perforator - analizeaz modul n care se face rendering-ul aplicaiei. El afieaz un set de grafice care dau posibilitatea de a analiza ntr-un mod foarte specific maniera n care se face rendering-ul fiecrei subpri a unui screen si de a gsi eventualele probleme. Graficele oferite de Perforator constau n: analiza ratei de refresh, analiza schimbrilor intermediare care folosesc rendering-ul software, cel hardware i consumarea memoriei video. Visual Profiler prezint problemele de performant n contextul modului n care a fost construit layout-ul aplicatiei. Se parcurge ierarhia vizual, i se vor ntlni obiecte high-level (cum ar fi butoane i TextBlock-uri) dar i cele low-level (cum sunt liniile i elipsele). n loc s descrie problemele de performan artnd grafice, Visual Profiler descrie problemele folosind reprezentarea visual a obiectelor (ntr-un mod similar cu cel n care funcioneaz UISpy ). Comunitatea de dezvoltatori software e tot mai mare, i aceasta duce la o competiie tot mai acerb ntre soluiile software oferite. Cred c pn la urm, totul se va reduce la performan. Acest criteriu va face diferena ntre un software utilizabil la scara larg i unul utilizat doar pentru c nu exist alternativ. Modul de rspuns a unui program d factorul de satisfacie necesar, iar utilizatorul ncepe s fie educat i s cear tot mai mult n aceasta direcie.

Referinte
http://en.wikipedia.org/wiki/Windows_Presentation_Foundation http://en.wikipedia.org/wiki/Model_View_ViewModel http://msdn.microsoft.com/en-us/library/cc296376.aspx http://msdn.microsoft.com/en-us/library/188ht7d8(v=vs.80).aspx http://en.wikipedia.org/wiki/Pareto_principle http://msdn.microsoft.com/en-us/library/system.windows.data.binding. isasync.aspx

26

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

HR

Team building (II)


ac prima parte a articolului s-a axat mai mult pe definirea a apte pai de urmat n organizarea unui team-building, partea a doua va fi orientat mai mult spre a nelege importana i beneficiile unui program de team-building, precum spre prezentarea tipurilor de activiti de team-building care exist. Aa cum v-ai obinuit i n acest numr vor fi i exerciii practice pe care le putei folosi n a crete coeziunea echipelor pe care le coordonai. Din experiena mea de pn acum, majoritatea team-building-urilor se organizeaz n momentul n care apar situaii conflictuale n cadrul echipelor. Team building-ul este vzut ntotdeauna ca o soluie n depirea problemelor, ns motivaia care st la baza deciziei de a implica membrii echipei ntr-un astfel de proiect, ar putea s fie: ncurajarea lucrului n echip nainte de a iei la iveal un conflict ntre membrii acesteia; ncurajarea competiiei pozitive ntre membrii acesteia i susinerea punctelor de vedere multiple, deoarece acestea pot genera idei constructive care pot fi benefice proiectului; Dobndirea de cunotine noi despre abilitile i cunotinele celorlai, pentru o mai bun mprire a sarcinilor i pentru o mai bun nelegere a rolurilor fiecruia n cadrul echipei; nelegerea procesului de delegare a sarcinilor, deoarece multe activiti de team-building ncurajeaz delegarea responsabilitilor, ceea ce va duce la o eficientizare a muncii n echip, dar este i un factor important n crearea unui echilibru n cadrul echipei.
Timp alocat activitate Nume activitate Imprire pe echipe Localizare 15 minute/ grup Total: SCUTUL Grupul este mprit n echipe de cte 2 Indoor / outdoor Coala A4 cu instruciunile Pixuri Cunoaterea celorlali membrii Participanii se mpart n grupuri de cte 2 i discut cele 4 ntrebri, apoi deseneaz aspectele pe care le consider reprezentative pentru cealalt persoan. Desenele vor fi prezentate n final ntregului grup mpreun cu explicaiile de rigoare. Necesar Fiecare participant trebuie s aib o list cu ntrebri (coal A4)

Materiale

Obiective Descriere

Activitile de team-building pot fi i ele diverse: 1. nvarea prin joc desfurarea unor activiti, iar n urma soluionrii sarcinii prin joc participanii extrag concluzii care vor duce la nvarea sau nelegerea aplicrii unei comunicri eficiente n cadrul echipei, precum i crearea coeziunii echipei prin ctigarea

www.todaysoftmag.ro | nr. 14/August, 2013

27

HR
Team building (II)
Timp alocat activitate

Nume activitate mprire pe echipe Localizare Materiale

15 minute planificare 30 minute executie construierea podului 15 minute debriefing Total: 60 minute
Podul 4 echipe (10 membri/ echipa maxim) Indoor / outdoor Flipchart/ Carton Coli A4 Scotch, foarfec, sfoar Plastic Colaborare ntre echipe; Planificarea activitilor; Capacitatea de transmitere a informaiei. Instructiuni: Este un exerciiu de lucru n echip. Scopul fiecrei echipe este acela de a construi o jumtate de pod care s se potriveasc perfect cu jumtatea de pod construit de echipa cealalt. Cu resursele pe care le avei la dispoziie, materiale i abiliti, vei proiecta i vei construi jumtatea voastr de pod. Reguli: 1. Desemnai un reprezentant prin care vei comunica cu cealalt echip. Reprezentanii i vor stabili ntlniri prin intermediul trainerilor, n cadrul carora va discuta despre strategia de construcie, astfel nct s construii dou jumti de pod compatibile. 2. Reprezentatul va duce de fiecare dat o coal alb cu el i va transmite informaiile pe care voi l instruii s le transmit. El se va ntoarce cu noi informaii pe care vi le va transmite vou. 3. Reprezentanii nu au voie s duc la echipe foile de la ntlniri, ci trebuie s transmit verbal ce s-a stabilit. 4. La finalul construciei, unii cele dou jumti de pod. 5. Podul trebuie s fie suficient de solid astfel nct s susin o can plin cu ap. Concluzii: n primul rnd v precizez c a fost un joc de colaborare ntre echipe, ca ntre dou firme partenere, sau ntre dou departamente. Succesul colaborrii const n a transmite curat informaiile prin intermediul celor doi reprezentani. Apoi, ca orice sarcin de echip presupunea ca fiecare membru s i aduc contribuia la atingerea obiectivului final. Erau mai multe etape n drumul ctre atingerea acestui obiectiv: - Planificarea activitii: cum utilizai materia prim, proiectarea podului, distribuirea sarcinilor, cine e responsabil? de ce?, valorificarea abilitilor membrilor, colaborarea, comunicarea. -Construcia propriu-zis, implementarea planului, executarea. Fiecare etap era dependent de succesul comunicrii cu exteriorul i n interior. Fiecare lider de echip trebuie s aib instruciunile

Obiective

ncrederii celorlali membri ai echipei; 2. Organizarea de evenimente tematice care s ncurajeze lucrul n echip. Un bun exemplu sunt competiiile sportive n care membrii echipei nva s concureze unul cu cellalt i n felul acesta vor nelege c n unele situaii concurena poate fi benefic. Alte evenimente pot fi evenimentele n care sunt implicai toi angajaii companiei, iar cel mai cunoscut exemplu sunt petrecerile de Crciun. 3. Evenimentele sociale sunt o alt modalitate de a crea coeziunea n echip. Mediul informal este benefic n procesul de cunoatere personal a membrilor echipei. Cum menionam n articolul anterior, cu ct persoanele se cunosc mai bine la nivel personal, cu att procesul de soluionare a unui conflict poate fi mai eficient. Aadar, sintetiznd, beneficiile programelor de teambuilding sunt mai multe dect intuitive: Creterea eficienei lucrului n echip; Cunoaterea membrilor echipei la nivel personal i profesional prin punerea lor n situaii diverse; Creterea ncrederii n membrii echipei; Dezvoltarea sentimentului de apartanen la echip i la companie; Dobndirea sau mbuntirea unor abiliti i cunotine; Crearea unui mediu plcut n cadrul echipei; Motivarea membrilor echipei i creterea stimei de sine; Cred c suntei convini de impactul pozitiv pe care activitile de team-building le pot avea asupra efiecientizrii procesului de lucru n echip, de aceea v ncurajez s investii i resurse financiare i umane pentru a organiza astfel de evenimente ct mai des. Succes!

Descriere

Andreea Prvu

andreea.parvu@endava.com Recruiter n cadrul Endava

Necesar

28

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

management

Provocarile unui business analyst n Agile

chimbrile rapide de pia au condus la nevoia companiilor de a scurta timpul de livrare al unui produs i de a fi mai receptivi la expectanele i doleanele clienilor. Metodologiile de dezvoltare agile sunt instrumente necesare, de top, ele reuind s reprezinte un adevrat suport pentru echipele de dezvoltare a proceselor soft, n dorina lor de a se adapta conform noilor tendine de pe pia. Metodologiile de implementare agile au un impact deosebit asupra disciplinei de analiz de business n general, ntruct aduc n prim - plan o metod nou de abordare i prioritizare a cerinelor n cadrul unei echipe de implementare al unui proiect IT. Analitii de business sunt o component vital a unei echipe IT n Agile pe ntreg parcursul derulrii proiectului, reprezentnd legtura dintre partea tehnic i cea business. Caliti precum colaborarea, facilitarea, leadership-ul, coaching-ul, ct i teambuilding-ul devin competene necesare, suficiente i eseniale pentru asigurarea livrrii cu succes a unui produs IT n final. mpreun cu noile maniere i trsturi ale procesului de dezvoltare, analitii de business devin persoane critice n asigurarea succesului unei echipe ce abordeaz o metodologie agil. Migrarea de la o perspectiv de abordare tradiional a unui proiect la una agil va conduce la o redefinire a rolurilor funcionale din cadrul unei echipe de proiect ntr-o manier diferit. Pentru analitii de business, gestionarea cu succes a unui proiect agil depinde foarte mult de procesul de definire a cerinelor n pai mai mici i dezvoltarea unei colaborri mai strnse cu ntreaga echip de-a lungul SDLC ului proiectului. n cele ce urmeaz, acest articol va explora impactul metodologiei de dezvoltare agil asupra Analizei de Business,. De asemenea identificarea competenelor necesare i conturarea rolului Analistului de Business pentru a facilita tranziia de la metodologii tradiionale la cele Agile, vor reprezenta subiecte de analiz.

Monica Petraru

monica.petraru@urss.ro Senior Business Analyst @ UNIQA Raiffeisen Software Service

Definirea cerinelor de business n Agile

ntr-o lume agil, cerinele software sunt dezvoltate prin explorarea continu a nevoilor de business. Acestea sunt colectate i rafinate printr-un proces iterativ de planificare, de prezentare a criteriilor de acceptare, de prioritizare i dezvoltare a acestora, precum i de evaluare rezultatelor obinute. De-a lungul derulrii procesului de analiz business, specialitii acestui domeniu trebuie s se asigure n mod constant c toate caracteristicile cerute de clieni se aliniaz cu obiectivele de business ale produsului, mai ales ca acestea evolueaz i se pot schimba n timp. Ce nseamn Analiza de Business n context Agile? Aceasta aduce n prim- plan

www.todaysoftmag.ro | nr. 14/August, 2013

29

programare
Provocarile unui business analyst n Agile
nevoia creterii de livrare a valorii de busi- implicai. ness ctre sponsorii si clienii proiectului / Priciparea unui Analist de Business produsului aflat n curs de implementare. poate fi abordat din mai multe perspective: Domeniul Analizei de Business Agile res n cadrul unor proiecte, nevoia unui pect cu strictee valorile i principiile specialist dedicat nu e solicitat. Orice ilustrate n Agile Manifesto (www.agilemembru al echipei poate al echipei de manifesto.org): implementare poate executa activiti de Valorificm mult mai mult interacidentificare i prelucrare a cerinelor. iunea dintre oameni dect cea dintre n cadrul unui mediu mai complex, procese i instrumente. analistul de business joac rolul unui Target-ul nostru primordial este acela moderator, reuind s-i aduc la un conde a satisface cerinele clientului nostru sens pe toi participanii implicai cu prin livrarea continu a unui software scopul de a defini cerine clare pentru de calitate . echipa de dezvoltare. Dezvoltarea produselor de soft repre Responsabilul de produs (engl. zint msura principal de obinere a Product owner) / reprezentantul clienprogresului. ilor (engl. Customer representative): e nsrcinat s ia act de tot ceea ce Rolul Analizei de Business n context nseamn caracteristicile produsului i agil este acela de a oferi informaia corect prioritizarea acestora. i necesar echipei de implementare n Substitutul responsabilului de produs momentul i n etapa cnd aceasta este cnd acesta nu este disponibil. solicitat pentru a asigura o stabilitate a Analistul poate fi definit ca un busiderulrii procesului soft. ness coach ntr-un produs / proiect, unde n context agil, analitii de business pot responsabilul de produs este o persoan beneficia de feedback-ul constant al cliendedicat, care nu dispune ns de experiilor atunci cnd efectueaz mpreun cu ena tehnic corespunztoare sau echipa partea de client o recenzie a rezultatelor de implementare nu are cunotinele de obinute n urma efecturii unor iteraii business necesare. succesive. Astfel, ei pot executa rafinarea specificaiilor produsului pentru a se asiUnul dintre elementele cheie vitale gura de meninerea coeziunii cu nevoile pentru un analist de business ntr-un de business a produsului / proiectului, ct mediu agil este reprezentat de abilitatea de i identificarea i reducerea riscurilor nc a utiliza feedback-ul pentru a genera mecadin incipitul proiectului / produsului. nismul schimbrii. Analistul trebuie s revizuiasc n mod Procesele de dezvoltare iterative ofer constant mpreun cu toate prile impliansa de a crete gradul de eficiena n cate cerinele i totodat s se asigure c cadrul activitii de analiz de business. n orice modificare a nevoilor de business cadrul metodologiei Waterfall, analiza spe- sunt reflectate cu acuratee n iteraiile viicificaiilor are loc naintea nceperii fazei de toare ale produsului. implementare. Identificarea factorilor de risc corelat Calitile de succes ale unui Analist de cu dezvoltarea specificaiilor de business Business ntr-o echip AGILE conduc la modificarea sau eliminarea cerinConform punctelor stipulate n Agile elor, efortul depus n acest sens devenind Manifesto, ntreaga echip trebuie s fie inutil. Aadar, prin oferirea specificaiilor extrem de competent i eficient n ceea ce de tip just in time, scade semnificativ privete activitatea ei profesional. Pentru ansa de a reface anumite cerine, ntrucat a atinge toate obiectivele de productivitate doar specificaiile necesare release-ului pla- planificate ntr-o echip agil , analistul nificat vor fi definite n detaliu i ulterior de business trebuie sa fie mereu cu un pas implementate.

naintea tuturor. Acesta are datoria de a cunoate ntreaga viziune i lista de specificaii a produsului i de a face parte din echipa final de livrare a produsului. Ei sunt participani activi, responsabili de planificare, analiz, testare i demo al produsului. Analistul se asigur ca produsul s respecte toate standardele cerinelor de business. Un alt element primordial n activitatea sa este acela de a defini criteriile strategice pentru finalizarea produsului / proiectului. n aceast etap, caliti precum negocierea, comunicarea i facilitarea sunt eseniale. Este un moment cnd analistul are nevoie de capacitatea de a asculta i ntelege feedback-ul primit de la toate prile direct interesate i ulterior de a utiliza aceste informaii primite pentru a executa modificrile necesare n analiza i prioritizarea cerinelor proiectului / produsului. Analitii de business trebuie s posede o capacitate enorm de a nelege caracteristicile metodologiei agile pe care o folosesc n munca lor de zi cu zi cu scopul de a gestiona, extrage, analiza, documenta, comunica i valida specificaiile. n cele ce urmeaz, se vor aduce n prim plan o suit de metodologii agile i rolul analistului de business n fiecare dintre acestea.

Analiza de Business n SCRUM

n Scrum nu se face o referire minuioas i exact asupra activitilor de analiz de business. Ca un fapt adiacent, multe dintre activitle specifice analizei de business apar ca etape implicite n Scrum. n acest sens, figura urmtoare ilustreaz ciclul de viat specific n Scrum unde activitle tipice de analiz de business se vor suprapune:

Abordarea unor proiecte de complexitate ridicat a condus la creterea importanei funcionale a unui analist de business. Rolul acestuia este acela de a crea o viziune a produsului bazndu-se pe specificaiile primite de la toi stakeholder-ii

Ce nseamn sa fii un Analist de Business n AGILE?

30

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Realizarea i asigurarea mentenanei backlog-ului produsului reprezint o activitate major a analizei de business. Pentru o clarificare mai specific, backlog-ul este construit cu ajutorul: elementelor de analiz de business organizational: identificarea lacunelor i capacitilor noi, utile pentru a atinge standardele organizaionale propuse i alinierea acestora la caracteristicile organizaiei evaluarea i validarea soluiei. n cadrul unui sprint , activitile de analiz de business se focuseaz strict pe definirea cerinelor pentru elementele backlog-ului ce sunt implementate i pe criteriile de acceptare a acestora (Just in time requirements gathering) produsului. n acest caz, apare imperioasa nevoie a unui analist de business . Contribuia acestuia se va materializa prin crearea unei reprezentri grafice de poveti (engl. story mapping) de - al lungul unui continuum de timp. Aceasta va fi utilizat pentru a identifica riscurile i dependinele ntre povetile de utilizator n vederea optimizrii valorii livrate de fiecare punere n aplicare a unei poveti ntr-o manier incremental. Competenele specifice analizei de business pot fi utilizate pentru a asigura c problemele ce stau la baz vor fi abordate ntr-un mod convenabil pentru majoritatea actorilor implicai n proces, precum i pentru asigurarea criteriilor riguroase de acceptare ce vor fi selectate pentru fiecare user story. specifice analizei cerinelor se vor prioritiza specificaiile avnd la baz valorile de business concret stabilite. Gestionarea listei de cerine, ct i identificarea i definirea domeniului de business se vor materializa prin aplicarea technicilor binecunoscute de analiza de business. n ceea ce privete etapa de planificare i coordonare a task-urilor n metodologia Kanban, se va apela la acorduri privind nivelul serviciilor (engl. Service Level Agreements) pentru a menine trackingul enhacement-urilor la care se lucreaz momentan. n Kanban, aceast estimare include planificarea si prioritizarea activitilor de analiz de business ce au loc nainte de etapa de implementare a funcionalitilor. Astfel, analistul de business se focuseaz strict pe monitorizarea i planificarea activitilor, putnd face o revizie constant si rafinare a estimrilor de fiecare dat cnd o nou funcionalitate intr n faza de analiz a ciclului Kanban. Un analist de business extrem de bun va reui s defineasc cerine noi pentru sistem mult mai repede dect acestea ar putea fi implementate i testate. Acest fapt este util pentru un analist de business, ntruct l va ajuta la identificarea i gestionarea riscului nc din incipitul proiectului. Dup cum se poate observa, succesul de piat n economia zilelor noastre depinde foarte mult de promptitudinea rspunsului dat la tendina schimbtoare a acesteia. S-a demonstrat faptul c aspiraiile tradiionale de livrare a produselor nu sunt extrem de prompte n anumite tipuri de business unde se cere o calitate deosebit a produselor ce se doresc a fi livrate.

Technicile specifice sunt: Technicile specifice sunt: Gestionarea backlog-ului (engl. Povetile utilizatorilor (engl. User Backlog management ) prin interstories); mediul acestuia se asigur o bun Maparea povetii (engl. Story prioritizare a cerinelor, ct i partea mappings); dedicat managementului schimbrii. Descompunerea povetii (engl. R e t r o s p e c t i v e l e ( e n g l . Story decompositions); Retrospectives) Analitii de business E l a b o r a r e a p o v e t i i ( e n g l . trebuie s acorde o atenie deosebit feedStory elaboration). back-urilor cu privire la cerinele pe care le ofer echipei i totodat cum i cnd Analiza de Business n Kanban acestea sunt prevzute n scopul de a gsi Bazndu-se pe teoria constrnmodaliti de mbuntire a proceselor gerilor i totodat pe lean product n care sunt utilizate. development, Kanban se axeaz pe urmtoarele caracteristici: Analiza de Business n Extreme vizualizarea productivitii, Programming limitarea muncii de-a lungul Pentru a facilita o mai bun nteleprocesului, gere a acestei metodologii, n figura de mai concentrarea strict doar pe cerinele jos se ilustreaz modelul XP: ce trebuie implementate,

Concluzii

Aceast metodologie se concentreaz foarte mult pe value driven development, i mai puin pe activiti prestate n domeniul analizei de business. Conform modelului XP, rolul clientului este reprezentat de un grup de oameni care tiu exact specificaiile pe care trebuie s le respecte sistemul. Totui exist anumite circumstane, cnd modelul XP este aplicat la scar larg sau clienii nu au o viziune clar a

n e v o i a u n e i m b u n t i r i continue. Activittile de analiz de business se caracterizeaz prin constan de-a lungul ciclului de via al unui proiect. Pentru meninerea unei ordini a functionalitilor ce trebuie implementate, analitii de business vor utiliza tehnici de identificare i extragere de noi specificaii ale produsului. Ulterior, prin intermediul metodelor

Metodologiile agile permit echipelor implicate n dezvoltarea produselor s mplineasc doleanele clienilor prin crearea unei ambiane de lucru plcute unde membrii echipei vor dori s se implice total. Analitii de business ndeplinesc un rol cheie n cadrul unei echipe agile. Pentru a-i atinge obiectivele cu succes, acetia trebuie s treac de la o abordare consacrat de gndire n ceea ce nseamn analiza de cerine. Ca un element adiional, analitii trebuie s i mbuneasc procesul de documentare a specificaiilor, ct i aprofundarea de noi tehnici pentru managementul eficient al acestora. ntregul succes va depinde n mare msur de ct de bine vor reaciona analitii de business la noile tendine de lucru cu specificaiile, la formarea echipelor i la colaborarea tuturor stakeholder-ilor implicai.

www.todaysoftmag.ro | nr. 14/August, 2013

31

management

Project Manager i Business Analyst - un duet care poate face diferena n outsourcingul romnesc
ucrez n IT, n software outsourcing, de mai bine de zece ani, i am urmrit dezvoltarea acestei industrii dinuntrul ei. Criza financiar i focusul pe eficientizarea costurilor au ndemnat tot mai multe companii s apeleze la outsourcing, trend ce i-a favorizat dezvoltarea. Cu ce urmri? n primul rnd a creat un glob de cristal protector n jurul acestui segment care a continuat s creasc organic n ciuda crizei financiare i a nflorit tocmai ntr-o perioad n care alte industrii i restrngeau activitatea sau dispreau din peisaj. n al doilea rnd, a fost acompaniat de o ofert de munc mai larg, salarii bune i un mediu de lucru la nivel occidental. Creterea costurilor face ns ca marja de profit n cazul outsourcing-ului s nu mai fie la fel de mare cum era cu 7-10 ani n urm i s fac loc astfel concurenei puternice pe cost venite dinspre India sau China.

Adrian Cighi

adrian.cighi@tss-yonder.com Project Manager @ Yonder

i atunci ce putem face noi, aici, n Romnia?

Ca s putem rspunde la aceast ntrebare ar trebui s ne uitm la principalii factori care influeneaz alegerea unui furnizor de servicii software: Calitatea produselor furnizate Pre Referine (ncredere) Flexibilitate Resurse Relaii de colaborare Asemnri culturale Localizarea Oare care dintre ei poate face diferena? Cu siguran unii factori nu pot face diferena - cum ar fi preul. Nu putem concura pe pre tot timpul pentru c va influena resursele i sustenabilitatea pe termen lung. n ceea ce privete resursele ( profesionitii de care avem nevoie) ar fi extrem de greu de concurat la nivel cantitativ cu India sau China doar uitndu-ne la diferenta de populaie. i, totui, exist o serie de arii cheie n care nu doar c putem face diferena, dar am putea chiar excela. Commitmentul pe calitate: este mai mult dect a livra produse de calitate, cu cod bine scris. Presupune garanie oferit clienilor nc de dinainte de nceperea

proiectelor. Commitment pe calitate se leag de gradul de maturitate al unei companii i nseamn asumarea calitii, a termenelor i a tuturor condiiilor convenite. Predictibilitatea: nseamn capacitatea unei companii de a nelege clientul, de a fi n msur s i creioneze un roadmap viabil, sustenabil i care s i asigure succesul ntr-un mod convingtor. Customer intimacy: se refer la a nelege nevoile i afacerea clienilor, piaa i clienii i la a ncerca, prin idei inovative, s livrezi cele mai bune soluii. Cum i dai seama dac faci o treab bun? Atunci cnd clientul te percepe ca pe un consultant de ncredere i nu doar ca pe un prestator de servicii, scopul este atins n mare parte. Este de necontestat necesitatea unei echipe de proiect valoroase pentru obinerea ambiiilor de mai sus, dar din aceast echip se disting dou roluri cheie care pot face diferena, n special prin valoarea adugat. Acestea sunt rolurile de Project Manager i de Business Analyst. Dac un Project Manager profesionist asigur predictibilitatea, un Business Analyst face legtura ntre problemele clientului i

Rolurile care fac diferena

32

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


echipa de dezvoltare i contribuie n mod hotrtor la obinerea poziiei de trusted advisor menionat anterior. Dac acum civa ani companiile cutau Project Manageri cu cunotinte aprofundate pe domeniul proiectului, suplinind astfel i rolul de BA, schimbrile din ultimii ani i profesionalizarea sectorului au determinat specializarea rolurilor i necesitatea unei poziii de sine stttoare pe domeniul analizei de business . Mai mult, faptul c metodologiile agile pun focus pe rolul de BA (sau pe specialistul de produs), rolul de Project Manager a evoluat spre a fi un integrator de echipe, un rol care lucreaz cu echipe distribuite pentru a atinge scopul proiectul i n a ine costurile sub control. Sigur, exist voci care spun c exist un puternic conflict ntre cele dou roluri, cel de PM i cel de BA. La prima vedere acest conflict este real, deoarece PM-ul gestioneaz bugetul/scopul i resursele, iar BA-ul se ocup mai mult de detaliile eseniale rezolvrii i optimizarii proceselor de business, care pun presiune pe buget i scop. i, totui, dac nu exist o colaborare strns ntre cele dou roluri sau dac unul dintre ele este mai slab exist o mare probabilitate s nu fie obinut succesul proiectului. Mai mult, pentru c cele doua roluri au anumite responsabiliti comune exist nevoia unui framework de colaborare. Exist doi mari juctori n stabilirea direciilor pentru cele dou roluri: Project Management Institute (PMI) i International Institute of Business Analysis (IIBA), care au creionat un astfel de model de colaborare. Dac lum principalele faze din proiect definite de cele dou institute de profil, avem urmtoarea implicare a celor doua roluri: Iniierea proiectului (Inception): aici un rol esenial l are BA-ul pentru c, n aceast faz se construiete un business case. Aceasta este etapa n care se ia decizia de Go - No go. Tot acum sunt identificate nevoile de business. Planificarea : rolul de PM este esenial, deoarece acum se construiete planul de proiect, se aloc resursele necesare, project managerul i definete cele trei zone importante pe care le va monitoriza: scop, buget i timp. Execuia, monitorizarea i controlul: Ambele roluri trebuie s lucreze n tandem pentru a obine succesul proiectului. Dac PM-ul se concentreaz mai mult pe monitorizarea bugetului, a costurilor, timpului, resurselor i a riscurilor (fiind principalul responsabil pe scopul proiectului), BA-ul pune accent pe funcionalitate, calitate, pe riscurile care vin dinspre partea funcional, din zona de produs. Totodat, prin deciziile luate de el, se influeneaz scopul proiectului prin schimbri sau defecte gsite n produs. ncheierea: n aceast faz exist un efort comun PM i al BA pentru a obine acceptarea proiectului din partea clientului.

Concluzii

Unul dintre modurile prin care Romnia se poate remarca pe piaa de IT nu este axat pe criterii de cost sczut, ci prin crearea de valoare adugat pentru clieni, proces n care cele dou roluri descrise mai sus au un aport semnficativ. Project Managerii i Business Analitii trebuie s colaboreze pentru un el comun i anume spre obinerea de soluii inovative care rezolv problemele de business ale clienilor.

www.todaysoftmag.ro | nr. 14/August, 2013

33

programare

Recenzia crii:
Android Apps with Eclipse de Onur Cinar

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

Dispozitivele mobile pot fi folosite drept clieni thin ntr-un browser web, dar n aceast recenzie vom introduce acele elemente care transform dispozitivele mobile ntr-o platform, n care putem dezvolta i rula aplicaii de sine stttoare. Partea care nu este cuprins n aceast carte este aceea a dezvoltrii clienilor rich pentru aplicaii enterprise, care ruleaz offline sau online, avnd un modul backend gzduit de un server de aplicaie. Prezenta carte, intitulat Android Apps with Eclipse de Onur Cinar, prezint o trecere n revista introductiv despre cum s instalm, s configurm i s rulm aplicaiile Android. Nu se vor aminti concepte despre Android API sau tehnici de programare, ci este doar un scurt rezumat despre cum s utilizm Eclipse Android Toolkit (ADT). Dup prerea mea oricine poate citi aceast carte. Desigur, unele cunotine generale despre limbajul Java sunt binevenite, dar nu obligatorii. Este, aadar, o carte uor de citit. Dup ce au fost fcute toate instalrile, partea de instalare este descris n aproape 40% din carte, urmrirea programelor prezentate este uoara. Tot ce avem de fcut este s copiem n Eclipse codul i

ceast recenzie este despre un subiect foarte popular n zilele noastre, n lumea dezvoltatorilor de aplicaie, aplicaiile Android. Muli clieni, precum aplicaiile pe dispozitivele mobile, folosesc aceast platforma. s-l rulm. Totui, v recomand s studiai codul. V poate oferi soluii sau exemple de implementare, dar i idei pentru extensii, n munca voastr viitoare. Cartea este organizat n 10 capitole prezentnd diverse aplicaii. Una dintre ele este Movie Player. n aceast carte toate exemplele sunt dezvoltate folosind Android 2.3.3, probabil cea mai popular versiune de Android, dei a fost lansat n 2011. Gsim n carte i discuii despre alte versiuni, ultima versiune de Android tratat n carte fiind Android 4.0.4, lansat n

34

nr. 14/August, 2013 | www.todaysoftmag.ro

business
februarie 2012. Aa dupa cum este bine cunoscut, platform Android este proprietate a Google i reprezint un open standard pentru dispozitivele mobile. Statistic vorbind, statistic prezentate n carte, Android deine 48% din piaa de aplicaii pentru dispozitivele mobile. Android este mai degrab un software stack complet pentru dispozitive mobile, dect un sistem de operare. Android se bazeaz pe sistemul de operare Linux i pe Java Virtual Machine pentru aplicaii utilizator. Android este format dintr-o mulime de de componente, ce pot fi accesate att de platform ct i de alte aplicaii. Aceasta permite interoperabilitatea aplicaiilor. Cea mai important component a aplicaiei Android este activity, care corespunde unui ecran vizual. Utilizatorul poate interaciona cu aplicaia prin intermediul acesteia. O operaie pe activity este numita intent i poate determina afiarea altor activities. Munca de fundal a unei aplicaii este dat de services. Sunt i multe alte componente ntr-o arhitectur Android, dar las cititorului plcerea s le gseasc n capitolul 2 al crii. Platforma Android furnizeaz modaliti multiple de stocare a datelor printre care bazele de date SQLite. Urmtoarele dou capitole, 3 i 4, sunt despre IDE-ul Eclipse i metodele de instalare ale acestuia dependent de platform. Dup prerea mea, aceia care sunt familiari cu IDE-ul Eclipse pot sri aceste dou capitole. Pentru ceilali este o excelent modalitate de a deveni experi n utilizarea Eclipse-ului.

TODAY SOFTWARE MAGAZINE


fa prezint Scripting Layer for Android (SL4A), care cuprinde o multitudine de interpretori pentru Android precum Perl, Python, Rhino etc. Aa dup cum am mai afirmat, n spatele simplitii aparente cartea este un ghid att pentru nceptori ct i pentru cei care caut soluii pentru problemele lor de dezvoltare a aplicaiilor Android.

Capitolul 5 descrie instalarea ADT developer tools, inclusiv a emulatorului Android. ncepnd cu capitolul 6 vom utiliza Android Developer Tool. Prima aplicaie prezentat este Movie Player. Tot n acest capitol se discut manifest editor, layout editor i resource editor. Partea final a capitolului se refer la implementarea claCa de obicei spun c sunt intersat n selor implicate n proiect. discuii cu cititorii i de aceea i invit s le iniieze sau s ia parte la ele. Capitolul 7 este despre Android Native Development Kit (NDK), care permite Lectur placut! dezvoltatorilor s implementeze poriuni de aplicaie n cod nativ maina. NDK furnizeaz biblioteci C, o bibliotec minimal C++, o bibliotec Math, o bibliotec grafica Open GL i multe altele. Capitolul include un ghid de instalare NDK i Sequoyah (plug-in ce furnizeaz un mediu complet de dezvoltare a aplicaiilor mobile). Capitolul 8 extinde proiectul movie player pentru rularea filmelor n format AVI. Aceasta folosete Android NDK, deoarece bibliotecile AVI vin cu soluii open source implementate n C/C++. Ultimele dou capitole sunt despre Android scripting. Primul prezint partea teoretic iar al doilea unele extensii ale proiectului Movie Player. Android scripting reprezint este o unealt la ndemn pentru task-uri simple. Script-urile nu trebuie compilate i n consecin nici mpachetate sau desfurate pe server. Cartea de

www.todaysoftmag.ro | nr. 14/August, 2013

35

programare

Load Test folosind Windows Azure

Radu Vunvulea

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

ntr-o lume perfect m-a atepta s pot rula un load test sau un stres test folosind un furnizor de cloud fr s fiu obligat s modific o linie de cod din testele mele. n cadrul acestui articol vom descoperi cum putem s facem acest lucru folosind un nou serviciu de cloud. Cum o persoan care are cunotine zero despre cloud poate s ruleze un load test de 50.000 de useri timp de 24 de ore cu costuri minime, fr s fie obligat s achiziioneze i s configureze 10, 20 de noduri.

Ce este un load test?

Dar ce este de fapt un load test? Scopul principal pe care un astfel de test l are este definirea i validarea load-ului maxim pe care un sistem l poate avea fr ca performana s scad simitor. Chiar dac dezvoltatorul i spune c sistemul poate s gestioneze fr nici o problem 1000 de useri simultan, un load test poate s dovedeasc contrariul, chiar i pe cele mai simple scenarii. Exist o demarcaie foarte subire ntre un load test i un stress test. De foarte multe ori un load test se finalizeaz cu un stress test care are ca scop observarea comportamentului pe care sistemul l are

n momentul n care load-ul crete peste capacitatea maxim pe care acesta trebuie s o suporte.

Ce ne ofer piaa n acest moment?

La ora actual piaa este plin de diferite soluii pentru testare automat i pentru rularea load testelor. Produse precum Selenium, LoadStorm sau Neoload domin piaa. Dac folosim o soluie on-premise trebuie s fim pregtii s rezolvm probleme precum achiziia sau rezervarea resurselor pentru load test. ntr-o companie mic va fi greu cumprarea a 10 servere doar pentru a putea rula un load test. n schimb ntr-o companie mare, chiar dac are resurse financiare suficiente, din momentul n care facem o cerere pentru aceste resurse, pn n momentul n care o s avem resursele disponibile, poate s treac o perioad lung de timp uneori chiar s fie prea trziu. Pe lng aceti factori, configurarea fiecrei maini i deploy-ul

36

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Avem posibilitatea de a defini UI tests i nu numai. Pe lng posibilitatea de a face record i de a rula teste de UI, putem n orice moment s ne scriem testele noastre specifice i s lovim diferite endpoint-uri. Un endpoint testat nu trebuie s fie doar HTTP sau HTTPS. Putem la fel de bine s testm un endpoint WCF, REST sau un web service. Singura condiie care exist este ca endpoint-ul s fie accesibil de pe internet. Visual Studio 2013 ne aduce un nou template de proiect Web Performance and Load Test Project. Acest tip de proiect ne v-a permite s ne definim i s rulm load teste pe cloud fr nici un fel de de Visual Studio 2013 ne pune la dispoziie probleme. o noua opiune n loc s rulm testele noastre n propriul nostru Load Test Ring Cum s cream un load test? putem s le rulm direct pe Azure, fr nici Cea mai simpl variant pentru a crea o configuraie n plus. Nu este nevoie s un load test pentru o aplicaie web este s ne facem deploy la nici o main virtual sau crem unul sau mai multe teste de tip Web s configurm diferite servicii. Performance Test. Acest tip de teste pot s fie UI teste, fiind foarte uor de creat i Load Test Web Service automatizat. Folosind recorderul de UI care Load Test Web Service este servicul de vine odat cu Visual Studio 2013, putem pe Azure care ne ajut s facem acest lucru. s crem un Web Performance Test doar Prin intermediul acestuia, Visual Studio n cteva secunde. Un astfel de test poate 2013 ncarc testele noastre pe cloud. n s fie modificat n orice moment i dac spatele acestui serviciu exist un pool de dorim avem posibilitatea s generm cod test agents care este folosit pentru a rula pentru test. Prin aceast metod, cei care testele noastre. Dar acest lucru se ntmpl doresc s scrie cod pentru a modifica un n spatele scenei, fr ca noi s fim obligai test pot s fac asta foarte uor. Bineneles, s facem ceva. Toate rezultatele testelor funcionaliti precum detectarea automat noastre, mpreun cu diferii performance a elementelor dinamice pe care o pagina le counters ne sunt puse la dispoziie. are sau parametrizarea diferiilor parametrii este suportat out of the box. Care sunt caracteristicile principale? Pentru fiecare test de acest gen putem nainte s ne uitm peste diferite s avem diferite surse de date, precum o funcionaliti care sunt suportate, v baz de date, un CSV sau un fiier XML. propun s aruncm o privire peste cele Se pot folosi destul de uor testele scrise n mai importate opiuni suportate n acest Selenium de exemplu. Fiecare test poate s moment. apeleze la rndul su alte teste, astfel putem s reutilizm o mare parte din logica pe care o avem pentru testare. Pn acuma am vzut cum se poate crea unul din testele care pot s fie folosite pentru load test. Cred c este momentul perfect s ne uitm ce ne permite un load test s facem.

poate s fie un labirint din care s nu mai gsim ieirea.

Ce ne propune Microsoft?

Pe aceast pia, extrem de matur a aprut Microsoft cu o soluie extrem de ingenioas. Dac acesta deja are o infrastructur pentru cloud puternic i robust, de ce s nu ofere posibilitatea de a rula load teste folosind Azure. Dei acetia nu au prima soluie de acest gen de pe pia, Microsoft are un as n mnec. Acetia i permit s rulezi un load test folosind Azure fr s fie nevoie s faci o configuraie n plus. Trebuie s ai doar un cont pe Visual Studio Team Foundation Service (http:// tfs.visualstudio.com/), aceasta fiind folosit pentru facturare. Pn acum, un load test se putea face folosind soluiile pe care Micosoft ni le pune la dispoziie prin intermediul unui Load Test Ring. Acesta este format dintr-un controller ce controleaz testele Load Test Controller i unul sau mai muli ageni pe care testele noastre ruleaz. O arhitectur care are la baz master-slave. Noua versiune

Care sunt funcionalitile de baz?

Prima funcionalitate ntlnit n momentul n care scriem un load test este thinking time. Putem s definim diferite profile i intervale de timp prin care s simulm un utilizator real. De exemplu putem ca dup fiecare test s simulm un delay de X secunde. Avem la ndemn diferite profile de acest gen pe care le putem folosi. Simularea unui load test se poate face
www.todaysoftmag.ro | nr. 14/August, 2013

37

programare
Load Test folosind Windows Azure
prin diferite moduri. Avem posibilitatea s rulm un test de la bun nceput cu acelai numr de useri sau s ne definim numrul de useri cu ct s creasc la fiecare pas. Bineneles, de cele mai multe ori este nevoie s rulm diferite scenarii n acelai timp. Din aceast cauz, avem posibilitatea nu doar s specificm testele pe care dorim s le rulm i n ce proporie, ct i modul n care aceste teste s ruleze. De exemplu, putem s specificm de cte ori fiecare test trebuie s ruleze ntr-un anumit interval de timp sau care este numrul de useri care trebuie s ruleze un anumit test n fiecare moment cnd load test-ul ruleaz. Putem s simulm diferite browsere pe care clienii le au i diferite tipuri de conexiuni. Dar ceea ce mi se pare cel mai interesant este posibilitatea de a aduga i a accesa nu doar performance counters de pe clieni ct i de pe serverele pe care aplicaia noastr ruleaz. n acest mod putem s monitorizm i s vizualizm counteri att de pe clieni ct i de pe server.

Cum s rulm un load test n cloud?

n momentul de fa acest serviciu este n faza de preview. Fiecare utilizator are lunar 2000 de minute virtuale pe care le poate folosi pentru load teste. n momentul de fa nu exist preurile finale. Dac avei nevoie de mai multe puncte pentru load teste nu ezitai s intrai n programul de early adoption fr costuri suplimentare. O s avei acces la 200.000 de minute virtuale n fiecare lun pe care le putei folosi n voie. Acceptarea unui request de acest fel ia foarte puin (n cazul meu a fost sub 6 ore). Prima dat cnd am auzit de minute virtuale m-am ntrebat ce sunt acestea. Un minut virtual este egal cu durata load test-ului nmulit cu numrul de useri. Odat ce am rulat testele vom avea acces la toate rezultatele incluznd performance counters, testele czute, mesaje de eroare i diferite diagrame. Toate rezultatele pot s fie exportate ntr-un Excel care va conine n mod automat diagrame perfecte pentru management i clieni.

Care este preul?

Pn n acest moment am vzut care sunt principalele opiuni pe care le avem la dispoziie pentru un load test. Dar nc nu am vzut cum putem s rulm un astfel de test. Tot ce trebuie s facem pentru a putea rula un load test pe cloud este s deschidem Local.testsettings, iar n tab-ul General s selectm Run tests using Visual Studio Team Foundation Service. Da, doar att este nevoie s facem pentru a putea rula testul pe cloud. Bineneles trebuie s fim logai n Visual Studio cu un cont ce este legat la Visual Studio Team Foundation Service.

V invit s ncercai noul serviciu din cloud pentru load test. Eu am fost surprins plcut de acest serviciu i cred c o s ne uureze munca.

38

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Programare Funcional n Haskell (IV)

ncepem cu un set de extensii ale compilaCu acest cod putem cuta n fiecare tabel torului ce ne vor permite s fim mai expresivi. informaii folosind un API comun:
Mihai Maruseac
mihai.maruseac@gmail.com IxNovation @ IXIA membru ROSEdu, ARIA
{-# {-# {-# {-# LANGUAGE LANGUAGE LANGUAGE LANGUAGE MultiParamTypeClasses #-} FunctionalDependencies #-} TypeSynonymInstances #-} FlexibleInstances #-} *Main> search Ion nameAge Nothing *Main> search Mihai nameAge Just 25 *Main> search Mihai nameAddress Just a random address *Main> search Gabriela nameAddress Nothing *Main> search Ionela namePhone Nothing *Main> search Mihai namePhone Just 24828542

a finalul articolului trecut reuisem s obinem o aplicaie simpl ce permitea cutarea unor informaii despre persoane n trei tabele (reprezentate ca liste de perechi). Vom prezenta n continuare codul cu care am terminat articolul trecut.

Continum cu definiiile tipurilor de date:


type type type type Name = String Age = Int Address = String PhoneNumber = Integer

newtype NameAgeTable = NAgT [(Name, Age)] deriving Show newtype NameAddressTable = NAdT [(Name, Address)] deriving Show newtype NamePhoneTable = NPT [(Name, PhoneNumber)] deriving Show

Ne amintim c deriving Show i spune compilatorului s defineasc automat cte o metod show pentru a putea converti tipul de date la String pentru fiecare tip de date. Populm cele trei tabele cu valori de test:
nameAge = NAgT [(Ana, 24), (Gabriela, 21), (Mihai, 25), (Radu, 24)] nameAddress = NAdT [(Mihai, a random address), (Ion, another address)] namePhone = NPT [(Ana, 2472788), (Mihai, 24828542)]

Aici ne-am oprit data trecut. Astzi ne vom ocupa de modul n care putem obine informaii din toate tabelele (vom simula o operaie de join). Vom scrie o funcie getInfo care ne va ntoarce vrsta, adresa i numrul de telefon pentru persoanele care au toate valorile trecute n baza de date (sau Nothing altfel). Implementarea la care ne gndim ar fi:
getInfo1 name = case search name nameAge of Just age -> case search name nameAddress of Just address -> case search name namePhone of Just phone -> Just (age, address, phone) Nothing -> Nothing Nothing -> Nothing Nothing -> Nothing

Definim o clas pentru cutarea dup nume n aceste tabele i nrolm cele 3 tipuri la aceasta. Spre deosebire de deriving, aici va trebui s definim noi metoda. Vom folosi funcia predefinit lookup pentru a cuta Observai efectul de cascad al testentr-o list de perechi. lor: pentru fiecare cutare nou trebuie s ne deplasm mai spre dreapta. Din fericire, class SearchableByName t a | t -> a where search :: Name -> t -> Maybe a codul de mai sus poate fi scris i ca:
instance SearchableByName NameAgeTable Age where search name (NAgT l) = lookup name l instance SearchableByName NameAddressTable Address where search name (NAdT l) = lookup name l instance SearchableByName NamePhoneTable PhoneNumber where search name (NPT l) = lookup name l getInfo2 name = do age <- search name nameAge address <- search name nameAddress phone <- search name namePhone return (age, address, phone)

Pare un stil imperativ i la prima vedere testele de Nothing lipsesc. De fapt, codul este

www.todaysoftmag.ro | nr. 14/August, 2013

39

programare
Programare Funcional n Haskell (IV)
n continuare pur funcional doar c aspectul declarativ este mult mai evident: se pune accentul doar pe partea esenial a codului, partea de boilerplate (codul pe care ar trebui s-l scrii n mod repetat nainte de a putea scrie cod util n cazul nostru codul de testat dac o valoare este Nothing i ntors Nothing napoi) este ascuns. De fapt, mai sus avem mult zahr sintactic. Codul din getInfo2 este rescris de compilator ca:
getInfo3 name = search name nameAge >>= \age -> search name nameAddress >>= \address -> search name namePhone >>= \phone -> Just (age, address, phone)

programmable semicolon. De fapt, totul se Mergem la clasa care ne intereseaz, bazeaz pe o anumit clas de tipuri, una din numit Monad . Tipurile de date list, setul celor care reprezint abloane de pro- Maybe, Either sunt deja nrolate n aceast gramare funcional. clas. Vom ncepe prin a reaminti clasa class Monad m where Functor pe care am prezentat-o n articolul (>>=) :: m a -> (a -> m b) -> m b (>>) :: m a -> m b -> m b trecut. return :: a -> m a
class Functor f where fmap :: (a -> b) -> f a -> f b

Dac mai inei minte, clasa a fost introdus pentru a putea folosi fmap operaie similar map pentru elemente ale altor tipuri. Pentru liste fmap este exact map.
Instance Functor [a] where fmap = map

Observai c de fapt avem de-a face cu o compoziie de funcii similar unei benzi de asamblare. Operatorul >>= ia rezultatul unei funcii i-l trimite funciei urmtoare. Modul n care am scris codul n TODO este demonstrativ pentru denumirea de programmable semicolon oferit operatorului >>=: funcioneaz ca ; din limbajele imperative doar c are o semantic asociat. Dac n limbajele imperative ; era doar pentru a separa instruciuni, >>= poate ncorpora diverse logici n spate. n cazul nostru testeaz de Nothing i ntoarce Nothing dac este cazul. De asemenea, observai c return nu are semnificaia lui return din C. De fapt, n getInfo2 putei nlocui return cu Just sau viceversa i vei obine exact acelai comportament. Testm nti codul scris n toate variantele lui

Este evident c vom putea folosi fmap pentru arbori, stive, grafuri, etc. Practic, putem folosi analogia unui container: fmap aplic o funcie pentru toate elementele dintr-un container i le ntoarce mpachetate ntr-un container de aceeai form. Dar, l putem folosi i pentru funcii:
*Main Control.Applicative> fmap (+1) (const 3) $ 5 4 *Main Control.Applicative> :t fmap (+1) fst fmap (+1) fst :: Num b => (b, b1) -> b *Main Control.Applicative> fmap (+1) fst $ (2, 5) 3 *Main Control.Applicative> :t fmap show fst fmap show fst :: Show a => (a, b) -> String *Main Control.Applicative> :t fmap show fst (2,3) fmap show fst (2,3) :: String *Main Control.Applicative> fmap show fst (2,3) 2

Analogia eueaz. Putem privi f din clasa Functor ca pe un context computaional. Operaia fmap va modifica acest context. De fapt, dac ne amintim c funciile sunt n forma curry, tipul ne spune c fmap ridic *Main> getInfo1 Mihai Just (25,a random address,24828542) o funcie normal la nivelul unui context *Main> getInfo2 Mihai Just (25,a random address,24828542) computaional/container. *Main> getInfo3 Mihai Just (25,a random address,24828542) Nu orice tip de date suport o instan *Main> getInfo3 Ioana Nothing pentru Functor , exist 2 legi din teoria categoriilor ce trebuiesc respectate. Nu voi La final de articol vom prezenta i par- insista asupra lor ntruct este destul de difitea magic din spate, cea din limbajul de cil de ntlnit in practic un tip care s nu le programare care ne permite ca >>= s fie respecte.

Observai c return este o funcie, nu este un cuvnt cheie al limbajului. Singurul lui scop este s ridice o valoare normal la contextul computaional necesar. Pentru Maybe, return nu este altceva dect constructorul Just. Cealalt funcie este mai important. Operatorul >>= pronunat bind realizeaz un lucru pe care nu l-am putea face cu fmap: imaginai-v c avem o funcie care primete o valoare i ntoarce un rezultat ntr-un context (de exemplu o funcie care primete o valoare i ntoarce o list de valori). Dac am face fmap cu aceast funcie vom obine un context de contexte (list de liste de valori) deci avem nevoie de o operaie suplimentar (n cazul listelor, concat). Operatorul >> este un caz particular al lui >>= (deci definit n termenii lui) care folosete doar pentru nlnuirea efectelor, nu transmite rezultatul unei expresii mai departe. i pentru monade exist un set de 4 legi ce trebuiesc satisfcute dar nu vom insista asupra lor. De fapt, cunoscnd doar definiiile pentru Functor i Monad i tipurile eseniale din Haskell putem scrie destul de mult cod fr a avea nevoie de mai multe noiuni din teoria categoriilor. Dar, dac sunteti curioi, v recomand s citii Typeclassopedia1 al lui Brent Yorgey pentru a vedea ce alte abloane din programarea funcional mai pot fi capturate prin intermediul claselor de tipuri.
1 http://www.haskell.org/haskellwiki/Typeclassopedia

40

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Migrare website MVC 3 i DB n Azure (III)


n articolele precedente am prezentat motivele alegerii lui Windows Azure n faa altor alternative ca soluie de scalare. O alt tem a articolelor a fost procesul de migrare al unei baze de date MS SQL n SQL Azure. n articolul curent vom ncheia aceast serie prin a prezenta cum am migrat portalul web dintr-un IIS on site n cloud-ul Azure.

Contextul
Drago Andronic
CTO @ TXTFeedback dragos@txtfeedback.net

Cum se traduce aceasta n limbaj Azure?

Se ddea o arhitectur clasic de web: Avem nevoie de un cel puin un WebRole un portal dezvoltat n ASP.net MVC (3 i 4) un web role este o main virtual, sau o avnd n spate o baz de date ce rula pe MS suit de maini virtuale (n cazul scalarii) ce SQL server ascuns de Entity Framework. gzduiete un website (sau mai multe). ntr-un cuvnt un WebRole e un server web . Traficul web direcionat ctre un WebRole va fi automat mprit (load balanced) ntre toate mainile virtuale ce alctuiesc WebRole-ul n felul acesta se realizeaz scalarea avem nevoie s servim mai multe request-uri? Mai adugm maini n WebRole. Restricia n cadrul unui WebRole e ca toate mainile virtuale din componen s fie identice n configuraie dac am nceput Aceasta arhitectur trebuia pregati- WebRole-ul cu o main cu o configuraie tat de scalare trecut pe un sistem ce modest (A) vom putea scala doar adugnd permitea deservirea unui numr mare de mai multe maini cu aceeai configuraie A. request-uri. Cum configuraia mainilor din Azure Dup ce am analizat mai multe opiuni va afecta direct costurile de hosting un prim de upgrade a arhitecturii (discursul logic pas important este s analizm ce configupoate fi revzut n articolul precedent), raie este necesar i suficient pentru a rula ne-am decis asupra SQL Azure i Windows website-ul/aplicaia noastr fr probleme, Azure ca platforma de migrare. urmnd ca apoi s scalm sistemul adugnd maini cu aceeai configuraie (i guideline Migrare web portalul gsii configuraia minim i scalai orizontal Windows Azure ne pune la dispoziie o n felul acesta avei mai mult flexibilitate multitudine de servicii i facilitai (de exem- i optimizai costurile). plu service bus, caching, mobile services etc.), Analiza noastr va ine cont de docuns accesul la aceste servicii ar afecta direct mentaia de pe MSDN 1, caracteristicile arhitectura sistemului nostru. proiectului nostru (dac am optimizat penDar n cazul nostru, nu dorim s schim- tru mai multe procesoare, dac suntem RAM bm arhitectura ci doar s migrm unu la intensive, dac ne dorim CPU dedicate sau unu (n msura posibilitilor) arhitectura ne descurcm cu un CPU shared, etc.) i de existent, chiar dac aceasta nseamn c nu testele de performan pe care le vom face vom profita la maxim de facilitile oferite de cu diverse configuraii n felul acesta vom Azure. putea decide n cunotin de cauz. Aveam de migrat un portal alctuit din Dup ce am ales configuraia pentru dou website-uri de front-end i o familie de WebRole, suntem pregtii de a crea proiecdirectoare virtuale ce conin servicii. tul de Azure i WebRole-ul.
1 http://msdn.microsoft.com/en-us/librar y/windowsazure/hh824677.aspx

www.todaysoftmag.ro | nr. 14/August, 2013

41

programare
Migrare website MVC 3 i DB n Azure (III)
Creare proiect Azure
Microsoft ne-a fcut viaa mai uoar integrnd tot ce nseamn Azure direct n Visual Studio. Presupunnd c folosim Visual Studio 2012 avem nevoie de SDK-ul Azure2 i suntem gata de pornire. Deschidem soluia ce conine proiectul/proiectele nostre i adugm un proiect de tip Windows Azure Cloud Service

Ultimul pas este publicarea WebRole-ului pe platforma Azure Pentru c vom aduga proiectele deja existente n WebRole , adic crearea efectiv de maini virtuale i transferarea codului vom lsa proiectul de cloud service gol pe fiecare din aceste maini. Din nou Microsoft a fcut totul uor pentru noi (poate prea uor) i din Visual Studio avem opiunea de Publish pe proiectul de tip Cloud Service. Wizard-ul de publicare ne va ajuta s alegem i s ne crem infrastructura Azure necesar (cloud service + storage account) i s alegem dac publicam n sistemul de staging (recomandat) sau direct pe production.

Verificare i validare
Dac totul a mers bine i WebRol-ul a fost creat putem accesa website-ul/website-urile noastre la adresa vizibil n portalul de administrare (http://manage.windowsazure.com/) o adres tip guid.cloudapp.com dac am publicat pe sistemul de staging, sau o adres tip webportalulmeu.cloudapp.com dac am publicat pe production. urmnd s adugm proiectele n WebRole direct din Solution Tooling-ul la dispoziia noast este excelent i Microsoft a reaExplorer lizat o interfa de management extrem de uor de neles i folosit pentru Azure. Cu toate acestea e aproape sigur c v vei lovi de o grmad de obstacole n momentul migrrii (particulare arhitecturii/contextului vostru). De asemenea mai sunt nc multe ntrebri la care nu am rspuns (i nici nu am ncercat) n cadrul acestui articol (s-a trecut rapid peste logica de decizie un sigur webrole vs mai Definirea structurii de website-uri i directoare virtuale multe webrole-uri) aa c dac dorii s aflai mai multe detalii Dup ce am adugat primul proiect n WebRole pe urmtoarele sau avei ntrebri specifice, m putei contacta la drago(at)txtle vom aduga modificnd direct fiierul de ServiceDefinitions. feedback.net Acest fiier de configurare va descrie structura de website-uri i directoare virtuale de pe fiecare main aa c n cadrul su vom Note finale migrare website MVC 3 + DB n Azure include: Migrarea n Azure nu a fost fr probleme, ns acum la trei Pentru fiecare website vom aduga o intrare de tip Site avem luni din momentul migrrii putem spune c suntem deplini satisnevoie de un nume unic pentru fiecare website i de specificarea fcui de rezultate (i de return on investment). unui endpoint dac nu dorim nimic special vom lsa endpointMajoritatea dificultilor au fost de know-how cum anume ul default (portul 80 i protocolul http). traduci o arhitectur standard la un cloud ce exact se schimba la Pentru fiecare director virtual vom crea un entry de tip baza de date, ce exact e un WebRole, de ce configuraie ai nevoie? VirtualApplication. Cum un director virtual nu poate exista MSDN, traing-urile de pe Pluralsight, stackoverflow au ajutat, dect n cadrul unui website, fie punem directoare virtuale ns de departe cel mai folositor au fost discuiile cu specialiti care ntr-un website existent (va trebui ca routing-ul website-ului s au mai trecut prin acest tip de proiect. permit acest lucru) sau crem un website gol ce l folosim doar Mulumim cu aceast ocazie lui Radu Vunvulea (iQuest) i lui pentru a gzdui toate directoarele virtuale. Noi am ales s crem Zoli Herczeg (Microsoft) care i-au gsit timp n program s stea un website gol ca i placeholder de vorb cu noi i s ne rspund ntrebrilor. ntr-un final vom ajunge la o configuraie de tipul acesta:
2 http://www.windowsazure.com/en-us/downloads/

Note finale migrare web portal

42

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

arhitectur

Design pattern-ul MVVM

Andrei Moldovan andrei.moldovan@businesslogic.co.uk Software Developer @ Business Logic Systems Ltd.

rice programator ncearc s fie ct mai ordonat atunci cnd scrie cod. Fiecare echip i organizeaz proiectul n aa fel nct acesta s fie ct mai uor de ntreinut i s poat fi neles cu uurin de membrii noi ai echipei. Aceast practic poate fi datorat i folosirii design pattern-urilor. tim c exist numeroase astfel de reguli de organizare a codului i c odat aleas una dintre ele, este greu i costisitor ca aceasta s fie schimbat. Totui este important ca programatorii s fie la curent cu noile design pattern-uri pentru a putea profita la maxim de avantajele oferite de acestea. Model-View-Viewmodel (MVVM) este un design pattern folosit n ingineria software care a fost introdus prima oar de ctre Microsoft ca o metod de particularizare a modelului de prezentare introdus de Martin Fowler. De fapt se pare c Microsoft folosea MVVM pentru proiectele dezvoltate intern, precum Microsoft Expression Blend, pe cnd nucleul platformei WPF era n construcie. Bazat n mare parte pe modelul Model-ViewController (MVC), acesta se adreseaz n special dezvoltrii interfeei cu utilizatorii a platformelor moderne ((HTML5, Windows Presentation Foundation, - WPF, i Silverlight), acolo unde exist un dezvoltator orientat special spre acest lucru, avnd sarcini diferite de ale unui dezvoltator obinuit care se ocup n general de logica business i de dezvoltarea interaciunii cu serverul. Ca structur, acesta este alcatuit din trei pri eseniale ce pot fi deduse i din denumirea design pattern-ului: un Model, un View i un ViewModel. Aceast structur seaman cu cea a MVC-ului, dar ofer n plus uurina utilizrii XAML-ului i a Windows Presentation Foundation, prin cuplarea datelor ct mai aproape de Model folosind XAML, View Model i orice verificare de date a nivelului Business pentru a valida datele naintea afirii acestora pe interfa. Modelul se refer la datele efectiv cu care se lucreaz dar i la nivelul de acces la aceste date. Spre exemplu ntr-un model ar putea fi accesate obiecte care citesc din baza de date informaii legate de o anumit persoan. View-urile, la fel ca i n cazul clasic se refer la partea vizual care va fi afiat pe interfaa grafic, cum ar fi butoanele, ferestrele, graficele i alte controale. Acestea nu conin partea de logic business. Marele avantaj n acest caz este c un designer poate s se ocupe de partea grafic a aplicaiei lucrnd doar cu view-ul, n timp ce logica din spate rmne neafectat. ViewModel-urile reprezint nite modele pentru view-uri, mai precis acestea se refer la o abstractizare a view-urilor care servesc i la binding-ul datelor ntre view i model. Pot fi privite i ca nite aspecte specializate ale Controalelor din design pattern-ul MVC (care acioneaz ca i data bindgins sau converters) n aa fel nct s schimbe informaia din formatul modelului n formatul viewului i s paseze comenzi din view n model. ViewModel-urile expun proprietile publice, comenzile i abstractizrile i au fost asemnate cu o stare conceptual a datelor, spre depsebire de starea real a datelor din model. Exist discuii n ceea ce privete clasa din spatele view-ului. Majoritatea specialitilor susin c aceasta ar trebui s conin doar metoda InitializeComponent() n cazul WPF i Silverlight, ns n anumite cazuri nu se merit mutarea unor metode n viewmodel. View-ul comunic doar cu ViewModel-ul, n timp ce ViewModel-ul este privit ca un punct intermediar ntre View i Model. De asemenea, Modelul este singurul care interacioneaz cu baza de date. Acest model are sens n practic doar dac se folosete n combinaie cu o baz de date. n caz contrar

www.todaysoftmag.ro | nr. 14/August, 2013

43

arhitectur
Design pattern-ul MVVM
obiectele de date precum entitile din EDMX i Linq nu au logic n acest context. O diagram a acestui design pattern poate fi observat i in figura de mai jos. Alte dou funcionaliti care fac ca acesta s fie att de des folosit sunt data template-urile i resursele de sistem. Template-urile aplic View-uri asupra obiectelor unui ViewModel. Programatorii pot s le declare n XAML i s lase resursele de sistem s localizeze n mod automat iar apoi s aplice acele template-uri la runtime. ntruct aceast design pattern poate fi destul de greu de implementat, au fost create cteva platforme care s ajute programatorii n implementarea lui cum ar fi MVVM Light sau Caliburn. Personal l recomand pe cel din urm deoarece ofer avantajul recunoaterii automate a view-ului de ctre viewmodel, nemaifiind necesar crearea unei clase ajuttoare care s fac acest lucru. S lum un exemplu simplu cu o aplicaie care afieaz dintr-o baz de date informaii despre produse : nume, pre unitar i id. n model va trebui s avem partea de accesare a datelor. Modul n care acestea vor fi accesate rmne la latitudinea programatorului. Aceast clas va implementa INotifyPropertyChanged i va conine cele 3 proprieti, fiecare avnd pe setter OnPropertyChanged(Propriet ate) pentru a semnaliza modificarea valorii proprietii. Trebuie acordat atenie n mod special numelui proprietii deoarece acesta se transmite ca i string. ViewModel-ul va conine toat partea de care are nevoie utilizatorul pentru a interaciona cu aplicaia. Aici se pot pune sortrile, tergerile din list sau orice alte operaiuni necesare. n cazul de fa doar 2 comenzi, GetProduct i SaveProduct ce vor fi folosite pentru a aduce un obiect din model n viewmodel i pentru a salva un poate s neleag cteva linii de cod , chiar produs. Acestea sunt de tipul ICommand i dac sunt scrise dezorganizat. Totui, pe i au o sintax de tipul : msur ce numrul de linii de cod dintrun program crete, crete i numrul public ICommand SaveProductCommand{ get{ funcionalitilor. if (_saveProductCommand == null) { _saveProductCommand = new RelayCommand( Pe lng dezavantajele amintite mai sus, param => SaveProduct(), param => (CurrentProduct != ar mai fi i faptul c n unele cazuri poate null)); } fi dificil proiectarea viewmodel-ului n aa return _saveProductCommand; } fel nct s se obin gradul de generali} tate dorit i de asemenea debug-ul pentru Tot aici apare i clasa RelayCommand, data binding este mai greu de realizat fa esenial pentru ca MVVM s funcioneze. de metodele clasice care foloseau code Aceasta conine o comand ce va fi execu- behind. tat de alte clase pentru a rula cod n clasa n concluzie MVVM ofer anumite de baz prin invocarea de delegates. avantaje precum separarea view-ului de View-ul este partea care definete modul logica business i uurina n scrierea testen care va arta aplicaia. De asemenea se lor unitare, ns programatorii trebuie s fie vor defini dou DataTemplate-uri, unul ateni dac acest design pattern se preteaz pentru model i unul pentru viewmodel. sau nu pentru proiectul lor. Pentru a porni aplicaia mai trebuie adugate urmtoarele linii de cod n App. xaml.cs, care creaz ViewModel-ul i asociaz datacontext-ul ferestrei n viewmodel:
MainWindow app = new MainWindow(); ProductViewModel viewModel = new ProductViewModel(); app.DataContext = viewModel; app.Show();

i totui cnd ar trebui s folosim acest model? Dei structura lui este una logic i ofer organizare n cod, acesta nu se preteaz pentru orice fel de proiect. Dac avem de-a face cu un proiect unde nu exist o interfa grafic prea complex nu se prea justific folosirea MVVM, codul putnd fi scris chiar i n code behind. De asemenea unii programatori nu recomand folosirea acestui pattern dac nu se dorete realizarea de unit-teste. ntruct uurina n scrierea testelor este unul din avantajele acestuia, este de preferat ca acesta s fie folosit doar mpreun cu acestea. Este total neproductiv i deci nu este recomandat folosirea unui design pattern ntr-o aplicaie simpl Hello World!. Orice dezvoltator software

44

nr. 14/August, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

management

Complicat sau complex

Simona Bonghez, Ph.D.

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

- i complex! - Ba nu e complex! - No, ba i, c avem 12 sisteme de interconectat, dezvoltate pe platforme diferite. Plus c folosim o tehnologie nou pentru noi... - Deci e un proiect complicat, nu complex. Miu se uit total nedumerit la Gogu. Cumpni pre de o clip dac acesta l ia peste picior, dar vznd figura serioas, se limit la a spune, n felul lui molcom: - Zu, mi Gogule, te iei de cuvinte, complicat, complex, tot aia i... Gogu se lu cu minile de cap, cum adic s fie tot aia?! Se uit n jur cutnd ajutor, dar efu nu era n zon. Cu ce-oi fi greit, Doamne, de trebuie s le lmuresc eu pe toate?! O s-mi trec n fia postului : Mama rniilor, d explicaii la toi mocofanii, n fiecare zi, n timpul programului i peste, ca fraieru, fr plat i fr recunoaterea meritelor. Oft din toi rrunchii i se arunc n explicaii: - Nu e tot aia, Miule, i e bine s clarificam. C de-aia facem management de proiect ca s le tim pe astea i s putem aciona n consecin, s prevenim apariia problemelor. n cazul proiectelor discutm de doi termeni diferii: complicat i complex. Atributul de complicat l primesc proiectele n care avem un numr mare de pri sau componente tehnice interconectate,

interdependente. Conexiunile sunt sofisticate, avem nevoie de mult atenie n determinarea implicaiilor, avem nevoie de expertiz tehnic considerabil pentru a putea identifica toate activitatile necesare i a planifica corect un astfel de proiect. Corect? - Exact. Pi i asta nu nseamn i complex? - Nu, doar ce i-am spus c asta nseamn complicat. Stai jos i ascult! Miu se aeza imediat i ridica ochii spre Gogu, era numai ochi i urechi. - Atributul de complex este dat de caracterul de impredictibilitate i este determinat de comportamentul uman. Un proiect complex are prin definitie prti i componente care pot interaciona imprevizibil. Pricepi? Remarca privirea deloc inteligenta a lui Miu aa c se redresa imediat: - Uite nite exemple: lansarea unei rachete spre lun este un proiect complicat, realizarea unui bra de robot care s poata executa operaii pe creier, alt exemplu de proiect complicat. Creterea i educarea unui copil n schimb este un demers complex. Acu pricepi? Privirea lui Miu ncepea s capete strlucire. Da tot nu pricepe, gndi Gogu. Cum s-i explic eu stuia mai pe nelesul lui? Miu ddu glas nedumeririlor: - No stai. i clar treaba cu complicatu.

www.todaysoftmag.ro | nr. 14/August, 2013

45

management
Complicat sau complex
Nu trimitem noi oamenii pe lun da cele 12 sisteme de legat, plus tehnologia, interfeele..., zicem c sta e proiect complicat. Da cu complexu nu pricep. Ce-avem noi de-a face cu educaia copilului?! Asta e ca nuca-n perete decret el i se ls satisfcut pe spate. O micare total greit deoarece scaunul ced neateptat sub greutatea lui Miu, iar acesta se trezi ntins pe spate pe podea, cu picioarele n aer. Hohotele de rs ale lui Gogu fur declanate nu att de poziia hilar ct de grimasa de surpriz total de pe faa lui Miu. i ntinse mna i l ridic prietenete. - Deh, vezi, dac m contrazici? Am dat exemplul extrem cu educaia doar ca s faci tu un declic mintal, dar vd c te-am dat pe spate! La propriu! Ha-ha... Voiam s subliniez c, spre deosebire de un proiect complicat, n care graniele proiectului pot fi clar delimitate, n care poi defini ce este n obiectivele proiectului i ce cade n afara obiectivelor acestuia, ntr-un proiect complex graniele pot deveni permeabile, e posibil ca pe parcursul proiectului s le redefineti, de mai multe ori, n funcie de implicaiile mediului n care se desfoar proiectul. Uite un exemplu mai concret: un proiect de schimbare organizaional, n care lucrurile nu sunt complicate deloc, dar n care oamenii reacioneaz diferit, fiecare n funcie de ateptrile i de temerile sale. Pot exista piedici incredibile n realizarea proiectului, determinate doar de rezistena la schimbare a personalului din companie. Am vzut ntr-o lucrare care trata acest subiect o comparaie foarte tare: avionul era dat exemplu de sistem complicat datorita multitudinii sale de componente, mecanice i eletronice, iar o companie aflat n faa unei posibile restructurri era dat ca exemplu de sistem complex. i fii atent ce mai ziceau: oamenii ncep s reacioneze chiar i la rumoarea unei posibile restructurri, ncep s discute, se formeaz bisericue, apar primele puncte de vedere, sistemul deja e n schimbare. Pe cnd avionul, dac apare mecanicul cu trusa de scule, cu intenia clar de a interveni n angrenajul avionului, nu va avea nici o reacie. Tare, nu? Remarc imediat c se lsase dus de valul explicaiilor; n jurul lor mai apruser civa colegi, atrai probabil de cztura spectaculoas a lui Miu, care ascultau acum cu interes exemplele lui Gogu. ntrebrile ncepur s curg ca grindina, fiecare dintre ei ncercnd s catalogheze proiectul n care lucra: era cumva complicat sau complex, sau poate ambele. - Mai d-ne exemple, Gogule, c nu e foarte clar pentru toat lumea. i-apoi e preferabil s ai un proiect complicat sau unul complex? Dar dac e i complicat i complex... - Mama rniilor, mormi Gogu mai mult pentru el, oarecum ncurcat i de faptul c nu prea mai avea exemple. Partea asta cu complexitatea era chiar complex, sau complicat?! Veni ns i salvarea lui: atras probabil de forfota neobinuit din birou, i fcu apariia i efu. - Ce-i aici, frailor? Se mparte ceva gratuit? Gogu ddu s replice, dar se stpni; interesul lui era altul acum, aa c lans provocarea ctre efu: - Discutam despre proiecte complicate versus proiecte complexe. Ne ajui cu vreun exemplu detept? - Ah, frumos subiect, se entuzism efu. Aa, ia d-i tu ochii pe spate gndi Gogu, dar nici prin cap nu-i ddu s-l ntrerup. efu i ls capul puin ntr-o parte. Semn de mare concentrare i continu Gogu monologul interior, dar era foarte curios de ce urmare. - Ok, pi v spun un banc. Complicat versus complex, nu-i aa?! Uite: un manager de proiect se plimba i fcea siesta dup masa de prnz pe plaj. Cum mergea el adncit n gnduri planifica n minte urmtoarea ntlnire cu echipa de proiect ddu cu piciorul n ceva i privind mai atent i ddu seama c e o lamp veche. Ei, c n-oi fi eu ca PM-ul din banc s gsesc duhul din lamp, i zise managerul de proiect, dar se aplec totui s ridice obiectul. i mare i fu surpriza cnd, ntr-adevr, dup ce terse lampa de nisip, i apru n fa brusc, cu o pocnitur surd, un duh. M rog, era o artare ciudat, ca un nor cu forme umane, ca n desene animate. Care i vorbi: Omule, eu sunt duhul din lamp, bla-bla-bla, probabil tii povestea, zi dorina. Hmm, managerul de proiect era obinuit s se foloseasc de orice ocazie, aa c nu sttu mult pe gnduri i-i spuse: tii, Duhule, eu am un proiect pentru care trebuie s cltoresc permanent ntre Romnia i Kuwait. Iar zborurile sunt n special zboruri de noapte, m seac de puteri, nemaivorbind despre controlul de securitate, ateptarea n aeroport, recuperarea bagajelor... ntr-un cuvnt, mi-ar plcea s am la dispoziie o autostrad suspendat, de-aici i pn n Kuwait. Duhul se gndi puin probabil vizualiza harta - apoi zise: Mi, ce-mi ceri tu e complicat ru, distana e enorm, trecem peste continente, avem i mri de traversat, nimeni nu ar putea face o autostrad suspendat pe o asemenea distan. Alt dorin n-ai? Uor nemulumit de calitatea duhului ntlnit, managerul nostr de proiect i mai ncerc norocul cu o a doua dorin: Bine, Duhule, ce zici de asta: mi doresc pe proiectul pe care lucrez, cele ase organizaii implicate s conlucreze, s stabileasc toate cerinele mpreun, s se neleag asupra lor i s nu le schimbe pn la sfritul proiectului. Duhul czu puin pe gnduri, apoi l ntreb: Auzi, i cte benzi s aib autostrada aia?

46

nr. 14/August, 2013 | www.todaysoftmag.ro

sponsori

Comunicm mai simplu direct prin SMS. Propune un titlu de articol pentru numrul urmtor sau trimite-ne sugestiile tale.

powered by

SMS 0371700018
numr cu tarif normal

You might also like