No. 14 • August 2013 • www.todaysoftmag.ro • www.todaysoftmag.com TODAY TSM SOFTWARE MAGAZINE

Provocările unui business analyst în Agile

Scurtă introducere în mediul SAP

Load Test folosind Windows Azure

Haskell (IV) Project Manager și Business Analyst - un duet care poate face diferența în IEEE Congress on Evolutionary outsourcingul românesc Computation, 2013, Cancun ITC Spring 2013 (II) Migrare website MVC 3 și DB în Azure (III) Cum invata un artizan software: deliberate practice Istoria IT-ului clujean: Ford și Șincai Team building (II) WPF – cum stăm cu performanța? Conferința Romanian Testing Startup Transilvania Community 2013

6 27 ICT SPRING Team EUROPE 2013 (II) building (II) Ovidiu Mățan Andreea Pârvu

9 29 Istoria Provocările unui business IT-ului analyst în Agile Marius Mornea Monica Petraru

10 32 Conferința Project Manager și Business Romanian Testing Analyst - un duet care poate Community face diferența în outsourcin- 2013 gul românesc Marius Mornea Adrian Cighi

11 34 Startup Recenzia cărții: Android Apps Transilvania with Eclipse de Onur Cinar Cristian Dascălu Silviu Dumitrescu

12 36 Despre finaliștii Romanian Load Test folosind Windows Startup Awards Azure Bogdan Iordache Radu Vunvulea

15 39 Aplicații pentru previziuni Programare financiare la IEEE Congres on Funcțională Evolutionary în Computation, 2013, Cancun Haskell (IV) Silvia Răușanu Mihai Maruseac

18 41 Cum învață un artizan soft- Migrare website MVC 3 și DB în ware: deliberate practice Azure (III) Alexandru Bolboaca și Adrian Bolboacă Dragoș Andronic

21 43 Scurtă introducere Design pattern-ul în mediul SAP MVVM Victor Ionescu Andrei Moldovan

23 45 WPF – cum stăm cu Complicat performanța? sau complex Daniel Lăcătuș Simona Bonghez editorial

remea vacanțelor a început, o parte am fost norocoși și ne-am luat deja concedi- ile așa că putem să ne reluăm plini de elan lucrul la birou. Revenim la proiectele noastre, și sigur aveți o idee despre un produs nou ce ar putea să ne facă viața maiV ușoară, cum ar fi o mică pompă solară care să umfle colacele și bărcuțele copiilor. Vă sugerez să nu abandonați aceste idei și să vă gândiți serios cum s-ar putea realiza. Se întâmplă uneori să avem o idee foarte bună de produs pe care să o vedem în câțiva ani implementată cu succes, din păcate de către altcineva. Este paradoxal faptul că în România avem un grad ridicat de ingeniozitate, că suntem buni în execuția proiectelor, lucru demonstrat prin întreaga industrie de IT orientată spre outsourcing, dar în același timp avem un număr relativ mic de startup-uri, succesul acestora se lăsându-se așteptat. Ovidiu Măţan, PMP Presupun că în timp toate acestea se vor schimba, iar șansa de succes a noilor veniți este [email protected] mult mai mare acum față de condițiile de la începutul lui 2000. Trip Hawkins, spunea în cadrul ICT Spring Europe 2013 că inovația trece în fața branding-ului. Industria cu Editor-in-chief Today Software Magazine cel mai mare impact în momentul de față este cea mobile iar în cadrul acesteia jocurile împreună cu social media ocupă cel mai mare spațiu în device-urile utilizatorilor. Mai mult, dacă ne uităm la procentul jocurilor indie față de cele produse de marile companii, acestea dominau în prima parte a 2012 cu 68% pentru platformele și android. Dacă ar trebui să pornesc un startup astăzi, aș considera și crearea unui joc. Există exemple de succes autohtone pe piața locală, iar suportul acestora pentru noi veniți nu ar trebui să fie o problemă. Rămânem în sfera indie, iar cea mai mare platformă de finanțare crowdsourcing, dis- ponibilă și din România este IndieGoGo.com. Este cea mai bună modalitate de a valida faptul că prototipul vostru va avea cu adevărat un impact global și de a obține o finanțare. Proiecte din ce în ce mai mari își găsesc finanțarea în acest mod iar un exemplu recent este Ubuntu Edge, un proiect ce urmărește crearea primului telefon high-end al celor de la Ubuntu. Ținta lor pentru obținerea a 32,000,000$ într-o lună va reprezenta un adevărat succes în ceea ce privește finanțarea crowdsourcing. Nu puteam vorbi despre crowdso- urcing fără a menționa și două platforme locale: multifinantare.ro și crestemidei.ro ce reprezentă o alternativă bună atunci când vorbim de proiecte cu impact național. În acest număr TSM puteți citi o serie de articole tehnice dintre care enumăr câteva titluri: WPF – cum stăm cu performanța?, Design pattern-ul MVVM. De asemenea se continuă seriile în numerele trecute despre Programare Funcțională în Haskell și Migrare website MVC 3 și DB în Azure. O noutate constă în prezența a două articole, Provocările unui business analyst în Agile și Project Manager și Business Analyst care pun accentul pe rolul unui business analyst-ului în echipă și interacțiunea 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 plăcere să publicăm un prim articol de introducere în SAP. La final, Gogu ne propune să învățăm diferența dintre complicat și complex.

Vă dorim o lectură plăcută !!!

Ovidiu Măţan Fondator și CEO al Today Software Magazine

4 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE

Lista autorilor

Redacţia Today Software Magazine Alexandru Bolboaca Adrian Cighi [email protected] [email protected]

Agile Coach and Trainer, with a Fondator / Editor în chief: Ovidiu Mățan focus on technical practices Project Manager @Mozaic Works @ Yonder [email protected] Daniel Lăcătuș Editor (startups și interviuri): Marius Mornea [email protected] Mihai Maruseac [email protected] [email protected] Senior Software Developer @ Accesa IxNovation @ IXIA Graphic designer: Dan Hădărău membru ROSEdu, ARIA [email protected] Silviu Dumitrescu Radu Vunvulea silviu.dumitrescu@msg-systems. [email protected] Copyright/Corector: Emilia Toma com [email protected] Senior Software Engineer Consultant Java @iQuest @ msg systems Romania Traducător: Roxana Elena [email protected] Silvia Răuanu Adrian Bolboaca [email protected] [email protected]

Reviewer: Tavi Bolog Software Developer Programmer. Organizational and [email protected] @ ISDC Technical Trainer and Coach @Mozaic Works

Reviewer: Adrian Lupei Bogdan Iordache Victor Ionescu [email protected] [email protected] [email protected] este Co-Fondator al How to Web, SAP IT Consultant cel mai important eveniment @ msg systems Romania web din Europa de Est Produs de Today Software Solutions SRL Monica Petraru Andrei Moldovan [email protected] [email protected] str. Plopilor, nr. 75/77 Software Developer Cluj-Napoca, Cluj, Romania Senior Business Analyst @ Business Logic Systems Ltd. [email protected] @ UNIQA Raiffeisen Software Service

www.todaysoftmag.ro www.facebook.com/todaysoftmag Simona Bonghez, Ph.D. Andreea Pârvu twitter.com/todaysoftmag [email protected] [email protected] Speaker, trainer şi consultant în Recruiter în cadrul Endava ISSN 2284 – 6352 managementul proiectelor, Owner al Colors in Projects Dragoș Andronic Cristian Dascălu [email protected] [email protected] CTO @ TXTFeedback Cofondator @ Cluj Hub

Marius Mornea Ovidiu Măţan, PMP [email protected] [email protected] Copyright Today Software Magazine Inginer interesat și implicat în diverse activități IT, de la Editor-in-chief dezvoltare, management, până Reproducerea parțială sau totală a articolelor Today Software Magazine la educație și jurnalistică în din revista Today Software Magazine cadrul Epistemio, UTCN și TSM fără acordul redacției este strict interzisă.

www.todaysoftmag.ro www.todaysoftmag.com

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

ICT SPRING EUROPE 2013 (II)

n acest articol continuăm relatările de la ICT Spring Europe unde împreună cu colegul meu Marius Mornea am avut plăcerea să participăm. A fost prima delegație TSM în afara țării și am avut ocazia să ne conectăm la pulsul lumii de IT din Europa. Viitorul arată bine și nu m-ar surprinde ca în viitor să asistăm la o redefinire a importanței bătrânului continent în dezvoltarea aplicațiilor deÎ mâine.

A doua zi a evenimentului a debutat cu prezentarea lui Jimmy aceleași categorii de articole și statistici legate de accesul la aces- Walles, fondatorul Wikipedia a cărui temă a fost Democrație și tea. Apar totuși diferențe în popularitatea acestora cum ar fi pop internet. Am reținut invitația la un exercițiu de imaginație care culture in Japonia sau faptul că germanii sunt cei mai curioși în sintetizează filozofia Wikipedia: „Imaginați-vă o lume unde fiecare geografie !!! persoană are liber acces la toate cunoștiințelor omenirii”. Revenind la statistici, Wikipedia are până acum 490.000.000 Un lucru distractiv, relatat de fondatorul Wikipedia, se referă la vizitatori unici și bazat pe estimările lor, se va ajunge la 500.000.000 China unde au apărut denumiri de mâncăruri ce conțin cuvântul înainte de finalul anului. Wikipedia. Nimeni nu a știut inițial cum au apărut, dar s-a dove- Cine scrie în Wikipedia? 87% sunt bărbați din cauză că dit că în urma căutărilor unor termeni în limba engleză folosind Wikipedia este destul de tehnică. Se încearcă să se îmbunătățească Google, rezultatul începea de multe ori cu cuvântul Wikipedia. interfața de editare a articolelor astfel încât să fie mult mai ușor să Aceasta se întâmpla, deoarece înainte de Olimpiada din Beijing, se editeze un articol. Există un mare număr de doctoranzi printre toate restaurantele își traduceau meniurile în limba engleza. Astfel cei ce scriu articole. Fondurile pentru Wikipedia vin de la fundația dacă se căuta, cum se numește această ciupercă în engleză rezulta- Wikimedia, marea majoritate a sumei primite fiind de la publicul tul căutării, începea cu: Wikipedia. larg. Un aspect interesant menționat de fondatorul Wikipedia este Cum funcționează Wikipedia ? legat de diferențele observate la nivelul țărilor sau comunităților în • Wikipedia este o enciclopedie. ceea ce privește tipul sau cantitatea de informație accesate. Astfel • NPDV – Wikipedia nu judeca deciziile, • Free licensing – respectarea copyright-ului. Tot conținutul a fost generat de către colaboratorii Wikipedia. • IAR – no firm rules. Nu se fac lucrurile doar pentru că există o regulă

Jimmy Wales a continuat cu prezentarea a câtorva cazuri reale în ceea ce priveste folosirea internet-ului în țări cu un nivel mai scăzut de trai. De exemplu în Nigeria, deși este o țară în Africa unde accesul la internet era scăzut, iar lățimea 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 con- tinente: Google, Facebook, Twitter, Wikipedia, ziare locale. Tot acest proces este mult mai rapid decât și-a închipuit multă lume. Dacă ne gândim cum va fi lumea peste 20 de ani, remarcăm

6 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE conectivitatea mare la Internet pentru mii de milioane de oameni celor spuse de Trip Hawkins la o transformare a balenelor în del- care nu vor vorbi engleză sau franceză. fini. Performanța jocurilor a fost înlocuită de comoditatea rulării Următorul subiect abordat a fost proiectul Wikia. Scopul acestora pe tablete sau telefoane. De asemenea, dexteritatea nece- acestui proiect este să ajute pe toată lumea să își creeze o librărie sară jocurilor a trecut pe un loc secund față de cumpărarea unor personală. Utilizitatorii pot să își creeze librăriile lor, nu neapărat bunuri virtuale. Acestea pot fi schimbate între jucători iar evoluția academice. Au fost date câteva exemple precum cea a serialul Lost acestora să le transforme beneficii reale. Ce cumpărăm de fapt? sau Lostpedia, un alt serial unde producătorii l-au folosit pentru Cumpărăm timp, item-urile primite în schimb ne ajută să trecem a deschide un canal de comunicare cu fanii. Practic oricine își mai repede la următorul nivel. Un punct interesant atins în această prezentare vizează educația. Se anticipează schimbări ale modului în care copii învață în sala de clasă. Copiii de mâine, vor fi dependenți 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 făcut o comparație edi- ficatoare în ceea ce privește modul de distribuție a jocurilor. Dacă acum 10 ani, era foarte important modul în care un joc poate ajunge la utilizatorul final în cât mai multe regiuni geografice, acum toate acestea au dispărut, fiind înlocuite de magazinele virtuale de jocuri cum ar fi Apple Store. Descoperirea jocurilor va câștiga în fața distribuției, iar originalitatea va câștiga în fața brand-ului. Conform prezentării lui Trip Hawkins, puțină lume anticipă aceste aspecte. Avantajele față de competiție pot fi create în timp considerându-se: poate crea wiki-ul său. Vă sugerez să accesați acest site, nu foarte • originalitatea IP (Intellectual Property), cunoscut. Am găsit multe proiecte interesante precum Logopedia, • cultura inovației, o enciclopedie ce conține 24.434 de logo-uri de companii. • folosirea avantajului date de framework-uri precum: Trip Hawkins , un alt prezentator care a atras atenția, 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 prezentări “Digital disrup- global. Este de asemenea co-fondator al companiei You Can, care tion du Jour”poate fi materializată în următoarele idei: produce jocuri educaționale și oferă consultanță pentru jocuri și 1. Trăim într-o era a comodității. companiilor IT precum Kixeye, NativeX sau Extreme Reality 3D. 2. Ținta trebuie să fiedelfinii - jucători ai jocurilor integrate în Și-a petrecut întreaga carieră ca pionier al industriei PC-urilor social media. inițial alături de fondatorii Apple, când compania sa nu avea mai 3. Aplicațiile de astăzi vor rula mâine în browsere. mulți de 25 de angajați. 4. Învățarea foarte bună a gestionării bunurilor virtuale. Prezentarea din cadrul ICT Spring care s-a numit “Digital disruption du Jour” a urmărit canibalizarea pieței de jocuri PC Următorul panel a fost Gamification now: how Games are de către social networking și de către dispozitivele mobile, antici- impacting the global Social and Business landscapes ce i-a avut pându-se posibila evoluție a acesteia. Apelând la o terminologie ca invitați pe: originală, gamerii înrăiți care se joacă pe console au fost denumiți Trip Hawkins - Fondator al Electronic Arts - CEO, balene, iar ce-i care se joacă jocuri sociale: delfini. Asistăm conform Digital Chocolate

Our core competencies include:

Product Product Product Strategy Development Support

3Pillar Global, a product development partner creating software that accelerates speed to market in a content rich world, increasingly connected world.

Our offerings are business focused, they drive real, tangible value.

www.3pillarglobal.com

www.todaysoftmag.ro | nr. 14/August, 2013 7 startups TODAY SOFTWARE MAGAZINE

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 desfășurării panel-ului: - Angry Birds a avut un succes mai mare decât Mickey Mouse; - Japonia este locul de învățat deoarece sunt pionieri în multe domenii; - Jocurile înseamnă stimulare iar noi nu suntem legume. Creșterea activității cerebrale se poate face prin jocuri; - Conceptul de gamification este natural și a făcut întotdeauna parte din viața 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 câștigă întotdeauna.

Încheiem aici relatarea evenimentului. Vom publica în curând și un scurt film realizat din cadrul acestuia. Mulțumim încă odata organizatorilor, Céline TARRAUBE și Kamel AMROUNE pentru invitația la eveniment și oportunitatea de a distribui revista TSM în cadrul acestuia.

Ovidiu Măţan, PMP [email protected]

Editor-in-chief Today Software Magazine

8 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE istorie

Istoria IT-ului clujean: Ford și Șincai

m ales două nume din istorie, pentru a încerca să ofer o soluție unei probleme foarte actuale în IT-ul clujean. Problema discrepanței între cererea mare și oferta scăzută de resurse umane. A Începem cu Henry Ford, responsabil scurt timp Ford producea 50% din automo- calendare, catehisme, manuale, cărți de de invenția linei de asamblare, dar mai ales bilele din SUA, 40% din UK și din 200 de popularizare a științei, cărți populare pen- a câtorva politici de HR revoluționare pen- competitori, doar 17 au făcut față strategiei tru pătrunderea informației în masele tru perioada în care au apărut. Practic, ca lui Ford. populare largi;” orice om de afaceri, a încercat să crească Acest model de succes bazat pe opti- Așadar, Șincai a ales emanciparea prin productivitatea apelând la îmbunătățiri, în mizarea eficienței și loializarea talentelor educația de masă. A luat ceva ce era apa- primul rând la procesul de fabricație. Într-o printr-un pachet salarial atractiv, a fost najul burgheziei și l-a formalizat într-o industrie nouă (Ford a înființat compania considerat responsabil pentru crearea unei formă accesibilă maselor, prin elaborarea în 1906, la 17 ani de la patentarea motorului noi clase sociale și a transformat industria de manuale fundamentale: Abecedarul, pe benzină de către Karl Benz), Ford a opti- auto dintr-o nișă specializată într-una de Gramatica, Aritmetica și Catehismul. mizat timpul de producere a unei mașini de masă. Problema este că pe termen lung a Această mișcare iluministă va avea ca efect la 12 ore jumătate la o oră și 33 de minute, dus la falimentul celor care nu au adoptat acumularea unei mase critice de intelectuali prin invenția liniei de asamblare mobilă și a modelul, și la o segregare mai mare a cla- români ce vor contribui activ la Revoluția conceptului de producție de masă. selor sociale în raport cu veniturile. Prin de la 1848 și la drumul spre independența Deși aceste inovații i-au permis să urmare, să arunci cu bani în angajați este românilor din Transilvania. crească de la o producție anuală de 18.000 o soluție de moment și limitată ca eficiență Eu prefer această abordare, datorită unități, la peste un milion, în doar 10 ani, pe termen lung. Acest lucru poate fi obser- efectelor pozitive pe termen lung asupra efectul asupra angajaților a fost unul dezas- vat și în piața IT locală. întregii populații și privesc admirativ o truos, rata de demisii fiind foarte mare. Gheorghe Șincai a ales o altă abor- mână de oameni care au reușit, în condițiile Accelerată și de creșterea ponderii proce- dare. Reprezentant al Scolii Ardelene, se cele mai aspre, să înființeze 300 de școli și selor automate, care scădeau și mai mult confrunta cu problema recunoașterii drep- să educe un popor întreg. IT-ul clujean are cererea de personal. Demisiile constante turilor poporului român în Transilvania și atât resursele, cât și condiții infinit mai pro- au crescut foarte mult costurile de angajare, a fost unul dintre responsabilii emancipării pice de a se implica în schimbarea calității au introdus întârzieri cauzate de cursuri naționale prin înființarea învățământului educației la nivel de masă și să își rezolve pe de pregătire și au atins limita de resurse românesc. Practic burghezia română tran- termen mediu și lung problema resurselor umane a pieței destul de repede. silvăneană încearcă la 1791 să capitalizeze umane. Soluția a fost simplă, în 1914, Ford pe ultimul deceniu, în care a obținut acces a dublat salariul de la 2,5$ la 5$ pe zi, a la educație, atât înaltă (Roma și Viena), cât scăzut cu o oră ziua de lucru la 8 ore și a și înființarea de școli locale, prin mișcări introdus conceptul de profit-sharing, prin politice (vezi eforturile lui Ioan Bob și care angajații puteau să își cumpere pro- Inocențiu Micu-Klein, de obținere a drep- pria mașină în 4 luni de muncă. În același turilor în schimbul unirii bisericilor cu timp a modificat radical strategiile de Roma) sau revolte (vezi efectele răscoalei angajare, concentrându-se pe achiziția de lui Horea, Cloșca și Crișan), și să obțină talente, noile salarii i-au permis să aleagă drepturi egale cu celelalte trei națiuni, prin cei mai buni mecanici din piață. Deși opi- memoriul Supplex Libellus Valachorum. nia publică internațională, de la sindicate Citând din Wikipedia: „ izolată prin la aristocrația europeană, a fost șocată de refuzul rezolvării memorandumului, această abordare și au inventat termenul prea slabă economic și politic pentru a de „fordism” pentru a descrie strategia de iniția o mișcare revoluționară, burghezia Marius Mornea producție de masă, motivată de consume- română se concentrează într-o mișcare [email protected] rism și salarii mult peste media din piață, de emancipare națională pe plan cultural. Inginer interesat și implicat strategia a dat roade și demisiile au scăzut, Se înființează numeroase școli cu pre- în diverse activități IT, de la dezvoltare, management, până 1 productivitatea a crescut, iar costul per dare în limba română ( Gheorghe Șincai la educație și jurnalistică în mașină a scăzut la nivelul la care cei ce pro- înființează 300 de școli ), se tipăresc cadrul Epistemio, UTCN și TSM duceau mașinile au devenit și piața țintă. În 1 http://ro.wikipedia.org/wiki/Gheorghe_Șincai

www.todaysoftmag.ro | nr. 14/August, 2013 9 eveniment TODAY SOFTWARE MAGAZINE

Conferința Romanian Testing Community 2013

onferința anuală organizată de RTC (Romanian Testing Community) a crescut de la ediția precedentă la capitolul cel mai important: conținut. De la trei prezentatori la zece, de la o zi cu trei seminarii la două zile, una cu două serii-uri paralele, a câte patru seminarii, și una dedicată celor două sesiuni practice ținute de Paul Gerrard și Andy Harding. Practic anul acesta același numărC de participanți au primit de cinci ori mai mult conținut. Iar schimbul de informații nu s-a limitat la sesiunile de prezentări. Punctul forte al conferinței a fost atmosfera familială și interactivitatea prezentatorilor. În fiecare pauză puteai să ii angajezi în discuții, care de multe ori se lungeau într-o sesiune privată până la următoarea pauză.

Exemplul cel mai elocvent este Scott invitație și un topic foarte bine definit, de informație: Michael Bolton, Barber, care a ajuns la conferință total cu scopul de a rezolva o problemă spe- Miagi-Do blog. Cărțile și interacțiunea întâmplător (era în zonă, avea o pauză cifică din testare. Pe acestea din urmă directă: meetups, gatherings de 2-3 zile între contracte și a trimis un le recomand cu cea mai mare căl- (SheffieldTestGathering). mail comunităților din zonă, oferindu-se dură. De exemplu: WOPR (Workshop 3. Jira, Confluence, TestRail, Twitter. voluntar), dar oferea constat feedback, atât on Performance and Reliability) sau Unealta cea mai importantă și totuși cea în timpul seminariilor, cât și după, atât DEWT (Dutch Exploratory Workshop mai subestimată este creierul. Eu îl folo- participanților, dar mai ales vorbitorilor. on Testing). sesc zilnic! Tot el mi-a mărturisit ca se bucură de alege- 2. Blogul AST (Association for Software 4. TDD + schimbul de informații între rea făcută, deoarece atmosfera și interesul Testing) este o foarte bună sursă agregată diferite roluri în echipele de dezvoltare. participanților pentru conținut, plasează de informații. conferințele din Cluj în topul lui personal, 3. MindMap, Lucidchart, Jing și Skype. Brîndușa Axon devansând marile conferințe internaționale O unealtă subestimată ar fi SmartDraw. 1. ALE – Agile supraaglomerate de marketing și vânzători. 4. Aproape toate conferințele sunt pline Lean Europe, Agile Am profitat și noi de această atmosferă de discuții despre alinierea testării cu Testing Days, Let’s Test, deschisă a vorbitorilor și am pus câteva obiectivele de business (ex. profitabilita- Agile Testing Meetup, întrebări pentru cititorii noștri: tea). Eu o numesc Latura de Business a Zappers – Meetup. Testării (The Business Side of Testing) și 2. S o f t w a r e 1. Care ar fi top trei conferințe este principala preocupare la nivel înalt a Testing Club (ministryoftesting.com), internaționale care nu trebuie ratate? comunității de testări. Gojko.net, Michael Bolton, Seth Godin. 2. Numiți top trei surse de informare 3. Mindmap, LeanCanvas, JMeter. în domeniul QA. Gabor Torok Indirect legat de testare Competing 3. Dintre toate uneltele din rutina 1. Google Values Framework. zilnică, numiți top trei ca utilizare/uti- Testing Conference, 4. Evoluția de la dezvoltarea bazată pe litate și, în cazul în care aveți, una mai Selenium Conference, proces la procese axate pe relații între puțin cunoscută, dar esențială. DevOps Day Europe. coechipieri cu responsabilități diferite. 4. Care ar fi următoarea paradigmă în 2. Gojko – Acceptance TDD – testarea software? newsletter săptămânal; Google Testing Sperăm că și la anul vom fi răsfățați cu blog. același volum mare de conținut de calitate, 3. Emacs (cod), Twist (teste), Jenkins, poate chiar mai mult, în aceeași atmosferă Scott Barber HipChat (Atlassian). relaxată de familie. 1. E x i s t ă 4. NoQa team – evoluția spre elimina- două tipuri de rea distincției între rolul de programator conferințe: și tester, prin mutarea diferențelor în a. cele mari, unelte și procese automatizate. dominate de prezentări ale pro- Stephen Blower duselor noi, orientate mai degrabă pe 1. TestBash – networking și vânzări. De exemplu: Brighton (atmosfera CAST (Conference of the Association prietenoasă și eveni- Marius Mornea for Software Testing) – care va avea mente pre-conferință [email protected] loc în August în U.S.A.; sau Let’s Test – foarte utile); Inginer interesat și implicat care are loc anual în Suedia în mai și în EuroSTAR; STARWest în diverse activități IT, de la dezvoltare, management, până Australia în august și septembrie. & STAREast. la educație și jurnalistică în b. cele mici, cu acces bazat doar pe 2. Oamenii sunt o sursă esențială cadrul Epistemio, UTCN și TSM

10 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE startup

Startup Transilvania

ot mai mult se vorbește despre nevoia companiilor de soft din România de a trece de la outsourcing la dezvoltarea propriilor produse. Nu se știe cât timp serviciile companiilor de soft locale vor mai fi alese în detrimentul altor companii. Momentan ne Tavantajează un preț scăzut și o calitate crescută pentru servicii de soft.

Probabil că multe companii de soft internațional în construirea și și-au stabilit o strategie de dezvoltare pe poziționarea pe piețe regionale și globale. 5-10 ani în avans. Dacă în această strate- gie e inclusă și crearea de produse proprii Programul STEP-Up include 3 luni atunci acest articol cred că va fi de interes. de muncă susținută şi relevantă asistată, Vineri, 19 iulie 2013, s-a lansat la Cluj- sesiuni de studiu săptămânale cu men- Napoca programul pentru startup-uri torii şi partenerii programului, serii de STEP UP. Scopul acestui program este să seminarii cu anteprenori de succes, eveni- ajute startup-urile să meargă rapid și lean mente sociale lunare cu liderii din business de la idee la prototip. Să transforme un set din comunitate, interacţiuni frecvente Lista completă de mentori este de resurse (input): idee, oameni și timp (3 cu fondatorii companiilor şi echipele de disponibilă pe site-ul programului luni) într-un rezultat (output): MVP - pro- management, dar şi provocări de a învăţa startuptransilvania.ro totip al produsului propriu. MVP-ul sau de la persoană la persoană. minimum viable product-ul este de dorit Programul începe la sfârșitul lunii și foarte posibil să fie atins în 3 luni de zile. Noi am selectat cei mai buni mentori august și se va încheia în noiembrie cu o zi locali şi internaţionali, cele mai avantajoase de prezentare în care startup-urile vor arăta STEP-Up vizeaza să: beneficii marginale şi am creat legăturile rezultatul muncii lor în cadrul unui demo • Asigure sprijin și continuitate cu cele mai bune reţele de profesionişti din day. Încurajăm companiile locale de soft să antreprenorilor după participarea la eve- industrie. participe cu startup-urile interne și să facă nimente și competiții start-up. Dintre mentorii din cadrul programu- un pas semnificativ spre propriile afaceri. • Aducă mentori și resurse care lui STEP UP îi menționăm: să susțină dezvoltarea echipelor Philipp Kandal - CTO & founder antreprenoriale. Skobbler, • Dezvolte legături financiare pen- Dragoș Roua - investitor și antreprenor tru start-up-urile din Transilvania cu român, alte centre și comunități din Europa și Kate Lowes - CEO la UK Innovation America. Group. • Aducă local ”know-how” ul

Cristian Dascălu [email protected]

Cofondator @ Cluj Hub

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

Despre finaliștii Romanian Startup Awards

upă cum probabil știțti, TheNextWeb premiază cele mai importante startupuri, antreprenori și investitori locali. Pe lista celor 12 se află și România, evenimentul din București fiind co-organizat de Geekcelerator. Voi face în continuare o scurtă analiză Da celor nominalizați.

Despre startupuri si co-fondatorii Erepublik – 012 a fost un an fără mari KeenSkim – Încă un one-man-show, nominalizati știri din partea Erepublik, cu excepția ple- KeenSkim este dezvoltat de Tudor Vlad și 123ContactForm – fondat acum 5 ani, cării co-fondatorului George Lemnaru, a absolvit ( Magna cum Laude, aș spune) 123ContactForm a trecut de la cenușăreasa ce lucrează de zor la noul său proiect ediția de vară a Eleven, unul dintre cele la prințesa în ultimii doi ani. După ce GreenHorseGames. Așteptăm lansarea noii două acceleratoare din țara vecină și prie- echipa originală (Tudor Bastea și Florin versiuni a Erepublik pentru 2013. tenă, Bulgaria. Proiectul a progresat mult în Cornianu) a fost completată cu Adrian termeni de tehnologie și produs, partea de Gheară ca investitor, 123ContactForm și-a GoodMomming – Pornit de doi business mai are timp să crească. Felicitări schimbat interfața, și-a îmbunătățit mone- antreprenori moldoveni super-activi, lui Tudor Vlad, care a prins finala How to tizarea și și-a crescut în permanență echipa GoodMomming a fost lansat în 2012, a Web 2012 / Startup Spotlight, apoi a câștigat pânăla 10 “canguri”. vizitat TechCrunch Disrupt, apoi a fost Best Pitch la Venture Connect în toamnă, finalist și Runner-up la How to Web 2012 un antreprenor ce își îmbunătățește vizibil 5minutes.to – fondat de Cătălin / Startup Spotlight și, spre finalul anului, a abilitățile de business. Zorzini și Iulia David, 5minutes.to a fost acceptat la acceleratorul GrowLab. Un făcut parte din batch-ul de primăvara al an plin de evenimente pozitive, sperăm ca Mavenhut / SolitaireArena – Springboard 2012. Interfața ușor de utili- 2013 să fie și mai și. Mavenhut au avut un an plin: au absolvit zat i-a adus două nominalizari, pentru cea Startupbootcamp Dublin (am dat și noi mai buna aplicație web și cea mai bună DocTrackr – deși nu este un startup o mână de ajutor), a câștigat Best Pitch la experiență de utilizare. 100% românesc, DockTrackr, co-fondat How to Web 2012 / Startup Spotlight și de Alex Negrea, a atras atenția datorită au primit o finanțare de €550k de la SOS Appscend – finaliști în 2011 la How investiției primite după absolvirea accelera- Ventures, cea mai mare primă rundă de to Web / Startup Challenge, Sebastian torului TechStars Boston – $2M USD de la finanțare primită de la Braininent încoace. Văduva și echipa au crescut afacerea liniar, câteva dintre cele mai importante fonduri E greu de crezut, dar acum un an echipa an de an. 2012 a părut a fi un an în care de capital din domeniul tech. Îi urăm lui condusă de Bobby Voicu de-abia se forma. și-au propus să scaleze vânzarile, blogul și Alex să cheltuie cu grija banii în 2013. Cu siguranță, Mavenhut sunt unul dintre PR-ul fiind hiper-active. Către finalul anu- principalii pretendenți la titlul de startupul lui, startupul a fost acceptat în programul i-Rewind – fondat de Bogdan Manoiu anului. Startup Chile și și-au extins vânzarile către dupa How to Web 2011 (stiți celebrul email America Latină. cu subiectul “Felicitari – ești bunic !”) si cu RealColors – Echipa Makan Studios Andrei Pitiș (din nou) în rol de business a lansat în primăvara o primă aplicație, CleverTaxi – lansat în a doua jumă- angel / co-fondator a fost lansat în 2012 numită RealColors, ce a fost ulterior pre- tate a anului în parteneriat cu Orange, pe pârtia de la Predeal, în parteneriat cu zentată de Friday App Review ( emisiune CleverTaxi facilitează comandarea taxiu- Orange. Conceptul inovator (i-Rewind te a Android Developers) ca Staff Pick of the lui cu ajutorul telefonului mobil. În ciuda filmează în timp ce cobori pe pârtie și îți Week. Momentan, echipa își pregătește unor mici turbulențe imediat după lansare, face ad-hoc un film personalizat) și echipa următoarea aplicație și marele come-back CleverTaxi a reușit să creasca (pe o piațaă experimentată, condusă de entuziastul în 2013. relativ aglomerată), extinzându-se și in Bogdan Manoiu, îi face să fie unele dintre Cluj. Startupul îl are ca angel investor (și cele mai interesante startupuri de urmărit SlickFlick – fondat de Maria uneori programator sef) pe Andrei Pitiș. în 2013. Constantinescu, SlickFlick și-a stabilit car- tierul general la Timișoara după o primă

12 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE runda de investiții de la mai mulți business angels din UK. Echipa include co-fondatorii NextRoot, firmă ce a dezvoltat Instamap, așadar o echipă experimentată și foarte interesantă.

Tjobs – firma mureșană a avut în 2012 un an liniștit, având 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 internațional. Efortul a fost condus de Andreas Cser, business ange- lul care are un mare merit în ambițiile crescânde ale Tjobs.

Zonga – Începutul anului a adus lansarea Zonga, un serviciu de muzică românesc. Ca utilizator de Zonga sunt foarte încân- tat de experiența din aplicație (cu câteva mici excepții) și admir tenacitatea lui Sergiu Biriș, mai cunoscut de la Trilulilu.ro, care a reușit să aducă la aceeași masă o serie de companii importante din industria muzicii. Later edit: Zonga a făcut apoi un parteneriat interesant de distrbutie cu Vodafone.

Zyway – Zyway este singurul proiect despre care nu știu să vă spun nimic. Proprietate a firmei ieșene ThinSlices, Zyway este încă în faza de lansare.

Despre investitori Din lista celor 5 investitori propuși pentru a fi votati, unul sin- gur a fost activ în 2012 și acela este Andrei Pitiș. Ultimele investiții ale lui Vlad Stan și Victor Anastasiu ( prin Seedmoney ) au avut loc în noiembrie 2010 ( Squeeqly ) și vara lui 2011 ( SkinScan ), ultima investiție a lui Andreas Cser este Tjobs ( 2010 ) și ultima investiție 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 vânzarea Summify către Twitter. Cifrele tranzacției nu au fost făcute publice, însă chiar și un acqui-hire sună spectaculos în peisajul lipsit de vești al achizițiilor startupu- rilor românesti.

uberVU – Angajarea unui CEO american, două birouri de De final vânzari deschise în USA și America Latină, o nouă versiune ori- Romanian Startup Awards au generat un val de interes extraor- entată către entreprise, acestea au fost cele mai importante repere dinar, și pare a fi un moment foarte bun de întâlnire a comunității ale echipei Ubervu, care acum a ajuns la un total de peste 50 de locale, cu toate că este vorba de o competiție de tip Eurovision, angajați. unde publicul își votează favoriții din motive ce nu au neaparată legătură cu rezultatele obținute în ultimul an. Brainient –în 2012 Brainient a ridicat o runda de finantare Am văzut grupuri de Facebook care iși îndemnau membrii de $1.8M pentru a-și scala operațiunile de vânzare și a deschis să voteze fondatorii / startupurile / investitorii dintr-o anumită birouri în SUA. locație geografică (eterna luptă contra Bucureștiului, deh), o adevarată campanie de presa dusă de Mavenhut, și chiar câteva Peter Barta – Discret în legătură cu investițiile sale, Peter a posturi dezinformatoare și trunchiate care analizau startupurile adăugat pe lângă Appscend ( unde este investitor din 2011) și și indicau către favoriții autorului, plus suspiciuni de fraudă (). Traderion ( în 2012 ) și teoretic mai există încă 1-2 investiții pe Una peste alta, Romanian Startup Awards ramâne un exercițiu care nu le cunoaștem. interesant și util de promovare a startupurilor românești, sperăm să fie și cât mai relevant.

Bogdan Iordache [email protected]

este Co-Fondator al How to Web, Disclaimer: sunt prieten/amic cu majoritatea celor menționati în cel mai important eveniment web din Europa de Est acest post, dar nu am nicio legătura financiară cu niciunul dintre ei.

www.todaysoftmag.ro | nr. 14/August, 2013 13 comunități TODAY SOFTWARE MAGAZINE

Comunităţi IT

m crezut că nu vor fi suficiente evenimente pentru rubrica de calendar în luna August, dar am avut parte de o surpriză plăcută. Începem seria de evenimente din această lună cu lansarea numărului 14 TSM care va avea loc la sediul msg systems din Cluj- Napoca și unde vom avea parte de un mini-summer party la finalul prezentărilor. Un eveniment important ce va avea loc în BucureștiA la finalul lunii august este Agile Learning Europe (ALE) 2013, acesta reprezintă și recomandarea TSM pentru luna august. Calendar Transylvania Java User Group Comunitate dedicată tehnologiilor Java. August 5 Website: http://www.transylvania-jug.org/ Lansarea numărului 14 TSM (Cluj) Data înfiinţării: 15.05.2008 / Nr. Membri: 546 / Nr. Evenimente: 43 www.todaysoftmag.ro

Comunitatea TSM August 7 Comunitate construită în jurul revistei Today Software Magazine. Summer evening on a terrace (Cluj) Website: www.facebook.com/todaysoftmag www.meetup.com/Tabara-de-Testare-Cluj/ Data înfiinţării: 06.02.2012 / Nr. Membri: 745 / Nr. Evenimente: 11 events/127909542/

Romanian Testing Community August 7 Comunitate dedicata testerilor. Building Startup Communities it-events.ro/events/building- Website: http://www.romaniatesting.ro startup-communities-with-brad-feld-and-anca-albu/ Data înfiinţării: 10.05.2011 / Nr. Membri: 626 / Nr. Evenimente: 2 August 9 GeekMeet România International Coworking Day (Cluj) Comunitate dedicată tehnologiilor web. it-events.ro/events/international-coworking-day/ Website: http://geekmeet.ro/ Data înfiinţării: 10.06.2006 / Nr. Membri: 278 / Nr. Evenimente: 17 August 17 Open Space on Technology in Startups (București) Cluj.rb it-events.ro/events/open-space-on-technology-in-startups/ Comunitate dedicată tehnologiilor Ruby. Website: http://www.meetup.com/cluj-rb/ August 18-19 Data înfiinţării: 25.08.2010 / Nr. Membri: 139 / Nr. Evenimente: 34 Școala de vară – Informatica la Castel (Macea, Arad) it-events.ro/events/scoala-de-vara-informatica-la-castel/ The Cluj Napoca Agile Software Meetup Group Comunitate dedicată metodelor Agile de dezvoltare software. August 19-24 Website: http://www.agileworks.ro Moodle Moot România 2013 (Brașov) Data înfiinţării: 04.10.2010 / Nr. Membri: 326 / Nr. Evenimente: 33 it-events.ro/events/oracle-summer-school-2nd-edition/

Cluj Semantic WEB Meetup August 23-25 Comunitate dedicată tehnologiilor semantice. SummerHacks (Timișoara) Website: http://www.meetup.com/Cluj-Semantic-WEB/ it-events.ro/events/summerhacks/ Data înfiinţării: 08.05.2010 / Nr. Membri: 144/ Nr. Evenimente: 22 August 28-30 Romanian Association for Better Software ALE 2013 (București) - recomandarea TSM Comunitate dedicată oamenilor cu experiență din IT indiferent de ale2013.alenetwork.eu tehnologie sau specializare. Website: http://www.rabs.ro August 29 Data înfiinţării: 10.02.2011 / Nr. Membri: 226/ Nr. Evenimente: 12 Linked Data Technology Stack (Cluj) www.meetup.com/Cluj-Semantic-WEB/events/115920132/ Tabăra de testare Un proiect care își dorește să strângă cât mai mulți oameni care Joi/săptămânal lucrează ca și testeri. OpenConnect (Cluj) Website: http://tabaradetestare.ro www.facebook.com/groups/355893314491424/ Data înfiinţării: 15.01.2012 / Nr. Membri: 227/ Nr. Evenimente: 19 Miercuri/bilunar OpenCoffee (Cluj) www.facebook.com/opencoffeecluj

14 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE eveniment

Aplicații pentru previziuni financiare la IEEE Congres on Evolutionary Computation, 2013, Cancun

diția 2013 a congresului IEEE Evolutionary Computation (CEC) s-a desfășurat in Mexic, Cancun – un decor cel puțin exotic pentru noi, europenii. Pe lânga locația atrăgătoare, merită precizat și faptul că CEC este una dintre cele mai mari și impor- tanteE conferințe, având ca subiect principal calculul evolutiv – dând astfel cel putin două motive pentru participarea la eveniment entuziaștilor metodelor de calcul evolutiv, printre care mă număr și eu.

Peste 200 de cercetători, profesori, doc- Aplicații financiare folosing calcul evolutiv Silvia Răusanu toranzi, cu preponderență din America si Aplicațiile financiare din cadrul CEC au [email protected] Asia, au luat parte la eveniment, pentru a-și fost orientate în mod exclusiv pe domeniul Software Developer prezenta rezultatele, dar și pentru a beneficia previzunilor acțiunilor la bursă. Chiar de la @ ISDC de șansa unică de a schimba idei și a începe începutul prezentărilor, autorii recunoșteau noi colaborări cu nume celebre din domeniu. hazardul abordării unei asemenea tema- Lumea companiilor IT a fost reprezentată tici, datorat scepticismului multora asupra aproape imperceptibil, eu fiind proabil sin- existenței unui tipar în fluctuațiile finan- gura reprezentantă a industriei – mediul ciare, sau unei linii fine între legalitate și academic conduce detașat în domeniul des- ilegalitate. Ipoteza pieței eficiente (Efficient coperirilor prin tehnici si metode specifice Market Hypothesis - EMH) încurajează IT-ului, fără suportul companiilor de profil, scepticii, susținând că informația este ime- din nefericire. diat disponibilă tuturor participanților, iar Subiectele funcționale abordate la prețurile acțiunilor reflectă instant starea conferință acoperă o gamă foarte variată: curentă a pieței. EMH presupune ca toți biochimie, biologie, medicină, economie, participanții la bursă pot obține același teoria jocurilor, meteorologie, etc. Aplicațiile câștig, indiferent de experiența lor în dome- algoritmilor evolutivi reușesc sa îmbrace niu deoarece prețurile sunt complet aleatorii. experimentele de hibridizare și optimizare Makiel, în „The Efficient Market Hypothesis a unor metode cunoscute în așteptarea and Its Critics”, explică cum EMH respinge unor descoperiri importante sau, pur și utilitatea analizei tehnice sau fundamentale simplu, a unui software performant ce ar – metode de bază încorporate în aplicațiile micșora numarul erorilor umane ca urmare de acest tip cu o rată de succes ce reușește a interpretărilor – de exemplu, aflarea tipu- să aducă îndoială asupra validității EMH. lui unei tumori prin analiza unei radiografii. În ultimul timp, investitorii folosesc în mod Posedând cunoștințe de bază despre calculul independent analiza fundamentală, folosind evolutiv, asistarea la prezentările de la CEC indici macroenomici, cursul valutar, sau aduce noi perspective asupra domeniului, analiza tehnică, folosind prețul acțiunilor dar și deschide apetitul de cercetare orientată și volumul tranzacțiilor. Analiza tehnică pe aplicabilitate. pe date istorice ale bursei este utilizată în

www.todaysoftmag.ro | nr. 14/August, 2013 15 eveniment Aplicații pentru previziuni financiare la IEEE Congres on Evolutionary Computation

Indicii analizei tehnice folosiți sunt: „media deschizând astfel spațiu de căutare și evi- în mișcare” (MA), „trade break out” tând o convergență prea rapidă. Rezultatele (TBR), „filtru” (FLR), „volatilitate” (Vol), ED8 au fost raportate a fi promițătoare, „momentum” (Mom), și „media în mișcare dar eficiența căutării a scăzut, de aceea, pe momentum” (MomMA). Valorile indi- pentru a menține diversitatea soluțiilor, cilor implicați în algoritm sunt calculate dar în același timp, pentru a recupera pentru un anumit număr de zile, pe termen eficiența căutării, meta-euristici de cău- scurt și pe terment lung. În ED7 valorile de tare au fost implicate în algoritm pentru a calculare a indicatorilor tehnici erau fixe, optimiza caracteristici punctuale are arbo- 12, respectiv, 50 de zile – aceste perioade rilor: variabilele ce descriu noile perioade fiind preluate direct din modul cotidian de de calculare a indicilor tehnici. Simulated aplicațiile prezentate la CEC 2013, ele lucru al analiștilor economici. Structura annealing (SA) este un algoritm ce permite diferențiindu-se prin algoritmi de optimi- de optimizat a algoritmului este un arbore alegerea unei soluții mai puțin bune cu o zare folosiți – programare genetică, căutare genetic de decizie constrâns de gramatica anumită probabilitate (pentru evitarea tabu. Metodele de optimizare din lucrarile următoare: găsirii unui optim local); în ED8, SA se ce fac scopul acestui articol funcționează aplică nodurilor limitrofe ale unor arbori ::= if-then-else pe structuri interne, dar toate țintesc spre a | aleatorii din populație, modificând peri- răspunde utilizatorului dacă un pachet de oada cu o valoare din intervalul [-10, +10]. ::= “AND” acțiuni merită cumpărat sau vândut și ce | “OR” Căutarea tabu (TS) este o meta-euristică ce profit îi va aduce această operațiune. | “NOT” | forțează căutarea unei soluții mai bune să nu se întoarcă la soluții vizitate creând din Previziuni financiare folosind progra- ::= MA12 | MA50 | acestea o lista tabu cu o existență limitată; TBR12 | TBR50 | FLR12 | FLR50 | mare genetică Vol12 | Vol50 | Mom12 | în ED8, TS se aplică în același mod ca SA. Kampouridis et all. în „Metaheuristics Mom12 | Această aplicație a fost testată față de MomMA12 | MomMA12 Application on a Financial Forecasting ::= < | > 10 seturi de date obținute prin finance. Problem” propune hibridizări peste firul | = yahoo.com. Dacă ED8 era capabil sa ofere ::= numar rațional principal al algoritmului unei aplicații ::= 0 | 1 în medie o rată a corectitudinii de 0.5735 ajunse deja la versiunea 8, EDDIE (ED), Un arbore descris de gramatica anteri- pentru 10 seturi de date, și pentru cele ce a făcut obiectul cercetării lui pentru oară reprezintă o soluție pentru o decizie mai bune soluții 0.75, ED8-SA întoarce mai mulți ani. ED are la bază o versiune a tranzacțională pentru un pachet specific 0.5773 pentru aceleași date, iar cea mai programării genetice ce încearcă să gene- de acțiuni. Un set de astfel de decizii este bună soluție 0.81; ED8-TS întoarce 0.5591, reze strategii optime de tranzacționare. evaluat prin calcularea proporțiilor între iar cea mai bună soluție 0.81. Din rezulta- Algoritmul folosește ca date de intrare deciziile corecte și cele greșite, cu dife- tele tocmai enunțate, îmbunătățirea nu e valorile analizei tehnice aplicate asupra rite ponderi – eroarea într-o decizie de remarcabilă la nivel de medie, însă inves- datelor istorice (prețul zilnic de închidere cumpărare având cea mai mare pondere. titorii care ar folosi aplicația cu siguranță și indici tranzactionali), valorile efective ale Algoritmul genetic din ED7 generează vor cauta cea mai bună soluție, astfel noi prețului pe o perioada delimitată și rezul- arbori dintr-un spațiu de căutare limitat de hibrizi devin eficace. tatul clasificării istorice ( 1 – decizia de perioada fixă de aplicare a indicilor tehnici; cumpărare, 0 – decizia de a nu cumpăra). însă cu ED8 perioadele devin variabile,

16 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE

software complex și independent. La nive- lul implementării, cele două se aseamănă prin utilizarea indicilor de analiză tehnică ca suport decizional. Din punct de vedere algoritmic, cele două propuneri suferă la capitolul de dimensionare a spațiului de căutare – Kampouridis îl extinde foarte mult, iar Kuo, aș putea spune, îl ține foarte bine controlat (deși autorii nu intra în deta- lii). Aceste comparații sunt făcute doar cu scopul de a indica diversitatea abordărilor ce poate rezulta în soluții performante, nu ca o recenzie a acestor lucrări foarte apre- ciate de audiență la CEC. Ca notă de final, de inspirație lirică, par- ticiparea la CEC 2013 a fost o experiență unică prin numărul mare de idei și metode noi prezentate, prin numărul mare de participanți doritori de discuții și dezbateri la nivel algoritmic, prin organizarea demnă de invidiat a organizatorilor, și prin tot exo- ticul oferit de locația conferinței. Asemenea Previziuni financiare folosind căutarea glisantă (sliding window) – seturile de conferințe se organizează anual – următoa- tabu date de antrenament de la o iterație la alta rea ediție CEC 2014 va fi în Beijing, China. Kuo et all. în „Dynamic Stock Trading se modfică, în același timp cu seturile de Așadar, cercetați! System based on Quantum-Inspired Tabu test. Din teoria economică, se aleg din nou Search Algorithm” vine cu un sistem dina- indici de analiză tehnică, cu perioade fixe mic ce e capabil să genereze într-un context de aplicabilitate per indice. Alegerea unor real strategii complete – vânzare și cum- indici reprezintă o strategie de cumpărare/ părare. Algoritmul de bază al aplicației, o vânzare, o soluție. O soluție este apreciată formă nouă pentru căutarea tabu, având prin estimarea profitului în valută și număr concepte împrumutate din fizica cuan- de acțiuni. Evaluarea sistemului s-a făcut pe tică, a fost dezvoltat de aceeași echipă. date istorice, în comparație cu alte soluții Ideea algoritmului este de a asigna fiecărei propuse în trecut. Simulările prezentate în soluții posibile o matrice cuantică, fiecare lucrare raportează pentru unele seturi de caracteristică a soluției având o valoare date un profit maxim de 69.94%, față de din intervalul [0,1] – probabilitatea cuan- doar aproximativ 14% pentru alte imple- tică. Căutarea tabu se traduce în acest mentări pe aceleași date. context prin actualizarea matricilor tutu- ror soluțiilor prin scăderea ponderilor din Concluzii și alte impresii matrici pentru caracteristicile din cea mai Cele două aplicații descrise anterior slabă soluție, respectiv, prin creșterea pon- sunt comparabile doar la nivel de domeniu derilor pentru caracteristicile din cea mai de aplicabilitate, întrucât prima dintre ele bună soluție. Dinamismul aplicației este oferă doar un mecanism de suport al deci- dat prin aplicarea conceptului de fereastra ziilor investitorilor, iar cea de-a doua, un

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

Cum învață un artizan software: deliberate practice

ișcarea software craftsmanship promovează ideea că singurul mod în care un dezvoltator poate fi rapid este prin a se comporta rațional în perioade de criză. Această gândire este o reacție la comportamentul de a scrie cod greu de modi- ficatM și de înțeles, 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 mișcarea software craf- proporție prea mare din timp “pe scenă” și Alexandru Bolboaca tsmanship crede că un dezvoltator poate să prea puțin timp într-un mediu de învățare. [email protected] devină atât de rapid este prin a practica Iar aceasta se întâmplă într-un domeniu Agile Coach and Trainer, with a cât mai des, în contexte cât mai diferite, foarte dinamic, unde schimbarea și nouta- focus on technical practices pe platforme și limbaje cât mai diferite. tea este la ordinea zilei. Atunci un aspiring @Mozaic Works Astfel deliberate practice este foarte strâns software craftsman trebuie să își aloce timp legat de orice dezvoltator care se numește pentru a se perfecționa. Acesta poate face “aspiring software craftsman” sau “software o investiție, iar în loc să lucreze efectiv 40 craftsman”. de ore pe săptămână, lucrează doar 30, iar restul de timp și-l dedică practicii. Altă Ce este practica? opțiune este să aloce timp seara și/sau Practica este un act de repetare a unui dimineața în fiecare zi precum și zilele de comportament sau de implicare repetitivă sâmbată și/sau duminică pentru a învăța într-o activitate în scopul de a se îmbunătăți lucruri noi. sau de a o stăpâni, ca în fraza “prin practică Dar cum să practicăm? Ei, bine, există devine perfectă” (eng „practice makes per- un număr de formate consacrate de delibe- fect”. Echipele de sport practică pentru a se rate practice, dar în cele ce urmează ne vom pregăti pentru jocuri concrete. A cânta la un concentra pe următoarele: Coding Kata, Adrian Bolboaca instrument necesită foarte multă practică. Performing Coding Kata, Coding Dojo, [email protected] Este o metodă de învățare și de dobândire Cyber Dojo, Testing Dojo, Coderetreat, Programmer. Organizational and de experiență. Cuvântul derivă din greces- Test Automation Retreat, Pair- Technical Trainer and Coach cul „πρακτική” (praktike), femininul lui programming, Pet projects, Coaching. @Mozaic Works „πρακτικός” (praktikos), „pregătit pentru sau realizează o acțiune, practic” și din ver- Coding Kata bul „πράσσω” (prasso),”a dobândi, a înfăptui, 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) perfecționez și vreau să practic într-un interval scurt de 10 minute – o oră o activi- Există nenumărate asemănări între tate care mă va ajuta să fiu mai bun. Această sport, muzică și programare. Performanța idee vine tot din artele marțiale, unde un pe teren, pe scenă sau în producție este învățăcel trebuie să repete anumite mișcări un factor esențial pentru succes în aceste până este mulțumit 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ă același model: acesta deveni expert în momentul în care acti- repetă rezolvarea aceleiași probleme, în veaza, la fel și un dezvoltator software are același mod, pentru aceeași perioadă de nevoie de practică pentru a stăpâni tot mai timp până când consideră că rezolvarea, bine domeniul său. dar și etapele ei, sunt unele corecte într-un Problema esențială în industria timp foarte scurt. software este că, spre deosebire de sport Un artizan software dorește să prac- sau muzică, un dezvoltator îsi petrece o tice minim 10 ore pe săptămână, 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 cât de mult exersezi pe săptămână?

Performing Coding Kata Un prezentator scrie cod în fața unei audiențe pe o tematică prestabilită și într- un interval de timp prestabilit. Acesta trebuie să explice audienței ce face în timp ce progresează. Audiența este rugată să nu intervină decât în cazul în care chiar nu înțeleg ce se întâmplă. Acest gen de exercițiu este foarte intens pentru pre- zentator și poate fi foarte educativ pentru audiență, pentru că cei din audiență pot să învețe lucruri noi văzând cum un coleg de breaslă rezolvă o problemă.

Știu că ai vrea să faci un coding kata. Când il faci? kata cu un scop bine nefinit și cu o durată testingdojo.org. Coding Dojo de timp prestabilită (20-30 minute). Apoi Este un format ce provine din artele audiența este rugată să repete pașii realizați Ce mai aștepți să participi la un testing marțiale și este adaptat pentru dezvolta- de prezentator. În etapa a doua, în care dojo? tori. Coding dojo este un exercițiu de grup audiența repetă pașii inițiali, prezentatorul cu scopul de a transmite cunoștințe între se transformă în facilitator, asigurându-se Coderetreat participanți. Este propusă o tematica și o că scopul exercițiului este păstrat și că regu- În anul 2009 un grup de programatori perioadă de timp în care grupul va încerca lile sunt respectate. Acest format este mult s-au întâlnit la conferința Code Mash în să rezolve o problemă, exersând anumite mai aproape de ceea ce se întâmplă când SUA și s-au gândit că ar vrea să aibă un for- practici. un sensei vrea să arate clasei cum trebuie mat de o zi întreagă pentru a exersa, spre O caracteristică esențială a acestui for- să realizeze anumite mișcări și apoi îi pune deosebire de formatul uzual al coding dojo mat este ca el să aiba un timp prestabilit de să repete dându-le sugestii continue de de câteva ore. desfășurare și o tematică foarte specifică. O îmbunătățire. Ideea unui code retreat este de a com- persoană experimentată facilitează această bina mai multe din elementele dintr-un întâlnire, concentrându-se ca regulile să fie Ai aflat unde și când e următorul coding coding dojo sau coding kata într-o singură aplicate, timpul să fie respectat și scopul dojo la tine în oraș? zi de exersare. Code retreat-urile au loc convenit al exercițiului să fie păstrat. de obicei sâmbăta și durează toată ziua. Coding dojo randori. Este forma cea Cyber Dojo Evenimentul este structurat în 6 sesiuni mai răspândită, în care doi programatori Cyber dojo este o aplicație online cre- de 45 de minute, separate de retrospec- scriu cod folosind un proiector pentru ca ată de Jon Jagger pe principiile coding dojo. tive scurte. Regulile sunt simple: în cadrul toată lumea să poată vedea. Ei folosesc Aceasta permite conectarea în paralel a mai fiecărei sesiuni, programatorii lucrează în pair-programming, iar primul care a înce- multor persoane sau grupuri, sau accesa- pereche cu scopul de a scrie cod cu anumite put sesiunea este înlocuit la un interval de rea individuală a unui server. În aplicația constrângeri impuse de facilitator și care timp (în jur de 5-7 minute), de următorul online se poate scrie cod în majoritatea lim- facilitează învățarea. După fiecare sesiune, programator din sală. Perechea celui care bajelor curente. Aceasta conține un număr codul scris este șters complet, perechile și pleacă începe să scrie cod, iar cel nou-venit destul de mare de probleme care pot să fie constrângerile se schimbă și scrisul de cod doar observă. După același interval de timp rezolvate. Avantajul cyber dojo este ușurința reîncepe. cel care scrie cod se retrage și este înlocuit și rapiditatea utilizării. Nu este nevoie de România a fost de la bun început din nou cu cineva din sală. Se poate face o nicio setare pentru un mediu de dezvoltare. foarte activă în acest domeniu, Alexandru listă în avans, pentru ca să se știe de fiecare Bolboacă și Maria Diaconu fiind doi dintre dată cine va fi la rând. Astfel, prin rotație, După ce termini de citit acest articol cei care au ajutat la cristalizarea formatului toată lumea va scrie cod și va vedea cum începi să-l folosești, nu? Iată link-ul: http:// actual. De asemenea coderetreat-uri sunt scriu cod ceilalți. www.cyber-dojo.com. organizate în mod uzual în comunitățile O variație este ca atunci când cineva AgileWorks din România. din sală are ceva de spus trebuie să meargă Testing Dojo În fiecare an este organizată “Global la tastatură și să vorbeasca. Astfel nimeni După ce coding dojo a devenit foarte Day of Coderetreat”, când orașe din întreaga din sală nu are voie să vorbească, decât popular între programatori, aceleași prin- lume sunt invitate să participe la un eve- atunci când scrie cod pe proiector. cipii au fost aplicate pentru ca și testerii niment cu același format. Timp de 32 de Coding dojo mai are o variație: o per- să poată învăța unii de la ceilalți. Pentru ore programatori de pe toate continentele soană foarte experimentată face un coding mai multe detalii accesați http://www. învață să devină mai buni prin practică.

www.todaysoftmag.ro | nr. 14/August, 2013 19 programare TODAY SOFTWARE MAGAZINE Cum învață un artizan software: deliberate practice

Multe dintre orașe comunică prin video Pet projects ultima dată? conferințe pentru a se cunoaște și pentru a O modalitate foarte bună de a exersa împărtăși învățăturile din acea zi. este un proiect personal. Orice tehnologie Comunitate și orice tematică este bienvenită cu o sin- Participarea într-o comunitate de Când este următorul coderetreat? gură condiție: să fii foarte pasionat de ceea profesioniști din domeniul de activitate Răspunsul este aici: http://coderetreat.org! ce faci. Un proiect personal ajută pentru că este un alt factor care ajută la îmbunătățirea este un mediu real de dezvoltare, dar deci- continuă. Aici puteți cunoaște oameni Test Automation Retreat ziile nu sunt luate de un client sau de un cu aceleași pasiuni, cu nivele diverse de Urmând formatul unui coderetreat, șef, ci chiar de tine. Astfel poți să înveți să cunoștințe, dar care au un scop comun: să Makus Gärtner a creat această variație iei decizii de arhitectură, de design. Cât de învețe unii de la ceilalți. Există comunități unde testerii sunt invitați să participe la 6 bine este să ai codul curat și alte practici de programatori, testeri, arhitecți în toate sesiuni de 45 de minute pentru a automa- uzuale din lumea artizanilor software. orașele mari din România și din Europa. De tiza teste pentru o aplicație web. Formatul A începe un proiect personal este foarte asemenea există comunități care se ocupă este încă nou și proaspăt, dar foarte valo- simplu. Oricare dintre noi are o idee pe care de un limbaj specific sau o tehnologie spe- ros. (Ref http://www.shino.de/2012/04/28/ ar vrea s-o exploreze scriind un program. cifică, în cazul în care scopul învățării este coderetreat-goes-testautomation) Așa că trebuie doar să ne alocăm puțin o tehnologie în sine. timp pentru a o pune în operă. Adesea se Majoritatea evenimentelor din Când participi la următorul test auto- întamplă ca un proiect personal să se trans- comunitățile locale sunt gratis, acesta fiind mation retreat? forme într-un produs vandabil. un factor în plus pentru a atrage cât mai mulți oameni pasionați din lumea IT și nu Pair-programming Tu cât timp lucrezi pe luna la proiectul numai. Aceasta este o formă foarte simplă de tău personal? Comunitățile Software Craftsmanship practică. Vrei să faci ceva și chemi pe altci- (AgileWorks în România) se concentrează neva să te ajute pentru că încă un punct de Coaching mai curând pe lucrurile fundamentale pe vedere este binevenit. Orice formă de deliberate practice poate care profesioniștii din lumea software ar Din experiență putem spune că fi realizată de unul singur, sau sprijinit de trebui să le stăpânească. Membrii acestora pair-programming este cea mai rapidă un coach tehnic. Când este implicat și un au specializări, vârstă sau experiență foarte modalitate de învățare. Ai nevoie doar coach tehnic procesul de învățare este diverse. de un alt profesionist care să aiba același accelerat puternic, pentru că feedback-ul interes ca tine. Apoi lucrând împreună continuu și sugestiile concrete, chiar lucrul Dacă nu știi deja care sunt comunitățile amandoi veți învăța foarte multe unul de în sesiuni de pair-programming, sunt facto- din orașul tău, dă o căutare pe internet sau la celălalt. Este de asemenea și obositor, rii determinanți pentru o învățare eficientă. pe meetup.com! deci încercați să nu exagerați, dar devine Această relație se aseamănă cu relația din- mai ușor de acceptat pe măsură ce crește tre învățăcel și sensei în artele marțiale. Concluzie exeperiența cu această practică. Oricine poate învăța arte marțiale din cărți, Un expert separă abilitățile care sunt Pair-programming poate fi făcut chiar sau de la practicanți puțin experimentați, necesare pentru a fi un expert și se concen- și remote. dar un sensei ajută cu sfaturi pentru a avea trează pe îmbunătățirea acelor abilități în un proces rapid și coerent de învățare. timpul practicii zilnice, adesea prin pairing Tu când ai făcut pair-programming și ajutat îndeaproape de feedback-ul unui ultima dată? Tu când ai lucrat cu un coach tehnic coach. Un alt factor important al deliberate practice stă în practicarea continuă a unei abilități la niveluri tot mai provocatoare cu intenția de a o stăpâni. (Ref Mayer, R. E. (2008). Learning and Instruction. Upper Saddle River, New Jersey: Pearson Education, Inc)

Un lucru este clar, fără practică nu putem deveni experți într-un domeniu atât de vast și dinamic precum industria software. Astfel vă invităm să începeți să practicați acasă sau la serviciu. Iar apoi vă invităm să vă implicați în comunitatea locală prin activități de practică în group. Ce mai așteptați?

20 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE programare

Scurtă introducere în mediul SAP

upă ce în urma publicării 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 hotărât să urmăm acest sfat inițiind o serie de articole cu scopul de a oferi o vedereD de ansamblu asupra aspectelor care ţin de specificul SAP.

Astfel, în acest articol ne propunem calităţii software-ului, fiind adesea și un să analizăm câteva detalii ale produselor factor care determină concurenţa din ace- respectiv tehnologiei SAP, încercând să eaşi branşă să aleagă la rândul ei această Victor Ionescu răspundem la unele întrebări precum: Ce soluţie. [email protected] este SAP de fapt? Care este specificul pro- Şi în cazul soluţiilor SAP, acestă afir- SAP IT Consultant duselor SAP? Ce anume este “deosebit” la maţie este cât se poate de valabilă, cu atât @ msg systems Romania tehnologia SAP şi ce presupune dezvoltarea mai mult cu cât portofoliul SAP cuprinde software în acest domeniu? în exclusivitate soluţii informatice dezvol- tate nu pentru un anumit client, ci pentru Soluţii şi clienţi SAP o întreagă branşă. În terminologie SAP SAP este provider-ul de „enterprise (dar nu numai) aceste produse sunt numite business software” numărul 1 la nivel glo- soluţii „standard“. bal, având peste 230000 de clienţi şi un Mai mult decât atât, implementarea portofoliu ce acoperă întreg spectrul de unei soluţii informatice consacrate în produse, de la soluţii enterprise tipice pre- cadrul unui enterprise, spre deosebire de cum Financial/Accounting, HR, Customer dezvoltarea uneia noi (“from scratch”), Relationship Management şi până la unele poate avea un impact pozitiv şi asupra foarte specifice, aşa numitele „Focused imaginii companiei respective, putând Business Solutions”. influenţa până şi ratingul primit de aceasta O problemă interesantă ar fi cu sigu- ca urmare a unui audit. ranţă identificarea motivelor pentru care un număr atât de mare de clienţi enterprise Provocări întâlnite în dezvoltarea unei aleg SAP. Desigur acestea sunt diverse, ceea soluţii standard ce se spune însă de multe ori, este că cel mai Având în vedere abordarea SAP, de a bun promotor al unei soluţii informatice îl nu deservi un anumit client ci mai degrabă reprezintă portofoliul de clienţi şi poveştile o întreagă industrie prin produsele sale, în de succes ale acestora, sau cu alte cuvinte: cele ce urmează vom analiza care sunt pro- implementarea unei soluţii IT care reu- vocările de care se loveşte un dezvoltator şeşte să eficientizeze procesele de business software atunci când urmăreşte implemen- ale unei companii, reprezintă o dovadă a tarea unei noi soluţii 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ă pe baza căreia se dezvoltă noul folosite acestea. tehnică SAP în vederea soluţionării acestor produs să vină în ajutorul dezvoltatorului, provocări. punând la dispoziţia acestuia mecanisme Din punct de vedere al funcţionalităţii care să facă posibilă implementarea unui pe care o va pune la dispoziţie, softul stan- produs nu pentru un client, ci pentru o dard trebuie proiectat astfel încât să suporte întreagă industrie. Acest lucru este cât se toate procesele de business tipice ale bran- poate de valabil în cazul soluţiilor SAP, şei, în acelaşi timp făcând însă abstracţie de platforma tehnică şi mediul de dezvoltare orice detaliu care este specific doar anumi- fiind gândite de la bun început cu aceste tor clienţi. ţeluri în minte. De aceea, faza de specificare funcţio- În cele ce urmează vom prezenta suc- nală a noii soluţii standard implică adesea cint câteva din conceptele specifice SAP, colectarea de informaţii de la clienţi mul- care vin tocmai în întâmpinarea proble- tipli din cadrul domeniului respectiv. melor ce ţin de flexibilitatea produselor Această activitate are ca scop final defini- standard. rea produsului la un nivel de abstractizare suficient de înalt, astfel încât să fie posibilă Enhancements Figura 1 - Business Add-In: Definirea interfe- implementarea acestuia la oricare client din După cum am menţionat deja, atunci ţei şi apelul BadI-ului în cadrul software-ului SAP acea branşă. când se dezvoltă o soluţie standard, se standard, şi adaugarea de implementări de către client Prin urmare, specificarea funcţională vor ivi adesea situaţii în care un anumit a produsului reprezintă o activitate de o proces nu poate fi definit în totalitate în În timp ce conceptul în sine ar putea fi importanţă majoră, care necesită o foarte cadrul soluţiei standard, fie pentru că anu- implementat fără probleme şi utilizând alte bună cunoaştere a business-ului, de ea mite aspecte nu sunt cunoscute de la acel tehnologii, ceea ce e deosebit este faptul că depinzând în mare parte succesul ulterior moment, fie pentru că acestea diferă de limbajul ABAP vine cu un set de instrucţi- al produsului. la client la client neexistând astfel o solu- uni specifice pentru utilizarea BadI-urilor ţie „standard” pentru acea situaţie. Astfel în aplicaţii ABAP, iar mediul de dezvol- Fazele de dezvoltare ale soluţiilor SAP apare nevoia pentru un mecanism prin tare SAP pune la dispoziţie tool-uri care Datorită faptului că o soluţie standard intermediul căruia clientul să aibă posi- uşurează activităţile ce ţin de gestionarea nu poate fi specificată până în ultimul deta- bilitatea de a extinde comportamentul BadI-urilor: definirea BadI-ului, a interfeţei liu astfel încât ea să poată fi achiziţionată “la sistemului cu funcţionalităţi specifice pro- şi a filtrelor, adăugarea de noi implementări cheie” de către un client, orice produs SAP priului său business, funcţionalităţi care ar va trece de-a lungul timpului prin două fi fost prea specifice pentru a fi incluse în GET BADI lr_badi FILTERS faze distincte: dezvoltarea soluţiei standard soluţia standard. iv_entity = lv_filter_value. și adaptarea soluţiei standard explicit la În cazul tehnologiei SAP, un exemplu CALL BADI lr_badi->do_checks cerinţele clientului (fază numită de obicei pentru un astfel de mecanism sunt aşa EXPORTING „implementarea” produsului la client) numitele „Business Add-Ins”. Un Business is_key = ls_key iv_lob_cd = lv_lob_cd Cele două faze reprezintă, din punct Add-In (sau BadI) reprezintă un user CHANGING de vedere al dezvoltării software, două exit cu o interfaţă predefinită, integrat în ct_msgtab = lt_msgtab proiecte independente: proiecte de dezvol- flow-ul soluţiei standard. Prin utilizarea . tare standard şi proiecte client (customer de BadI-uri clientul are posibilitatea să îşi Exemplu de apel al unui Business Add-In. development projects). Prin urmare şi un definească implementări proprii prin care Implementarea BadI-ului va fi determinată dinamic dezvoltator ABAP poate fi la rândul său să extindă comportamentul standard al la ru time, pe baza valorii filtrului lv_filter_value implicat în două tipuri diferite de proiecte, sistemului, şi mai mult de atât, să specifice fiecare având specificul său, astfel încâtş i condiţiile (numite de obicei „filtre”) pentru Pe lângă Business Add-Ins, platforma skill-setul necesar pentru un dezvoltator care o implementare să fie executată. SAP mai pune la dispoziţie şi o serie de alte ABAP diferă de la un tip de proiect la celă- Astfel se oferă posibilitatea unui client mecanisme (Program Exits, Screen Exits, lalt . să extindă un produs standard cu propria Menu Exit, Business Transaction Events), logică de business, aceasta fiind integrată toate acestea făcând posibilă dezvoltarea Aspecte tehnice şi executată la un moment predefinit în de soluţii standard SAP care mai apoi vor Din punct de vedere tehnic, încă de cadrul procesului standard. putea fi extinse cu şu urinţă de către fiecare la design-time software-ul trebuie să fie Utilizarea conceptului de Business client în parte. proiectat în aşa fel încât acesta să permită Add-in implică întotdeauna două faze extinderea proceselor standard acolo unde distincte: Customizing este cazul, sau definirea acelor detalii care • dezvoltatorul soluţiei standard defi- Customizing-ul în terminologie SAP au fost prea specifice pentru a putea fi neşte Business Add-inul ( interfaţa şi se referă la activitatea prin care un produs incluse în soluţia standard, de către fiecare filtrul acestuia ) şi integrează apelul aces- SAP este personalizat pentru un anumit client în parte. tui “user exit” în flow-ulsoluţiei standard. client prin ajustarea diverşilor parametri de Pentru a putea implementa cerinţele • fiecare client va avea posibilitatea de sistem ai produsului. Customizing-ul este legate de flexibilitate şi extensibilitate ale a defini propriile implementări ale BadI- un pas obligatoriu în faza de implementare software-ului, e nevoie ca şi platforma ului, şi de a specifica în ce situaţii vor fi a unei soluţii SAP la un anumit client.

22 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE

Procesul de customizare al unei soluţii SAP include o gamă Clients variată de activităţi de nivele de complexitate diferită: Conceptul de clienţi SAP permite separarea unui sistem SAP • începând de la o banală configurare a monedei şi valorii într-o serie de subunităţi logice fiecare astfel de subunitate fiind TVA-ului folosit într-un anumit sistem numită un „client”. În condiţiile în care adesea este nevoie ca mai multe subunităţi ale unei organizaţii să se folosească de aceeaşi soluţie SAP, exis- tenţa acestui concept permite reutilizarea aceleaşi infrastructuri hardware, astfel obţinându-se o diminuare a costurilor de insta- lare, configurare şi întreţinere, ale soluţiei SAP. Între clienţii unui sistem există posibilitatea de a face o sepa- rare atât la nivelul configurării customizării soluţiei 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 subunităţi pot folosi aceeaşi soluţie • la configurări de reguli de business de exemplu sub forma SAP, instalată pe un singur sistem fizic, dar care funcţionează dife- unor arbori de decizie, tabele de decizie, ş.a.m.d. rit în funcţie de client, customizarea fiind specifică fiecărui client în parte. Mergând pe exemplul configurării TVA-ului, o companie multinaţională având filiale în mai multe ţări poate utiliza un sin- gur sistem SAP, asignând filialele din diverse ţări la clienţi diferiţi ai sistemului, pe fiecare client TVA-ul fiind configurat corespun- zător pentru fiecare ţară în parte. Toate aceste aspecte, împreună cu alte mecanisme şi tool-uri specifice SAP, uşurează în mod simţitor job-ul dezvoltatorilor, Figura 3 - Configurarea unor reguli de business utili- atunci când accentul în cadrul dezvoltării software se pune în zând SAP BRF+(Business Rule Framework plus) special pe flexibilitatea şi posibilitatea de extindere a soluţiei infor- matice implementate. • şi până la customizări de natură tehnică, prin care se poate Enumerarea acestor aspecte nu a avut scopul de a fi una exha- controla în mod dinamic comportamentul sistemului la run- ustivă, rolul ei fiind mai degrabă de a face o scurtă introducere time, de exemplu după principiul de „Dependency injection” în ceea ce poate fi considerat a fi “specificul SAP”. În articolele următoare, vom detalia acest subiect, prin abordarea altor aspecte ale dezvoltării software SAP, cu accent în special pe diferenţele faţă de alte limbaje şi tehnologii.

Figura 4 - Exemplu tipic de Dependency injection prin specificarea implementării unei funcţionaliăţi în cadrul unui customizing SAP

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

WPF – cum stăm cu performanța?

ând vine vorba de aplicații 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ăC care îl fac competitiv.

Tentația atunci când apare ceva nou, pentru schimbari în UI automat atunci e de a-l face soluția ideală pentru orice când reprezentarea datelor din ViewModel Daniel Lăcătuș problemă. Există o discuție continuă când se schimbă. [email protected] vine vorba despre alegerea unei tehnologii Senior Software Developer client , dar dacă nu se benefici- To Blend, or not to Blend @ Accesa ază de avantajele specifice aduse de WPF În mod clar unul din avantajele pe care (data-binding, stilizarea dinamică, ser- le aduce WPF-ul e extensibilitatea când viciile media, animații), din motive de vine vorba de customizare. Fiind cu un performanță o mare parte din dezvoltatori pas în fata WinForms-ului dacă vorbim de încă aleg WinForms. design, WPF-ul oferă dezvoltatorilor foarte multe posibilități și tehnici să schimbe look Lumea XAML și Binding-ul and feel-ul controalelor, iar acest lucru stă Modul declarativ a fost un succes în la baza aplicațiilor rich client moderne cen- mediul de dezvoltare web și aceasta a inspi- trate pe user și modul de interacționare cu rat un nou limbaj, bazat pe XML, numit el. eXtensible Application Markup Language Microsoft vine in întâmpinarea lor cu (XAML). XAML are multe avantaje , dar ce un tool orientat spre design, care are pro- merită menționat e că scapă de codul pro- priul build engine și e capabil să creeze cedural și permite developer-ului sau chiar applicații WPF separat de Visual Studio. designer-ului, să descrie modul în care con- Expression Blend separă puțin rolurile, ofe- troalele arată și interacționează între ele. rind designerilor posibilitatea de a se focusa View-ul în WPF conține un fișier pe design, și programatorilor pe partea de XAML și unul de code-behind. Dacă e să cod (presentation logic sau back-end), con- urmăm pattern-ul MVVM și în design nu ferind confortul de a nu se bloca unu pe s-au facut compromisuri, în code-behind celălalt. ar trebui să nu fie nimic mai mult decât ce În Blend aplicația e dezvoltată vizual, e general automat iar legătura între datele desenând pur și simplu forme, path-uri și din View și datele din ViewModel ar trebui controale pe planșa de lucru, ca mai apoi realizata prin Binding. să fie descris modul de apariție șibehavior . Binding-ul este un mecanism puter- În concluzie, dacă aplicația a fost aleasă nic; el lansează notificările necesare 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 dezvoltatorilor de controale oferă căi pen- mare ajutor pe această parte. de controale de WPF pe care îl oferă. tru a face produsule lor performante. Ce ar Controalele 3rd party pot fi pe de o trebui avut în vedere în acest sens: MVVM parte o mare provocare / oportunitate • Virtualizarea: mare parte dintre Model View ViewModel e un pattern pentru cei care doresc să le implementeze, controalele de grid sunt virtualizate, UI, creeat de Microsoft ca o specializare a pe de alta parte un mare ajutor pentru o și dacă nu au un flag în acest sens ce pattern-ului Presentation Model (introdus echipă care dorește să implementeze o trebuie setat (poate fi făcută pe Row/ de Martin Fowler). Bazat în mare pe MVC, soluție rapidă la o problemă. Column). Hint: nu puneți un DataGrid MVVM se preteaza mediilor de dezvoltare Din nevoia de a nu reinventa roata, într-un ScrollViewer, practic pierdeți unde platforma de UI suporta event-dri- pare o opțiune viabilă să achiziționezi un virtualizarea. ven programming, cum ar fi HTML, WPF, set de controale existent, care a dovedit • Paginarea: paginarea poate fi făcută Silverlight. de-a lungul timpului că îți aduce soluția de la nivel de UI, având toate datele deja Scopul acestui pattern e de a separa care ai nevoie. Printre marii dezvoltatori încărcate, dar puteți încerca și un sistem Interfața Grafică (fie eamarkup sau cod) de controale de WPF se numără Telerik, de încărcare de date dinamic, paginat în - View, de logica de business (backend) - Infragistics, DevExpress, care oferă o suită funcție de View Model. ViewModel-ul e responsabil să facă destul de diversificată de controale. Nivelul • Încărcarea asyncronă: pe binding legătura între cele două, expunând datele de experiență la care s-a ajuns în dezvolta- puteti folosi IsAsync = True, pentru că din Model în așa fel încât să fie consumate rea acestor controale, e de multe ori greu în acest caz încărcarea de date poate dura de View, descriind în același timp logica. de egalat, și probabil mult mai costisitor, iar mai mult, și nu vreți să blocați UI-ul. MVVM a fost conceput să folosească prin aceasta persistă pe piața cam de când a data binding în WPF, pentru a facilita mai aparut WPF-ul. Performanța e unul din aspectele cheie bine separarea de UI, renunțând în marea Una din tentațiile pe care le aduce ce trebuie avute în vedere când se alege parte la code behind-ul din View. Avantajele setul de controale e suportul tehnic de un set de controale, pentru a nu avea o sunt clar vizibile, și ar fi un pattern de care beneficiezi, contra cost, bineînțeles. Pe aplicație matură cu un UI bogat, dar așa de urmat în orice aplicație dezvoltată în WPF. lângă documentația disponibilă abundent înceată încât nimeni nu ar lucra cu ea. Cu timpul, criticile nu întârzie să apară, pe Internet, fiecareprovider are un depart- iar una vine chiar de la John Gossman, ment tehnic și un mod prin care primești Performanța inventatorul MVVM, care arată că aduce un o lămurire la întrebările, nelămuririle și WPF-ul e cunoscut pentru avanta- overhead semnificativ dacă avem operații eventualele bug-uri legate de controale. jele care de UI pe care le aduce, dar cum mari la nivel UI. Iar în cazul aplicațiilor Dacă vorbim de aplicații industriale, rămâne cu performanța? Am avut ocazia mari cu UI complex, fine tuning-ul pe par- performanța acestor controale este impor- să lucrez pe mai multe proiecte WPF, din tea de View devine tot mai dificil de aplicat. tantă și ea, ele find în mare parte black-box care două se remarcă pentru timpul de pentru consumatori. Se observă o anumită implementare lung și amploarea produsu- Controale 3rd party îngreunare dacă vorbim de un UI consis- lui în sine, unde performanța era una din În WPF conceptul de controale stă tent, iar aceasta poate deveni o problemă. necesitățile proiectului. la baza structurii UI-ului, și sunt create Poate cel mai “problematic” control WPF nu a fost creat să fie performant pentru a obține interfața grafică dorită si din punct de vedere al performanței e “by design”. Binding-ul e mecanismul care ar putea fi refolosite. De-a lungul timpu- DataGrid-ul. Aceasta și din cauză că ține stă la baza WPF-ului, iar pentru realizarea lui, au fost provideri care s-au consacrat, și multe date spre a fi afișate. Majoritatea fiecăruibinding se ocupă memorie. Când se

www.todaysoftmag.ro | nr. 14/August, 2013 25 programare TODAY SOFTWARE MAGAZINE WPF – cum stăm cu performanța?

ajunge la screen-uri complexe, cu multe controale, în care fiecare Comunitatea de dezvoltatori software e tot mai mare, și subparte e legată de un obiect de date, se observă că exista și un aceasta duce la o competiție tot mai acerbă între soluțiile software cost pentru toate avantajele sale. oferite. Cred că până la urmă, totul se va reduce la performanță. O altă problemă apare la date ierarhice, când se schimbă data Acest criteriu va face diferența între un software utilizabil la scara context-ul. Propagarea se face descendent pe toate nivelele, și largă și unul utilizat doar pentru că nu există alternativă. Modul refacerea binding-urilor necesită timp. Acest aspect poate deveni de răspuns a unui program dă factorul de satisfacție necesar, iar vizibil pentru utilizator, iar o alternativă nu e tot timpul la înde- utilizatorul începe să fie educat și să ceară tot mai mult în aceasta mână. Din păcate, nu se mai vede un avans al Microsoft spre direcție. îmbunătățirea controalelor, dovada stă în faptul că cea mai bună îmbunătățire adusă în direcția aceasta în .Net Framework 4.5 e Referinte Virtualizarea la TreeView. Roadmap-ul pentru WPF nu poate fi http://en.wikipedia.org/wiki/Windows_Presentation_Foundation confirmat decât în linii mari, așa că este neclar care e viitorul pe http://en.wikipedia.org/wiki/Model_View_ViewModel aceasta directie, ținând cont ca și Silverlight deși promițător la un http://msdn.microsoft.com/en-us/library/cc296376.aspx moment dat, a fost brusc întrerupt. http://msdn.microsoft.com/en-us/library/188ht7d8(v=vs.80).aspx Se întâlnește destul de des o paralelă între WPF și WinRT, și http://en.wikipedia.org/wiki/Pareto_principle aceasta nu din motive nefondate. Amândouă au la bază XAML http://msdn.microsoft.com/en-us/library/system.windows.data.binding. și un API asemănător, dar WinRT a fost gândit în manieră de isasync.aspx performanță. A lăsat deoparte bagajul acumulat de WPF și are un API nativ în C++. Din C# (sau javascript) se apelează componen- tele native, iar acest lucru se simte în viteza de reacție. În SDK-ul de se găsește o suită de programe de profiling, care dau posibilitatea de a analiza la run-time modul în care aplicațiile WPF se comportă și de a analiza ce optimizări se pot face pentru a spori performanța. În această suită se găsesc două componente care merită menționate. Perforator - analizează modul în care se face rendering-ul aplicației. El afișează un set de grafice care dau posibilitatea de a analiza într-un mod foarte specific maniera în care se face ren- dering-ul fiecărei subpărți a unui screen si de a găsi eventualele probleme. Graficele oferite de Perforator constau în: analiza ratei de refresh, analiza schimbărilor intermediare care folosesc rende- ring-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 întâlni 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ță arătând grafice, Visual Profiler descrie problemele folosind repre- zentarea visuală a obiectelor (într-un mod similar cu cel în care funcționează UISpy ).

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 pași de urmat în organizarea unui team-building, partea a doua va fi orientată mai mult spre a înțelege importanța și beneficiile unui program de team-building, precum spre prezen- tarea tipurilor de activități de team-building care există. Așa cum v-ați obișnuit și în acest număr vor fi și exerciții practice pe careD le puteți folosi în a crește coeziunea echipelor pe care le coordonați.

Din experiența mea de până acum, eficientizare a muncii în echipă, dar este majoritatea team-building-urilor se orga- și un factor important în crearea unui nizează în momentul în care apar situații echilibru în cadrul echipei. conflictuale în cadrul echipelor. Team buil- ding-ul este văzut întotdeauna ca o soluție Timp alocat 15 minute/ grup în depășirea problemelor, însă motivația activitate Total: care stă la baza deciziei de a implica mem- Nume activitate SCUTUL brii echipei într-un astfel de proiect, ar Impărțire pe Grupul este împărțit în echipe echipe putea să fie: de câte 2 • Încurajarea lucrului în echipă înainte Localizare Indoor / outdoor de a ieși la iveală un conflict între mem- Coala A4 cu instrucțiunile brii acesteia; Materiale • Încurajarea competiției pozitive între Pixuri membrii acesteia și susținerea punctelor de vedere multiple, deoarece acestea pot Obiective Cunoașterea celorlalți membrii Descriere genera idei constructive care pot fi bene- Participanții se împart în grupuri fice proiectului; de câte 2 și discută cele 4 înt- • Dobândirea de cunoștințe noi despre rebări, apoi desenează aspectele Activitățile de team-building pot fi și abilitățile și cunoștințele celorlați, pen- pe care le consideră reprezenta- ele diverse: tru o mai bună împărțire a sarcinilor și tive pentru cealaltă persoană. 1. Învățarea prin joc – desfășurarea pentru o mai bună înțelegere a rolurilor Desenele vor fi prezentate în unor activități, iar în urma soluționării fiecăruia în cadrul echipei; final întregului grup împreună sarcinii prin joc participanții extrag • Înțelegerea procesului de delegare cu explicațiile de rigoare. concluzii care vor duce la învățarea sau

a sarcinilor, deoarece multe activități Necesar Fiecare participant trebuie să înțelegerea aplicării unei comunicări de team-building încurajează delegarea aibă o listă cu întrebări (coală eficiente în cadrul echipei, precum și responsabilităților, ceea ce va duce la o A4) crearea coeziunii echipei prin câștigarea

www.todaysoftmag.ro | nr. 14/August, 2013 27 HR TODAY SOFTWARE MAGAZINE Team building (II)

Timp alocat încrederii celorlalți membri ai echipei; activitate 15 minute planificare 2. Organizarea de evenimente tematice care 30 minute executie – construierea podului să încurajeze lucrul în echipă. Un bun exemplu sunt 15 minute debriefing competițiile sportive în care membrii echipei învață să Total: 60 minute concureze unul cu celălalt și în felul acesta vor înțelege Nume Podul că în unele situații concurența poate fi benefică. Alte eve- activitate nimente pot fi evenimentele în care sunt implicați toți Împărțire pe 4 echipe (10 membri/ echipa – maxim) angajații companiei, iar cel mai cunoscut exemplu sunt echipe petrecerile de Crăciun. Localizare Indoor / outdoor 3. Evenimentele sociale sunt o altă modalitate de Materiale a crea coeziunea în echipă. Mediul informal este benefic Flipchart/ Carton în procesul de cunoaștere personală a membrilor echipei. Coli A4 Cum menționam în articolul anterior, cu cât persoanele Scotch, foarfecă, sfoară se cunosc mai bine la nivel personal, cu atât procesul de Plastic soluționare a unui conflict poate fi mai eficient. Obiective Colaborare între echipe; Așadar, sintetizând, beneficiile programelor de team- Planificarea activităților; building sunt mai multe decât intuitive: Capacitatea de transmitere a informației. • Creșterea eficienței lucrului în echipă; Descriere • Cunoașterea membrilor echipei la nivel perso- Instructiuni: nal și profesional prin punerea lor în situații diverse; Este un exercițiu de lucru în echipă. • Creșterea încrederii în membrii echipei; Scopul fiecărei echipe este acela de a construi o jumătate de • Dezvoltarea sentimentului de apartanență la pod care să se potrivească perfect cu jumătatea de pod con- echipă și la companie; struită de echipa cealaltă. • Dobândirea sau îmbunătățirea unor abilități și Cu resursele pe care le aveţi la dispoziţie, materiale şi abilităţi, cunoștințe; veţi proiecta şi veţi construi jumătatea voastră de pod. • Crearea unui mediu plăcut în cadrul echipei; Reguli: • Motivarea membrilor echipei și creșterea sti- 1. Desemnați un reprezentant prin care veți comunica cu mei de sine; cealaltă echipă. Reprezentanții își vor stabili întâlniri prin intermediul trainerilor, în cadrul carora va discuta des- Cred că sunteți convinși de impactul pozitiv pe care pre strategia de construcţie, astfel încât să construiți două activitățile de team-building le pot avea asupra efiecienti- jumătăți de pod compatibile. zării procesului de lucru în echipă, de aceea vă încurajez 2. Reprezentatul va duce de fiecare dată o coală albă cu el şi va să investiți și resurse financiare și umane pentru a orga- transmite informaţiile pe care voi îl instruiţi să le transmită. El niza astfel de evenimente cât mai des. se va întoarce cu noi informaţii pe care vi le va transmite vouă. Succes! 3. Reprezentanții nu au voie să ducă la echipe foile de la întâl- niri, ci trebuie să transmită verbal ce s-a stabilit. 4. La finalul construcției, uniți cele două jumătăți de pod. 5. Podul trebuie să fie suficient de solid astfel încât să susţină o cană plină cu apă. Concluzii: În primul rând vă precizez că a fost un joc de colaborare între echipe, ca între două firme partenere, sau între două departamente. Succesul colaborării constă în a transmite curat informaţiile prin intermediul celor doi reprezentanţi. Apoi, ca orice sarcină de echipă presupunea ca fiecare mem- bru să îşi aducă contribuţia la atingerea obiectivului final. Erau mai multe etape în drumul către atingerea acestui obiectiv: - Planificarea activităţii: cum utilizaţi materia primă, proiecta- rea podului, distribuirea sarcinilor, cine e responsabil? de ce?, valorificarea abilităţilor membrilor, colaborarea, comunicarea. Andreea Pârvu [email protected] -Construcţia propriu-zisă, implementarea planului, Recruiter în cadrul Endava executarea. Fiecare etapă era dependentă de succesul comunicării cu exte- riorul şi în interior. Necesar Fiecare lider de echipă trebuie să aibă instrucțiunile

28 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE management

Provocarile unui business analyst în Agile

chimbările rapide de piaţă au condus la nevoia companiilor de a scurta timpul de livrare al unui produs şi de a fi mai receptivi la expectanţeleş i doleanţele clienţilor. Metodologiile de dezvoltare agile sunt instrumente necesare, de top, ele reuşind să reprezinteS un adevărat suport pentru echipele de dezvoltare a proceselor soft, în dorinţa lor de a se adapta conform noilor tendinţe de pe piaţă.

Metodologiile de implementare agile paşi mai mici şi dezvoltarea unei colaborări au un impact deosebit asupra disciplinei mai strânse cu întreaga echipă de-a lungul Monica Petraru de analiză de business în general, întrucât SDLC –ului proiectului. [email protected] aduc în prim - plan o metodă nouă de abor- În cele ce urmează, acest articol va Senior Business Analyst dare şi prioritizare a cerinţelor în cadrul explora impactul metodologiei de dez- @ UNIQA Raiffeisen unei echipe de implementare al unui pro- voltare agilă asupra Analizei de Business,. Software Service iect IT. De asemenea identificarea competenţelor Analiştii de business sunt o compo- necesare şi conturarea rolului Analistului nentă vitală a unei echipe IT în Agile pe de Business pentru a facilita tranziţia de la întreg parcursul derulării proiectului, metodologii tradiţionale la cele Agile, vor reprezentând legătura dintre partea tehnică reprezenta subiecte de analiză. şi cea business. Calităţi precum colabora- rea, facilitarea, leadership-ul, coaching-ul, Definirea cerinţelor de business în Agile cât şi teambuilding-ul devin competenţe Într-o lume agilă, cerinţele software necesare, suficiente şi esenţiale pentru asi- sunt dezvoltate prin explorarea continuă gurarea livrării cu succes a unui produs IT a nevoilor de business. Acestea sunt colec- în final. Împreună cu noile maniere şi tră- tate și rafinate printr-un proces iterativ de sături ale procesului de dezvoltare, analiştii planificare, de prezentare a criteriilor de de business devin persoane critice în asigu- acceptare, de prioritizare şi dezvoltare a rarea succesului unei echipe ce abordează o acestora, precum şi de evaluare rezultatelor metodologie agilă. obţinute. De-a lungul derulării procesu- Migrarea de la o perspectivă de abor- lui de analiză business, specialiştii acestui dare tradițională a unui proiect la una domeniu trebuie să se asigure în mod con- „agilă” va conduce la o redefinire a roluri- stant că toate caracteristicile cerute de lor funcţionale din cadrul unei echipe de clienţi se aliniază cu obiectivele de business proiect într-o manieră diferită. ale produsului, mai ales ca acestea evolu- Pentru analiştii de business, gestionarea ează și se pot schimba în timp. cu succes a unui proiect agil depinde foarte Ce înseamnă Analiza de Business în mult de procesul de definire a cerinţelor în context Agile? Aceasta aduce în prim- plan

www.todaysoftmag.ro | nr. 14/August, 2013 29 programare Provocarile unui business analyst în Agile

nevoia creşterii de livrare a valorii de busi- implicaţi. ness către sponsorii si clienţii proiectului / Părţiciparea 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 stricteţe valorile şi principiile specialist dedicat nu e solicitată. Orice ilustrate în “Agile Manifesto” (www.agile- membru al echipei poate al echipei de manifesto.org): implementare poate executa activităţi de • Valorificăm mult mai mult interac- identificare şi prelucrare a cerinţelor. ţiunea dintre oameni decât cea dintre • În cadrul unui mediu mai complex, procese şi instrumente. analistul de business joacă rolul unui • Target-ul nostru primordial este acela moderator, reuşind să-i aducă la un con- înaintea tuturor. de a satisface cerinţele clientului nostru sens pe toţi participanţii implicaţi cu Acesta are datoria de a cunoaşte prin livrarea continuă a unui software scopul de a defini cerinţe clare pentru întreaga viziune şi lista de specificaţii a pro- de calitate . echipa de dezvoltare. dusului şi de a face parte din echipa finală • Dezvoltarea produselor de soft repre- • Responsabilul de produs (engl. de livrare a produsului. Ei sunt participanți zintă măsura principală de obţinere a Product owner) / reprezentantul clien- activi, responsabili de planificare, analiză, progresului. ţilor (engl. “Customer representative”): testare și demo al produsului. Analistul e însărcinat să ia act de tot ceea ce se asigură ca produsul să respecte toate Rolul Analizei de Business în context înseamnă caracteristicile produsului şi standardele cerinţelor de business. Un alt agil este acela de a oferi informaţia corectă prioritizarea acestora. element primordial în activitatea sa este și necesară echipei de implementare în • Substitutul responsabilului de produs acela de a defini criteriile strategice pentru momentul şi în etapa când aceasta este când acesta nu este disponibil. finalizarea produsului / proiectului. solicitată pentru a asigura o stabilitate a • Analistul poate fi definit ca un busi- În această etapă, calităţi precum nego- derulării procesului soft. ness coach într-un produs / proiect, unde cierea, comunicarea şi facilitarea sunt În context agil, analiştii de business pot responsabilul de produs este o persoană esenţiale. Este un moment când analistul beneficia de feedback-ul constant al clien- dedicată, care nu dispune însă de experi- are nevoie de capacitatea de a asculta şi ţilor atunci când efectuează împreună cu enţa tehnică corespunzătoare sau echipa întelege feedback-ul primit de la toate păr- partea de client o recenzie a rezultatelor de implementare nu are cunoștinţele de ţile direct interesate și ulterior de a utiliza obţinute în urma efectuării unor iteraţii business necesare. aceste informații primite pentru a executa succesive. Astfel, ei pot executa rafinarea modificările necesare în analiza şi prioriti- specificaţiilor produsului pentru a se asi- Unul dintre elementele cheie vitale zarea cerinţelor proiectului / produsului. gura de menţinerea coeziunii cu nevoile pentru un analist de business într-un Analiştii de business trebuie să posede de business a produsului / proiectului, cât mediu agil este reprezentat de abilitatea de o capacitate enormă de a înțelege carac- şi identificarea şi reducerea riscurilor încă a utiliza feedback-ul pentru a genera meca- teristicile metodologiei agile pe care o din incipitul proiectului / produsului. nismul schimbării. folosesc în munca lor de zi cu zi cu scopul Analistul trebuie să revizuiască în mod de a gestiona, extrage, analiza, documenta, Procesele de dezvoltare iterative oferă constant împreună cu toate părţile impli- comunica şi valida specificaţiile. În cele şansa de a creşte gradul de eficienţa în cate cerinţele şi totodată să se asigure că ce urmează, se vor aduce în prim – plan o cadrul activităţii de analiză de business. În orice modificare a nevoilor de business suită de metodologii agile şi rolul analistu- cadrul metodologiei Waterfall, analiza spe- sunt reflectate cu acurateţe în iteraţiile vii- lui de business în fiecare dintre acestea. cificaţiilor are loc înaintea începerii fazei de toare ale produsului. implementare. Analiza de Business în SCRUM Identificarea factorilor de risc corelată Calităţile de succes ale unui Analist de În Scrum nu se face o referire minu- cu dezvoltarea specificaţiilor de business Business într-o echipă AGILE ţioasă şi exactă asupra activităţilor de conduc la modificarea sau eliminarea cerin- Conform punctelor stipulate în Agile analiză de business. Ca un fapt adiacent, ţelor, efortul depus în acest sens devenind Manifesto, întreaga echipă trebuie să fie multe dintre activităţle specifice analizei de inutil. Aşadar, prin oferirea specificaţiilor extrem de competentă şi eficientă în ceea ce business apar ca etape implicite în Scrum. de tip just – in – time, scade semnificativ priveşte activitatea ei profesională. Pentru În acest sens, figura următoare ilustrează şansa de a reface anumite cerinţe, întrucat a atinge toate obiectivele de productivitate ciclul de viată specific în Scrum unde acti- doar specificaţiile necesare release-ului pla- planificate într-o echipă agilă , analistul vităţle tipice de analiză de business se vor nificat vor fi definite în detaliu şi ulterior de business trebuie sa fie mereu cu un pas suprapune: implementate.

Ce înseamnă sa fii un Analist de Busi- ness în AGILE? Abordarea unor proiecte de com- plexitate ridicată a condus la creşterea importanţei funcţionale a unui analist de business. Rolul acestuia este acela de a crea o viziune a produsului bazându-se pe spe- cificaţiile primite de la toţi stakeholder-ii

30 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE

Realizarea şi asigurarea mentenanţei produsului. În acest caz, apare imperi- specifice analizei cerinţelor se vor priori- backlog-ului produsului reprezintă o acti- oasa nevoie a unui analist de business. tiza specificaţiile având la bază valorile de vitate majoră a analizei de business. Pentru Contribuţia acestuia se va materializa prin business concret stabilite. Gestionarea lis- o clarificare mai specifică,backlog-ul este crearea unei reprezentări grafice de poveşti tei de cerinţe, cât şi identificarea şi definirea construit cu ajutorul: (engl. “story mapping”) de - al lungul unui domeniului de business se vor materializa • elementelor de analiză de business continuum de timp. Aceasta va fi utilizată prin aplicarea technicilor binecunoscute de organizatională: identificarea lacunelor pentru a identifica riscurile şi dependin- analiza de business. şi capacităților noi, utile pentru a atinge ţele între poveștile de utilizator în vederea În ceea ce priveşte etapa de planificare standardele organizaţionale propuse optimizării valorii livrate de fiecare punere şi coordonare a task-urilor în metodologia şi alinierea acestora la caracteristicile în aplicare a unei poveşti într-o manieră Kanban, se va apela la acorduri privind organizației incrementală. nivelul serviciilor (engl. “Service Level • evaluarea și validarea soluţiei. Competenţele specifice analizei de Agreements”) pentru a menţine tracking- business pot fi utilizate pentru a asigura că ul enhacement-urilor la care se lucrează În cadrul unui sprint, activităţile de problemele ce stau la bază vor fi abordate momentan. În Kanban, această estimare analiză de business se focusează strict pe într-un mod convenabil pentru majorita- include planificarea si prioritizarea acti- definirea cerinţelor pentru elementele tea actorilor implicaţi în proces, precum şi vităţilor de analiză de business ce au loc backlog-ului ce sunt implementate şi pe pentru asigurarea criteriilor riguroase de înainte de etapa de implementare a func- criteriile de acceptare a acestora (“Just – in acceptare ce vor fi selectate pentru fiecare ţionalităţilor. Astfel, analistul de business – time requirements gathering”) user story. se focusează strict pe monitorizarea şi pla- nificarea activităţilor, putând face o revizie Technicile specifice sunt: Technicile specifice sunt: constantă si rafinare a estimărilor de fie- • Gestionarea backlog-ului (engl. • Poveştile utilizatorilor (engl. “User care dată când o nouă funcţionalitate intră “Backlog management”) – prin inter- stories”); în faza de analiză a ciclului Kanban. Un mediul acestuia se asigură o bună • Maparea poveştii (engl. “Story analist de business extrem de bun va reuși prioritizare a cerinţelor, cât şi partea mappings”); să definească cerinţe noi pentru sistem dedicată managementului schimbării. • Descompunerea poveştii (engl. mult mai repede decât acestea ar putea fi • Retrospectivele (engl. “Story decompositions”); implementate şi testate. Acest fapt este util “Retrospectives”) – Analiştii de business • Elaborarea poveştii (engl. pentru un analist de business, întrucât îl va trebuie să acorde o atenţie deosebită feed- “Story elaboration”). ajuta la identificarea şi gestionarea riscului back-urilor cu privire la cerinţele pe care încă din incipitul proiectului. După cum se le oferă echipei şi totodată cum și când Analiza de Business în Kanban poate observa, succesul de piată în econo- acestea sunt prevăzute în scopul de a găsi Bazându-se pe teoria constrân- mia zilelor noastre depinde foarte mult de modalităţi de îmbunătăţire a proceselor gerilor şi totodată pe lean product promptitudinea răspunsului dat la tendinţa în care sunt utilizate. development, Kanban se axează pe urmă- schimbătoare a acesteia. S-a demonstrat toarele caracteristici: faptul că aspiraţiile tradiționale de livrare Analiza de Business în Extreme • vizualizarea productivităţii, a produselor nu sunt extrem de prompte în Programming • limitarea muncii de-a lungul anumite tipuri de business unde se cere o Pentru a facilita o mai bună întele- procesului, calitate deosebită a produselor ce se doresc gere a acestei metodologii, în figura de mai • concentrarea strict doar pe cerinţele a fi livrate. jos se ilustrează modelul XP: ce trebuie implementate, Concluzii Metodologiile agile permit echipe- lor implicate în dezvoltarea produselor să împlinească doleanţele clienţilor prin cre- area unei ambianţe de lucru plăcute unde membrii echipei vor dori să se implice total. Analiştii de business îndeplinesc un rol cheie în cadrul unei echipe agile. Pentru a-şi atinge obiectivele cu succes, aceştia trebuie să treacă de la o abordare Această metodologie se concentrează • nevoia unei îmbunătăţiri consacrată de gândire în ceea ce înseamnă foarte mult pe “value driven develop- continue. analiza de cerinţe. Ca un element adiţio- ment”, şi mai puţin pe activităţi prestate în nal, analiştii trebuie să îşi îmbunăţească domeniul analizei de business. Conform Activitătile de analiză de business se procesul de documentare a specificaţiilor, modelului XP, rolul clientului este repre- caracterizează prin constanţă de-a lungul cât şi aprofundarea de noi tehnici pentru zentat de un grup de oameni care ştiu exact ciclului de viață al unui proiect. Pentru managementul eficient al acestora. Întregul specificaţiile pe care trebuie să le respecte menţinerea unei ordini a functionalităţi- succes va depinde în mare măsură de cât de sistemul. lor ce trebuie implementate, analiştii de bine vor reacţiona analiştii de business la Totuşi există anumite circumstanţe, business vor utiliza tehnici de identificare noile tendinţe de lucru cu specificaţiile, la când modelul XP este aplicat la scară şi extragere de noi specificaţii ale produ- formarea echipelor şi la colaborarea tuturor largă sau clienţii nu au o viziune clară a sului. Ulterior, prin intermediul metodelor stakeholder-ilor implicaţi.

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

Project Manager și Business Analyst - un duet care poate face diferența în outsourcingul românesc

ucrez în IT, în software outsourcing, de mai bine de zece ani, și am urmărit dezvol- tarea acestei industrii dinăuntrul ei. Criza financiară și focusul pe eficientizarea costurilor au îndemnat tot mai multe companii să apeleze la outsourcing, trend ce i-aL favorizat dezvoltarea. Cu ce urmări? În primul rând a creat un glob de cristal protec- tor î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 restrângeau activitatea sau dis- păreau din peisaj. În al doilea rând, a fost acompaniată de o ofertă de muncă mai largă, salarii bune și un mediu de lucru la nivel occidental. Creșterea costurilor face însă ca Adrian Cighi marja de profit în cazul outsourcing-ului să nu mai fie la fel de mare cum era cu 7-10 ani [email protected] în urmă și să facă loc astfel concurenței puternice pe cost venite dinspre India sau China.

Project Manager @ Yonder Și atunci ce putem face noi, aici, în proiectelor. “Commitment pe calitate” România? se leagă de gradul de maturitate al unei Ca să putem răspunde la această între- companii și înseamnă asumarea calității, bare ar trebui să ne uităm la principalii a termenelor și a tuturor condițiilor factori care influențează alegerea unui fur- convenite. nizor de servicii software: Predictibilitatea: înseamnă capacita- • Calitatea produselor furnizate tea unei companii de a înțelege clientul, de • Preț a fi în măsură să îi creioneze unroadmap • Referințe (Încredere) viabil, sustenabil și care să îi asigure succe- • Flexibilitate sul într-un mod convingător. • Resurse Customer intimacy: se referă la a • Relații de colaborare înțelege nevoile și afacerea clienților, piața • Asemănări culturale și clienții și la a încerca, prin idei inova- • Localizarea tive, să livrezi cele mai bune soluții. Cum îți dai seama dacă faci o treabă bună? Oare care dintre ei poate face Atunci când clientul te percepe ca pe un diferența? Cu siguranță unii factori nu pot consultant de încredere și nu doar ca pe face diferența - cum ar fi prețul. Nu putem un prestator de servicii, scopul este atins concura pe preț tot timpul pentru că va în mare parte. influența resursele și sustenabilitatea pe termen lung. În ceea ce privește resursele Rolurile care fac diferența ( profesioniștii de care avem nevoie) ar fi Este de necontestat necesitatea unei extrem de greu de concurat la nivel canti- echipe de proiect valoroase pentru tativ cu India sau China doar uitându-ne obținerea ambițiilor de mai sus, dar din la diferenta de populație. Și, totuși, există o această echipă se disting două roluri cheie serie de arii cheie în care nu doar că putem care pot face diferența, în special prin face diferența, dar am putea chiar excela. valoarea adăugată. Acestea sunt rolurile Commitmentul pe calitate: este mai de Project Manager și de Business Analyst. mult decât a livra produse de calitate, cu Dacă un Project Manager profesionist asi- cod bine scris. Presupune garanție oferită gură predictibilitatea, un Business Analyst clienților încă de dinainte de începerea face legătura între problemele clientului și

32 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE echipa de dezvoltare și contribuie în mod Project Management Institute (PMI) și obține acceptarea proiectului din partea hotărâtor la obținerea poziției de “trusted International Institute of Business Analysis clientului. advisor” menționat anterior. (IIBA), care au creionat un astfel de model Dacă acum câțiva ani companiile de colaborare. Concluzii căutau Project Manageri cu cunoștinte Dacă luăm principalele faze din pro- Unul dintre modurile prin care aprofundate pe domeniul proiectului, iect definite de cele două institute de profil, România se poate remarca pe piața de IT suplinind astfel și rolul de BA, schimbările avem următoarea implicare a celor doua nu este axat pe criterii de cost scăzut, ci din ultimii ani și profesionalizarea secto- roluri: prin crearea de valoare adăugată pentru rului au determinat specializarea rolurilor • Inițierea proiectului (“Inception”): clienți, proces în care cele două roluri și necesitatea unei poziții de sine stătătoare aici un rol esențial îl are BA-ul pentru că, descrise mai sus au un aport semnficativ. pe domeniul analizei de business. Mai în această fază se construiește un busi- Project Managerii și Business Analiștii tre- mult, faptul că metodologiile agile pun ness case. Aceasta este etapa în care se ia buie să colaboreze pentru un țel comun și focus pe rolul de BA (sau pe specialistul de decizia de “Go - No go”. Tot acum sunt anume spre obținerea de soluții inovative produs), rolul de Project Manager a evo- identificate nevoile de business. care rezolvă problemele de business ale luat spre a fi un integrator de echipe, un rol • Planificarea: rolul de PM este clienților. care lucrează cu echipe distribuite pentru a esențial, deoarece acum se construiește atinge scopul proiectul și în a ține costurile planul de proiect, se alocă resursele sub control. necesare, project managerul își definește Sigur, există voci care spun că există un cele trei zone importante pe care le va puternic conflict între cele două roluri, cel monitoriza: scop, buget și timp. de PM și cel de BA. La prima vedere acest • Execuția, monitorizarea și contro- conflict este real, deoarece PM-ul gestio- lul: Ambele roluri trebuie să lucreze în nează bugetul/scopul și resursele, iar BA-ul tandem pentru a obține succesul pro- se ocupă mai mult de detaliile esențiale iectului. Dacă PM-ul se concentrează rezolvării și optimizarii proceselor de busi- mai mult pe monitorizarea bugetului, a ness, care pun presiune pe buget și scop. costurilor, timpului, resurselor și a ris- Și, totuși, dacă nu există o colabo- curilor (fiind principalul responsabil pe rare strânsă între cele două roluri sau scopul proiectului), BA-ul pune accent dacă unul dintre ele este mai slab există o pe funcționalitate, calitate, pe riscurile mare probabilitate să nu fie obținut succe- care vin dinspre partea funcțională, din sul proiectului. Mai mult, pentru că cele zona de produs. Totodată, prin deciziile doua roluri au anumite responsabilități luate de el, se influențează scopul pro- comune există nevoia unui framework de iectului prin schimbări sau defecte găsite colaborare. în produs. Există doi mari jucători în stabili- • Încheierea: în această fază există rea direcțiilor pentru cele două roluri: un efort comun PM și al BA pentru a

www.todaysoftmag.ro | nr. 14/August, 2013 33 programare business

Recenzia cărții: Android Apps with Eclipse de Onur Cinar

ceastă recenzie este despre un subiect foarte popular în zilele noastre, în lumea dezvoltatorilor de aplicaţie, aplicaţiile Android. Mulţi clienţi, precum aplicaţiile Ape dispozitivele mobile, folosesc această platforma. Dispozitivele mobile pot fi folosite să-l rulăm. Totuşi, vă recomand să studiaţi drept clienţi thin într-un browser web, dar codul. Vă poate oferi soluţii sau exemple de în această recenzie vom introduce acele ele- implementare, dar şi idei pentru extensii, în Silviu Dumitrescu mente care transformă dispozitivele mobile munca voastră viitoare. [email protected] într-o platformă, în care putem dezvolta şi Cartea este organizată în 10 capitole Consultant Java rula aplicaţii de sine stătătoare. Partea care prezentând diverse aplicaţii. Una dintre @ msg systems Romania nu este cuprinsă în această carte este aceea ele este “Movie Player”. În această carte a dezvoltării clienţilor rich pentru aplicaţii toate exemplele sunt dezvoltate folosind enterprise, care rulează offline sau online, Android 2.3.3, probabil cea mai populară având un modul backend găzduit de un versiune de Android, deşi a fost lansată în server de aplicaţie. 2011. Găsim în carte şi discuţii despre alte Prezenta carte, intitulată Android Apps versiuni, ultima versiune de Android tra- with Eclipse de Onur Cinar, prezintă o tre- tată în carte fiind Android 4.0.4, lansată în cere în revista introductivă despre cum să instalăm, să configurăm şi să rulăm aplicaţiile Android. Nu se vor aminti concepte despre Android API sau tehnici de programare, ci este doar un scurt rezumat despre cum să utilizăm Eclipse Android Toolkit (ADT).

După părerea mea ori- cine poate citi această carte. Desigur, unele cunoştinţe generale despre limbajul Java sunt binevenite, dar nu obligatorii. Este, aşadar, o carte uşor de citit. După ce au fost făcute toate instală- rile, partea de instalare este descrisă în aproape 40% din carte, urmărirea programe- lor prezentate este uşoara. Tot ce avem de făcut este să copiem în Eclipse codul şi

34 nr. 14/August, 2013 | www.todaysoftmag.ro business TODAY SOFTWARE MAGAZINE februarie 2012. Eclipse-ului. faţă prezintă Scripting Layer for Android Aşa dupa cum este bine cunoscut, plat- (SL4A), care cuprinde o multitudine de form Android este proprietate a Google şi Capitolul 5 descrie instalarea ADT interpretori pentru Android precum Perl, reprezintă un open standard pentru dispo- developer tools, inclusiv a emulatorului Python, Rhino etc. zitivele mobile. Statistic vorbind, statistic Android. Aşa după cum am mai afirmat, în spa- prezentate în carte, Android deţine 48% Începând cu capitolul 6 vom utiliza tele simplităţii aparente cartea este un ghid din piaţa de aplicaţii pentru dispozitivele Android Developer Tool. Prima aplicaţie atât pentru începători cât şi pentru cei care mobile. prezentată este “Movie Player”. Tot în acest caută soluţii pentru problemele lor de dez- Android este mai degrabă un software capitol se discută manifest editor, layout voltare a aplicaţiilor Android. stack complet pentru dispozitive mobile, editor şi resource editor. Partea finală a decât un sistem de operare. Android se capitolului se referă la implementarea cla- Ca de obicei spun că sunt intersat în bazează pe sistemul de operare Linux şi pe selor implicate în proiect. discuţii cu cititorii şi de aceea îi invit să le Java Virtual Machine pentru aplicaţii utili- iniţieze sau să ia parte la ele. zator. Android este format dintr-o mulţime Capitolul 7 este despre Android Native de de componente, ce pot fi accesate atât Development Kit (NDK), care permite Lectură placută! de platformă cât şi de alte aplicaţii. Aceasta dezvoltatorilor să implementeze porţiuni permite interoperabilitatea aplicaţiilor. de aplicaţie în cod nativ maşina. NDK fur- Cea mai importantă componentă a nizează biblioteci C, o bibliotecă minimală aplicaţiei Android este activity, care cores- C++, o bibliotecă Math, o bibliotecă grafica punde unui ecran vizual. Utilizatorul poate Open GL şi multe altele. Capitolul include interacţiona cu aplicaţia prin intermediul un ghid de instalare NDK şi Sequoyah acesteia. O operaţie pe activity este numita (plug-in ce furnizează un mediu complet intent şi poate determina afişarea altor de dezvoltare a aplicaţiilor mobile). activities. Munca de fundal a unei aplica- ţii este dată de services. Sunt şi multe alte Capitolul 8 extinde proiectul movie pla- componente într-o arhitectură Android, yer pentru rularea filmelor în format AVI. dar las cititorului plăcerea să le găsească Aceasta foloseşte Android NDK, deoarece în capitolul 2 al cărţii. Platforma Android bibliotecile AVI vin cu soluţii open source furnizează modalităţi multiple de stocare a implementate în C/C++. datelor printre care bazele de date SQLite. Ultimele două capitole sunt despre Următoarele două capitole, 3 şi 4, sunt Android scripting. Primul prezintă partea despre IDE-ul Eclipse şi metodele de insta- teoretică iar al doilea unele extensii ale pro- lare ale acestuia dependent de platformă. iectului “Movie Player”. Android scripting După părerea mea, aceia care sunt famili- reprezintă este o unealtă la îndemână pen- ari cu IDE-ul Eclipse pot sări aceste două tru task-uri simple. Script-urile nu trebuie capitole. Pentru ceilalţi este o excelentă compilate şi în consecinţă nici împache- modalitate de a deveni experţi în utilizarea tate sau desfăşurate pe server. Cartea de

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

Load Test folosind Windows Azure

ntr-o lume perfectă m-aș aștepta să pot rula un load test sau un stres test folosind un furnizor de cloud fără 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 cunoștințe zero despre cloud poate să ruleze un load test de 50.000 de useri timp de 24 de ore cu costuri minime, fără să fie Radu Vunvulea obligat să achiziționeze și să configureze 10, 20 de noduri. [email protected] Ce este un load test? în momentul în care load-ul crește peste Senior Software Engineer @iQuest Dar ce este de fapt un load test? Scopul capacitatea maximă pe care acesta trebuie principal pe care un astfel de test îl are să o suporte. este definirea și validareaload-ului maxim pe care un sistem îl poate avea fără ca Ce ne oferă piața în acest moment? performanța să scadă simțitor. Chiar dacă La ora actuală piața este plină de dife- dezvoltatorul îți spune că sistemul poate rite soluții pentru testare automată și să gestioneze fără nici o problemă 1000 pentru rularea load testelor. Produse pre- de useri simultan, un load test poate să cum Selenium, LoadStorm sau Neoload dovedească contrariul, chiar și pe cele mai domină piața. simple scenarii. Dacă folosim o soluție on-premise tre- Există o demarcație foarte subțire buie să fim pregătiți să rezolvăm probleme între un load test și un stress test. De foarte precum achiziția sau rezervarea resurselor multe ori un load test se finalizează cu pentru load test. Într-o companie mică va un stress test care are ca scop observarea fi greu cumpărarea a 10 servere doar pen- comportamentului pe care sistemul îl are tru 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, până în momentul în care o să avem resursele dispo- nibile, poate să treacă o perioadă lungă de timp – uneori chiar să fie prea târziu. Pe lângă acești factori, configurarea fie- cărei mașini ș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 lângă 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 diferiteendpoint-uri. Un endpoint testat nu trebuie să fie doar HTTP sau HTTPS. Putem la fel de bine să testăm un endpoint WCF, REST sau un web service. Singura condiție 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ă rulăm load teste pe cloud fără nici un fel de poate să fie un labirint din care să nu mai de Visual Studio 2013 ne pune la dispoziție probleme. găsim ieșirea. o noua opțiune – în loc să rulăm testele noastre în propriul nostru Load Test Ring Cum să cream un load test? Ce ne propune Microsoft? putem să le rulăm direct pe Azure, fără nici Cea mai simplă variantă pentru a crea Pe această piață, extrem de matură a o configurație în plus. Nu este nevoie să un load test pentru o aplicație web este să ne apărut Microsoft cu o soluție extrem de facem deploy la nici o mașină virtuală sau creăm unul sau mai multe teste de tip Web ingenioasă. Dacă acesta deja are o infra- să configurăm diferite servicii. Performance Test. Acest tip de teste pot structură pentru cloud puternică și robustă, să fie UI teste, fiind foarte ușor de creat și de ce să nu ofere posibilitatea de a rula Load Test Web Service automatizat. Folosind recorderul de UI care load teste folosind Azure. Deși aceștia nu Load Test Web Service este servicul de vine odată cu Visual Studio 2013, putem au prima soluție de acest gen de pe piață, pe Azure care ne ajută să facem acest lucru. să creăm un Web Performance Test doar Microsoft are un as în mânecă. Aceștia îți Prin intermediul acestuia, Visual Studio în câteva secunde. Un astfel de test poate permit să rulezi un load test folosind Azure 2013 încarcă testele noastre pe cloud. În să fie modificat în orice moment și dacă fără să fie nevoie să faci o configurație în spatele acestui serviciu există un pool de dorim avem posibilitatea să generăm cod plus. Trebuie să ai doar un cont pe Visual test agents care este folosit pentru a rula pentru test. Prin această metodă, cei care Studio Team Foundation Service (http:// testele noastre. Dar acest lucru se întâmplă doresc să scrie cod pentru a modifica un tfs.visualstudio.com/), aceasta fiind folosit în spatele scenei, fără ca noi să fim obligați test pot să facă asta foarte ușor. Bineînțeles, pentru facturare. să facem ceva. Toate rezultatele testelor funcționalități precum detectarea automată noastre, împreună cu diferiți performance a elementelor dinamice pe care o pagina le Până acum, un load test se putea face counters ne sunt puse la dispoziție. are sau parametrizarea diferiților parame- folosind soluțiile pe care Micosoft ni le trii este suportat out of the box. pune la dispoziție prin intermediul unui Care sunt caracteristicile principale? Pentru fiecare test de acest gen putem Load Test Ring. Acesta este format dintr-un Înainte să ne uităm peste diferite să avem diferite surse de date, precum o controller ce controlează testele – Load Test funcționalități care sunt suportate, vă bază de date, un CSV sau un fișier XML. Controller și unul sau mai mulți agenți pe propun să aruncăm o privire peste cele Se pot folosi destul de ușor testele scrise în care testele noastre rulează. O arhitectură mai importate opțiuni suportate în acest Selenium de exemplu. Fiecare test poate să care are la bază master-slave. Noua versiune moment. apeleze la rândul său alte teste, astfel putem să reutilizăm o mare parte din logica pe care o avem pentru testare. Până acuma am văzut cum se poate crea unul din testele care pot să fie folosite pentru load test. Cred că este momentul perfect să ne uităm ce ne permite un load test să facem.

Care sunt funcționalitățile de bază? Prima funcționalitate întâlnită în momentul în care scriem un load test este “thinking time”. Putem să definim diferite profile și intervale de timp prin care să simulăm un utilizator real. De exemplu putem ca după fiecare test să simulăm un delay de X secunde. Avem la îndemână 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 TODAY SOFTWARE MAGAZINE Load Test folosind Windows Azure

prin diferite moduri. Avem posibilitatea să rulăm un test de la Care este prețul? bun început cu același număr de useri sau să ne definim numă- În momentul de față acest serviciu este în faza de preview. rul de useri cu cât să crească la fiecare pas. Bineînțeles, de cele Fiecare utilizator are lunar 2000 de minute virtuale pe care le poate mai multe ori este nevoie să rulăm diferite scenarii în același timp. folosi pentru load teste. În momentul de față nu există prețurile Din această cauză, avem posibilitatea nu doar să specificăm testele finale. Dacă aveți nevoie de mai multe puncte pentruload teste nu pe care dorim să le rulăm și în ce proporție, cât și modul în care ezitați să intrați în programul de early adoption fără costuri supli- aceste teste să ruleze. De exemplu, putem să specificăm de câte ori mentare. O să aveți acces la 200.000 de minute virtuale în fiecare fiecare test trebuie să ruleze într-un anumit interval de timp sau lună pe care le puteți folosi în voie. Acceptarea unui request de care este numărul de useri care trebuie să ruleze un anumit test în acest fel ia foarte puțin (în cazul meu a fost sub 6 ore). fiecare moment cândload test-ul rulează. Prima dată când am auzit de minute virtuale m-am întrebat Putem să simulăm diferite browsere pe care clienții le au și ce sunt acestea. Un minut virtual este egal cu durata load test-ului diferite tipuri de conexiuni. Dar ceea ce mi se pare cel mai intere- înmulțit cu numărul de useri. sant este posibilitatea de a adăuga și a accesa nu doar performance Odată ce am rulat testele vom avea acces la toate rezultatele counters de pe clienți cât și de pe serverele pe care aplicația noas- incluzând performance counters, testele căzute, mesaje de eroare tră rulează. În acest mod putem să monitorizăm și să vizualizăm și diferite diagrame. Toate rezultatele pot să fie exportate într-un counteri atât de pe clienți cât și de pe server. Excel care va conține în mod automat diagrame perfecte pentru management și clienți. Cum să rulăm un load test în cloud? Până în acest moment am văzut care sunt principalele opțiuni pe care le avem la dispoziție pentru un load test. Dar încă nu am văzut cum putem să rulăm 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ă selectăm “Run tests using Visual Studio Team Foundation Service”. Da, doar atât este nevoie să facem pentru a putea rula testul pe cloud. Bineînțeles trebuie să fim logați în Visual Studio cu un cont ce este legat la Visual Studio Team Foundation Service.

Vă invit să încercați noul serviciu din cloud pentru load test. Eu am fost surprins plăcut de acest serviciu și cred că o să ne ușureze munca.

38 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE programare

Programare Funcțională în Haskell (IV)

a finalul articolului trecut reușisem să obținem o aplicație simplă ce permitea căutarea unor informații despre persoane în trei tabele (reprezentate ca liste de perechi). Vom Lprezenta în continuare codul cu care am terminat articolul trecut. Începem cu un set de extensii ale compila- Cu acest cod putem căuta în fiecare tabelă torului ce ne vor permite să fim mai expresivi. informații folosind un API comun:

Mihai Maruseac {-# LANGUAGE MultiParamTypeClasses #-} [email protected] {-# LANGUAGE FunctionalDependencies #-} *Main> search „Ion” nameAge {-# LANGUAGE TypeSynonymInstances #-} Nothing {-# LANGUAGE FlexibleInstances #-} IxNovation @ IXIA *Main> search „Mihai” nameAge membru ROSEdu, ARIA Continuăm cu definițiile tipurilor de date: Just 25 *Main> search „Mihai” nameAddress Just „a random address” type Name = String type Age = Int *Main> search „Gabriela” nameAddress type Address = String Nothing type PhoneNumber = Integer *Main> search „Ionela” namePhone newtype NameAgeTable = NAgT [(Name, Age)] deriv- Nothing ing Show newtype NameAddressTable = NAdT [(Name, Address)] *Main> search „Mihai” namePhone deriving Show Just 24828542 newtype NamePhoneTable = NPT [(Name, PhoneNum- ber)] deriving Show Aici ne-am oprit data trecută. Astăzi ne Ne amintim că deriving Show îi spune vom ocupa de modul în care putem obține compilatorului să definească automat câte o informații din toate tabelele (vom simula o metodă show pentru a putea converti tipul de operație de join). Vom scrie o funcție getInfo date la String pentru fiecare tip de date. care ne va întoarce vârsta, adresa și numărul Populăm cele trei tabele cu valori de test: de telefon pentru persoanele care au toate valorile trecute în baza de date (sau Nothing nameAge = NAgT [(„Ana”, 24), („Gabriela”, 21), („Mihai”, 25), („Radu”, 24)] altfel). Implementarea la care ne gândim ar fi: nameAddress = NAdT [(„Mihai”, „a random ad- dress”), („Ion”, „another address”)] namePhone = NPT [(„Ana”, 2472788), („Mihai”, getInfo1 name = 24828542)] case search name nameAge of Just age -> case search name nameAddress of Just address -> case search name namePhone of Definim o clasă pentru căutarea după Just phone -> Just (age, address, phone) Nothing -> Nothing nume în aceste tabele și înrolăm cele 3 tipuri Nothing -> Nothing la aceasta. Spre deosebire de deriving, aici Nothing -> Nothing va trebui să definim noi metoda. Vom folosi funcția predefinită lookup pentru a căuta Observați efectul de cascadă al teste- într-o listă de perechi. lor: pentru fiecare căutare nouă trebuie să ne deplasăm 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 getInfo2 name = do age <- search name nameAge instance SearchableByName NameAddressTable Ad- address <- search name nameAddress dress where phone <- search name namePhone search name (NAdT l) = lookup name l return (age, address, phone) instance SearchableByName NamePhoneTable Phone- Number where Pare un stil imperativ și la prima vedere search name (NPT l) = lookup name l testele de Nothing lipsesc. De fapt, codul este

www.todaysoftmag.ro | nr. 14/August, 2013 39 programare TODAY SOFTWARE MAGAZINE Programare Funcțională în Haskell (IV)

în continuare pur funcțional doar că aspec- programmable semicolon. De fapt, totul se Mergem la clasa care ne interesează, tul declarativ este mult mai evident: se pune bazează pe o anumită clasă de tipuri, una din numită Monad. Tipurile de date listă, accentul doar pe partea esențială a codului, setul celor care reprezintă șabloane de pro- Maybe, Either sunt deja înrolate în această partea de boilerplate (codul pe care ar trebui gramare funcțională. clasă. să-l scrii în mod repetat înainte de a putea Vom începe prin a reaminti clasa class Monad m where scrie cod util – în cazul nostru codul de Functor pe care am prezentat-o în articolul (>>=) :: m a -> (a -> m b) -> m b (>>) :: m a -> m b -> m b testat dacă o valoare este Nothing și întors trecut. return :: a -> m a Nothing înapoi) este ascunsă. class Functor f where De fapt, mai sus avem mult zahăr sin- fmap :: (a -> b) -> f a -> f b Observați că return este o funcție, nu tactic. Codul din getInfo2 este rescris de este un cuvânt cheie al limbajului. Singurul compilator ca: Dacă mai țineți minte, clasa a fost intro- lui scop este să ridice o valoare normală la dusă pentru a putea folosi fmap – operație contextul computațional necesar. Pentru getInfo3 name = search name nameAge >>= \age -> similară map – pentru elemente ale altor Maybe, return nu este altceva decât con- search name nameAddress >>= \address -> search name namePhone >>= \phone -> tipuri. Pentru liste fmap este exact map. structorul Just. Just (age, address, phone) Cealaltă funcție este mai importantă. Instance Functor [a] where fmap = map Operatorul >>= pronunțat bind realizează Observați că de fapt avem de-a face cu Este evident că vom putea folosi fmap un lucru pe care nu l-am putea face cu fmap: o compoziție de funcții similară unei benzi pentru arbori, stive, grafuri, etc. Practic, imaginați-vă că avem o funcție care primește de asamblare. Operatorul >>= ia rezultatul putem folosi analogia unui container: fmap o valoare și întoarce un rezultat într-un con- unei funcții și-l trimite funcției următoare. aplică o funcție pentru toate elementele text (de exemplu o funcție care primește o Modul în care am scris codul în TODO este dintr-un container și le întoarce împache- valoare și întoarce o listă de valori). Dacă am demonstrativ pentru denumirea de pro- tate într-un container de aceeași formă. Dar, face fmap cu această funcție vom obține un grammable semicolon oferită operatorului îl putem folosi și pentru funcții: context de contexte (listă de liste de valori) >>=: funcționează ca ; din limbajele impera- deci avem nevoie de o operație suplimentară *Main Control.Applicative> fmap (+1) (const 3) tive doar că are o semantică asociată. Dacă $ 5 (în cazul listelor, concat). Operatorul >> în limbajele imperative ; era doar pentru a 4 este un caz particular al lui >>= (deci definit *Main Control.Applicative> :t fmap (+1) fst separa instrucțiuni, >>= poate încorpora fmap (+1) fst :: Num b => (b, b1) -> b în termenii lui) care folosește doar pentru *Main Control.Applicative> fmap (+1) fst $ (2, diverse logici în spate. În cazul nostru tes- 5) înlănțuirea efectelor, nu transmite rezultatul tează de Nothing și întoarce Nothing dacă 3 unei expresii mai departe. *Main Control.Applicative> :t fmap show fst este cazul. fmap show fst :: Show a => (a, b) -> String Și pentru monade există un set de 4 *Main Control.Applicative> :t fmap show fst De asemenea, observați că return nu (2,3) legi ce trebuiesc satisfăcute dar nu vom fmap show fst (2,3) :: String are semnificația luireturn din C. De fapt, *Main Control.Applicative> fmap show fst (2,3) insista asupra lor. De fapt, cunoscând doar în getInfo2 puteți înlocui return cu Just „2” definițiile pentru Functor și Monad și sau viceversa și veți obține exact același Analogia eșuează. Putem privi f din clasa tipurile esențiale din Haskell putem scrie comportament. Functor ca pe un context computațional. destul de mult cod fără a avea nevoie de mai Testăm întâi codul scris în toate varian- Operația fmap va modifica acest context. multe noțiuni din teoria categoriilor. Dar, tele lui De fapt, dacă ne amintim că funcțiile sunt în dacă sunteti curioși, vă recomand să citiți forma curry, tipul ne spune că fmap ridică Typeclassopedia1 al lui Brent Yorgey pentru *Main> getInfo1 „Mihai” Just (25,”a random address”,24828542) o funcție normală la nivelul unui context a vedea ce alte șabloane din programarea *Main> getInfo2 „Mihai” Just (25,”a random address”,24828542) computațional/container. funcțională mai pot fi capturate prin inter- *Main> getInfo3 „Mihai” Just (25,”a random address”,24828542) Nu orice tip de date suportă o instanță mediul claselor de tipuri. *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 întrucât este destul de difi- tea magică din spate, cea din limbajul de cil de întâlnit in practică un tip care să nu le 1 http://www.haskell.org/haskellwiki/Typeclassopedia programare care ne permite ca >>= să fie respecte.

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 faţa altor alternative ca soluţie 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 Cum se traduce aceasta în limbaj Azure? Dragoș Andronic Se dădea o arhitectură „clasică” de web: Avem nevoie de un cel puţin un WebRole [email protected] un portal dezvoltat în ASP.net MVC (3 şi 4) – un web role este o maşină virtuală, sau o CTO având în spate o bază de date ce rula pe MS suită de maşini virtuale (în cazul scalarii) ce @ TXTFeedback SQL server ascunsă de Entity Framework. găzduieşte un website (sau mai multe). Într-un cuvânt un WebRole e un ser- ver web. Traficul web direcţionat către un WebRole va fi automat împărţit (load balanced) între toate maşinile virtuale ce alcătuiesc WebRole-ul – în felul acesta se realizează scalarea – avem nevoie să servim mai multe request-uri? Mai adăugăm maşini în WebRole. Restricţia în cadrul unui WebRole e ca toate maşinile virtuale din componenţă să fie „identice” în configuraţie – dacă am început Aceasta arhitectură trebuia pregati- WebRole-ul cu o maşină cu o configuraţie tată de „scalare” – trecută pe un sistem ce modestă (A) vom putea scala doar adăugând permitea deservirea unui număr mare de mai multe maşini cu aceeaşi configuraţie A. request-uri. Cum configuraţia maşinilor din Azure După ce am analizat mai multe opţiuni va afecta direct costurile de hosting un prim de upgrade a arhitecturii (discursul logic pas important este să analizăm ce configu- poate fi revăzut în articolul precedent), raţie este necesară şi suficientă pentru a rula ne-am decis asupra SQL Azure şi Windows website-ul/aplicaţia noastră fără probleme, Azure ca platforma de migrare. urmând ca apoi să scalăm sistemul adăugând maşini cu aceeaşi configuraţie (şi guideline – Migrare web portalul găsiţi configuraţia minimă şi scalaţi orizontal Windows Azure ne pune la dispoziţie o – în felul acesta aveţi mai multă flexibilitate multitudine de servicii şi facilitaţi (de exem- şi optimizaţi costurile). plu service bus, caching, mobile services etc.), Analiza noastră va ţine cont de docu- însă accesul la aceste servicii ar afecta direct mentaţia de pe MSDN1, caracteristicile arhitectura sistemului nostru. proiectului nostru (dacă am optimizat pen- Dar în cazul nostru, nu dorim să schim- tru mai multe procesoare, dacă suntem RAM băm arhitectura ci doar să migrăm unu la intensive, dacă ne dorim CPU dedicate sau unu (în măsura posibilităţilor) arhitectura ne descurcăm 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 facilităţile oferite de cu diverse configuraţii – în felul acesta vom Azure. putea decide în cunoştinţă de cauză. Aveam de migrat un portal alcătuit din După ce am ales configuraţia pentru două website-uri de front-end și o familie de WebRole, suntem pregătiţi de a crea proiec- directoare virtuale ce conţin servicii. tul de Azure şi WebRole-ul. 1 http://msdn.microsoft.com/en-us/library/win- dowsazure/hh824677.aspx www.todaysoftmag.ro | nr. 14/August, 2013 41 programare TODAY SOFTWARE MAGAZINE Migrare website MVC 3 și DB în Azure (III)

Creare proiect Azure Microsoft ne-a făcut viaţa mai uşoară integrând tot ce înseamnă Azure direct în Visual Studio. Presupunând că folosim Visual Studio 2012 avem nevoie de SDK-ul Azure2 şi suntem gata de pornire. Deschidem soluţia ce conţine proiectul/proiectele nostre şi adăugăm un proiect de tip Windows Azure Cloud Service

Ultimul pas este publicarea WebRole-ului pe platforma Azure Pentru că vom adăuga proiectele deja existente în WebRole , adică crearea efectivă de maşini virtuale şi transferarea codului vom lăsa proiectul de cloud service gol pe fiecare din aceste maşini. Din nou Microsoft a făcut totul şu or pentru noi (poate prea uşor) şi din Visual Studio avem opțiunea de Publish pe proiectul de tip Cloud Service. Wizard-ul de publicare ne va ajuta să alegem şi să ne creăm 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.

Note finale – migrare web portal urmând să adăugăm proiectele în WebRole direct din Solution Tooling-ul la dispoziţia noastă este excelent şi Microsoft a rea- Explorer lizat o interfaţă de management extrem de uşor de înţeles şi folosit pentru Azure. Cu toate acestea e aproape sigur că vă veţi lovi de o grămadă de obstacole în momentul migrării (particulare arhitecturii/con- textului vostru). De asemenea mai sunt încă multe întrebări la care nu am răspuns (ş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”) aşa că dacă doriţi să aflaţi mai multe detalii După ce am adăugat primul proiect în WebRole pe următoarele sau aveţi întrebări specifice, mă puteţi contacta la dragoş(at)txt- le vom adăuga modificând direct şfi ierul de ServiceDefinitions. feedback.net Acest fişier de configurare va descrie structura de website-uri și directoare virtuale de pe fiecare maşină aşa că în cadrul său vom Note finale – migrare website MVC 3 + DB în Azure include: Migrarea în Azure nu a fost fără probleme, însă acum la trei • Pentru fiecarewebsite vom adăuga o intrare de tip Site – avem luni din momentul migrării putem spune că suntem deplini satis- nevoie de un nume unic pentru fiecarewebsite şi de specificarea făcuţi de rezultate (şi de return on investment). unui endpoint – dacă nu dorim nimic special vom lăsa endpoint- Majoritatea dificultăţilor 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 configuraţie ai nevoie? VirtualApplication. Cum un director virtual nu poate exista MSDN, traing-urile de pe Pluralsight, stackoverflowau ajutat, decât în cadrul unui website, fie punem directoare virtuale însă de departe cel mai folositor au fost discuţiile cu specialişti 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 creăm un website gol ce îl folosim doar Mulţumim cu această ocazie lui Radu Vunvulea (iQuest) şi lui pentru a găzdui toate directoarele virtuale. Noi am ales să creăm Zoli Herczeg (Microsoft) care şi-au găsit timp în program să stea un website gol ca şi placeholder de vorbă cu noi şi să ne răspundă întrebărilor.

Într-un final vom ajunge la o configuraţie de tipul acesta: 2 http://www.windowsazure.com/en-us/downloads/

42 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE arhitectură

Design pattern-ul MVVM

rice programator încearcă să fie cât mai ordonat atunci când scrie cod. Fiecare echipă își organizează proiectul în așa fel încât acesta să fie cât mai ușor de întreținut și să poată fi înțeles cu ușurință de membrii noi ai echipei. Această practică poate fi dato- ratăO ș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ă. Andrei Moldovan Totuși este important ca programatorii să fie la curent cu noile design pattern-uri pentru a [email protected] putea profita la maxim de avantajele oferite de acestea.

Software Developer @ Business Logic Systems Ltd. Model-View-Viewmodel (MVVM) este la fel ca și în cazul clasic se referă la partea un design pattern folosit în ingineria software vizuală care va fi afișată pe interfața grafică, care a fost introdus prima oară de către cum ar fi butoanele, ferestrele, graficele și alte Microsoft ca o metodă de particularizare a controale. Acestea nu conțin partea de logică modelului de prezentare introdus de Martin business. Marele avantaj în acest caz este că Fowler. De fapt se pare că Microsoft folosea un designer poate să se ocupe de partea gra- MVVM pentru proiectele dezvoltate intern, fică a aplicației lucrând doar cuview-ul , în precum Microsoft Expression Blend, pe când timp ce logica din spate rămâne neafectată. nucleul platformei WPF era în construcție. ViewModel-urile reprezintă niște modele Bazat în mare parte pe modelul Model-View- pentru view-uri, mai precis acestea se referă Controller (MVC), acesta se adresează în la o abstractizare a view-urilor care servesc special dezvoltării interfeței cu utilizatorii a și la binding-ul datelor între view și model. platformelor moderne ((HTML5, Windows Pot fi privite și ca niște aspecte specializate Presentation Foundation, - WPF, și ale Controalelor din design pattern-ul MVC Silverlight), acolo unde există un dezvoltator (care acționează ca și data bindgins sau con- orientat special spre acest lucru, având sarcini verters) în așa fel încât să schimbe informația diferite de ale unui dezvoltator obișnuit care din formatul modelului în formatul view- se ocupă în general de logica business și de ului și să paseze comenzi din view în model. dezvoltarea interacțiunii cu serverul. ViewModel-urile expun proprietățile publice, Ca structură, acesta este alcatuit din trei comenzile și abstractizările și au fost asemă- părți esențiale ce pot fi deduse și din denu- nate cu o stare conceptuală a datelor, spre mirea design pattern-ului: un Model, un View depsebire de starea reală a datelor din model. și un ViewModel. Această structură sea- Există discuții în ceea ce privește clasa din mană cu cea a MVC-ului, dar oferă în plus spatele view-ului. Majoritatea specialiștilor ușurința utilizării XAML-ului și a Windows susțin că aceasta ar trebui să conțină doar Presentation Foundation, prin cuplarea date- metoda InitializeComponent() în cazul lor cât mai aproape de Model folosind XAML, WPF și Silverlight, însă în anumite cazuri nu View Model și orice verificare de date a se merită mutarea unor metode în viewmodel. nivelului Business pentru a valida datele îna- View-ul comunică doar cu ViewModel-ul, intea afișării acestora pe interfață.Modelul în timp ce ViewModel-ul este privit ca un se referă la datele efectiv cu care se lucrează punct intermediar între View și Model. dar și la nivelul de acces la aceste date. Spre De asemenea, Modelul este singurul care exemplu într-un model ar putea fi accesate interacționează cu baza de date. Acest model obiecte care citesc din baza de date informații are sens în practică doar dacă se folosește în legate de o anumită persoană. View-urile, combinație cu o bază de date. În caz contrar

www.todaysoftmag.ro | nr. 14/August, 2013 43 arhitectură TODAY SOFTWARE MAGAZINE Design pattern-ul MVVM

obiectele de date precum entitățile din model în viewmodel și pentru a salva un poate să înțeleagă câteva linii de cod , chiar EDMX și Linq nu au logică în acest context. produs. Acestea sunt de tipul ICommand și dacă sunt scrise dezorganizat. Totuși, pe O diagramă a acestui design pattern poate și au o sintaxă de tipul : măsură ce numărul de linii de cod dintr- fi observată și in figura de mai jos. un program crește, crește și numărul public ICommand SaveProductCommand{ Alte două funcționalități care fac ca get{ funcționalităților. if (_saveProductCommand == null) { acesta să fie atât de des folosit sunt data _saveProductCommand = new RelayCommand( Pe lângă dezavantajele amintite mai sus, param => SaveProduct(), template-urile și resursele de sistem. param => (CurrentProduct != ar mai fi și faptul că în unele cazuri poate null)); } Template-urile aplică View-uri asupra fi dificilă proiectarea viewmodel-ului în așa return _saveProductCommand; obiectelor unui ViewModel. Programatorii } fel încât să se obțină gradul de generali- pot să le declare în XAML și să lase resur- } tate dorit și de asemenea debug-ul pentru sele de sistem să localizeze în mod automat Tot aici apare și clasa RelayCommand, data binding este mai greu de realizat față iar apoi să aplice acele template-uri la esențială pentru ca MVVM să funcționeze. de metodele clasice care foloseau code runtime. Aceasta conține o comandă ce va fi execu- behind. Întrucât aceast design pattern poate tată de alte clase pentru a rula cod în clasa În concluzie MVVM oferă anumite fi destul de greu de implementat, au fost de bază prin invocarea de delegates. avantaje precum separarea view-ului de create câteva platforme care să ajute pro- View-ul este partea care definește modul logica business și ușurința în scrierea teste- gramatorii în implementarea lui cum ar în care va arăta aplicația. De asemenea se lor unitare, însă programatorii trebuie să fie fi MVVM Light sau Caliburn. Personal vor defini două DataTemplate-uri, unul atenți dacă acest design pattern se pretează îl recomand pe cel din urmă deoarece pentru model și unul pentru viewmodel. sau nu pentru proiectul lor. oferă avantajul recunoașterii automate a Pentru a porni aplicația mai trebuie view-ului de către viewmodel, nemaifiind adăugate următoarele linii de cod în App. necesară crearea unei clase ajutătoare care xaml.cs, care crează ViewModel-ul și aso- să facă acest lucru. ciază datacontext-ul ferestrei în viewmodel: Să luăm un exemplu simplu cu o MainWindow app = new MainWindow(); aplicație care afișează dintr-o bază de date ProductViewModel viewModel = informații despre produse : nume, preț new ProductViewModel(); app.DataContext = viewModel; unitar și id. În model va trebui să avem app.Show(); partea de accesare a datelor. Modul în Și totuși când ar trebui să folosim acest care acestea vor fi accesate rămâne la lati- model? Deși structura lui este una logică tudinea programatorului. Această clasă va și oferă organizare în cod, acesta nu se implementa INotifyPropertyChanged și pretează pentru orice fel de proiect. Dacă va conține cele 3 proprietăți, fiecare având avem de-a face cu un proiect unde nu există pe setter OnPropertyChanged(„Propriet o interfață grafică prea complexă nu se prea ate”) pentru a semnaliza modificarea valo- justifică folosirea MVVM, codul putând fi rii proprietății. Trebuie acordată atenție în scris chiar și în code behind. De asemenea mod special numelui proprietății deoarece unii programatori nu recomandă folosirea acesta se transmite ca și string. acestui pattern dacă nu se dorește realizarea ViewModel-ul va conține toată partea de unit-teste. Întrucât ușurința în scrierea de care are nevoie utilizatorul pentru a testelor este unul din avantajele acestuia, interacționa cu aplicația. Aici se pot pune este de preferat ca acesta să fie folosit doar sortările, ștergerile din listă sau orice alte împreună cu acestea. Este total neproduc- operațiuni necesare. În cazul de față doar tivă și deci nu este recomandată folosirea 2 comenzi, GetProduct și SaveProduct ce unui design pattern într-o aplicație simplă vor fi folosite pentru a aduce un obiect din „Hello World!”. Orice dezvoltator software

44 nr. 14/August, 2013 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE management

Complicat sau complex

- Îi complex! interdependente. Conexiunile sunt sofis- - Ba nu e complex! ticate, avem nevoie de multă atenție în - No, ba îi, că avem 12 sisteme de inter- determinarea implicațiilor, avem nevoie conectat, dezvoltate pe platforme diferite. de expertiză tehnică considerabilă pentru Plus că folosim o tehnologie nouă pentru a putea identifica toate activitatile necesare noi... și a planifica corect un astfel de proiect. Simona Bonghez, Ph.D. - Deci e un proiect complicat, nu Corect? [email protected] complex. - Exact. Păi și asta nu înseamnă și Speaker, trainer şi consultant în Mișu se uită total nedumerit la Gogu. complex? managementul proiectelor, Cumpăni preț de o clipă dacă acesta îl ia - Nu, doar ce ți-am spus că asta Owner al Colors in Projects peste picior, dar văzând figura serioasă, se înseamnă complicat. Stai jos și ascultă! limită la a spune, în felul lui molcom: Mișu se așeza imediat și ridica ochii - Zău, măi Gogule, te iei de cuvinte, spre Gogu, era numai ochi și urechi. complicat, complex, tot aia îi... - Atributul de complex este dat de Gogu se luă cu mâinile de cap, cum caracterul de impredictibilitate și este adică să fie tot aia?! Se uită în jur căutând determinat de comportamentul uman. Un ajutor, dar Șefu’ nu era în zonă. „Cu ce-oi proiect complex are – prin definitie – părti fi greșit, Doamne, de trebuie să le lămuresc și componente care pot interacționa impre- eu pe toate?! O să-mi trec în fișa postu- vizibil. Pricepi? lui : Mama răniților, dă explicații la toți Remarca privirea deloc inteligenta a lui mocofanii, în fiecare zi, în timpul progra- Mișu așa că se redresa imediat: mului și peste, ca fraieru’, fără plată și fără - Uite niăte exemple: lansarea unei recunoașterea meritelor.” Oftă din toți rachete spre lună este un proiect complicat, rărunchii și se aruncă în explicații: realizarea unui braț de robot care să poata - Nu e tot aia, Mișule, și e bine să cla- executa operații pe creier, alt exemplu de rificam. Că de-aia facem management de proiect complicat. Creșterea și educarea proiect ca să le știm pe astea și să putem unui copil – în schimb – este un demers acționa în consecință, să prevenim apariția complex. Acu’ pricepi? problemelor. În cazul proiectelor discutăm Privirea lui Mișu începea să capete stră- de doi termeni diferiți: complicat și complex. lucire. Da’ tot nu pricepe, gândi Gogu. Cum Atributul de complicat îl primesc proiec- să-i explic eu ăstuia mai pe înțelesul lui? tele în care avem un număr mare de părți Mișu dădu glas nedumeririlor: sau componente tehnice interconectate, - 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 ce urmare. tehnologia, interfețele..., zicem că ăsta e proiect complicat. Da’ cu - Ok, păi vă spun un banc. Complicat versus complex, nu-i complexu’ nu pricep. Ce-avem noi de-a face cu educația copilu- așa?! Uite: un manager de proiect se plimba – își făcea siesta după lui?! Asta e ca nuca-n perete – decretă el și se lăsă satisfăcut pe masa de prânz – pe plajă. Cum mergea el adâncit în gânduri – pla- spate. O mișcare total greșită deoarece scaunul cedă neașteptat sub nifica în minte următoarea întâlnire cu echipa de proiect – dădu greutatea lui Mișu, iar acesta se trezi întins pe spate pe podea, cu cu piciorul în ceva și privind mai atent își dădu seama că e o lampă picioarele în aer. Hohotele de râs ale lui Gogu fură declanșate nu veche. Ei, că n-oi fi eu ca PM-ul din banc să găsesc duhul din atât de poziția hilară cât de grimasa de surpriză totală de pe fața lampă, își zise managerul de proiect, dar se aplecă totuși să ridice lui Mișu. Îi întinse mâna și îl ridică prietenește. obiectul. Și mare îi fu surpriza când, într-adevăr, după ce șterse - Deh, vezi, dacă mă contrazici? Am dat exemplul extrem cu lampa de nisip, îi apăru în față brusc, cu o pocnitură surdă, un educația doar ca să faci tu un declic mintal, dar văd că te-am dat duh. Mă rog, era o arătare ciudată, ca un nor cu forme umane, ca pe spate! La propriu! Ha-ha... Voiam să subliniez că, spre deose- în desene animate. Care îi vorbi: Omule, eu sunt duhul din lampă, bire de un proiect complicat, în care granițele proiectului pot fi bla-bla-bla, probabil știi povestea, zi dorința. Hmm, managerul de clar delimitate, în care poți defini ce este în obiectivele proiectului proiect era obișnuit să se folosească de orice ocazie, așa că nu stătu și ce cade în afara obiectivelor acestuia, într-un proiect complex mult pe gânduri și-i spuse: Știi, Duhule, eu am un proiect pentru granițele pot deveni permeabile, e posibil ca – pe parcursul proiec- care trebuie să călătoresc permanent între România și Kuwait. Iar tului – să le redefinești, de mai multe ori, în funcție de implicațiile zborurile sunt în special zboruri de noapte, mă seacă de puteri, mediului în care se desfășoară proiectul. Uite un exemplu mai nemaivorbind despre controlul de securitate, așteptarea în aero- concret: un proiect de schimbare organizațională, în care lucrurile port, recuperarea bagajelor... Într-un cuvânt, mi-ar plăcea să am nu sunt complicate deloc, dar în care oamenii reacționează dife- la dispoziție o autostradă suspendată, de-aici și pănâ în Kuwait. rit, fiecare în funcție de așteptările și de temerile sale. Pot exista Duhul se gândi puțin – probabil vizualiza harta - apoi zise: Măi, piedici incredibile în realizarea proiectului, determinate doar de ce-mi ceri tu e complicat rău, distanța e enormă, trecem peste rezistența la schimbare a personalului din companie. Am văzut continente, avem și mări de traversat, nimeni nu ar putea face o într-o lucrare care trata acest subiect o comparație foarte tare: avi- autostradă suspendată pe o asemenea distanță. Altă dorință n-ai? onul era dat exemplu de sistem complicat datorita multitudinii Ușor nemulțumit de calitatea duhului întâlnit, managerul nostr de sale de componente, mecanice și eletronice, iar o companie aflată proiect își mai încercă norocul cu o a doua dorință: Bine, Duhule, în fața unei posibile restructurări era dată ca exemplu de sistem ce zici de asta: îmi doresc pe proiectul pe care lucrez, cele șase complex. Și fii atent ce mai ziceau: oamenii încep să reacționeze organizații implicate să conlucreze, să stabilească toate cerințele chiar și la rumoarea unei posibile restructurări, încep să discute, se împreună, să se înțeleagă asupra lor și să nu le schimbe până la formează bisericuțe, apar primele puncte de vedere, sistemul deja sfârșitul proiectului. Duhul căzu puțin pe gânduri, apoi îl întrebă: e în schimbare. Pe când avionul, dacă apare mecanicul cu trusa de Auzi, și câte benzi să aibă autostrada aia? scule, cu intenția clară de a interveni în angrenajul avionului, nu va avea nici o reacție. Tare, nu? Remarcă imediat că se lăsase dus de valul explicațiilor; în jurul lor mai apăruseră câțiva colegi, atrași probabil de căzătura spec- taculoasă a lui Mișu, care ascultau acum cu interes exemplele lui Gogu. Întrebările începură să curgă ca grindina, fiecare dintre ei încercând să catalogheze proiectul în care lucra: era cumva com- plicat 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 răniților, mormăi 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 neobișnuită din birou, își făcu apariția și Șefu’. - Ce-i aici, fraților? Se împarte ceva gratuit? Gogu dădu să replice, dar se stăpâni; interesul lui era altul acum, așa că lansă provocarea către Șefu’: - Discutam despre proiecte complicate versus proiecte com- plexe. Ne ajuți cu vreun exemplu deștept? - Ah, frumos subiect, se entuzismă Șefu’. Așa, ia dă-ți tu ochii pe spate – gândi Gogu, dar nici prin cap nu-i dădu să-l întrerupă. Șefu’ își lăsă capul puțin într-o parte. Semn de mare concentrare – își continuă Gogu monologul interior, dar era foarte curios de

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

sponsori

Comunicăm mai simplu direct prin SMS. Propune un titlu de articol pentru numărul următor powered by sau trimite-ne sugestiile tale. SMS 0371700018 număr cu tarif normal