Today Software Magazine N15/2013

51
TO DAY SOFTWARE Nr. 15 • Septembrie 2013 • www.todaysoftmag.ro • www.todaysoftmag.com MAGAZINE Lansarea Gemini Foundry MVVM in Windows Phone 8 Clientul iOS Today Software Magazine Cum am facut primul meu Azure Mobile Service Business Networking de la offline la online pe platforma Business Days Debugging în producție Clustering for High-Dimensional Data Sets Empatia – noua competență Comparație între dezvoltarea aplicatților native și cele hibrid Lean Six Sigma și managementul inovației SAP Conference Echipa Trilulilu din Cluj a lansat un serviciu național revoluționar Model Based Testing fără presupuneri

description

Today Software Magazine N15/2013

Transcript of Today Software Magazine N15/2013

Page 1: Today Software Magazine N15/2013

TSM T O D A YS O F T WA R E

Nr. 15 • Septembrie 2013 • www.todaysoftmag.ro • www.todaysoftmag.com

M AG A Z I N E

Lansarea Gemini Foundry

MVVM in Windows Phone 8Clientul iOS Today Software Magazine

Cum am facut primul meu Azure Mobile Service

Business Networking de la offline la online pe platforma Business Days

Debugging în producție

Clustering for High-Dimensional Data Sets

Empatia – noua competență

Comparație între dezvoltarea aplicatților native și cele hibrid

Lean Six Sigma și managementul inovației

SAP Conference

Echipa Trilulilu din Cluj a lansat un serviciu național revoluționar

Model Based Testing fără presupuneri

Page 2: Today Software Magazine N15/2013
Page 3: Today Software Magazine N15/2013

6TodaySoftMag aplicația TSM

pentru iPhone și iPadOvidiu Mățan

8Echipa Trilulilu din Cluj a

lansat un serviciu național revoluționar

Călin Biriș

9Favorites: de la CRM

la FRMVictor Miron

10Lansarea Gemini Foundry

Ovidiu Mățan

12SmartWeb Conference

Iunieta Sandu

13AGILE LEAN

EUROPE 2013Ana Maria Constantinescu

15Clientul

iOS Today Software Magazine

3Pillar Global Team

19MVVM în Windows Phone 8

Cosmin Stirbu

22Cum am facut primul meu

Azure Mobile ServiceFlorin Cardasim

24Test Driven Development și

design incrementalAlexandru Bolboaca și Adrian Bolboacă

27Clustering for High-Dimensional Data SetsLucian Brăescu

30SAPConference

Victor Ionescu

31Dezvoltarea aplicațiilor mobile: Între nativ și hibridCătălin Prata

35Debugging în producțieRadu Vunvulea

38Recenzia cărții: Silviu Dumitrescu

40Model Based Testing fără presupuneriTudor Cobâlaș

42TheOpen.com – susţinerea digitală a unui turneu de successBogdan Moscaliuc

44Business Networking de la offline la online pe platforma Business DaysOvidiu Mățan

47Lean Six Sigma șimanagementul inovaţieiMonica Petraru

49Empatia – noua competenţăAntonia Onaca

Page 4: Today Software Magazine N15/2013

4 nr. 15/Septembrie | www.todaysoftmag.ro

Îmi face mare plăcere să vă anunț că odată cu publicarea numărului 15 lansăm și prima aplicație TSM pentru dispozitive mobile. Este vorba despre reader-ul pentru iPhone/iPad și care este disponibil deja în Apple Store. A fost o experiență inedită să

creăm această aplicație. În doar două luni, colaborarea tehnică a două companii, 3Pillar Global și Gemini Solutions, a dus la realizarea unei aplicații finite care oferă un mod facil de a citi revista atunci când nu ești în fața calculatorului. În dorința de a oferi ceva mai bun comunității echipa a învestit multă pasiune și pricepere. Mulțumesc tuturor pentru sprijinul acordat iar în paginile revistei veți găsi două articole dedicate acestei aplicații. Vă invit totodată să o descărcați de pe site-ul revistei și să ne trimiteți părerile voastre !!!!

Pentru a păstra o concordanță cu lansarea aplicației TodaySoftMag, numărul 15 TSM a dedicat tema generală aplicațiilor mobile. De asemenea, pe lângă lansarea lunară de la Cluj a revistei, TSM va avea ocazia să se facă cunoscută și în București, în cadrul eveni-mentului Gemini Foundry. Alte evenimente inedite la care vă invităm să luați parte în luna septembrie sunt : SmartWeb Conference (București), SAP Conference (Cluj) și Cluj Business Days (Cluj). Fiecărui eveniment i-am dedicat un articol.

Ca de obicei, facem o scurtă inventariere a articolelor care se găsesc în acest număr.Începem cu Test Driven Development și design incremental care este o revizuire a modului în care se aplică TDD și ne propune soluții practice a designului aplicațiilor. Pattern-ul MVVM este aplicat pentru Windows Phone 8. Din aceeași sferă a aplicațiilor mobile menționăm titlurile: Clientul iOS Today Software Magazine, Comparație între dezvoltarea aplicatților native și cele hibrid, Favorites - de la CRM la FRM precum și Echipa Trilulilu din Cluj a lansat un serviciu național revoluționar. Celor ce vor să își amintească de geometria euclidiană și spații vă recomand să citiți: Clustering for High Dimensional Data Sets. Secțiunea de management conține Lean Six Sigma și manage-mentul inovaţiei, Empatia – noua competenţă și interviul despre Business Days.

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

Ovidiu MăţanFondator și CEO al Today Software Magazine

Ovidiu Măţan, [email protected]

Editor-in-chief Today Software Magazine

editorial

Page 5: Today Software Magazine N15/2013

5www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

Ovidiu Măţan, [email protected]

Editor-in-chief Today Software Magazine

Redacţia Today Software Magazine

Fondator / Editor în chief: Ovidiu Mățan [email protected]

Editor (startups și interviuri): Marius Mornea [email protected]

Graphic designer: Dan Hădărău [email protected]

Copyright/Corector: Emilia Toma [email protected]

Traducător: Roxana [email protected]

Reviewer: Tavi Bolog [email protected]

Reviewer: Adrian Lupei [email protected]

Produs de Today Software Solutions SRL

str. Plopilor, nr. 75/77Cluj-Napoca, Cluj, [email protected]

www.todaysoftmag.rowww.facebook.com/todaysoftmag

twitter.com/todaysoftmag

ISSN 2284 – 6352

Copyright Today Software Magazine

Reproducerea parțială sau totală a articolelordin revista Today Software Magazine

fără acordul redacției este strict interzisă.

www.todaysoftmag.rowww.todaysoftmag.com

Radu [email protected]

Senior Software Engineer@iQuest

Lista autorilor

Alexandru [email protected]

Agile Coach and Trainer, with a focus on technical practices@Mozaic Works

Adrian [email protected]

Programmer. Organizational and Technical Trainer and Coach@Mozaic Works

Monica Petraru [email protected]

Senior Business Analyst @ UNIQA Raiffeisen Software Service

Călin Biriș[email protected]

Marketing manager@ Zonga

Victor [email protected]

Co-fondator@ Favorites

Iunieta [email protected]

PR & Marketing Coordinator @ Evensys

3Pillar Global Team

@ 3Pillar Global

Cosmin [email protected]

iOS Software Developer@ Fortech

Florin Cardasim [email protected]

Head of Architecture &Analysis@ Endava Iași

Lucian Brăescu [email protected]

Software Developer @ Accesa

Cătălin [email protected]

Mobile Software Developer@ Fortech

Tudor Cobâlaș[email protected]

Business Developer@ XL Team

Bogdan [email protected]

Project Manager@ Endava

Antonia [email protected] aproape 10 ani trainer, psi-holog, consultant sub formă de antreprenor, intraprenor și antreprenor din nou

Horea Rațiu [email protected]

Director Departament SAP@ msg systems Romania

Page 6: Today Software Magazine N15/2013

6 nr. 15/Septembrie | www.todaysoftmag.ro

TodaySoftMag aplicația TSM pentru iPhone și iPad

lansare

S-a început cu câteva requirement-uri generale ale unui prim prototip, pentru ca la finalul celei de-a doua iterații, să aveam ceva funcțional. După care, direcția dorită a fost stabilită, și ne-am îndreptat rapid către produsul final. Am dorit să avem ceva simplu, practic și funcțional, iar în mai puțin de două luni aplicația era deja disponibilă pe AppStore. Principala carac-teristică a aplicației este posibilitatea de a vizualiza toate numerele TSM de până acum și de a citi fiecare articol din acestea. Dacă unul dintre articole nu este disponi-bil în format HTML pentru vizualizare, în special în numerele mai vechi ale revistei, am optat pentru soluția oferită de către issuu.com care funcționează acum și pe device-urile Apple și permite vizualizarea directă a fișierului pdf. Vizual, a trebuit să redefinim identitatea produsului pentru dispozitivele mobile, și doresc să remarc în acest sens, icoana aplicației precum și splashscreen-ul acesteia. Întregind această experiență, lista de reviste disponibile și animația selectării unui număr, au încer-cat să facă întreaga utilizare a aplicației cât mai naturală. Remarcăm de asemenea posibilitatea schimbării limbii, care reîn-carcă aplicația si toate articolele în limba selectată. O optimizare a acestui feature este redirectarea, în funcție de limba aleasă, către www.todaysoftmag.ro pentru limba română și către www.todaysoftmag.com pentru limba engleză.

Au fost și multe feature-uri care din păcate au fost scoase pe măsura ce produsul se maturiza. S-ar putea ca unele să va placă, așa că scrieți-ne, poate le reconsiderăm:

• infinite scroll - Inițial văzut ca o modalitate de aliniere cu alte produse similare cum ar fi clientul Engadget, s-a renunțat la el, deși tehnic funcționa foarte bine, pentru că, din punct de vedere al experienței utilizatorului, focusul era mutat practic pe animația și libertatea de a vedea rapid sute de

Am dezvoltat aplicația TSM pentru iPhone/iPad la initiativa lui Dan Suciu, Director of Engineering @3Pillar Global, de a colabora la scrierea acesteia și de a o publica în cele din urmă pe AppStore. Procesul de dezvoltare a fost unul

Agile în toate sensurile. Echipa a fost inițial formată din trei programatori iOS: Mădălina Miron, Daniela Bulgaru și Tudor Stânean, având-o project manager pe Gabriela Botiș. Ulterior, si-au adus contributia Robin Molnar pe partea de QA, iar pentru look&feel, colegii de la Gemini: Dan Hădărău și Marius Chincișan.

Ovidiu Măţan, [email protected]

Editor-in-chief Today Software Magazine

Page 7: Today Software Magazine N15/2013

7www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

TodaySoftMag aplicația TSM pentru iPhone și iPad

articole, pierzându-se în schimb un lucru esențial, și anume direcționarea cititoru-lui către ultimele articole publicate,• offline mode - cel mai important fea-

ture pe care a trebuit să nu îl includem deocamdată. Motivul este confuzia ce o poate crea utilizatorului. Aceasta este cauzat de faptul că articolele stocate pentru vizualizare offline erau doar arti-colele ce au fost citite până atunci. Dar din punct de vedere al folosirii se naște întrebarea: de ce aș vrea să recitesc un articol deja citit? Valoarea reală ar fi în schimb să pot citi tot timpul ultimul număr al revistei sau pe cele pe care doresc să le descarc. De asemenea, tre-buie să acordăm cititorului posibilitatea de a elibera spațiul folosit. Acest feature

este doar amânat, iar într-una dintre ver-siunile următoare, îl vom include într-o formă completă.

Arhitectura generală a sistemuluiAtât aplicația de iPhone cât și cea de

iPad utilizează același mecanism de comu-nicare cu serverul și anume REST folosind obiecte JSON. Am încercat să ținem totul într-o formă simplă, astfel încât avem doar trei tipuri de request-uri:

• issues - lista de reviste noi conside-rând ultimul număr diponibil pe client• articles - lista de articole dintr-un

anumit număr al revistei• author - detaliile despre un autor

Dacă vă întrebați cum este transmis articolul propriu-zis, acesta este descărcat direct în format HTML, oferind în acest fel, o mare libertate din punct de vedere al afișării conținutului. Practic, de la listarea în AppStore au fost adăugate comentariile Disquss, iar modul de afișare al articolelor ce nu sunt în format complet a fost schim-bat, în momentul de față redirectarea făcându-se direct la issuu.com

Ce urmează?Versiunea de Android, pe care o vom

dezvolta împreună cu echipa de Android din India a 3Pillar Global precum și supor-tul Gemini Solutions pentru partea de look&feel. În ceea ce privește aplicația TSM de iPhone/iPad, plănuim să avem release-uri ce vor conține îmbunătățiri graduale și bug fixing. Printre principalele noi feature-uri putem enumera:

1. Vizualizare poze articole full screen;2. Un help screen inițial ce conține

tips&tricks pentru dezvoltarea aplicației;3. Implementarea Apple notifications;4. Funcționalitatea de search;5. Includerea unei secțiuni separate

video, acestea fiind în momentul de față disponibile doar în cadrul articolelor;

6. Events planner - o mai buna organi-zare a evenimentelor din jurul fiecăruia.

Doresc să mulțumesc echipei de dez-voltare, pentru că am creat împreună o aplicație foarte practică și utilă în mai puțin de două luni. Am demonstrat cu această ocazie potențialul pe care industria de IT românească îl are în acest moment, și care poate fi folosit și în scopul suportului mici-lor afaceri locale.

Page 8: Today Software Magazine N15/2013

TODAY SOFTWARE MAGAZINE

8 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

business

Echipa Trilulilu din Cluj a lansat un serviciu național

revoluționar

Ecipa care a dezvoltat bine-cunoscuta platformă trilulilu.ro a lansat în octombrie 2012 serviciul de muzică Zonga. Acesta oferă utilizatorilor acces pe mobil, PC și tabletă la peste 19 milioane de melodii, prin intermediul platformei online zonga.ro și a unor aplicații dedicate de Android, iOS și desktop. Zonga revoluționează modul în care românii ascultă muzică oferindu-le o alternativă legală pirateriei și funcționalități ale serviciului care le simplifică viața:

• Sincronizarea muzicii, a playlisturi-lor și favoritelor între toate deviceurile și aplicațiile Zonga;• Actualizarea conținutului muzical în

timp real, odată cu apariția noilor lansări muzicale de pe piață;• Oferirea de recomandări personali-

zate de piese, albume și artiști în funcție de activitatea utilizatorului;• Secțiune socială unde se poate urmă-

rii activitatea muzicală a amicilor care folosesc Zonga;

Realizarea unui astfel de serviciu a durat peste 2 ani din stadiul de idee și până la lansarea oficială. În acest proiect sunt implicate cele mai importante case de discuri internaționale și locale, cât și operatorul de telefonie mobila Vodafone. Aceste parteneriate au ajutat ca proiectul să se poată realiza, să crească și să aibă o vizibilitate mai bună. Strategia de dezvol-tare a fost să se intre pe piață cu un serviciu bun și mai apoi să fie îmbunătățit continu în funcție de feedback-ul consumatorilor și a viziunii proiectului. După aproape un an din momentul lansării, toate aplicațiile au primit update-uri majore, mai stabile, mai rapide și mai ușor de folosit. În curând va fi lansată și aplicația pentru Windows Phone.

Provocările proiectului au fost de a aduce sub aceeași umbrelă conținutul legal al celor mai mari case de discuri într-un moment în care pirateria muzicală online este pe val, de a avea ca partener un ope-rator important de telefonie mobilă, de a dezvolta cele mai bune aplicații de muzică

din piață, de a lansa o ofertă incombatabilă și de a comunica cât mai țintit.

În 2013 Zonga a câștigat 5 premii pen-tru aplicațiile de muzică pe mobil, iar în acest moment se fac peste de 1milion de ascultări pe lună din aplicațiile Zonga.

Toate acestea au fost realizate de către echipa Trilulilu din Cluj, care arată în continuare că aici avem un centru IT important de unde se pot dezvolta servicii de nivel național sau internațional.

Modul în care ascultăm muzică s-a schimbat enorm în ultimii 15 ani. De la casetele și bine cunoscutele walkmanuri, la CD-urile audio sau cele cu mp3-uri, până la ipod-uri cu mii de piese. Astăzi, dacă ai o conexiune la internet și un telefon mobil, poți asculta milioane de melodii oriunde și oricând. Acest lucru se datorează evoluției online-ului și a smartphone-

urilor care au deschis un nou orizont către consum colaborativ.

Călin Biriș[email protected]

Marketing manager@ Zonga

Page 9: Today Software Magazine N15/2013

9www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

Favorites: de la CRM la FRM

startups

Favorites te ajută să ții legătura cu persoanele importante din viața ta. Acele persoane a căror contact îl marchezi la Favoriți în agenda telefonului. E vorba de patru categorii de persoane importante pentru un om: familie, prieteni, jumătate (soț, soție, iubit, iubită) și business (clienți, furnizori, parteneri).

Prin intermediul aplicației poți să îți setezi cât de des vrei să interacționezi cu favoriții tăi: zilnic, săptămânal sau lunar. Aplicația urmărește cât suni, trimiți mesaj sau te întâlnești cu un favorit. Dacă trece perioada cu a cărei frecvență vrei să interacționezi cu un favorit aplicația îți tri-mite o notificare prin care îți amintește să nu uiți să îi contactezi.

Tot în aplicație poți să vezi un isto-ric grafic al interacțiunilor cu acel favorit și câte un istoric al apelurilor telefonice, mesajelor și întâlnirilor. Întâlnirile au inte-grată și harta pentru a face lucrurile cât mai ușoare.

După primele folosiri ale aplicației uti-lizatorii au fost foarte încântați de faptul că mamele lor de exemplu îi laudă că le sună mai des și sunt și mai atenți cu ele. Alți uti-lizatori au fost extrem de entuziasmați de folosirea aplicației ca tool de networking. Și-au trecut în Favorites acele contacte din zona de business alături de care vor să dez-volte parteneriate durabile.

Din zona de business a și pornit idee aplicației. Tot mai multe companii își

dau seama de importanța folosirii unui soft de CRM (Customer Relationship Management). Prin Favorites vrem să adaptăm softurile de CRM la viața de zi cu zi și să îl scoatem din companii și să îl

punem în buzunarul oamenilor prin inter-mediul smatphonului lor.

Favorites poate fi downloadat gratuit din Google Play de la acest link https://play.google.com/store/apps/details?id=ro.customsoft.favorit.es. La căutare poate fi găsit cel mai ușor după favorit.es.

Următorii pași pentru Favorites sunt să implementăm feedback-ul de la utiliza-tori, să realizăm o versiune premium tot pe Android, după care să lansăm și versiunea de iPhone. Vom avea, de exemplu, în vii-torul apropiat opțiunea să poți fi notificat dacă trece o anumită perioadă fără să suni tu o anumită perioadă. Astfel se vor putea evita foarte ușor situațiile în care mama (sau orice favorit) îți reproșează că doar ea te sună.

Favorites este o aplicație compatibilă cu Android versiunea 2.2 și mai noi. Este com-patibilă atât cu telefoanele cu Android, cât și cu tabletele cu acest sistem de operare.

Aplicația este dezvoltată nativ pe plat-forma Google și folosește o bază de date pentru a pastră informațiile despre favoriți.

Anul acesta am pitch-uit la Startup Weekend Cluj ideea unei aplicații de mobil pe nume Favorites. La cinci luni de la eveniment am reușit să lansăm o primă versiune de Android a aplicației.

Victor [email protected]

Co-fondator@ Favorites

Page 10: Today Software Magazine N15/2013

10 nr. 15/Septembrie | www.todaysoftmag.ro

startups

Ce înseamnă startup-urile pentru Gemini Solutions din perspectiva colaboră-rii cu acestea?

Gemini Solutions are o lungă isto-rie lucrând cu startup-uri până acum din Silicon Valley. Din acest punct de vedere noi credem că înțelegem foarte bine cul-tura de startup. Chiar dacă startup-urile din România sunt un pic diferite de cele din US, în esență cultura și modul lor de lucru și de a pune problema este același.

Din acest punct de vedere Gemini Solutions pune mare preț pe oamenii cu inițiativă, antreprenorii, pe cultura de startup, simțindu-se întotdeauna atras de astfel de inițiative și dorește să încheie par-teneriate, de diverse feluri cu ele.

Cum vedeți evoluția corectă a unui startup pentru a deveni un succes?

Nu credem că are cineva o rețetă gene-ral valabilă pentru succesul unui startup. Sunt mulți factori care pot contribui la suc-ces: evident contează și ideea - dar nu atât de mult pe cât înclinăm la prima vedere să credem, contează fine tunning-ul idei - un proces complex care trebuie să consi-dere mulți factori precum publicul target, modalitățile de promovare, viralitate, eva-luarea corectă a nișei de piață adresate.

Evident nu în ultimul rând contează realizarea în sine a produsului, înțelegerea feedback-ului de la utilizatori și înglobarea

lui în produs, precum și direcțiile viitoare de dezvoltare spre care se merge.

Este important să înțelegem că o dată un produs „out in the wild” înțelegerea feedback-ului de la utilizatori și acționarea în consecință sunt un factor cheie în menținerea produsului în vederea publi-cului țintă.

Un alt factor care de obicei tinde să fie elaborat mai puțin decât este cazul este evaluarea corectă a potențialelor metode de monetizare. La ora actuală metodele „clasice” de monetizare (vânzarea aplicației contra cost, revenue din adds, etc.) tind să nu mai fie de actualitate ca sursă principală de revenue ci mai degrabă ca surse supli-mentare de venit.

Ce părere aveți despre piața de startup-uri din România până acum și dacă puteți să ne oferiți o previziune pentru următorii doi ani?

Credem și sperăm că piața de startup-uri din România va crește conside-rabil în următorii ani. Economic vorbind, România nu va mai putea mult timp să se vândă ca o țară cu forța de muncă ieftină - fie ea și în cazul sectoarelor unde este necesară înaltă calificare.

În aceste condiții următorul pas logic este să apară activități economice cu valoare adăugată mai mare. Aceasta evident se poate doar prin inovare, iar

Startup-urile încep să fie un subiect la modă în 2013. Apar din ce în ce mai multe organizații ce doresc să sprijine aceste eforturi, iar recent chiar am publicat, în numărul 12, un articol despre Gemini Foundry. Revenim cu acest subiect deoarece

diferite startup-uri au fost interesate de această inițiativă și există nevoia unei clarificări. Șerban Țîr, directorul tehnic al grupului de firme Gemini Solutions împreună cu Radu Popovici ne-au răspuns la câteva întrebări.

Lansarea Gemini Foundry

Ovidiu Măţan, [email protected]

Editor-in-chief Today Software Magazine

Page 11: Today Software Magazine N15/2013

11www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

Lansarea Gemini Foundry

startup-urile sunt esența inovării.Legat de piața actuală a startup-urilor

din România, evident suntem la înce-put, asta însemnând că plaja, modalitatea de abordare a inițiativei de către antre-prenorii locali este destul de eterogenă, neexistând o cultură și o tradiție locală în această direcție. Asta înseamnă că am întâl-nit startup-uri care pun problema foarte corect, și au o linie clară de dezvoltare - cu nimic mai prejos decât cele de peste ocean, dar și startup-uri cu o abordare destul de empirică ba chiar naivă. Evident legat de numărul startup-urilor, sperăm ca acestea să crească în viitor.

Ce înseamnă Gemini Foundry pentru startup-urile românești ?

Gemini Foundry se vrea o cale pe care startup-urile românești o pot lua în cazul în care ținta acestora este piața americană. Noi credem că după aprope paisprezece ani de lucru cu companii din Silicon Valley - multe dintre ele startup-uri - avem o înțelegere a ecosistemului și mecanisme-lor de acolo - și putem ajuta startup-urile românești să ajungă pe acea piață și să fie de succes acolo.

Am înțeles că se va organiza o lansare oficială Gemini Foundry în 24 Septembrie în Bucuresti. Ne puteți spune câteva cuvinte despre cine vor fi invitați la acest eveniment ?

Pe data de 24 septembrie la ora 17:00 va avea loc la Hotel Marshall Garden lansa-rea oficială a Gemini Foundry, eveniment organizat împreună cu Secția Comercială a Ambasadei Statelor Unite la București. Printre alții la acest eveniment vor participa domnul Theo Nissim - CEO al grupului de firme Gemini Solutions, Jim Cunningham - Regional Senior Commercial Officer, Europa de Sud-Est precum și Nicolas El Baze - General Partner, Partech International.

De asemenea, ne vom bucura de prezența doamnei Adina Magda Florea decanul Facultății de Automatică și Calculatoare al Politehnicii din București.Evident vă invităm și pe voi toți tinerii antreprenori din domeniul IT, cu idei și

inițiative să participați.

Pentru cititorii TSM ce doresc să participe la lansarea Gemini Foundry, care este modalitatea de înregistrare?

Participarea la eveni-ment se va face pe baza formularului de înregis-trare de pe site-ul nostru www.gemsfoundry.com și confirmare ulterioară.

Care este diferența dintre un Incubator și un Foundry ?

În timp ce un incuba-tor este o inițiativă care ajută startup-urile cu o listă predefinită și clară de servicii și facilități, F o u n d r y - u l e s t e o inițiativă caracterizată de flexibilitate, care își construiește oferta pe care o are către fiecare startup în parte în funcție de necesitățile și specificul acestuia.

C are e s te spec i f i -c u l G e mini Foundr y în comparație cu alte inițiative similare ?

Speci f icul Gemini Fou n d r y e s t e c ă î ș i propune să „crească” startup-uri care au ca țintă finală piața din Statele Unite și oferă cone-xiuni directe și concrete către instituțiile, entitățile și mediul de afaceri de acolo, ast-fel se maximizează șansele startup-urilor de a primi investiții și de a avea success real pe piața de acolo.

Ce oferă și ce primește Gemini Foundry de la un start-up partener ?

Aș încerca să grupez ceea ce oferă Gemini Foundry în mai multe categorii de servicii. Între aceste categorii cred că se disting: servicii menite să ușureze viața

antreprenorilor în sensul că îi degrevează de sarcinile de rutină dar importante de zi cu zi, și îi lasă să se concentreze pe ideea lor de business (servicii de legal, servicii contabile, birou); servicii menite să ducă la dezvoltarea sănătoasă și rapidă a busi-ness-ul precum mentorat și suport tehnic, îndrumare calificată legată de dezvoltarea businessului, dar poate cel mai important, oferă conexiuni directe și concrete către investitorii și environment-ul din Silicon Valley.

Ce primim în schimb ? Aici este simplu, primim un procent din compania incubată, care oricum va rămâne minoritar. Evident că acest procent diferă în funcție de servi-ciile oferite.

Page 12: Today Software Magazine N15/2013

TODAY SOFTWARE MAGAZINE

12 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

evenimente

SmartWeb Conference, locul de întâlnire al web designerilor locali şi internaţionali

Doi dintre speakeri foarte așteptaţi la eveniment sunt Vitaly Friedman și Jonathan Snook. Vitaly este co-fondator Smashing Magazine, revistă online dedicată design-ului și dezvoltatorilor web. Acesta va susţine o prezentare despre Responsive Web Design și va oferi sfaturi despre teh-nicile eficiente de care dezvoltatorii web trebuie să ţină cont. Jonathan Snook este deţinător al blogului Snook.ca și co-autor a două cărţi despre CSS și DOM Scripting.

Printre invitaţii internaţionali se mai regăsesc:

• Carl Smith, fondator și deţinător al companiei nGen Works;• Dan Rubin, designer, fondator,

Webgraph;• Bruce Lawson, posesor al blogului

brucelawson.co.uk și co-autor al cărţii „Introducing HTML5”; • Peter Gasston autor a două cărţi des-

pre CSS3 și Modern Web; • Vasilis Dimos Head of UX/U în

cadrul companiei Skroutz S.A;• Radu Chelariu, Art Director în

cadrul companiei Busteco Global Brain; Evenimentul se va desfășura pe par-

cursul zilei de 24 septembrie, la JW Marriott Grand Hotel, iar specialiștii pro-mit un program intensiv despre tendinţele,

oportunităţile și provocările industriei de web-design. Conferinţa este structurată în patru sesiuni extinse și intensive iar prin-tre temele ce vor fi abordate se regăsesc: Responsive Web Design, HTML5 & CSS3, CSS, Javascript, User Experience.

Conferinţa este organizată de Evensys, o companie cu peste șapte ani de experienţă în dezvoltarea de conferinţe și seminarii în colaborare cu Gabi Șchiopu, Senior Web

Designer / Developer, World Wide Web Hosting LLC.

Conferinţa Smartweb este susţinută de parteneri cum ar fi Site5, UPC, Sourcebits, Designmodo, Iconfinder, Smashing Magazine, Opera Software, NETOPIA, mobilePay, Qcat, Webdigital precum și de parteneri media cum ar fi Today Software

Magazine, InspiredMag, Romanian Startups, BestJobs, Refresh.ro, Joobs.

Mai multe informaţii despre eveni-ment și program sunt disponibile pe site-ul http://www.smartwebconf.com/

SmartWeb Conference este primul eveniment din România adresat în mod special web designerilor și web developerilor locali, dar și celor din Estul Europei. Conferinţa oferă oportunitatea participanţilor de a-i întâlni pe unii dintre cei mai renumiţi oameni din industrie la nivel global dar și pe alţi speakeri foarte populari și nelipsiţi de la cele mai mari conferinţe de acest gen

din Europa de Vest și SUA.

Jonathan Snook e

Iunieta [email protected]

PR & Marketing Coordinator @ Evensys

Page 13: Today Software Magazine N15/2013

13www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE evenimente

AGILE LEAN EUROPE 2013

Prima zi a debutat cu o introducere făcută de către organizatori. Keynote-ul de deschidere i-a aparținut lui Jurgen Appelo care a discutat despre noua structură organizațională a secolului XXI subliniind faptul că se bazează pe rețea și nu pe ierar-hie! În închidere a vorbit despre o rețea de business-uri și idei deștepte pe care a creat-o numită Happy Melly1 și odată ce intri acolo vei avea multe de învățat!

După ce fiecare speaker și-a prezentat discursul, a fost o mare provocare pentru participanți să aleagă la care dintre cele trei prezentări să meargă întrucât aveau loc în acelasi timp. După talk-uri a urmat partea de Lightining Talks și Open Space. Partea mai dificilă a fost când Marketplace-ul s-a umplut de topicuri interesante dintre care participanți urmau din nou să aleagă la care să participe.

Noi am mers mai întâi la talk-ul lui Toni Tassani (Twitter @atassani),software developer din Barcelona, Agile

e n t u z i a s t ș i c o m i c s f a n . Prezentarea sa, The Cognitive Power of Comics2 începe printr-o recomandare de carte și anume: C o m m i t m e n t N o v e l a b o u t M a n a g i n g

Project Risk, de Olav Massen, Chris Matts, Chris Gearryn un roman grafic care demonstrează cum Comics-urile pot fi uti-lizate pentru a exprima idei complexe.

Comics-urile au apărut pentru prima 1 www.happymelly.com2 w w w . s l i d e s h a r e . n e t / t o n i t a s s a n i /

the-cognitive-power-of-comics

dată pentru divertisment, dar ulterior au început să apară comics-uri despre jurna-lism, probleme sociale, economie, logica etc. Comics-urile sunt de fapt primul contact pe care noi îl avem încă de mici cu textul, cu cuvintele. Comics-urile fac omul să gân-descă într-un mod diferit. În momentul în care cititorul consumă comics-uri el este deja un agent activ, iar comics-urile sunt esențiale pentru cunoaștere și înțelegere. Comics-urile sunt cea mai eficientă unealtă. Un creier antrenat cu comics-uri este deja un creier pregătit să decodeze. Mixând imagini și text determină creierul să lucreze în două forme diferite în același timp ceea ce înlesnește generarea de sentimente și conexiunea cu cititorul.

A urmat Oanei Juncu (Twitter @ojuncu), care a vorbit despre A

journey to our cog-nitive biases. Cu toții avem o tendința natu-rală de a face lucrurile bine dar de multe ori le facem greșit. Greșeala este omenească și cu toții facem greșeli tot

timpul. Chiar și când credem că am învățat din erori tot mai greșim. Și asta a motivat-o pe Oana Juncu să întreprindă un studiu mai amănunțit al erorilor cognitive. Oana a vorbit despre un set de mai multe erori cognitive care ne duc la greșeli în viața de zi cu zi și ne-a vândut câteva ponturi despre cum să înțelegem cum funcționează meca-nismul cognitiv ce ne conduce uneori să luăm decizii greșite. Totodată, cunoscându-ne erorile cognitive nu ne ajută să nu mai facem greșeli deloc, ci doar să facem mai puține.

După Oana Juncu noi am urmărit-o pe Anna Obukhova care a ținut o prezentare despre SCRUM și voința, și despre cum neuroștiința poate spori productivitatea.Anna spune că voința este ca un mușchi și ca urmare acesta trebuie exersat greu și cât mai des. Combustibilii voinței sunt zahărul și Lysine-ul și aceștia nu trebuie risipiți. Pasul 1. în SCRUM este sa nu îți irosești voința (1. Standup 2. Sprint Pulse 3. Pick the task).Pasul 2, este să nu îi lași pe alții să îți irosească cantitatea de Lysine din organism și pentru aceasta trebuie să reduci incertitudinea ( 4. PBR meetings 5. Story tests and DOD 6. Change Requests 7. UT and Test Automation). Pasul 3, spune să obții rezultate și să fii fericit ( Obține rezul-tatele, Autorizează rezultatele și Vinde rezultatele! Iar continuarea sub-pasilor pentru succes ar fi următorii 8. Story done, 9. Tasks<= 1 day 10. Fixed Price Agile. Pe Anna Obukhova o puteți găsi pe Linkedin sau la email: [email protected].

Cam atât într-o primă parte despre cum a fost anul acesta la Agile Lean Europe și revenim într-un nou articol cu mult mai multe interviuri cu oamenii minunați care au luat parte și au făcut conferința atât de minunată!

Noi am vrea să numim ALE 2013 conferința magică pentru că doar ce s-au încheiat trei zile minunate, pline cu ultimele noutăți despre Agile și Lean, pline de lucru în echipă (aka co-creation), discuții, networking și o groază de lucruri faine organizate pentru a aduce un plus de distracție participanților și familiilor acestora. Oamenii au vorbit despre respect, încre-

dere, învățare, experiențe și creativitate, și nu doar că au vorbit, dar aveam impresia că însăși conferința era organizată de către fiecare participant în parte.

Ana Maria [email protected]

Community Manager @ Akcees

Page 14: Today Software Magazine N15/2013

TODAY SOFTWARE MAGAZINE

14 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

să participe la ediția 2013 a Business Days în 25-26 Septembrie.

Transylvania Java User GroupComunitate dedicată tehnologiilor Java.Website: www.transylvania-jug.orgData înfiinţării: 15.05.2008 / Nr. Membri: 545 / Nr. Evenimente: 43

Comunitatea TSMComunitate construită în jurul revistei Today Software Magazine.Website: www.facebook.com/todaysoftmagData înfiinţării: 06.02.2012 / Nr. Membri: 790 / Nr. Evenimente: 11

Romanian Testing CommunityComunitate dedicata testerilor.Website: www.romaniatesting.roData înfiinţării: 10.05.2011 / Nr. Membri: 640 / Nr. Evenimente: 2

GeekMeet RomâniaComunitate dedicată tehnologiilor web.Website: geekmeet.roData înfiinţării: 10.06.2006 / Nr. Membri: 560 / Nr. Evenimente: 17

Cluj.rbComunitate dedicată tehnologiilor Ruby.Website: www.meetup.com/cluj-rbData înfiinţării: 25.08.2010 / Nr. Membri: 142 / Nr. Evenimente: 34

The Cluj Napoca Agile Software Meetup GroupComunitate dedicată metodelor Agile de dezvoltare software.Website: www.agileworks.roData înfiinţării: 04.10.2010 / Nr. Membri: 325/ Nr. Evenimente: 34

Cluj Semantic WEB MeetupComunitate dedicată tehnologiilor semantice.Website: www.meetup.com/Cluj-Semantic-WEBData înfiinţării: 08.05.2010 / Nr. Membri: 146/ Nr. Evenimente: 22

Romanian Association for Better SoftwareComunitate dedicată oamenilor cu experiență din IT indiferent de tehnologie sau specializare.Website: www.rabs.roData înfiinţării: 10.02.2011 / Nr. Membri: 226/ Nr. Evenimente: 13

Tabăra de testareUn proiect care își dorește să strângă cât mai mulți oameni care lucrează ca și testeri.Website: tabaradetestare.roData înfiinţării: 15.01.2012 / Nr. Membri: 320/ Nr. Evenimente: 19

Am încheiat luna august prin participarea la Agile Lean Europe 2013, un important eveniment european ce s-a desfășurat la noi în țară anul acesta. Puteți citi în acest număr un prim articol cu impresii „calde” de la acesta. Luna septembrie se anunță plină de evenimente dintre care vă sugerăm: Lansarea Gemini Foundry ce va avea loc împreună cu prima lansare a numărului 15

TSM în București. În aceeași zi va avea loc și SmartWeb Conference, o conferință dedicată web developer-ilor. Pe cei din Cluj îi invit

Calendar Septembrie 6Tabara de Testare Weekend - Autumn Camp (Cluj)w w w . m e e t u p . c o m / Ta b a r a - d e - Te s t a r e - C l u j /events/131118462/

Septembrie 9Lansarea numărului 15 TSM (Cluj)www.todaysoftmag.ro

Septembrie 10Entrepreneur ‘X’ Factor (București)it-events.ro/events/entrepreneur-x-factor-season-2

Septembrie 11How To Build A Winning Startup (Târgu Mureș)www.meetup.com/The-Startup-Lab/events/137928892/

Septembrie 18SAP Conference (Cluj)www.msg-systems.ro/events.0.html

Septembrie 19Linked Data Technology Stack (Cluj)www.meetup.com/Cluj-Semantic-WEB/events/115920132/

Septembrie 24Lansarea numărului 15 TSM (București)www.todaysoftmag.ro

Septembrie 24Lansarea Gemini Foundry (București)- recomandarea TSMgemsfoundry.com

Septembrie 24SmartWeb Conference (București)www.smartwebconf.com

Septembrie 25-26Cluj Business Dayscluj-napoca.businessdays.ro

Octombrie 4-5...even mammoths can be Agile în Iași!colorsinprojects.ro/eveniment-iași-4-5-octombrie-2013

Octombrie 12Codecamp (Iași)iasi.codecamp.ro

Comunităţi IT

comunități

Page 15: Today Software Magazine N15/2013

15www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE programare

În acest peisaj schimbător al accesibilității mobile, Today Software Magazine a reali-zat un parteneriat cu 3Pillar Global pentru a implementa nu doar o simplă aplicație de partajare a conținutului (ceea ce nu ar fi însemnat altceva decât încă o aplicație în marea de aplicații new media deja dispo-nibile) ci pentru a oferi o soluție bazată pe conținut disponibil utilizatorilor termina-lelor Apple iOS. Această soluţie facilitează utilizatorilor mobili accesul la articolele din sfera IT sau conexe dar și socializarea în jurul acestora prin mijlocirea partajării articolelor, în felul acesta amplificând puterea creativă comună a tuturor pentru beneficiul mutual.

Luând în considerare acest principiu al comunității ce evoluează în jurul tehnologiei și - mai larg - al comunității ce evoluează în jurul tehnologiilor evolutive - am găsit potri-vit să împărtășim o parte din expertiza nou creată pe care am acumulat-o în procesul de dezvoltare a aplicației TodaySoftMag pentru iOS (deja disponibilă în Apple Store), întru-cât acesta a fost un exercițiu plăcut și, de asemenea, o experiență de rafinare a experti-zei precedente. Pe lângă dezvoltarea echipei, un alt efect pozitiv a fost faptul că ne-a oferit o viziune mai clară asupra aspectelor con-gruente în dezvoltarea unei aplicații de tip client-server pentru iOS.

În paragrafele care urmează am încercat

să împărtășim o parte din această expertiză.

Introducerea caracteristicilor importante ale aplicației

Încă de la prima rulare, aplicația încearcă să satisfacă nevoile utilizatorului, prin a-i oferi posibilitatea de a alege limba în care preferă să citească articolele, întrucât revista este disponibilă atât în limba engleză, cât și în limba română. Odată aleasă limba, aceasta este salvata în baza de date impli-cita a utilizatorului. Interacțiunea cu aceasta se face cu ajutorul interfaței programatice NSUserDefaults. După alegerea limbii, aplicația va afișa ultimul număr al revistei. Pentru a nu perturba lectura utilizatoru-lui articolele celorlalte numere sunt aduse ulterior (mai multe detalii privind des-carcarea articolelor se găsesc în secțiunea “Considerente tehnice”).

Dintre toate caracteristicile aplicației, putem menționa următoarele:

1. Parcurgerea / citirea revistelor / articolelor - Caracteristica principală a aplicației este navigarea printre numerele publicate și articolele lor, caracteristică oferită si proiectată într-un mod prietenos. Utilizatorul poate naviga prin numerele revistei prin selectarea acesteia din lista de numere prezentate în meniu. Numărul afișat va fi selectat în listă, în acest fel

Cererea de aplicații pentru dispozitivele mobile este în creștere și, din acest motiv, preocuparea publiciștilor din new media a vizat nu doar prezența exclusivă, ci și orientarea spre mai noua paradigmă a disponibilității pe „mobil și web” sau spre

partajarea conţinutului folosind dispozitive moderne ca tabletele și cu telefoanele mobile.

Clientul iOS Today Software Magazine

3Pillar Global Team

@ 3Pillar Global

Page 16: Today Software Magazine N15/2013

16 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

Clientul iOS Today Software Magazine

aplicația va memora mereu starea utilizatorului în aplicație. Fiecare număr are o listă de articole aranjate în ordinea apariției. Odată selectat articolul, acesta va rămâne așa, până când este selectat unul nou din lista de articole a acelui număr.

2. Aducerea / readucerea numerelor revistei - Deoarece revista este scrisă atât în limba română cât și în engleză, utili-zatorul poate comuta între ele alegând o altă limbă din meniul “Setări”, comportament care va declanșa aducerea/ readucerea numerelor în limba dorită. Aplicația va intra în starea de „des-cărcare”, și va afișa o nouă fereastră cu un mesaj sugestiv până când articolele din ultimul număr sunt aduse de pe server.

3. Trimiterea articolelor - Prin integrarea rețelelor de sociali-zare, aplicația oferă utilizatorului posibilitatea de a le comunica altor persoane aspecte despre articolul citit prin:

a. Facebookb. Twitterc. Email. Pentru selectarea metodei de distribuire a articolului s-a

utilizat componenta UIActivityViewController. Fiind o compo-nenta introdusă numai din versiunea 6-a a iOS, am întâmpinat câteva impedimente neașteptate. Pentru afișarea activitaților dis-ponibile, această componentă folosește credențialele stocate în setarile telefonului. În cazul în care credențialele nu sunt stocate, componenta nu afișează activitați pentru rețelele de socializare Facebook si Twitter. Pentru a oferi acces spre aceste activitați, am introdus activițati custom ce asigură logarea utilizatorului în contul rețelei de socializare, înaintea trimiterii articolelor. La acce-sarea activităților custom, se declanșează acțiunea de compunere a unei postari pe rețeaua de socializare aleasă, cu ajutorul clasei SLComposeViewController.

SLComposeViewController *facebookController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result) { [facebookController dismissViewControllerAnimated:YES completion:nil]; switch(result){ case SLComposeViewControllerResultCancelled: default: { } break; case SLComposeViewControllerResultDone: { UIAlertView *alertView = [[UIAlertView al-loc] initWithTitle:kPOST_SUCCEDED message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:nil]; [alertView show]; [alertView performSelector:@selector(dismissAnimated:) withObject:nil afterDelay:1.0f]; } break; }}; [facebookController setInitialText:kPOST_MESSAGE]; [facebookController setCompletionHandler:completionHandler];

După afișarea instanței (SLComposeViewController*)composeSheet

[self presentViewController:composeSheet animated:YES completion:nil];

aplicația va observa lipsa credențialelor și va prompta utilizato-rul spre Setări, unde acesta își va introduce informațiile contului. Astfel activitatea prestabilită din UIActivityViewController devine disponibilă.

După selectarea metodei de distribuire, aplicația va afișa un dialog specific fiecărei rețele de socializare și va completa mesajul acțiunii cu un text standard ce include un link care va conduce la articolul respectiv.

Versiuni ale aplicațieiImplementarea a două versiuni în paralel a aceleași aplicații

aduce cu sine mai multe provocări.

Figura 1. Ecranul introductiv

S-a dorit ca aplicația TSM să fie disponibilă atât pentru iPhone, cât și una pentru iPad și, în ceea ce privește interfața grafică, lucru-rile nu puteau fi mai diferite de atât. Intenția era ca aceleași date sa fie afișate și în același timp să fie corespunzător adaptate pentru fiecare tip de dispozitiv mobil. iPad-ul are un display mare pe care un utilizator poate vedea cu ușurință orice tip de informație, de la icoane mici până la grafice mari și detaliate, în timp ce iPhone-ul - pe de altă parte - are un ecran mai mic, dar dispozitivul este mai des întâlnit printre utilizatorii de iOS.

Datorită diferenței mari de rezoluție dintre iPhone și iPad, s-a decis ca aplicația să afișeze în permanență informația relevantă existentă în locul afișării tuturor informațiilor în același timp. În această idee au fost gândite toate ecranele aplicației.

Figura 2. Lista articolelor corespunzătoare unei reviste

După selectarea limbii, principalul ecran al aplicației apare afișând cea mai importantă informație: lista articolelor pentru cel mai recent număr al revistei. Pentru versiunea de iPad s-a ales ca lista cu numărul revistelor sa fie afișată simultan cu lista de articole, versiunea pentru iPhone însă arată doar lista articolelor, iar o altă revistă putând fi selectată accesând meniul din par-tea stângă. S-a dorit ca amândouă versiunile să păstreze același comportament.

Lista articolelor va fi afișată într-o pozitie centrată, iar în par-tea stângă va fi afișată lista revistelor, mai ascunsă, astfel încât să nu deranjeze vizual utilizatorul. De aceea, pe iPad a fost intro-dusă componenta “Split View”, ce conține o coloană mai îngustă în stânga și una mai lată în dreapta, iar pe versiunea pentru iPhone meniul din stânga este din nou prezentat într-o formă îngustă, prin adăugarea unei componente denumită “IIViewDeckController”, o clasă open source ce este din ce în ce mai des folosită în aplicațiile iPhone.

programare

Page 17: Today Software Magazine N15/2013

17www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

Figura 3. Vizualizarea întregului conţinut al unui articol

Următoarea fereastră a aplicației afișează articolul selectat. În partea de sus a ecranului sunt afișate informațiile despre autor, astfel încât - la derularea articolului - acestea să rămână vizibile. Pe iPad, în partea stângă, apare din nou lista cu articole pentru a ajuta utilizatorul să schimbe mai ușor articolele între ele. Versiunea pentru iPhone este menținută, însă, simplă, așa cum se așteaptă orice utilizator de telefon mobil.

Figura 4. Fereastra “Despre”

Aplicația folosește în același timp multe componente noi introduse in limbaj cât și unele personalizate pentru a spori inte-resul utilizatorului. Aici vorbim despre micile atenții din listele cu articole, animația de la începutul aplicației pentru alegerea limbii, aranjarea si ordonarea ferestrelor într-un mod firesc pentru un cititor. Este foarte important ca o dată cu maturizarea limbajului și avansul lui tehnic, să existe o maturizare și pentru developer în ceea ce privește tehnicile și componentele folosite.

Aspectul final al fiecărei versiuni a fost proiectat astfel încât informațiile să fie afișate într-un mod eficient. Fiecare utilizator poate spune că aplicația îi îndeplinește nevoile și cerințele, luând în considerare constrângerile impuse de fiecare dispozitiv în parte și păstrând, în același timp, concentrarea pe ceea ce este important și modul în care acesta este afișat.

Considerente tehniceAplicația pentru iOS suportă versiunile 6.0 și 6.1 ale sistemului

de operare pe dispozitive de tip iPhone și iPad, astfel incât utiliza-torii vor putea beneficia de toate avantajele sistemului de operare și datorită faptului că aplicația TodaySoftMag va putea fi instalată pe ambele tipuri de dispozitive mobile.

Figura 5. Diagrama de componente

Articolele care pot fi vizualizate în aplicație, precum și detali-ile autorilor, sunt preluate de pe server prin intermediul interfeței programatice puse la dispoziția clientului de iOS. Partea de comu-nicare și transfer a datelor dintre client și server este realizată folosind framework-ul AFNetworking, astfel încât se va menține controlul asupra cererilor făcute la server și se va avea un control mult mai mare asupra gestiunii răspunsurilor luând în conside-rare și faptul ca unele cereri către server ale căror răspuns au o dimensiune mai mare vor fi făcute separat și răspunsul va fi tratat astfel încât experiența utilizatorului nu va fi afectată. În secvența de cod ce urmeaza este luat ca exemplu obiectul JSON primit de la server aferent cererii datelor despre un anumit autor:

{ description = „Product Mindset \n”; name = „Dan Suciu\U0103”; picturePath = „http://www.todaysoftmag.com/tsm/images/ppl/photo-small.jpg”;}

Câmpul “picturePath” va fi folosit ulterior pentru descărcarea imaginii autorului. Aceasta nu este primită în răspunsul inițial, deoarece descărcarea unei imagini poate lua mai mult timp, acest lucru se va face printr-un mecanism creat astfel încât partea de interfață grafică să nu fie afectată și imaginea va fi încarcată direct după ce descărcarea ei de pe server va fi finalizată.

Pentru îmbunătățirea experienței utilizatorului, toate cererile trimise către server sunt împărțite în cereri mai mici din punct de vedere al dimensiunii răspunsului, iar cele ale căror răspuns presu-pune un transfer mai mare de date se vor realiza într-o asemenea manieră încât componentele interfeței grafice nu vor fi afectate, astfel încât - chiar de la prima utilizare a aplicației - utilizatorul va putea vedea articolele aferente ultimului număr, articolele celor-lalte numere fiind descarcate și afișate ulterior. Acest lucru este realizat prin implementarea cererii față de server a articolelor de la celelalte numere în “background” fiind executată într-un thread separat. Pentru gestionarea tuturor cererilor și răspunsurilor de la server s-au creat anumite clase dedicate comunicării cu server-ul.

La prima rulare, pe timpul descărcării datelor, pe fereastra principală a aplicației se afișează o animație sugestivă. Atunci când transferul de date este finalizat, utilizatorului îi va fi prezen-tată pagina principală a aplicației, în timp ce articolele celorlalte numere vor fi descărcate în fundal, astfel încât utilizatorul nu va sesiza nici o altă activitate a aplicației, putându-se concentra pe ceea ce este relevant pentru el.

Imaginile de dimensiuni mari vor fi descărcate într-un mod în care componentele interfeței grafice nu vor fi afectate, la fel fiind procesate și informațiile referitoare la datele despre autorii artico-lelor, astfel încât deși datele aferente autorilor nu sunt descărcate

Page 18: Today Software Magazine N15/2013

TODAY SOFTWARE MAGAZINE

18 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

de pe server, ele vor fi încărcate în momentul în care descărcarea lor s-a finalizat.

Deoarece aceste informații nu sunt necesare exact în momen-tul în care utilizatorul va intra în aplicație, ele vor putea fi aduse de pe server ulterior, fără nici un impact major, iar dacă o imagine este utilizată, dar nu a fost adusă de pe server până la momen-tul respectiv, sau nu există pe server, o imagine înlocuitoare va fi folosită.

Toate datele descărcate de pe server vor fi salvate pe dispozi-tivul mobil, astfel încât acestea nu vor fi descărcate de fiecare dată când sunt accesate. De asemenea, în ceea ce privește informația despre autori, dacă aceasta nu este salvată local pentru a fi acce-sată, atunci o cerere către server va fi trimisă, pentru a fi descarcată și salvată local. Evident, în cazul în care informația despre un anu-mit autor a fost descărcată de pe server, mai puțin imaginea atașată acestuia, detaliile autorului vor fi afișate, iar când descărcarea ima-ginii s-a finalizat, se va afișa și fotografia acestuia, fără a afecta celelalte informații despre autor.

Pentru o mai bună gestionare a librăriilor și framework-urilor utilizate în proiect, s-a folosit librăria CocoaPods. În acest fel, toate librăriile prezente pot fi actualizate la ultima versiune într-un mod facil, iar faptul că librăria CocoaPods a fost adaugată în proiect nu afectează produsul final, acest lucru fiind invizibil în ceea ce privește setările pentru AppStore, aceasta afectând doar partea de dezvoltare a proiectului.

Aplicația folosește GoogleAnalytics framework pentru trimi-terea evenimentelor precum citirea unui articol sau distribuirea unui anumit articol. Pentru a simplifica acest mecanism s-a creat o clasa dedicată care acționează ca un wrapper peste framework-ul inițial Google Analytics, toate metodele din acest wrapper fiind orientate spre optimizarea procesului de trimitere a evenimentelor si adaptarea lui pentru cazurile folosite în aplicație

Dezvoltări Ulterioare Încă de la lansarea primei versiuni pe AppStore încep să

prindă contur planurile și noile idei pentru versiunile ce vor urma și vor include următoarele facilități:

• Notificări Apple - Vor fi utilizate pentru notificarea utili-zatorului cu privire la apariția de noi articole, în cazul în care aplicația este închisă sau dispozitivul mobil este pus în modul sleep.

• Suport pentru iOS 7 - Sunt luate în considerare anumite schimbări pe partea de interfață grafică, în ceea ce privește anu-mite standarde și repoziționări ale componentelor de interfață și nu numai, toate acestea fiind implementate folosind facilitățile puse la dispoziție de iOS 7.• Opțiunea de reactualizare a conținutului - În versiunile

următoare utilizatorii vor avea posibilitatea de a reactualiza automat conținutul, oricând vor considera că acest lucru este necesar. Acțiunea de reactualizare va fi activată prin folosirea unei componente de interfată grafică ce va permite tragerea în jos a listei principale de articole, folosindu-se o animație spe-cifică. Adăugarea articolelor noi în listă se va face într-un mod optim, care nu va afecta experiența utilizatorului.• Adăugarea noilor opțiuni de setare - Se ia în considerare

adăugarea mai multor setări de personalizare a aplicației și a comportamentului acesteia, de exemplu un utilizator va putea alege numărul de articole ce vor putea fi salvate local pe dispo-zitivul mobil.

www.3pillarglobal.com

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

Our core competencies include:

ProductStrategy

ProductDevelopment

ProductSupport

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

programareClientul iOS Today Software Magazine

Page 19: Today Software Magazine N15/2013

19www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE programare

Una dintre diferenţele majore între Model-View-Controller și MVVM este că un obiect de tipul ViewModel nu păstrează o referinţă la obiectul de tip View. Obiectul View se leagă (binding) la proprietăţile obiec-tului ViewModel care în schimb expune datele conţinute în model și alte stări specifice View-ului. Mecanismul de binding asigură că, atunci când proprietăţile din ViewModel se modifică, cele din View se actualizează auto-mat și vice-versa. Când utilizatorul apasă un buton, o comandă se execută în ViewModel, View-ul nu modifică niciodată în mod direct entităţile din model. Clasele View nu știu de existenţa claselor din model în timp ce clasele ViewModel și modelul nu știu de existenţa claselor View. În acest fel View-ul este pur și simplu un client (consumer) al obiectelor ViewModel, ele putând fi foarte ușor înlocuite cu clase de test pentru ViewModel.

Cum aplicăm MVVM în Windows Phone 8?MVVM Light este un instrument foarte

popular dezvoltat și întreţinut de Laurent Bugnion, fiind folosit pentru a dezvolta cu rapiditate aplicaţii MVVM în WPF, Silverlight și Windows Phone. Acest toolkit ne ajută să sepărăm View-ul de Model pentru a crea apli-caţii mai curate și mai ușor de întreţinut și de extins, stratul dedicat interfeţei cu utilizatorul este cât se poate de subţire iar astfel aplicaţiile dezvoltate fiind ușor de testat automat.

Una dintre componentele oferite este clasa ViewModelBase pe care fiecare clasă ViewModel a aplicaţiei noastre o poate extinde fără a fi nevoită să implementeze interfaţa INotifyPropertyChanged (pen-tru a notifica View-ul la schimbarea valorii unei proprietăţi). În general, într-o aplicație Windows Phone 8, fiecărei Pagini îi va cores-punde un obiect ViewModel ce va extinde clasa ViewModelBase. Un alt mare avantaj al clasei ViewModelBase este expunerea proprietăţii IsInDesignMode, proprietate ce ne permite să verificăm dacă suntem în Expression Blend sau în Visual Studio

Șablonul de proiectare Model-View-ViewModel (MVVM) definește trei componente principale: Model, View și ViewModel:• Model: Business domain (logica ce ţine de domeniul aplicaţiei, accesul la date,

entităţi),• View: Interfaţa cu utilizatorul (în Windows Phone – PhoneApplicationPage),• ViewModel: „Modelul View-ului” – abstractizare a View-ului ce intermediază comu-

nicarea dintre View și Model.

MVVM în Windows Phone 8

Cosmin [email protected]

iOS Software Developer@ Fortech

Sursa: blogs.msdn.com/b/tims/archive/2010/11/02/kung-fu-silverlight-archi-

tectural-patterns-and-practices-with-mvvm-and-ria-services.aspx

Page 20: Today Software Magazine N15/2013

20 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

Designer și să oferim „design data” cu care designerul poate lucra. Suntem nevoiţi să facem acest lucru, deoarece atât Blend cât și Visual Studio Designer nu permit operaţii în reţea sau conexiuni la baze de date.

În general, o abordare posibilă și des întâlnită este de a expune toate obiectele noastre ViewModel ca proprietăţi folo-sind clasa oferită de MVVM Light numită ViewModelLocator. În această clasă putem folosi un IoC Container preferat (sau SimpleIoc inclus în MVVM Light) pen-tru a crea obiectele ViewModel și pentru a injecta dependenţe în acestea (de exemplu o interfaţă care expune metode pentru a manipula diferite entităţi din model).

Obiectul de tip ViewModelLocator poate fi adăugat în resursele aplicaţiei în App.xaml și folosit apoi în fiecare pagină pentru a seta DataContext-ul acesteia la ViewModel-ul corespunzător expus în ViewModelLocator.

ViewModelLocator adăugat în mod automat la crearea unui proiect ca resursă în App.xaml:<Application ... xmlns:vm=”clr-namespace:{Default Namespace}.ViewModel” ...> <Application.Resources> <ResourceDictionary> <!-- Global View Model Locator --> <vm:ViewModelLocator x:Key=”Locator” d:IsDataSource=”True” /> ... </ResourceDictionary> </Application.Resources></Application>

Putem seta ca DataContext pentru Pagina (View) un obiect ViewModel expus ca proprietate în ViewModelLocator pentru a realiza apoi “binding” între proprietățile obiectului ViewModel și Pagină (View). Acest lucru îl putem face fie direct în .xaml sau folosind Blend.

Dacă vrem de exemplu să afișăm conținut într-un obiect TextBlock, tot ce trebuie să facem este să legăm proprieta-tea Text de o proprietate de tip string în

obiectul ViewModel nefiind nevoiți să scriem cod de UI (cunoscut drept code-behind) pentru a actualiza textul din TextBlock-ul respectiv. Legarea o putem face atât în codul XAML cât și în Blend.

string _textProperty

public string TextProperty{ get { return _textProperty; } set { if (_textProperty != value) { _textProperty = value; RaisePropertyChanged(„TextProperty”); } }}

Ap e l u l m e t o d e i m o ș t e n i t e d i n V i e w M o d e l B a s e RaisePropertyChanged asigură actu-alizarea UI-ului de fiecare dată când valoarea proprietății se schimbă.

Codul de legare arată astfel:<TextBlock Text=”{Binding TextProperty}” Style=”{StaticResource PhoneTextNormal-Style}” HorizontalAlignment=”Center” VerticalAlignment=”Center” TextAlignment=”Center” TextWrapping=”Wrap” FontSize=”40” />

Practic orice proprietate a unui element de UI poate fi legată de o pro-prietate din obiectul ViewModel fără a fi nevoiți să scriem cod de UI. De exem-plu putem lega proprietatea ItemSource a unui obiect ListBox de o propritetate de tip List<T> din ViewModel și apoi putem configura un ItemTemplate pen-tru ListBox care va avea ca DataContext obiectul de tip T care conceptual vorbind este și el la rândul său un ViewModel (sau ItemViewModel).

Cum comunică View-ul cu ViewModel-ul?M V V M L i g h t o f e r ă c l a s a

EventToCommand ce extinde clasa Behavior și ce permite legarea unei

comenzi de un eveniment de pe interfața cu utilizatorul. Astfel la apariția unui eve-niment putem executa direct codul din ViewModel fără a scrie deloc cod de UI. În ViewModel expunem o proprietate de tipul RelayCommand pe care cu ajutorul clasei EventToCommand o putem lega de orice eveniment.

Evenimentul Click al unui buton este legat de comanda ButtonPressed:// Button Pressedpublic RelayCommand ButtonPressed{ get { return new RelayCommand(() => { Console.WriteLine(„Button Pressed”); }); }}

M e r i t ă m e n ț i o n a t c ă p u t e m

programareMVVM în Windows Phone 8

Page 21: Today Software Magazine N15/2013

21www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

transmite și parametri atunci cînd folo-sim EventToCommand: de exemplu, putem transmite textul dintr-un TextBox, iar pentru aceasta am expune o proprie-tate de tipul RelayCommand<String>. EventToCommand poate fi atașat oricărui element de UI, chiar și Paginii, apelând o comandă atunci când pagina s-a încărcat (evenimentul Loaded) pentru a face un request HTTP la un serviciu Web.

Cum comunică ViewModel-ul cu View-ul?În afara mecanismului de binding

ViewModel-ul poate comunica cu View-ul prin mecanisme precum Behavior, Messenger sau prin folosirea unor interfețe pe care View-ul le va implementa, după care va fi injectat în ViewModel.

Extinzând clasa Behavior putem declara proprietăți DependencyProperty împreună cu proprietăți normale pe care le putem lega de proprietăți din ViewModel și care atunci când își schimbă valoarea pot executa cod de UI. Avantajele obiectelor Behavior sunt: reutilizarea cu ușurință, folosirea în Blend și posibilitatea de a muta codul din View.

MVVM Light oferă o clasă Messenger folosită de diferite obiecte pentru a comu-nica în cadrul aplicației fără ca acestea să știe cu cine comunică, astfel folosind această clasă cuplajul între obiectele care comunică este redus. Mesajele pot conține date simple sau obiecte complexe. Această clasă poate fi des folosită pentru a per-mite obiectelor ViewModel să comunice între ele sau pentru a permite obiectelor ViewModel să comunice cu obiectele View.

O altă abordare este crearea unor

interfețe ce vor fi implementate de View. De exemplu dacă în View trebuie să ară-tăm un mesaj (un dialog) putem crea o interfață ce expune acele metode după care o implementăm în View și o injectăm în ViewModel (putem obține o referință la ViewModel-ul corespunzător folosind pro-prietatea DataContext).

Merită menționat că abordarea prefe-rată este extinderea clasei Behavior, deși MVVM nu specifică în mod direct, este de înțeles că atât timp cît codul din Pagini este redus, aplicația este cu atât mai ușor de testat. Un dezavantaj al Behavior –urilor este că acestea nu sunt disponibile pentru Windows 8, făcând astfel portabili-tatea aplicațiilor puțin mai dificilă dar sunt librării care oferă clase similare claselor Behavior1.

Probleme des întâlnite și soluțiile lorUna dintre problemele des întâlnite este

navigarea: de unde se face navigarea către o altă pagină și cum? Soluția este relativ simplă – creăm o interfață care să expună metodele necesare navigării, o implemen-tăm într-o clasă dedicată apoi o injectăm în obiectele ViewModel din care dorim să realizăm navigarea.

O altă problemă este disponibili-tatea datelor la momentul designului – abordarea recomandată este crearea unor interfețe pentru managerii de date (cla-sele în care avem logică de acces la date, persistență, etc) și implementarea acestora în două clase diferite: una pentru momen-tul designului, și una ce va fi folosită la momentul rulării aplicației. Folosind pro-prietatea IsInDesignMode putem înregistra

1 winrtbehaviors.codeplex.com

în containerul IoC clasa corespunzătoare ce va fi mai apoi injectată în ViewModel. Această funcționalitate împreună cu Blend oferă posibilitatea formării echipelor de designeri și developeri care să lucreze rela-tiv independent.

Din nou clasele Behavior permit crea-rea și tranziția între diferite stări ale unei Pagini sau declanșarea unor animații, acest lucru fiind posibil fără a fi nevoiți să scriem cod de UI. Clase Behavior precum DataStateBehavior sau GoToStateAction permit acest lucru.

Din păcate, în Windows Phone 8, nu putem face în mod direct binding între Application Bar și comenzi din ViewModel. Spre deosebire de Windows 8, unde acest lucru este posibil. Astfel în aceste situa-tii suntem nevoiți să scriem cod de UI, să ascultăm evenimentele butoanelor de pe Application Bar și apoi să exectuăm manual comenzile din ViewModel. Dacă nu dorim să facem aceasta, și de obicei nu dorim, putem folosi librăria AppBarUtils2 care oferă clase Behavior, Trigger și Action ce permit legarea cu comenzi și diferite proprietăți.

ConcluziiȘablonul MVVM este foarte popular în

rândul dezvoltatorilor de aplicații Windows Phone, acesta permite dezvoltarea unor aplicații ușor de menținut, îmbunătățit, testat și de ce nu, cu o interfață grafică ușor de creat (Blend). Componentele definite de șablon au responsbilități bine definite iar cuplajul este redus pe cât de mult posibil. Dacă atunci când șablonul a fost introdus, implementarea acestuia părea destul de greoaie, necesitând multe linii de cod, în perioada recentă librăriile și instrumen-tele disponibile fac implementarea acestui șablon ușoară și interesantă.

ReferințeMVVM Light http://www.galasoft.ch/mvvm/http://msdn.microsoft.com/en-us/magazine/jj651572.aspxhttp://appbarutils.codeplex.com/http://winrtbehaviors.codeplex.com/http://vimeo.com/53068482http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2264http://outcoldman.com/en/blog/show/308http://blogs.msdn.com/b/tims/archive/2010/11/02/kung-fu-silverlight-architectural-patterns-and-practices-with-mvvm-and-ria-services.aspx

2 appbarutils.codeplex.comFolosirea EventToCommand din Blend. În exemplu a fost adăugat Paginii și a fost legat evenimentul Loaded.

Page 22: Today Software Magazine N15/2013

22 nr. 15/Septembrie | www.todaysoftmag.ro

Vă voi povesti cum am redesco-perit recent frumusețea cloud-urilor publice: eram în toiul pregătirilor pen-tru ediția următoare a conferinței IT din Iași – CodeCamp1. Site-ul evenimentului (versiunea browser) era pregătit însă nu aveam vesiune pentru mobile, și aceasta e o greșeală într-o lume în care fără prezență pe mobile ești aproape inexistent. Din fericire, comunitățile sunt alcătuite din oameni inteligenți și săritori, așa că fără ca măcar noi (organizatorii evenimentului) să știm, versiunile mobile native erau deja în marketplace (Apple, Google, Microsoft) – și sunt înca acolo, donwloadează-le si alătură-te comunității! “Super!”, am zis; “dar de unde își iau aplicațiile acestea datele despre eveniment (speakers, sesiuni, agenda etc)”? Am aflat imediat că prietenii noștri – trebuie să ii laud un pic, excelenți programatori iPhone, Android, Windows Phone – foloseau un fișier static în format JSON în care copiaseră datele de pe site si le mențineau manual dupa fiecare modificare a noastră (și desigur ca apăreau desin-cronizări). Probabil că agiliștii denumesc aceasta “arhitectură emergentă” Și desigur că am decis să “emergem” în continuare și să construim un backend comun așa cum se cuvine pentru aplicații și site-ul web.

Așa că am început să căutăm o soluție tehnică, avînd vedere următoarele constrîngeri:

• Timp de dezvoltare pentru backend foarte puțin; nu voiam să investim mai

1 iasi.codecamp.ro

mult de vreo două zile, incluzînd testare și integrare;• Modificări cît mai puține în aplicațiile

mobile – aici aveam deja “interfața” JSON, deci părea că suntem asigurați;• Simplitate la hosting, deployment și

configurare;• Intenția de a avea suport de push

notificațion pentru mai multe platform mobile (iOS, Android, Windows); aici ne așteptam sa fie complicat, dar s-a dovedit a fi de fapt a fi extrem de simplu.

Desigur că primul lucru pe care l-am făcut a fost să aruncăm o privire în nori (în Cloud, vroiam să spun). Și am desco-erit acolo o ofertă destul de promițătoare, care includea Parse si Windows Azure Mobile Services. Ne-am oprit la a doua, în principal pentru că aveam deja un pic de experiență și o subscripție MSDN cu credit inclus pentru Windows Azure. Haideți să vedem cum a fost mai departe.

Am intrat in portal https://manage.windowsazure.com și după 5 click-uri și sub un minut de așteptare aveam deja serviciul creat, cu toată infrastructura aferentă.

Foarte simplu spus (imaginea de mai sus ajută la înțelegerea conceptelor), servi-ciul mobil este un set de tabele relaționale într-o bază de date SQL Server, pusă la dispoziție în timpul creării serviciului, accesibile prin servicii HTTP REST care oferă acces CRUD la date formatate JSON, prin intermediul verbelor HTTP - POST (create), GET (read), PATCH (update),

Povestea aceasta este despre simplitate si robustețe, o alăturare aparent neobișnuită sau cu siguranță greu de realizat în dezvoltarea de aplicații software. Și de fapt aceasta era realitatea cu ani în urmă cînd fiecare își dezvolta propria soluție de

backend, propriile mecanisme de comunicație, propriul limbaj de programare, propriul… ce-o mai fi. Platformele Cloud au transformat lumea aceasta complicată într-una unde provocarea cea mai mare este buna înțelegere a lumii în care trăim și a oportunităților de afaceri.

Cum am facut primul meu Azure

Mobile Service

programare

Florin Cardasim [email protected]

Head of Architecture &Analysis@ Endava Iași

programare

Page 23: Today Software Magazine N15/2013

23www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINEprogramare

DELETE (delete).Pe baza formatului JSON pe care

aplicațiile mobile îl foloseau deja, a fost foarte simplu sa creez în portal tabele pre-cum Events, Locations, Sessions, Speakers, Tracks – locul în care aveau să stea datele. Imediat după popularea cu date (care desigur că se poate face manual, lucru nere-comandat, așa că am făcut o aplicație care împinge datele în tabele din Azure), aces-tea erau deja disponibile în formatul JSON deja cunoscut de aplicațiile mobile (unde nu a fost nevoie de moficări, exact așa cum ne doream) printr-un call de tipul https://codecampevents.azure-mobile.net/tables/Events.

Desigur că deasupra acestui model de acces la date există un nivel de securi-tate, aplicabil din portal la nivel de tabel și operație de tip Read, Insert, Update, Delete, nivel care constă în validări pe bază de chei secrete (menținute tot in portal) sau în autentificare folosind sisteme de identitate precum Google, Microsoft, Facebook si Twitter.

Până acum am vorbit doar de creare de tabele și diverse configurări. Dar cum scriu cod în serviciu, care e modelul pro-gramatic, cum intervin atunci când vreau să tratez apelurile către serviciu? Răspunsul e evident în imaginea de mai jos unde e descrisă secvența de procesare a cererilor

HTTP. Mai întâi acționează nivelul 1, la care nu am acces programatic, e parte din platformă, e locul în care cererea HTTP și conținutul acesteia, inclusiv identități, sunt interpretate, transformate în obiecte Java Script și apoi trimise ca parametri la nive-lul Scripting Layer, locul unde pot interveni cu propriul cod. Stai puțin, Java Script?! Ei bine, da – aceste scripturi rulează peste Node JS care e găzduit pe plaformă. De ce Java Script? Probabil pentru că toată lumea îl știe și pentru că avem deja Node JS. Oricum modelul e generos, există API pen-tru acces la baze de date, apeluri de resurse/servicii HTTP, push notifications către aplicațiile mobile (iOS, Android, Windows Phone și Windows 8), acces la Azure Blob Storage și Service Bus, și mă aștept la lista sa crească. Revenind la Scripting Layer, după procesarea codului scris de mine ca progra-mator, execuția continuă cu nivelul 2, unde obictele Java Script validate, îmbogățite, procesate conform nevoilor aplicației, sunt mapate pe câmpuri din baza de date.

Imaginea de mai jos prezintă interacțiunea dintre aplicațiile mobile, backend și mine însumi care m-am asigu-rat ca participanții la conferință știu locația, ora de începere și alte informații utile,

trimițîndu-le notificări direct pe smart phone prin intermediul serviciului mobil.

Fiecare operație are în spate un script

relativ simplu scris în JavaScript, care fie interacționa cu baza date, fie genera noti-ficări de tip push prin intemediul unui API foarte simplu. Restul muncii inves-tite e legată de cîteva configurări banale pentru securitate, notificări, integrare cu Facebook, managementul bazei de date din spatele seriviciului. Ați putea crede căam facut toate astea în mai puțin de două zile? Ei bine, în primul rând au fost nopți, iar in al doilea rând au mai fost cîteva ore în plus pentru rezolvarea unor bug-uri “mind twis-ting” de Java Script. Dar totul a mers atît de repede nu pentru că aș fi eu un geniu al progamării, ci pentru că plaftorma e foarte clară și simplu de folosit.

Voi incheia prin a vă întreba: ce-am văzut până acum e suficient pentru a spune că avem un serviciu robust, gata pentru medii de producție? N-am spus nimic despre monitorizare, logging, scalabilitate, scheduled tasks și alte funcții obligatorii pentru o aplicație serioasă. Ei bine, toate astea sunt deja acolo, și vă recomand să le încercați2!

2 www.windowsazure.com/en-us/develop/mobile/

Page 24: Today Software Magazine N15/2013

24 nr. 15/Septembrie | www.todaysoftmag.ro

programare

Descrierea clasică a TDD este că programatorul:

• Scrie un singur test automat care pică (adesea numit pasul „Red”);• Realizează cea mai mică modificare

în cod pentru a face testul să treacă ( pasul „Green”);• R e f a c tor i z e a z ă c o du l ( p a su l

„Refactor”).

Acest ciclu se repetă cu o frecvență mare, ajungând la maxim 5 minute pentru practicienii experimentați. Pentru începă-tori, 15-30 min este o durată normală care scade odată cu acumularea experienței. Nu discutăm aici despre scris teste pe cod exis-tent; în acest caz timpul necesar pentru a scrie teste este proporțional cu complexi-tatea codului.

Această descriere este foarte ușor de transmis, dar din păcate nu conține detalii importante pentru cei care vor să înceapă să aplice TDD, lucru care creează confuzie.

Primul lucru pe care trebuie să-l înțelegem despre TDD este că, în ciuda numelui (dezvoltare condusă de teste), nu este o metodă de testare. TDD este o metodă de a obține un design potrivit pentru pro-blema rezolvată. Testele sunt folosite cu două scopuri:

• avansul design-ului (soluției)• verificarea faptului că modificările

din cod nu au afectat rezolvarea proble-mei de până la momentul rulării lor.

Deoarece noțiunea de software design este ambiguă, merită explicat ce înseamnă design în acest context. Design-ul nu este altceva decât „crearea de artefacte care rezolvă probleme”1. În cazul programă-rii, artefactul creat este codul. Mai exact, la nivelul cel mai de jos, artefactele create sunt variabile, metode, clase și modurile de colaborare dintre obiecte (numite și „contracte”).

Două lucruri sunt așadar importante pentru design-ul unei aplicații software:

• rezolvă o problemă...• cât mai simplu și elegant posibil

Dacă programatorii scriu cod elegant care nu rezolvă o problemă, atunci prin definiție nu au obținut design. Cel mai rapid și elegant mod de a demonstra că problema este rezolvată este prin rularea unor teste automate care pot fi revizuite că acoperă toate aspectele problemei.

Găsirea unor rezolvări simple și 1 Karl Ulrich, „Design – Creation of Artifacts in

Society” http://opim.wharton.upenn.edu/~ulrich/designbook.html

După cum afirmam în articolele anterioare despre software craftsmanship, Test Driven Development este una dintre practicile considerate de bază pentru arti-zanii software. În ciuda numărului tot mai mare de articole, blog-uri, filmulețe

sau cărți despre acest subiect, Test Driven Development (TDD) continuă să fie un subiect de confuzie în comunitățile de programatori. Acest articol va încerca să structureze și să clarifice subiectul și să ofere suport celor care vor să învețe mai multe despre el.

Test Driven Development și

design incremental

Alexandru [email protected]

Agile Coach and Trainer, with a focus on technical practices@Mozaic Works

Adrian [email protected]

Programmer. Organizational and Technical Trainer and Coach@Mozaic Works

Page 25: Today Software Magazine N15/2013

25www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

elegante se izbește de câteva obstacole:• Neînțelegerea completă a proble-

mei. Creierul uman are o capacitate limitată, iar problemele pe care pro-gramatorii trebuie să le rezolve cresc în complexitate. Nu ar trebui așadar să mire pe nimeni că uneori nici cel mai bun programator nu reușește să înțeleagă toate aspectele unei probleme.• Generalizarea pripită (precum și

alte „cognitive biases” ). Adesea pro-gramatorii doresc să obțină o soluție mai generală, înainte de a avea destule cazuri particulare care o justifică. Dusă la extrem, această tendință poate crea un cod aparent bine conceput care însă este foarte greu de ținut la zi.• Tendința de a folosi soluțiile cunos-

cute. „Când ai un ciocan, vezi în jurul tău doar cuie”, spune o vorbă veche. Problemele pe care le rezolvă progra-matorii în fiecare zi pot părea la un nivel superficial foarte asemănătoare. Realitatea este că soluțiile în programare depind foarte mult de mici detalii.• Schimbarea rapidă a cerințelor.

Este deja un fapt cunoscut că cerințele se schimbă de la o zi la alta. O soluție care era bună ieri s-ar putea să nu se mai potrivească azi.

Realitățile de zi cu zi din viața unui pro-gramator duc la nevoia de a avea un design ușor de modificat. Cerințele se modifică, echipele se modifică, programatorii învață mai multe în fiecare zi despre produs și teh-nologii. În zilele noastre, design bun este cvasi-sinonim cu design ușor de modi-ficat. De aceea, calitățile unui design bun sunt:

• Atât structura cât și codul sunt ușor de înțeles pentru toți programatorii implicați.• Majoritatea funcționalităților

cerute pot fi implementate cu modifi-cări minimale în cod. Acest lucru este posibil când clase mici și foarte specia-lizate lucrează împreună conform unor contracte bine definite între interfețele lor. • Este ușor de verificat dacă modifică-

rile din cod nu au afectat implementarea existentă.

O soluție pentru aceste probleme este design-ul incremental. Design-ul incre-mental înseamnă crearea design-ului în timpul scrierii codului. Design-ul incre-mental este o alternativă la metoda clasică de a face design: înainte de a începe scrierea codului, pe hârtie sau în unelte specializate.

Pentru a face design incremental, e nevoie de următorii pași:

• Analiza problemei și împărțirea ei în probleme mai mici. De exemplu, în cazul creării unui joc de Tetris, se poate porni de la cel mai simplu joc cu putință: o piesă cât un singur pătrat care cade într-o fântână cu înălțimea 1 și jocul se termină (alternativ, se poate considera că a umplut o linie care trebuie eliminată, doar că introduce regula eliminării liniei care poate fi ușor adăugată mai târziu).• Identificarea unor exemple con-

crete (valori de intrare și ieșire așteptate). De exemplu, după ce jocul începe, piesa apare pe tablă într-o anumită poziție.• Implementarea câte unui exemplu

în cel mai simplu mod posibil.

Design-ul incremental combate proble-mele enunțate anterior astfel:

• Prin definirea de exemple, problema devine mai clară. Mai mult, exemplele pot fi discutate mult mai ușor cu per-soane non-tehnice (clienții) decât codul.• Lista de exemple este completată pe

măsură ce noi comportamente sunt iden-tificate în timpul dezvoltării. Prin iterare, șansele de a rata părți din problemă scad.• Simplificarea problemei permite

diminuarea complexității astfel încât creierul să o poată gestiona.• Implementarea celei mai simple

soluții pentru fiecare exemplu permite evitarea generalizării pripite. • Soluția este tot timpul simplă (atât

cât permite problema), ceea ce ușurează modificarea ei în cazul schimbării cerințelor.

Test Driven Development este cea mai bună metodă cunoscută de a face design incremental. Testele codează exemplele de utilizare a soluției și pot fi folosite pentru verificarea continuă a ei. Implementarea celei mai simple soluții la fiecare moment ajută la evitarea generalizărilor pripite. Refactorizarea duce la simplificarea soluției.

Deoarece dezvoltarea folosind TDD pornește de la exemple iar codul scris la fiecare pas este cât mai simplu și fără gene-ralizări, pasul de refactorizare implică mai ales identificarea și reducerea similarităților din cod (numite uneori „duplicare”, deoa-rece două bucăți de cod fac același lucru în moduri diferite). Similaritățile pot fi elimi-nate doar prin generalizare, care se traduce în cod prin abstracții. (Nu este vorba doar de clase abstracte, ci și de clase care servesc

pentru un scop mai larg decât au fost inițial concepute).

Prin introducerea abstracțiilor, progra-matorul obține un design flexibil, perfect adaptat la problema curentă. Datorită folo-sirii testelor automate, programatorul poate oricând demonstra că soluția sa este perfect validă pentru lista de comportamente defi-nită prin teste. Sună excelent, nu-i așa?

Adopția TDD nu este însă simplă. La nivel personal, câteva obstacole trebuie depășite:

• Învățarea tehnicilor necesare pentru scrierea de teste unitare simple. Foarte importante sunt aici dublele de testare (în principal stubs și mocks).• Simplificarea. Aceasta este o abilitate

care se dezvoltă în timp, prin exercițiu și cu feedback de la alte persoane.• Identificarea similarităților din

cod. Anumite similarități sunt evidente, pe când altele sunt mai subtile și pot fi percepute cu antrenament.• Design. Similaritățile pot fi dimi-

nuate prin diverse moduri, iar unele conduc la rezultate mai bune decât altele. Cunoștințele de software design (design patterns, design principles dintre care menționăm SOLID principles și cele patru principii ale designului simplu) sunt esențiale pentru obținerea celor mai simple soluții.• Concentrarea mai mare pe pro-

blemă și mai redusă pe soluție. Școala îi învață pe programatori să se gândească la soluții. Designul incremental cere identificarea de exemple și simplificarea problemei înainte de a scrie prima linie de cod. Programatorul care încearcă TDD trebuie să își elimine tendința de a se gândi la design sau la cod în această primă fază.• Refactorizarea rapidă și eficientă.

Refactorizarea poate lua mult timp dacă nu este pe deplin stăpânită de programa-tori. Exersarea tehnicilor de refactorizare cu scopul de a crește viteza este foarte importantă pentru mediile de producție.

La nivelul unei echipe, e nevoie în plus de o perioadă de armonizare a stilului de design și de scris teste. În cazul unor medii mai complexe (mult cod existent netestat, mai multe echipe care lucrează la același produs, lucrul la distanță etc.), adopția trebuie tratată cu mare grijă pentru a evita problemele legate de productivitate. Recomandarea este în situațiile complexe să se recurgă la coaching tehnic pentru ges-tiunea schimbărilor.

Page 26: Today Software Magazine N15/2013

TODAY SOFTWARE MAGAZINE

26 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

ConcluzieDesignul incremental înseamnă crea-

rea designului pe măsură ce codul e scris. Designul incremental este o alternativă la designul făcut pe hârtie sau în unelte spe-cializate înainte de a scrie cod. Design-ul incremental pornește de la exemple și generalizează soluția pe măsură ce apar dovezi (similarități în cod).

Acesta este și avantajul design-ului incremental: se bazează pe dovezi și nu pe intuiție (ceea ce ar putea să ni se ceară în viitor). Soluțiile generate în urma aces-tui proces sunt cele mai simple pentru problema data, atât cât e ea cunoscută la momentul respectiv.

TDD este cea mai bună metodă cunoscută de a face design incremental. Practicienii TDD codifică exemplele folo-sind teste care sunt apoi păstrate pentru a valida soluția completă. Prin identificarea și diminuarea similarităților din cod în pasul de refactorizare, design-ul este sim-plificat și îmbunătățit în continuu.

Scopul primar al designului incremen-tal este de a obține design simplu și ușor de modificat cât mai rapid posibil. TDD și

design incremental dau un plus de eficiență mai ales pentru rezolvarea unor probleme complet noi și care nu sunt bine stăpânite de către programatori.

Pentru adopția TDD este nevoie de exersare, singur sau într-o comunitate, folosind una din metodele descrise în articolele anterioare despre software craf-tsmanship: etc.

Întrebările pe acest subiect sunt bineve-nite pe programez.ro sau direct către autori.

Test Driven Development și design incrementalprogramare

Page 27: Today Software Magazine N15/2013

27www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

IntroducereClustering este un proces care exami-

nează o colecţie de „puncte” și grupează așa-numitele puncte în „clusters” (grupe) potrivit unor măsurători ale distanţei. Scopul principal al procesului de clustering (al grupării) este să se obţină o stare în care punctele din același cluster (aceeași grupare) să aibă o distanţă mică unul faţă de altul, iar punctele din grupe diferite să fie la o distanţă mare unele de altele. Definirea termenilor de distanţă „mare” și „mică” depinde de dome-niul în care se aplică clustering (gruparea).

Un exemplu de clustering într-un spaţiu bi-dimensional poate fi văzut în următoarea imagine:

Totuși, probleme moderne de cluste-ring implică spaţii euclidiene de dimensiuni foarte mari sau și mai amuzant este cazul în care sunt implicate spaţii care nu sunt eucli-diene, făcând astfel ca măsurarea distanţei să nu fie deloc intuitivă.

Un scenariu de clustering posibil în lumea reală poate fi nevoia de a grupa docu-mente după subiectul lor, în baza existenţei unor cuvinte neobișnuite, comune în docu-mente sau cerinţa de a grupa persoanele care merg la film după tipul filmelor care le plac, în contextul diverselor proceduri de afaceri.

Conceptul de distanţă este o măsură descrisă prin câteva proprietăţi principale. O măsură de distanţă este întotdeauna non-negativă (numai distanţa dintre un punct și sine însuși este zero), este simetrică (nu contează ordinea în care sunt luate în con-siderare punctele atunci când măsurăm distanţa dintre ele) și trebuie să respecte ine-galitatea triunghiului (distanţa de la X la Y la Z nu este niciodată mai mică decât distanţa care merge direct de la X la Z).

Clustering (gruparea) este o metodă de a analiza date obţinute prin măsurători. Aceasta ne permite să grupăm datele în clase și să utilizăm așa-numitele clase obţi-nute drept bază în învăţarea automată. De asemenea, aceasta oferă analizarea mai

rapidă a măsurătorilor sau valori aproximative ale unor măsurători viitoare, prin extrapolare. În secţiunile care urmează vom încerca să acoperim subiectul referitor la gruparea datelor. Această tehnică este utilă în special atunci când avem de-a face cu cantităţi mari de date, un scenariu care nu este neobișnuit având în vedere explozia de date și informaţii din zilele noastre.

Clustering for High-Dimensional

Data Sets

programare

Lucian Brăescu [email protected]

Software Developer @ Accesa

Page 28: Today Software Magazine N15/2013

28 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

Strategii de clustering (grupare)Există două tipuri de strategii de clus-

tering: algoritmi ierarhici și algoritmi point-assignment.

Algoritmii ierarhici încep cu fiecare punct în propriul său cluster, combină clusteri-i în funcţie de diferitele definiţii de „apropiere” și se oprește atunci când combinaţii suplimentare ar duce la forma-rea unor clustere indezirabile (de exemplu atunci când am ajuns la un număr pre-determinat de cluster-e pentru domeniul nostru sau când un cluster rezultat are puncte care sunt împrăștiate pe o regiune mult prea mare).

În algoritmii de atribuire a punctelor, punctele sunt luate în considerare într-o anumită ordine și fiecare dintre ele este atribuit cluster-ului în care se potrivește cel mai bine. Aceasta este de obicei precedată de o fază scurtă în care se estimează cluster-ele iniţiale. Ocazional, variaţii ale acestor algoritmi combină sau separă cluster-ele sau permit punctelor să fie dezatribuite, dacă acestea se află prea departe de oricare dintre cluster-ele actuale, pentru a reduce zgomotul.

“Blestemul” dimensionalităţiiAcest „blestem” să referă la fenomenele

diverse care apar în contextul unor cantități mari de informație atunci când analizăm și organizăm datele în spaţii supra-dimensio-nale. Tema comună a acestor probleme este că atunci când dimensionalitatea crește, volumul spaţiului se mărește atât de repede încât datele disponibile devin împrăștiate.

Această raritate este problematică pentru orice metodă care necesită relevanţă statis-tică. Pentru a obţine un rezultat corect și de încredere din punct de vedere statistic, cantitatea de date necesară pentru a sus-ţine rezultatul crește deseori exponenţial cu dimensionalitatea. De exemplu, spaţiile euclidiene supra-dimensionale și de aseme-nea spaţiile non-euclidiene au un număr de proprietăţi non-intuitive, cum ar fi faptul că aproape toate perechile de puncte sunt distanţate în mod egal unele de altele sau aproape oricare doi vectori sunt ortogonali.

Clustering ierarhicPentru spaţiile euclidiene, cluster-ing

(gruparea) începe cu fiecare punct în pro-priul său cluster și apoi cluster-e mai mari vor fi construite prin combinarea a două cluster-e mai mici. În acest scenariu trebuie să decidem dinainte cum vor fi reprezen-tate cluster-ele, cum vom alege pe care două clustere să le unim și când vom înceta să mai combinăm cluster-ele. Algoritmul de bază este ilustrat în figura de mai jos:

Pentru spaţii non-euclidiene trebuie să utilizăm o măsurare a distanţei care este calculată din puncte cum ar fi Jaccard, cosinus sau edit distance. O restricţie în acest scenariu este aceea că nu putem să bazăm distanţele pe „locaţia” punctelor. O altă restricţie este că nu putem să reprezen-tăm un cluster prin centroidul său și astfel

trebuie să alegem unul dintre punctele cluster-ului drept reprezentant echivalent și în mod ideal, acesta ar trebui să fie un punct apropiat de toate celelalte puncte ale cluster-ului, astfel încât într-un fel să se găsească în „centru”. Un asemenea punct este numit un clustroid și poate fi obţinut prin următoarele tehnici:

• Minimizarea sumei distanţelor la celelalte puncte din cluster,• Minimizarea distanţei maxime la un

alt punct din cluster,• Minimizarea sumei pătratelor distan-

ţelor la celelalte puncte din cluster.

Point-assignment Clustering (Clustering prin atribuirea punctelor)

Vom prezenta doar doi algoritmi de point-assignment clustering în secţiunea următoare, dar pot exista variaţii în funcţie de cerinţele diferitelor domenii.

Algoritmul K-means - presupune un spaţiu euclidian și de asemenea numărul clusterelor, k, este cunoscut dinainte. Se poate deduce valoarea lui k prin încercare și eroare sau alte metode. Algoritmul de bază este ilustrat în figura de mai jos:

O variaţie a acestui algoritm este BFR (Bradley, Fayyad și Reina), algoritm ce ne permite să executăm k-means pe datele care sunt prea mari pentru a încăpea în memoria principală. Aceasta presupune că forma cluster-ului trebuie să fie distribuită normal în jurul centroidului, de exemplu, axele cluster-ului trebuie să se alinieze cu axele spaţiului, presupunere ilustrată în figura următoare.

Clustering for High-Dimensional Data Setsprogramare

Page 29: Today Software Magazine N15/2013

29www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

Algoritmul începe prin selectarea k puncte. Punctele din fișierul de date sunt

citite pe bucăţi și fiecare bucată trebuie să conţină suficient de puţine puncte astfel încât acestea să poată fi procesate în memo-ria principală. Algoritmul depozitează în memoria principală rezumate ale cluste-relor k și alte date de ajutor, dar nu datele principale care sunt procesate.

Algoritmul CURE (Clustering Using REpresentatives) – Grupare utilizând reprezentanţi – este utilizat pentru cluste-ring la scară largă și nu presupune nimic în legătură cu forma cluster-elor. În loc să reprezinte cluster-ele prin centroidul lor, acesta folosește o colecţie de puncte repre-zentative care se află la o distanţă cât mai mare posibil unele de altele și care definesc graniţele cluster-ului.

Algoritmul trece apoi la atribuirea unor puncte noi clusterelor, în funcţie de cel mai apropiat punct reprezentativ. O ilustrare a rezultatului clustering-ului se poate vedea în figura de mai jos și este o formă clar dife-rită de rezultatele procesului de cluster-ing

prin algoritmii anteriori:

ConcluziiAnaliza prin cluster sau clustering-ul

este sarcina de a grupa un set de obiecte astfel încât obiectele din același grup numit cluster se aseamănă între ele într-un fel sau altul mai mult decât cu cele din alte clustere. Aceasta se folosește de obicei în extragerea datelor în scop de explorare și analize de date statistice, utilizate în multe domenii precum învăţarea automată, recunoașterea tiparelor, analiza imaginii, recuperarea de informaţii și bioinformatica.

Analiza cluster nu este definită printr-un algoritm specific, dar sarcina generală care trebuie rezolvată poate fi îndeplinită prin diverși algoritmi care diferă prin

definirea a ceea ce constituie un cluster și care este modul optim de a-i găsi.

Referinţe“Mining of Massive Datasets”, Anand Rajaraman, Jure Leskovec, Jeffrey D. Ullman Stanford UniversityS. Guha, R. Rastogi, and K. Shim, “CURE: An effici-ent clustering algorithm for large databases,” Proc. ACM SIGMOD Intl. Conf. on Management of Data

Page 30: Today Software Magazine N15/2013

TODAY SOFTWARE MAGAZINE

30 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

eveniment

Cunoștințele și vasta experiență msg systems în domeniul de dezvoltare și imple-mentare a soluțiilor SAP vor fi împărtășite participanților în cadrul acestei conferințe. Temele ce vor fi abordate sunt împărțite pe trei capitole distincte :

• Design și user experience folosind soluțiile SAP – o descriere a pașilor parcurși pentru a susține nevoile și schimbările ultimilor ani ce au avut loc în modul în care oamenii lucrează cu aplicații software. În trecut focus-ul soluțiilor SAP nu era neapărat bazat pe user experience ci pe integritatea soluțiilor și pe capacitatea lor de a aco-peri ușor fiecare necesitate nouă de business. Astfel în cadrul acestei sesiuni vom parcurge modul în care soluțiile SAP au trecut de la simplitate la folosi-rea noilor tehnologii IT cu scopul de a oferi aceleași soluții functionalităţi de business, dar cu un front-end ce aduce îmbunătățiri substanțiale în ceea ce privește user experience.• Datorită faptului că volumul de

date crește simțitor în ultima perioadă, sistemele de baze date relaționale nu mai sunt capabile să reacționeze la pro-vocările ce apar tot mai des dinspre scenariile cu volumuri de date foarte

mari, așa numitele „Big Data“. O sesiune dedicată soluției SAP în acest dome-niu sub numele de SAP HANA bazată pe In-Memory Database, va fi punctul central al conferinței. Spre deosebire de alte soluții de tip In-Memory Database, SAP HANA nu este doar un alt tip de baze de date, ci este într-adevăr o imple-mentare completă pentru In-Memory Computing. Datorita arhitecturii sale oferă funcții adiționale, pe lînga database și application server, cum ar fi Code2Data și UI5 folosind un mediu de dezvoltare de ultimă generație. Showcase-ul SAP HANA dezvoltat de către msg systems va demonstra participanților acest lucru.• Proiectele msg systems din domeniul

soluțiilor SAP se desfășoară în echipe mixte alcătuite din angajați din Cluj și Germania, astfel managementul acestor proiecte a reprezentat o mare provocare pentru a obține succesul in fiecare dintre aceste colaborari.

Pe baza experientei acumulate din acti-vitatea celor cinci ani de când msg systems România activează pe piața din România, vom prezenta aspectele principale (ori-entate pe agilitate și flexibilitate) care ne asigură succesul în proiectele bazate pe

soluții SAP.Fiecare sesiune va fi susținută de un

speaker cu experiență relevantă în tematica prezentată. Temele abordate vor provoca desigur discuții sau reflecții pe care dorim să le parcurgem la finalul fiecărei sesiuni.

Sunt invitați să participe toți cei interesați și preocupați de temele abordate în cadrul conferinței și doritori să afle care sunt planurile de viitor în materie de busi-ness software. Înregistrarea la “Conferinţa IT bazată pe tehnologia SAP” este deja des-chisă. Toţi cei care doresc să ia parte la acest eveniment sunt rugaţi să trimită un email cu confirmarea de participare la adresa: [email protected].

Vă așteptăm cu plăcere și mare interes!

Agenda departamentelor de business IT din întreaga lume cuprinde teme strâns legate de extinderea în materie de rapiditate, ușurință și agilitate în utilizarea și realizarea componentelor software. De aceea soluțiile oferite de SAP se află într-un proces continuu de adaptare la noile tendințe de pe piata IT mondială, iar msg systems preia și dezvoltă aplicații alături de SAP

folosind ultimele tehnologii în domeniu.

SAP Conference

programare

Horea Rațiu [email protected]

Director Departament SAP@ msg systems Romania

Page 31: Today Software Magazine N15/2013

31www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINEprogramare

Platforme mobile precum iOS, Android, BlackBerry și Windows Phone luptă acum și pentru câștigarea atenției din partea dezvoltatorilor software care până la urmă au potențialul de a atrage sau chiar respinge utilizatori.

Dezvoltatorii de aplicații software la rândul lor caută să își facă loc în piețele de aplicații software mobile, un loc care să le asigure stabilitate pe termen lung. Pentru aceasta, dez-voltatorii sun puși la încercarea de a alege între dezvoltarea aplicațiilor mobile utilizând cod nativ sau opțiunea de a dezvolta aplicații hibride.

Aplicații nativeAplicațiile native sunt aplicații scrise în limbajul de programare specific platformei pen-

tru care se dezvoltă. În tabelul 1.0 puteți observa câteva din sistemele de operare mobile împreună cu limbajul de programare specific, platformele pentru dezvoltare precum și cu medii de dezvoltare folosite de către programatorii de aplicații mobile.

Dezvoltarea aplicațiilor mobile: Între nativ și hibrid

În ziua de astăzi utilizarea dispozitivelor mobile inteligente din categoria tabletelor și telefoanelor este într-o creștere permanentă. Din această cauză producătorii de dis-pozitive mobile sunt forțați să își îmbunătățească produsele hardware și să vină cu

tehnologii îmbunătățite sau parcă rupte din filmele SF. Nu este o noutate nici faptul că volumul vânzărilor de produse hardware de la companii gigant precum Apple, Samsung, BlackBerry sau Nokia este dat în bună parte, de numărul și calitatea aplicațiilor software pe care fiecare platformă îl pune la dispoziție utilizatorilor ei.

programare

Cătălin [email protected]

Mobile Software Developer@ Fortech

Sistem de operare

Limbaj de programare

Platformă IDE

Android Java, C++ Android SDK/NDK

Android Studio

iOS Objective-C Cocoa Touch XcodeWindows Phone C#, Visual Basic

.NET (Windows Phone 8), C++

.NET, Windows Phone Runtime API

Windows Phone Software Development Kit

BlackBerry OS Java BlackBerry Java SDK

BlackBerry JDE / Eclipse folosind BlackBerry Plug-in

Firefox OS JavaScript WebAPI Orice IDE HTML, JavaScript și CSS (NetBeans, Eclipse, etc.)

Symbian C++ Qt Qt Creator

Tabelul 1

Page 32: Today Software Magazine N15/2013

32 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

Dezvoltarea aplicațiilor mobile: Între nativ și hibridprogramare

CaracteristiciUn utilizator de dispozitive mobile fidel poate face diferența

foarte ușor între aplicațiile mobile native sau cele hibrid. Datorită timpului de răspuns superior și faptului că acesta are acces la dife-rite componente hardware ale dispozitivului (bluetooth, camera foto sau cea frontală, ledurile de notificare (Android) și altele), aplicațiile native pot fi destul de atractive pentru oricine .

Giganții piețelor de aplicații mobile sunt tot mai puși pe îmbunătățirea mediilor de dezvoltare și a șabloanelor de lucru, totul pentru a atrage de partea lor cât mai mulți dezvoltatori de aplicații mobile. Acesta este un lucru cât se poate de bun pentru un dezvoltator care poate profita de unelte gratuite menite să facă implementarea aplicației cât mai rapidă, câștigând mai mult timp pentru investirea în idei noi sau finisarea produsului.

O aplicație nativă care respectă regulile de dezvoltare speci-fice platformei pentru care este destinată, nu va folosi niciodată aceleași resurse grafice: butoane, icoane, fundaluri pentru liste, etc. pentru mai mult de o platformă. Aceasta din cauză că aplicațiile native trebuie să păstreze din comportamentul și designul siste-mului de operare pe care rulează. Acestea trebuie să se integreze în platforma aleasă de utilizatorul final.

Aplicațiile native sunt foarte pretențioase când vine vorba de cunoștiințele de dezvoltare a programatorului. Aceasta deoarece fiecare platformă cere cunoașterea a cel puțin unui limbaj de pro-gramare diferit față de alta platformă iar la rândul lui și limbajul de programare vine cu un șablon de lucru care de obicei este des-tul de stufos. Pentru ca un produs ”nativ” să poată fi rulat pe mai multe sisteme de operare, de obicei este nevoie de câte un progra-mator pentru fiecare platformă în funcție de volumul de muncă, termene limită și alți factori.

Din punct de vedere al creativității, dezvoltatorul are frâu liber fiind limitat doar de resursele dispozitivului pe care aplicația va ruleze.

Mai jos puteți observa câteva elemente ale aplicațiilor native găsite pe cele mai folosite sisteme de operare mobile.

Figură 1.0 Android Action Bar cu listă de selecție activă

Figură 1.1 iOS 7 Selector pentru dată

Părți pozitiveDezvoltarea aplicațiilor native poate aduce următoarele bene-

ficii celor care le dezvoltă:• Posibilitatea de a accesa diferite componente hardware (blu-

etooth, senzori de mișcare, leduri de notificare, camera și altele);• Timp mai scurt de răspuns pentru unele operații;• Programatorul are acces la ultimile API-uri apărute pe plat-

formă încă de la versiunile beta;• Aplicația are o vizibilitate mai mare pe platforma unde

este lansată datorită faptului că este distribuită prin piețele de aplicații folosite de majoritatea utilizatoriilor de dispozitive mobile;• Oferă utilizatorului o experiență de utilizare superioară fapt

ce poate duce la creșterea utilizării aplicației;• Unelte de dezvoltare gratuite;• Mediile de dezvoltare vin de obicei cu unelte bune de testare

a codului dar si de analiză a aplicației din punct de vedere a consumului de memorie si timpilor de răspuns.

Aplicațiile native pot aduce utilizatori noi în timp ce-i păs-trează pe cei care deja le folosesc. Majoritatea brand-urilor mari din lumea aplicațiilor sociale (facebook, twitter, linkedin, etc.) și-au dat seama de puterea aplicațiilor native de a atrage utilizatori și au ales să meargă pe această nișă.

Părți negativeCa orice lucru, aplicațiile native au și părți negative care pot

pune pe gânduri un starter. Părțile negative sunt următoarele:• Spre deosebire de aplicațiile web, distribuția aplicațiilor

native este adesea limitată de forțarea acestora de a putea fi dis-tribuite doar prin piețele de aplicații care pot impune diferite bariere (ex. Prin unele piețe de aplicații nu se pot vinde aplicații din anumite țări),• Dacă se urmărește lansarea produsului pe mai multe plat-

forme, costurile cresc semnificativ, fiind nevoie de rescrierea codului pentru fiecare platformă în parte,• De regulă, specializarea programatorului pe o platformă

poate dura ani de zile fapt ce duce și la o limitare a resurselor umane.

Aplicații hibrideAplicațiile mobile hibride sunt aplicații care de regulă sunt

dezvoltate folosind tehnologii WEB (JavaScript, HTML, CSS). La ora actuală aplicațiile hibride încep să prindă rădăcini tot mai puternice datorită faptului că multe medii de dezvoltare devin tot mai stabile și oferă acces la tot mai multe funcționalități hardware ale dispozitivelor. În Tabelul 2 puteți urmări câteva dintre cele mai folosite medii de dezvoltare ale aplicațiilor hibrid:

CaracteristiciAplicațiile hibrid de regulă sunt formate dintr-o componentă

nativă de tip webbrowser care poate accesa diferite funcționalități ale platformei pe care rulează (ex. camera video, lista de contacte, etc.). De regulă aplicațiile hibrid au același design grafic pe toate platformele pe care au fost publicate fără să țină cont de ghidul de implementare a interfeței cu utilizatorul a fiecărei platforme pe care rulează aplicația.

Este de ajuns să scri codul de bază pentru o aplicație, pentru ca ulterior, ca prin magie aplicația să funcționeze pe mai multe

Page 33: Today Software Magazine N15/2013

33www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

platforme. Din această cauză dezvoltatorii de aplicații hibrid au mai mult timp pentru idei noi sau dezvoltarea unei noi aplicații.

Datorită faptului că majoritatea uneltelor de dezvoltare folo-sesc tehnologiile WEB pentru implementarea aplicației, găsirea unui programator pentru a duce la bun sfârșit o aplicație hibridă pentru dispozitive mobile, este un lucru mai puțin stresant. Volumul de lucru pe WEB a făcut ca tot mai mulți programa-tori să învețe tehnologii precum JavaScript, HTML și CSS. Acest lucru duce la o tranziție relativ ușoară către lumea programării de aplicații hibrid pentru dispozitive mobile.

Părți pozitive• Timp de dezvoltare mic pentru o acoperire largă de sisteme

de operare;• Învățarea mai rapidă a tehnologiilor de dezvoltare, fiind

vorba în principiu de tehnologi WEB;• Aplicația are o vizibilitate mai mare pe platforma unde

este lansată datorită faptului că este distribuită prin piețele de aplicații folosite de majoritatea utilizatoriilor de dispozitive mobile;• Unelte de dezvoltare gratuite.

Părți negative• Dependență față de dezvoltatorii uneltelor de lucru, fapt ce

poate întârzia lansarea aplicației care să funcționeze pe o versi-une nouă a unui sistem de operare sau întârzieri în repararea

problemelor tehnice ce pot apărea mai ales la versiuni noi ale sistemelor de operare pentru mediile mobile;• Performanță mai scăzută în unele locuri • Reputație scăzută în rândul utilizatorilor fideli a unei anu-

mite platforme mobile;• Pierdere de timp pe repararea problemelor găsite în urma

faptului că nu pe toate platformele aplicația o să ruleze la fel de bine.

Denumire Tehnologii de lucru

Platforme suportate

Suport pentru limbaj nativ

PhoneGap HTML, JavaScript și CSS

iOS

Android

BlackBerry

Windows Phone

Symbian

WebOS

Nu

Appcelerator Titanium

HTML, JavaScript

iOS

Android

BlackBerry

Windows Phone

Da

Adobe AIR ActionScript, HTML, JavaScript

iOS

Android

BlackBerry

Nu

Sencha Touch HTML, JavaScript și CSS

iOS

Android

BlackBerry

Windows Phone

Nu

Categorie Nativ HibridCunoștințe necesare dezvoltării aplicațiilor

Objective-C

Cocoa Touch

Java

Android SDK

C

C++

Android NDK

WindowsPhone Runtime

C# / VB.NET

.NET

HTML

CSS

Javascript

Mediul și șablonul de dezvoltare (Phonegap, Titanium, etc.)

Stocare date Da DaAcces API platformă

Da Da prin intermediul șablonului de dezvoltare

Acces componente hardware

Da Da prin intermediul șablonului de dezvoltare

Timp de răspuns la animații

Foarte bun în funcție de platformă

Bun spre slab în funcție de platformă

Potrivit pentru dezvoltarea jocurilor

Da Nu

Timp de dezvoltare

Foarte mult Mediu

Exemplu în imagini

Figură 4 Linkedin Android

Figură 3 Linkedin iOS

Tabelul 2

Tabelul 3

Page 34: Today Software Magazine N15/2013

TODAY SOFTWARE MAGAZINE

34 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

programare

ComparațieÎn primul rând aș dori să evidențiez

faptul că ambele modalități de dezvoltare a aplicațiilor mobile se distribuie prin piețele de aplicații existente pe platformele mobile (AppStore, GooglePlay, Windows Phone Store, etc.). Din această cauză, ambele vor participa și la verificarea de dinaintea lan-sării propriu zise în magazinul virtual.

După cum am menționat la părțile pozitive a metodei de dezvoltare nativă, branduri puternice care au publicat aplicații mobile, au trecut la dezvoltarea aplicațiilor native în pași grăbiți și aceasta se întâmplă și în ziua de astăzi (vezi aplicația YouTube de pe Windows Phone Store). Această trecere se datorează faptului că prin dezvol-tarea nativă pot scoate tot ce se poate din platforma pe care rulează aplicația și totul la performanțe ridicate. Pe de altă parte trebuie să nu uităm că tot acești giganți au făcut primii pași către lumea mobilă cu aplicații web, urmate de aplicații hibride și abia mai la urmă au trecut la metoda nativă.

În Tabelul 3 puteți observa comparația între cele două metode de dezvoltare pe mai multe categorii, am luat în conside-rare dezvoltarea pentru iOS, Android și Windows Phone doar.

ConcluzieAmbele modalități de dezvoltare sunt

importante și trebuie luate în calcul în momentul în care se vrea să se dezvolte o aplicație pentru dispozitivele mobile. Important este să se decidă dacă aplicația trebuie să fie bogată din punct de vedere al animațiilor, dacă se dorește publicarea aplicației pe mai multe platforme sau cât de mare este bugetul alocat dezvoltării aplicației respective.

Alegeți dezvoltarea nativă a aplicației dacă timpul de dezvoltare și implicit buge-tul nu este mic. Această opțiune poate aduce utilizatori fideli pe termen lung și review-uri pozitive. În același timp vă ajută să distribuiți clienților versiuni ale aplicației care poate rula pe cele mai noi versiuni ale sistemelor de operare pe care rulează încă de la lansarea acestora.

Alegeți dezvoltarea hibridă a aplicației dacă timpul de dezvoltare a aplicației si bugetul sunt mici. Această opțiune de dezvoltare se potrivește foarte bine și dacă doriți să experimentați o idee nouă de aplicație. Aplicațiile hibrid sunt foarte bune pentru un startup, acestea vă ajută să acaparați atenție pe mai multe platforme cu un minim de efort și la o calitate corectă.

Dezvoltarea aplicațiilor mobile: Între nativ și hibrid

Page 35: Today Software Magazine N15/2013

35www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE programare

În cadrul acestui articolul voi prezinta diferite modalități prin care putem să facem debug fără să fie nevoie să folosim Visual Studio.

De ce fără Visual Studio?Deși Visual Studio este un produs extrem

de bun, care ne ajută când avem nevoie să descoperim bug-uri și să facem debug, acesta nu o să ne fie de foarte mare folos în producție. În momentul în care avem un bug în producție, regulile jocului se schimbă. În producție aplicația este compilată pentru release, iar debug-ul nu mai este posibil.

Când este nevoie de aceste tool-uri ?În momentul în care nu putem să repro-

ducem problema pe mașinile de dezvoltare. Orice am face nu putem să reproducem pro-blema pe care o avem. Neputând reproduce problema este ca și cum am căuta acul în carul cu fân.

Dacă întâmplător apare problema, dar fără să avem un scenariu de reproducere, ajungem în același caz amintit mai sus.

Un alt caz ar fi atunci când memoria ocupată de aplicația noastră crește în timp, fenomenul manifestând-se doar la mașinile de producție. Putem doar să bănuim pro-blema, dar nu știm cauza exactă. Din această cauză, putem să ajungem să “reparăm” cu

totul alte zone din cod.

Ce soluții avem? În general avem la îndemână două vari-

ante. Prima variantă se bazează în totalitate pe log-uri. Prin intermediul log-urilor putem să identificăm zonele din aplicație care nu funcționează corespunzător. Dar folosirea log-urilor poate să fie cu două tăișuri. Este nevoie să știi ce este necasar să apară în log-uri și cât de des. În caz contrar te poți trezi cu mii de pagini de log-uri nefolositoare și aproape imposibil de analizat. Dacă ajungem să avem prea multe log-uri putem să fim surprinși de schimbarea comportamentului aplicației.

În cazul în care este posibil putem să tri-mitem PDB-urile pe mașina de producție. Prin acest mod vom avea acces la tot stack trace-ul pe care o excepție îl generează.

Log-urile ne pot fi de mare ajutor pen-tru a rezolva diferite probleme care apar în producție. Chiar dacă log-urile sunt foarte folositoare, nu ne vor ajuta de fiecare dată. Există diferite probleme care pot să apară și care să fie extrem de greu de identificat folo-sind log-urile. De exemplu un dead-lock ar fi aproape imposibil de identificat prin inter-mediul log-urilor.

O altă variantă pe care o avem la dispoziție este crearea de memory dump-uri

Debugging în producție

De câte ori nu vi s-a întâmplat să aveți un o problemă în producție sau în mediul de testare pe care să nu o puteți reproduce pe mașina de dezvoltare? Când acest lucru se întâmplă, lucrurile ajung să o ia razna, iar noi încercăm diferite modalități de

remote debug. Fără să știm, aceste tool-uri pot să fie chiar lângă noi, însă noi le ignorăm sau nu știm cum să le folosim.

Radu [email protected]

Senior Software Engineer@iQuest

Page 36: Today Software Magazine N15/2013

36 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

și analizarea acestora.

Ce este un memory dumpUn memory dump este un snapshot a procesului într-un anu-

mit moment. Pe lângă informațiile despre alocarea memoriei, un snapshot conține informații despre starea diferitelor thread-uri, obiecte și cod. Folosind această informație putem să obținem informații foarte valoroase despre procesul care rulează. Acest snapshot reprezintă imaginea memoriei în format 32 sau 64 de biti, în funcție de sistem.

În general există două tipuri de memory dump. Primul este minidump. Acesta este cel mai sim-plu memory dump care se poate face ș i c onț i n e d o ar informații despre stack – starea proce-sului sau despre ce apeluri se fac și așa mai departe.

Al doi le a t ip de memory dump e s t e f u l l d u m p . Acesta conține toate informațiile care se pot obține, inclu-

zând un snapshot la memorie. Timpul necesar pentru obținerea unui full dump este mult mai mare în comparație cu un minidump, iar fișierul de dump în sine este mult mai mare.

Cum putem genera un memory dump?Există diferite aplicații care ne ajută să facem acest lucru.

Unele din acestea ne permit să facem un dump în mod automat în funcție de diferiți parametri.

În cazul în care este nevoie să facem un memory dump cea mai simplă soluție este din Task Manager. Tot ce este nevoie să facem este să dăm click dreapta pe un proces și să selectăm “Create dump file”. Același lucru îl putem face folosind Visual Studio sau “adplus.exe”. Ultima variantă este un tool de debug pentru Windows care se regăsește pe aproape toate mașinile care rulează Windows.

În următorul exemplu specificăm la adplus să ne creeze un memory dump în acest moment:adplus –hang –o C:\myDump –pn MyApp.exe

Prin intermediul opțiunii pn specificăm numele procesu-lui pentru care dorim să creăm un dump. În cazul în care dorim să creăm un dump în mod automat putem să folosim opțiunea –crash.adplus –crash –o C:\myDump –pn MyApp.exeadplus –crash –o C:\myDump –sc MyApp.exe

Dacă este nevoie să creăm un dump în mod automat pe lângă “adplus.exe” putem să folosim DebugDiag și “clrdmp.dll”. Cele trei opțiuni pe care le avem pentru crearea unui dump în mod automat sunt destul de similare. DebugDump ne permite să configurăm sistemul ca să creeze automat un memory dump în momentul în care nivelul CPU-ului este mai mare de X% într-un anumit inter-val de timp.

Pe lângă aceste tool-uri există multe altele pe piață. În funcție de necesități puteți să folosiți orice tool de acest tip.

Cum analizăm un dump?Debugger-ul nativ pentru un dump este reprezentat de

Windbg. Acesta este un tool de puternic, cu care se pot obține informații foarte prețioase. Singura problemă a acestui tool este că nu este prietenos. Vom vedea puțin mai târziu care sunt alternati-vele la Windbg. Trebuie să ținem cont că în aproape toate cazurile alternativele la Windbg folosesc în spate acest debugger – doar că expun o interfață mai prietenoasă și mai utilă.

O alternativă la Windbg este orice Visual Studio mai recent decât Visual Studio 2010. Începând cu Visual Studio 2010, acesta ne oferă posibilitatea să analizăm dump-urile pentru .NET 4.0+. Ceea ce putem să facem în Visual Studio nu este la fel de avansat în comparație cu ceea ce ne permite Windbg, dar în general poate să ne fie de ajuns.

Windbg

Primul pas pe care trebuie să îl facem după ce deschidem Windbg este să încărcăm un dump (CTRL+D). Odată încărcat, un dump poate să fie vizualizat din diferite moduri. De exemplu putem să analizăm thread-urile, memoria, resursele alocate și așa mai departe.

Pentru a putea face mai mult, de exemplu să vizualizăm și să analizăm codul managed avem nevoie să încărcăm librării aju-tătoare precum Son of Strike (SOS) sau Son of Strike Extension (SOSEX). Aceste două librări ne deschid noi uși, putând să anali-zeze datele din dump într-un mod extrem de folositor.

Son of Strike (SOS)SOS ne permite să vizualizăm procesul în sine. Ne permite să

accesăm obiectele thread-urile și informațiile din garbage colec-tor. Putem să vizualizăm inclusiv nume de variabile și valoarea acestora.

Trebuie știut că toate informațiile care se pot accesa fac parte din managed memory. Din această cauză, SOS este strâns legat de CLR și de versiunea acestuia. În momentul în care încărcăm modulul SOS, trebuie să avem grijă să îl încărcăm pe cel corespun-zător pentru versiunea de .NET a aplicației noastre..loadby sos mscorks.loadby sos clr

În exemplele de mai sus am încărcat modulul de SOS pentru .NET 3.5-, iar în al doilea exemplu am încărcat SOS pentru .NET 4.0+.

Toate comenzile SOS încep cu “!”. Comanda de bază este “!help”. În cazul în care dorim să vizualizăm lista de thread-uri putem să ne folosim de comanda “!threads” care are un output asemănător cu următorul:

Debugging în producțieprogramare

Page 37: Today Software Magazine N15/2013

37www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

0:000> !threadsThreadCount: 5UnstartedThread: 0BackgroundThread: 2PendingThread: 0DeadThread: 0Hosted Runtime: noLock ID OSID ThreadOBJ Count Apt Exception…

Debug la un crashPănă acuma am văzut că avem la dispoziție multe tool-uri pen-

tru a crea și a analiza un dump. Acuma a venit momentul să vedem ce trebuie să facem pentru a putea analiza un crash.

1. Lansăm procesul2. Înainte „să crape”, comandăm adplus-ului să creeze un

dump în momentul în care procesul „crapă”adplus –crash –pn [numeProcesor]

3. Lansăm Windbg (dupa crash),3.1. Încărcăm dump-ul,3.2. Încărcăm SOS,3.3. !threads (pentru a vedea ce thread a crăpat),3.4. !PrintException (pe thread-ul care a crăpat pentru a

vedea excepția),3.5. !clrstack (pentru a vedea stack-ul de apeluri),3.6. !clrstack –a (pentru a vedea stack-ul împreună cu

parametri),3.7. !DumpHeap –type Expcetion (listeză toate excepțiile

care nu sunt legate de GC).

Trebuie știut că rezultatele sunt în funcție de modul în care aplicația este compilată. De exemplu, dacă s-a făcut optimizare de cod în momentul compilării. Totodată lista de excepții pe care o putem obține poate să fie destul de lungă din cauza unor comenzi precum !DumpHeap ne returnează toate excepțiile produse – chiar și cele pre-create precum ThreadAbord.

Cum identificăm un deadlock?Un deadlock apare în momentul în care două sau mai multe

thread-uri așteaptă dupa aceeași resursă. În aceste cazuri o parte din aplicație dacă nu chiar toată aplicația se blochează.

Pentru acest caz primul pas este să creăm un dump folosind comanda: Addplus –hang –o –c:\myDump –pn [NumeProces]

Apoi va fi nevoie să analizăm stack trace-ul pentru fiecare thread și să vedem dacă este blocat (Monitor.Enter, ReadWriteLock.Enter…). Odată ce am identificat aceste thread-uri putem să găsim resursele folosite de fiecare thread, împreună cu thread-ul care ține blocate aceste resurse.

Pentru acești ultimi pași comanda “!syncblk” ne vine în aju-tor. Aceasta ne listează blocurile de memorie pentru un anumit thread.

SumarÎn cadrul acestui articol am descoperit cum putem să creăm

un dump și care sunt tool-urile de bază pentru a-l analiza. Prin intermediul fișierelor dump putem să accesăm informația pe care nu am putea-o accesa în mod normal. Unele date pot să fie acce-sate doar prin aceste dump-uri și nu prin alte moduri (debug din Visual Studio).

Am putea afirma că aceste tool-uri sunt puternice, dar sunt destul de greu de folosit, necesitând o curbă de învățare destul de mare.

Page 38: Today Software Magazine N15/2013

38 nr. 15/Septembrie | www.todaysoftmag.ro

testare

Model Based Testing fără presupuneri

Din ce în ce mai mult se vede că Model Based Testing1 (MBT) este folosită ca metodologie pentru testare software. Ca tester nu mai este posibil să testezi folosind modelele tradiționale, impuse de metodele tradiționale de dezvoltare software. Luând în considerare procesele contemporane de dezvoltare agile, testerul trebuie să anticipeze noi moduri de a lucra și testa. Proprietățile proiectelor, care de multe ori se rezumă la interactivitate, iterativitate, dezvoltare incrementală și multidiscipli-naritate, trebuie să fie în consistență cu modul de testare curent. MBT se des-curcă bine în astfel de situații, dar este condiționat de o aplicare corectă.

Beneficiile aplicării MBT sunt cunos-cute, de aceea printr-o utilizare riguroasă și adecvată, MBT se adresează orică-ror ambiguități, inconsistențe și erori în cerințele de funcționalitate semnalate

1 http://en.wikipedia.org/wiki/Model-based_testing

într-un stadiu incipient al proiectului. Acest lucru va scurta durata proiectului și va imbunătăți calitatea software-ului. Un alt avantaj al MBT-ului este flexibilitatea și adaptabilitatea la orice set de testare. Dacă apar schimbări în funcționalități, modelul poate fi ușor ajustat și se poate genera un nou set de testare într-un mod automat. Generarea automată a setului de testare este un alt beneficiu pe care MBT îl are.

MBT este un nou mod de testare a proiectelor software care devine avantajos față de alte metode de testare, prin modul în care se organizează procesul de testare și prin instrumentul folosit.

Dacă se iau în considerare metodele tradiționale de dezvol-tare software, se poate vedea că testerul este independent față de

Model Based Testing (MBT) este un mod nou de testare eficient pentru meto-dele moderne de dezvoltare software. Comparat cu alte metode de testare acest mod de testare are mai multe avantaje. Rezultatele sunt dependente de

modul cum este organizat procesul de testare și care este rolul testerului în proiect. Este nevoie ca testerul să presupună orbește un model prestabilit sau ar trebui ca testerul să fie responsabil de pregatirea modelului de testare. În acest articol, aducem un răspuns acestei întrebări.

Tudor Cobâlaș[email protected]

Business Developer@ XL Team

Page 39: Today Software Magazine N15/2013

39www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

procesul de dezvoltare. Testarea tehnică și dezvoltarea sunt considerate designul teh-nic, și testerul va folosi designul funcțional în aranjarea setului de teste pentru testa-rea funcțională. Mai precis acest lucru va rezulta într-o viziune independentă a testerului față de interpretarea erorilor în cerințele pe proiect. Testerul nu poate face presupuneri și toată informația cerută pen-tru stabilirea a unui set de testare complet este colectat de tester în persoană.

Dar cum funcționează MBT? Poate un tester să o viziune independentă? Și oare are testerul o viziune clară să completeze baza de teste, fără să facă presupuneri? Răspunsul este da, atât timp cât testerul poate să dezvolte modelele de testare de el însuși.

De prea multe ori se poate vedea că în MBT modelele care sunt folosite pentru generarea seturilor de testare, sunt foarte tehnice, statice și greu de interpretat și aceste modele nu sunt produse de însuși

testerul. Cine poate garanta că autorul aces-tor modele nu a gresit interpretarea? Cine are grijă de actualizarea modelelor după o actua-lizare a cerințelor? Oare toți cei implicați, spre exemplu testerul, mana-gerul de proiect etc. înțeleg aceste modele? Sunt toate situații le de testare capturate în

aceste modele? Și poate mai important, sunt aceste modele aranjate în scopul gene-rarii setului de testare, sau ce algoritm de testare se folosește, bazat pe aria de testare ce se dorește acoperită?

Soluția pentru problema descrisă mai sus este simplă. În MBT, testerul funcțional trebuie să creeze și să deseneze modelele de testare. Testerul ar trebui să se implice în evaluarea acestor modele și restul echi-pei de dezvoltare, precum și echipa de business pentru a detecta unde este nevoie să adapteze modelul. Exact ca și testerul funcțional care compune setul de testare în procesul de dezvoltare tradițional. Astfel, testerul funcțional protejează o perspec-tivă independentă, aceste modele fiind ușor de citit și interpretat, de ajustat de către tester, bazându-se pe modele reale de testare. Dintre aceste modele, setul de testare poate fi generat automat având la baza algoritmul de testare, și luând în considerare acoperirea de testare dorită.

Instrumentul, care este folosit, trebuie să fie adaptat la aceasta. Testerul trebuie să fie capabil să deseneze modelele de testare cu instrumentul respectiv, iar această unealtă trebuie să genereze automat setul de testare pe baza diferiților algoritmi (acoperire de testare).

Concluzia este că pentru testarea funcțională, MBT se mulează perfect in procesele de dezvoltare moderne, unde testerul funcțional are o responsabilitate și valoare mare.

Pornind de la această metodologie am dezvoltat un instrument de testare numit DTM Tool2, care ajută testerii funcționali să-și genereze automat scenariile de testare.

2 www.dtmtool.com

Page 40: Today Software Magazine N15/2013

40 nr. 15/Septembrie | www.todaysoftmag.ro

Este golful un sport potrivit doar pen-tru anumite categorii de vârstă? Jucăm golf doar pentru a petrece timp în natură, plimbându-ne pe un câmp bine întreţinut? Multe persoane care nu cunosc deloc acest sport vor răspunde afirmativ, dar cei ce au petrecut măcar o ora pe un teren de golf vor începe să își reconsidere opinia.

Endava a învăţat să aprecieze golful prin organizarea digitală a celui mai mare campionat din lume – The Open, susţi-nut de forul ce coordonează acest sport. Platforma TheOpen.com înseamnă un efort susţinut timp de 6-7 luni în fiecare an pentru a dezvolta secţiuni și features noi ce vor fi expuse utilizatorilor în cele patru zile de turneu.

Numărul de utilizatori unici crește exponenţial de la un minut la altul în timpul turneului. Dacă în cele trei zile de practice rounds sunt 200-300 de useri concurenţi

pe secundă, în prima și a 2-a zi a turneului ajung la 40.000, iar în ultima zi ating pragul de 80.000 de utilizatori concurenţi.

Asigurarea unei experienţe unice pen-tru aproape 7 milioane de utilizatori pe parcursul turneului aduce un sentiment de împlinire dar și certificare pentru o compa-nie cu experienţă digitală precum Endava.

Alături de platforma TheOpen.com utilizatorul este expus unei plaje largi de opţiuni digitale, totul pentru a avea acces oriunde și prin orice mijloc la evenimentele din timpul turneului:

• Jumătate din utilizatori accesează versiunea mobile a site-ului care repro-duce fidel fiecare secţiune și feature a platformei web;• Aplicaţia pentru iOS a fost plasată pe

primul loc în Top Free UK AppStore și pe locul 3 în Top Free US AppStore în timpul turneului.

The Open Golf Championship este organizat de R&A începând cu secolul XIX, iar barierele acestui sport au fost de mult depășite. În prezent The Open reprezintă unul din icon-urile turistice ale Scoţiei și atrage anual sute de mii de pasionaţi ai

golfului.

TheOpen.com – susţinerea digitală a

unui turneu de success

programare

Bogdan [email protected]

Project Manager@ Endava

business

Page 41: Today Software Magazine N15/2013

41www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINEprogramare

• Spectatorii și turiștii prezenţi în jurul terenului de golf unde are loc eve-nimentul pot accesa un website dedicat prin care organizatorii trimit informaţii updatate regulat;• În materie de Live Coverage, web-

site-ul oferă streaming din partea unor giganţi media cum sunt BBC și ESPN dar are și propriul canal Live video - @TheOpenLive dar și un canal Radio dedi-cat @TheOpenRadio, accesat în mare măsură de utilizatorii mobile.

Inovaţia absolută a site-ului este de departe Leaderboard-ul, un agregator de informaţie statistică ce prezintă diferite view-uri ale ranking-ului dar și simularea live a terenului – practic fiecare jucător deţine un GPS tracker care transmite coor-donatele poziţiei de pe teren. Aceste coordonate sunt apoi reprezentate pe un teren digital în miniatură, astfel utilizato-rii pot să vadă în orice moment unde sunt jucătorii preferaţi.

Proiectele de dimensiunea aceasta prezintă și diferite provocări iar în cazul acesta, de departe cea mai mare provocare este asigurarea unei arhitecturi complet scalabile, ce să poată face faţă unui ramp-up atât de abrupt în cele 4 zile de turneu. Diferite nivele de caching pentru Sitecore CMS respectiv Akamai CDN dar și optimi-zările timpilor de răspuns în latura riscurile unui timeout sau ale unui crash. Pentru a simula un load real s-au utilizat resurse cloud folosind Amazon Web Services.

Pe lângă acestea, sistemul de content geo-targeted trebuie perfect calibrat pentru a servi conținutul potrivit fiecărei regiuni a lumii. Se aplică geo-targeting pe secţiuni importante ale site-ului, bannere sau cana-lele Live streaming. Totul pentru a oferi o experienţă cât mai placută și a reţine utili-zatorul pe site.

Echipa de proiect din Endava a moni-torizat în rotaţii de 8 ore turneul și evoluţia

constantă a site-urilor dintr-un WAR room asamblat special pentru acest eveniment. Suportul 24/7 a fost asigurat pentru 2 săp-tămâni prin expertiza backend – conținut și baza de date, front-end – JS, CSS dar și integrarea cu diferiţi 3rd party service suppliers.

Integrarea cu mediile sociale prezintă un interes ridicat, Twitter și Facebook sunt principalele platforme de promovare, iar Widgeturi specifice sunt plasate direct pe homepage pentru a angrena utilizatorii în dezbateri.

Iată câteva cifre ale succesului din 2013: • Aproape 7 milioane de utilizatori

unici în cele 4 zile ale campionatului. • Un vârf de 78,000 utilizatori unici

concurenţi pe site pe secundă în momen-tul în care Phil Mickelson a început să joace 18th green. • 31 milioane page impressions în săp-

tămâna campionatului.• Pe Twitter #TheOpen a fost plasat

pe primul loc trending channels in UK si USA. • Cea mai variată gama de opţi-

uni digitale pentru un turneu de golf : desktop, mobile, iPhone, iPad, Android,

Blackberry, WinPhone, on-site mobile site, live video streaming, live audio streaming, Video on Demand.• 6 x live Streams – 2 canale BBC,

ESPN, @TheOpenLIVE on-site live broadcast, @TheOpenRadio si Radio 5 Live.• 4 milioane de clipuri video on

demand iniţiate în 4 zile. • Peste 50% din utilizatori provin de pe

un dispozitiv mobile.

Planul pentru The Open 2014 con-ţine deja surprize pentru fanii golfului, iar Endava va demonstra încă odată că inova-ţia digitală nu are limite.

Page 42: Today Software Magazine N15/2013

42 nr. 15/Septembrie | www.todaysoftmag.ro

Spuneți-ne câteva cuvinte despre dvs.Foarte pe scurt despre mine: sunt

antreprenor de peste 13 ani, un pasionat de management de proiect, un specialist în business networking, organizator de eve-nimente, producător de materiale video și de emisiuni educative, coordonatorul unor proiecte online și social media și mai nou antreprenor social. În viaţa de zi cu zi îmi plac mult natura, muntele, filmele, cărţile, muzica clasică și fotografia. De 3 ani și jumătate coordonăm programul Business Days, un program care își dorește să ajute la dinamizarea mediului de afaceri din România și la crearea temeliei unei culturi antreprenoriale sănătoase în ţara noastră. Este o misiune dificilă, cu multe provo-cări, dar o facem din pasiune și cu multă încredere în viitorul acestei ţări. Aceste lucruri și mai ales tenacitatea de a face faţă la numeroasele încercări sunt cele care ne diferenţiază în primul rând de alţii care mai activează în acest domeniu. Indiferent cât de greu ne-a fost, nu am abandonat calea. Atunci când dorești să ajuţi și să creezi impact social în mediul în care activezi, trebuie uneori să renunţi la confortul tău și să pui pe primul plan interesele celor pe care îi servești prin proiectul tău. Din punctul meu de vedere acest lucru este cel care diferenţiază un antreprenor social de un antreprenor. Multi încă nu înţeleg asta.

Ce înseamnă Business Days și ce aduce nou comparativ cu celelalte evenimente de business ?

Business Days este mai mult decât o serie de evenimente. Este în primul rând o platformă de oportunităţi care are rolul de a genera numeroase posibilităţi de business celor care o folosesc, fie că ne referim la evenimentele Business Days, fie că ne refe-rim la sesiunile de business networking, fie că ne referim la aplicaţiile mobile și online, fie că ne referim la platformele de sociali-zare, fie că ne referim la platformele video educaţionale.

Dacă ne referim strict la zona de eve-nimente Business Days, ceea ce aducem nou pe piaţa de evenimente business este în primul rând caracterul itinerant și faptul că Business Days acoperă prin impactul pe care îl generează majoritatea ţării. Un alt atu al nostru este faptul că evenimentele noastre sunt riguros pregătite. Înainte de a desena programul unui eveniment, au loc numeroase întâlniri cu oameni de afaceri din regiunea respectivă (manageri, antre-prenori, specialiști din diverse domenii) cu care avem discuţii de analiză a problemelor și provocărilor cu care se confruntă aceș-tia. Aceste discuţii exploratorii ne ajută să identificăm noi oportunităţi și mai ales să cartografiem nevoile și problemele concrete la care încercăm să gasim modalităţi de a

Business Days este un eveniment consacrat deja pe piața națională iar luna aceasta vom avea ocazia să participăm la ediția din Cluj a acestuia. Laszlo Pacso, organi-zatorul Business Days a avut amabilitatea să răspundă întrebărilor Today Software

Magazine.

Business Networking de la offline

la online pe platforma

Business Days

evenimente

Ovidiu Măţan, [email protected]

Editor-in-chief Today Software Magazine

Page 43: Today Software Magazine N15/2013

43www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

aduce soluţii, răspunsuri și idei în special prin cele 16 workshopuri ale evenimen-tului. Un alt fapt prin care ne diferenţiem de orice alt organizator de evenimente de business din România este structura eveni-mentului, care se desfășoară pe trei paliere:

• conferinţe - care au rolul de a-i încărca cu energie pozitivă pe cei pre-zenţi, prin care inspirăm, motivăm și oferim idei, prin care oferim o analiză a tendinţelor, relevăm oportunităţi în dez-voltarea și progresul tehnologic• workshopuri - care au rolul de a dez-

volta abilităţi în special prin schimb de experienţa și interactivitate, unde focu-sul se pune pe componenţa practică, pragmatică, pe studii de caz, exemple de bună practică și foarte multe sesiuni de întrebări și răspunsuri prin care să îi încurajăm pe cei prezenţi să-și ridice problemele pentru a găsi sfaturi, idei, soluţii și chiar resurse pentru a le rezolva.• sesiuni le formale de business

networking - care au rolul de a genera oportunităţi reale de business. Astfel, după ce participanții au fost încărcaţi cu energie pozitivă și au fost expuși la un bombardament de idei și inspiraţie și sunt dornici să genereze afaceri sau să le pună în practică, le creăm posibilitatea, fie sub forma unor microîntâlniri, fie sub forma unor sesiuni open, fie sub forma unor întâlniri generate prin aplicaţia de matchmaking să treacă la acţiune și să fructifice resursele existente de contacte și oportunităţi la un astfel de eveniment.

Pe lângă acestea aș adăuga existenţa unei aplicaţii online și mobile prin care cei prezenţi au acces la toată baza de date cu participanţi, speakeri și parteneri și pot seta întâlniri sau genera schimburi de cărţi de vizită virtuale. Un alt atu al nostru este și transmiterea live a evenimentului și impli-carea unor televiziuni locale sau naţionale într-un maraton de emisiuni conexe sau de transmisiuni directe de la locul eveni-mentului, prin care facem ca informaţiile

valoroase transmise de speakeri să ajungă și la cei care nu au putut fi la locul evenimen-tului, dar sunt interesaţi de cele discutate la conferinţe și mese rotunde.

BD este unul dintre puținele evenimente ce promovează inițiativele și afacerile locale, felicitări ! Cum vedeţi evoluția acestora de-a lungul timpului? Se păstrează aceleași dome-nii de activitate în evoluția pieței românești?

Da, așa este. Este esenţa evenimente-lor Business Days să promoveze afacerile românești și antreprenori sau manageri valoroși din mediul de afaceri autohton. Nu este ușor, pentru că, din păcate consu-matorii de astfel de evenimente preferă încă să plătească pentru modele aduse din afara ţării și mai puţin pentru acei antreprenori care au încercat și au reușit să obţină suc-cesul la noi în ţară. Poate că nu toţi sunt încă speakeri excepţionali, dar informa-ţiile transmise și mai ales dorinţa lor de a ajuta este mai sinceră și mai de folos decât a oricărui străin care vine pentru o zi sau jumătate de zi să-i înveţe pe cei prezenţi metode și modalităţi de a obţine succesul bazat pe reţete care funcţionează în altă ţară, fără să cunoască în mod real care sunt nevoile, provocările și problemele specifice ale mediului de afaceri din România. Mai

mult de atât, pentru că suntem absolut con-vinși că dezvoltarea abilităţilor de public speaking la cei care vorbesc la evenimen-tele Business Days va genera o mai mare reușită și un succes mai mare în transfe-rarea de idei și inspiraţie către cei prezenţi în sălile de conferinţă, am creat speaker support group, o echipă de profesioniști în arta vorbitului în public, care lucrează cu acei speakeri care doresc îmbunătăţirea abilităţilor pe trei planuri:

• înainte de eveniment - la pregătirea prezentării și la dezvoltarea abilităţilor de a crea impact în faţa celor din sală• în timpul evenimentului - evalu-

ează împreună cu cei din echipa TOAST MASTER România fiecare prezentare după mai multe criterii, cu scopul de a ajuta pe fiecare să-și înţeleagă lipsurile și să găsească modalităţi de creștere a cali-tăţii în prezentările publice• post eveniment - cu sesiuni de

coaching și training pentru dezvoltarea abilităţilor pe baza celor relevate din evaluări

Așa toţi avem de câștigat, pentru că de la ediţie la ediţie crește calitatea prezen-tărilor și dezvoltăm și în România o clasă de vorbitori publici de elită, care să poată merge și la evenimente de business din afara ţării, unde să poată promova, în calitate de ambasadori, oportunităţile de investiţie și parteneriat din ţara noastră.

Legat de domenii, pot spune că fiecare regiune are specificul ei, sunt zone mai puternic antreprenoriale, sunt zone mai puternic corporatiste și sunt zone unde dezvoltarea economică intră în regres. Una peste alta, suntem optimiști pentru că peste tot pe unde am fost am întâlnit companii și firme care cresc în perioada crizei de la an la an, arătând că se poate și că atunci când vrei ceva cu adevărat și ești dispus să investești multă muncă și răbdare, suc-cesul nu întârzie să apară. De la astfel de oameni se pot inspira și pot afla soluţii cei care participă la evenimentele Business

Laszlo Pacso - organizatorul Business Days

Page 44: Today Software Magazine N15/2013

TODAY SOFTWARE MAGAZINE

44 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

evenimente

Days. Business Days nu este despre cum poţi deveni milionar peste noapte, ci este despre cum poţi avea șansa la succes prin munca cinstită, susţinută și prin cooperare, pentru că, da, credem în spiritul asociativ și credem că pentru succes pe termen lung este nevoie să ne găsim parteneri, asociaţi, investitori și finanţatori care să înţeleagă și să creadă în afacarea noastră, iar pentru asta trebuie să învăţăm să fim transparenţi în comunicare și în relaţii.

Cu ce ar trebui să rămână un partici-pant BD după participarea la cele două zile ale evenimentului?

Cel puţin cu trei lucruri: inspiraţie, experienţă și contacte de afaceri. Acesta este și motto-ul nostru: „Inspiraţie, expe-rienţă și oportunităţi pentru cei care vor să genereze valoare în România”. Dacă primele două sunt greu cuantificabile ca valoare și doar timpul și practicarea celor învăţate poate genera într-o oarecare măsură o apreciere a lor, ultima este clară și evidentă. Am să dau un exemplu: un CEO la o companie care participă la o sesiune de microîntâlniri, în prima zi, la o sesi-une de tipul open în a doua zi și folosește aplicaţia matchmaking înainte, în timpul și după eveniment, poate genera undeva în jur de 25 + 99 + 100 = 224 de lead-uri la un eveniment, cu persoane despre care știe cel puţin 4 informaţii: cine este, din ce domeniu, ce funcţie are, unde îl poate ajuta și în ce domenii, unde are nevoie de aju-tor sau unde caută referinţe. Mai mult de atât, peste 70% dintre cei care au completat chestionarele și au participat la sesiunile de business networking la evenimentele Business Days apreciază că în urma aces-tor întâlniri se așteaptă la venituri de peste 10.000 de lei, dar jumătate dintre ei estimează la peste 100.000 de lei valoarea acestor afaceri viitoare. Cred că aceste cifre vorbesc de la sine. Cu o investiţie de maxim 100 de euro, ai 70% șanse să generezi peste 2.500 euro afaceri și 100% șanse să îţi crești baza de date cu peste 200 de contacte cu care ai interacţionat și ai avut fie o scurtă discuţie, fie ai corespondat prin aplicaţie, fie te-ai intersectat la workshopuri și mese rotunde.

Am văzut că BD va reveni la Cluj în luna septembrie. Ce aduceți nou în această ediție?

Faţă de anul trecut, avem un program mai interesant și mult mai bine adaptat. Venim a doua oară și cunoaștem mult mai

bine mediul de afaceri și nevoile lui. Vom avea aplicaţia de matchmaking, ce este ofe-rită gratuit tuturor celor prezenţi.

Vom avea în premieră naţională un demers comun între mediul academic, administraţia locală, societatea civilă și mediul de afaceri de a crea o dezbatere legată de strategia pe termen lung a ora-șului, cu focus pe atragerea de investitori străini, inclusiv prin implicarea comunităţii de expaţi la acest eveniment.

Faţă de acestea, vom avea diverse mani-festări suplimentare și vom extinde aria de impact prin suportul pe care îl vom oferi unor start-up-uri prin posibilitatea de a-și testa ideea de afaceri în faţa celor prezenţi la eveniment și prin facilitarea întâlnirilor cu câţiva business angels și investitori.

Deoarece suntem o publicație de IT, puteți să ne spuneți câteva cuvinte despre aplicațiile mobile devoltate de BD?

Avem mai exact două aplicaţii, una este inclusă în alta, dar ca funcţionalitate sunt două. Prima este o aplicaţie pentru smartphone-uri și care are rolul de a faci-lita accesul de pe aceste terminale mobile către programul evenimentului, speakerii, canalul video, streaming-ul live, pagina de facebook, blogul și diverse componente interactive de comunicare prin platformă.

A doua aplicaţie este cea de match-making „meet-me”, ce este oferită în mod gratuit fiecărui participant la un astfel de eveniment. Aplicaţia permite căutarea, filtrarea și sortarea bazei de date cu par-ticipanţii, după patru criterii: domeniu de activitate, funcţie, compania și numele permiţând astfel o ușurare a procesului de identificare a potenţialilor parteneri. Cu fiecare dintre cei identificaţi ca interesanţi se pot iniţia două acţiuni: fie se solicită un schimb virtual de cărţi de vizită, fie se soli-cită o întâlnire undeva într-o zonă special amenajată pentru astfel de întâlniri din cadrul evenimentului. Ambele acţiuni se fac printr-un email de permisiune, astfel cel care primește solicitarea o poate accepta sau refuza și în cazul întâlnirii o poate reprograma în funcţie de agenda sa.

Accesul în aplicaţie se face pe baza unui username și parole care se regăsesc pe invi-taţia primită la finalizarea procesului de înregistrare.

Cum vedeți evoluția pieței de IT în

România prin prisma participării compani-ilor de profil la eveniment?

Piaţa de IT este foarte prezentă la

evenimentele noastre și este una dintre cele mai dinamice din ţara noastră, mai ales cea software. Motiv pentru care la evenimentul de la Cluj din 25-26 septembrie chiar vom organiza o seară de întâlnire între membrii comunităţii de IT din zonă.

BD este un eveniment mare pentru piața

din România. Ne puteți spune ce înseamnă organizarea unui astfel de eveniment?

Este o muncă foarte grea, cauzele sunt multiple, dar cea mai pregnantă este men-talitatea încă în formare a consumatorilor de a plăti pentru participarea la astfel de evenimente. De asemenea, există o infla-ţie de evenimente pe piaţă, care nu oferă întotdeauna experienţa așteptată partici-panţilor și sponsorilor. De aceea, pentru a câștiga încrederea partenerilor, e nevoie de multă muncă, pasiune și o preocupare constantă pentru calitate. În plus, pentru a ne diferenţia pe piaţa evenimentelor, am ales să comunicăm total transparent. Facem publice de fiecare dată înregistrările video, fotografiile și mai ales infograficele cu prelucrarea datelor din chestionarele de feedback de la evenimentele anterioare, cu bune și cu rele. Prin această atitudine deschisă și mai ales prin faptul că nu aban-donăm această cale oricât ne este de greu, am reușit să strângem în jurul nostru parte-neri, susţinători, ambasadori, prieteni, fani și speakeri care ne susţin aproape necon-diţionat. Este un sentiment frumos și care ne dă acel imbold de care ai atât de mare nevoie atunci când dai de greu.

Business Days este în sine o poveste inspiraţională, pentru că este un proiect pornit de o mână de oameni, în plină criză financiară, cu un buget 0, fără experienţă în organizare de evenimente, dar cu multă pasiune, capacitate de muncă și răbdare.

Interviu: Business Days

Page 45: Today Software Magazine N15/2013

45www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

În piața globală de astăzi știm cu toţii că există un mediu extrem de competitiv, toate companiile fiind în căutarea unor îmbunătățiri permanente Astfel, pentru a – și atinge scopurile propuse, ele vor apela la consultanţi experţi, aceștia având ca scop aplicarea acestor metodologii. Multe dintre aceste organizaţii sunt deschise la aplicarea modalităţii de optimizare a performanţei oferite de Six Sigma. În timp ce acest lucru constituie un punct de plecare excelent, prima întrebare ar putea fi: „Ce este mai exact Lean Six Sigma și cum diferă ea faţă de Six Sigma sau Lean?” Dumneavoastră, dragi colegi din lumea IT și nu numai ar trebui să vă puneţi următoarea întrebare, „Dacă firma mea nu este în producție, atunci Lean Six Sigma s-ar putea aplica chiar și pentru organizația mea?” În acest articol, vom răs-punde la aceste întrebări mai pe larg, oferind o imagine de ansamblu a cadrului funda-mental al acestei metodologii.

Înainte de a folosi o metodologie de îmbunătăţire a proceselor din interiorul companiilor în care ne desfășurăm activita-tea zilnică, e bine să știm cu ce anume avem

de a face. Astfel, este esenţial să înţelegem faptul că Lean, Six Sigma și Lean Six Sigma sunt trei metodologii total diferite. Evident, toate au ca epicentru al existenţei lor obiec-tivul definirii valorii pentru client, iar prin valoare fiecare trebuie să înţeleagă poten-ţialul financiar al clientului de care acesta dispune și totodată suma pe care acesta ar dori să o investească. În acest sens, toate cele trei metodologii menţionate în rândurile de mai sus presupun optimizarea proceselor prin reducerea pierderilor și simplificarea activităţilor ce conduc la livrarea unui pro-dus de valoare în final.

În prezent, toată lumea a auzit de meto-dologia Lean Six Sigma și evident se întreabă ce este ea, de unde a pornit și cum trebuie aplicată pentru a se obţine rezultatele dorite în final. Răspunsurile căutate și dorite nu sunt deloc complicate. E bine de remarcat faptul că la o primă vedere ne dăm seama după jocul de cuvinte “Lean Six Sigma” că această metodologie este o combinare a lucrurilor bune luate din Lean cu avantajele Six Sigma,putând fi definită ca o abordare integrată, de management. Ea are în vedere

Ideea de inovaţie este abordată de un număr ridicat de companii ce au în prim – plan optimizarea proceselor sale interne și în final creșterea valorii de afaceri plus beneficiul de a-și vedea clienţii extreme de mulţumiţi de produsele pe care acestea le oferă. Lean

Six Sigma, o abordare relativ binecunsocută pentru obţinerea unor rezultate excelente, performante poate să-i ajute pe directorii multinaţionalelor să descopere noi oportunităţi de inovare dincolo de prestarea simplelor operatiuni, să atingă un grad ridicat de producti-vitate, o performantă financiară solidă precum și o înclinaţie inerentă către inovaţie.

Lean Six Sigma și

managementul inovaţiei

management

Monica Petraru [email protected]

Senior Business Analyst @ UNIQA Raiffeisen Software Service

Page 46: Today Software Magazine N15/2013

46 nr. 15/Septembrie, 2013 | www.todaysoftmag.ro

obţinerea unei îmbunătăţiri constante a proceselor. Pentru acestea se vor prelua atât elemente ale metodologiei Lean cu scopul de a reduce timpul de desfășurare a acestora apelând la eliminarea factorilor de pierdere, cât și elemente din metodolo-gia Six Sigma reprezentate de o diminuare a gradului de variabilitate a procesului. Această metodă poate fi utilizată în orice companie sau firmă unde se înregistrează pierderi pe fluxul proceselor cu parametri de intrare sau de ieșire care sunt variabile în timp.

Lean Six Sigma este o evoluţie naturală a disciplinelor de îmbunătățire a calității și proceselor care își au originea în anii 1950 în vederea eficientizării mecanismului de fabricaţie. Totul a debutat cu definirea unui accent pe îmbunătățirea calităţii, în scopul de a reduce costul producerii materialu-lui defect. Aceasta a evoluat în aplicarea principiilor similare pentru a îmbunătăți eficienţa procesului la nivelul unei fabrici, prin eliminarea de efort irosit doar pentru manufacturarea cantităţii necesare, nu de supraaglomerare a depozitelor. De-a lungul timpului, alte părți ale organizaţiei au simtit nevoia de a aborda această perspectivă de eficientizare a proceselor , un exemplu rele-vant în acest sens fiind și departamentele comerciale din cadrul unei întreprinderi.

Diferenţa dintre Lean, Six Sigma şi Lean Six Sigma

Lean și Six Sigma sunt ambele disci-pline pentru remedierea permanentă a proceselor din cadrul unei companii, dar acestea diferă în stabilirea obiectivelor pri-mordiale și manierelor de abordare Lean este o disciplină în care obiectivul este acela de a elimina deșeurile și eficiența procesului de creștere printr-un accent pe optimizarea vitezei și costurilor.

Lean e definită ca o disciplină ce are ca obiectiv asigurarea stabilităţii proceselor prin reducerea pierderilor și simplifica-rea activităţilor ce oferă clientului valoare Pentru orice elemente precum reducerea pierderilor, fluxul de valoare, flexibilitatea proceselor reprezintă componente arhe-tipale ale unei structuri sau companii de tip Lean, indiferent de domeniul de acti-vitate sau de sectorul în care se prestează activităţiile: producţie, servicii publice, de sănătate, financiare etc. .

Daca Lean asigură stabilitatea proce-selor și desfășurarea acestora într-un flux continuu, metodologia de management Six Sigma se focusează pe îmbunătăţirea calită-ţii prin diminuarea variabilităţii apelând la diverse instrumente statistice și calitative.

În timp ce în Lean se utilizează eve-nimentele de tip Kaizen, cartografierea fluxului de valoare, echilibrarea încărcării de lucru și analiza deșeurilor, metodolo-gia Six Sigma va aborda modelul DMAIC (Definire, Măsurare, Analiză, Îmbunătăţire, Control) în vederea reducerii variabilităţii proceselor printr-o orientare mai adâncă spre client. Astfel se va îmbunătăţi per-spectiva de înţelegere a punctelor critice ale fiecărui produs sau ale serviciului oferit și prin luarea unor decizii pe baza valorilor disponibile și a circumstanţelor avute în vedere.

În tabelul de mai jos se pot observa tră-săturile celor două metodologii descrise în rândurile de mai sus:

Pe baza definiţiilor enunţate anterior, metodologia Lean Six Sigma e definita ca un hibrid: preia elemente atât de tip Lean, cât și Six Sigma. Este nevoie de o abordare pragmatică de îmbunătăţire a proceselor din cadrul unei companii, cu un accent pe ceea ce este necesar și important pentru client. Caracteristici precum time – focu-sed strategy din Lean cu instrumentele de analiză statistică abordate de metodologia Six Sigma, care permite o soluție flexibilă în contextul abordării unui set complex de probleme.

Axul central al metodologiei Lean Six Sigma este reprezentat de framework – ul DMAIC (Definire, Măsurare, Analiză, Îmbunătăţire, Control). După cum se poate observa a fost preluat și de către acest hibrid, în special pentru proiecte care vizează îmbunătățirea proceselor de afaceri existente.

Framework – ul DMAICDMAIC ilustrează o metodologie de

proiect extrem de riguroasă ce are ca obiectiv esenţial creșterea gradului de capabilitate și totodată cel de reducere a defectelor identificate într-un proces – optimizarea serviciilor, produselor sau proceselor existente din cadrul unei companii / firme. Este necesară parcur-gerea următoarelor etape:

1. Definire2. Măsurare3. Analiză4. Îmbunătățire5. Control

1. Definire• Obiectivul acestei etape este

acela de a stabili obiectivul și scopul proiectului.

• Colectarea informaţiilor necesare legate de proces și client.

• Momentan, obiectivele finale ale proiectului se vor estima în funcţie de toate cunoștinţele legate de obiectivele strategice ale companiei, doleantele cli-enţilor, cât și de procesul care e destinat îmbunătăţirii.

• Se dorește atingerea unui nivel mai înalt de tip sigma.

2. Măsurare• Înţelegerea procesului .• Focusare maximă pe efortul de

îmbunătăţire a situaţiei curente.• Stabilirea unui nivel al capabili-

tăţii optim pentru obţinerea unui grad ridicat de performanţă a procesului.

3. Analiză• Odată ce datele inițiale au fost

stabilite, ulterior se va putea identifica de unde provin cauzele mult mai facil.

• În această fază, prin urmare, se pot localiza și identifica cauzele, cât și confirmarea lor prin utilizarea unui set

managementLean Six Sigma și managementul inovaţiei

Lean Six SigmaObiectiv Eliminarea

pierderilor

Creşterea nivelului de optimizare a procesului

Eliminarea variatiei

Eliminarea defectelor

Focusare maximă

Viteză şi cost

Calitate

Instrumente necesare

Evenimente de tip Kaizen

Value stream mapping

Work load balancing

7 wastes

Analiză Pareto, chart – uri de control

Analiză statistică, realizarea experimentelor

Sursa: www.sixsigmadaily.com

Page 47: Today Software Magazine N15/2013

47www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINE

de date concrete.

4. Îmbunătăţire• Definirea si validarea sistemu-

lui de monitorizare și control a noului proces.

• Identificarea potenţialelor moda-lităţi de optimizare.

• Elaborarea unor studii pilot.• Corectarea / Reevaluarea soluției

potenţiale.

5. Control• Controlul performanţei noului

proces.• Definirea unor standarde interne

și proceduri de lucru.• Implementarea unui proces de

control statistic.• Realizarea unui plan de proces de

control statistic.• Determinarea capabilităţii noului

proces.• Elaborarea și transferarea soluţiei

către beneficiarul proiectului.• R e d u c e r e a c o s t u r i l o r

și creșterea profitului.• Finalizarea proiectului și a

documentaţiei.

Implementarea metodologiei Lean Six Sigma în cadrul firmelor sau a marilor companii

Dacă tot am vorbit până acum din punct de vedere teoretic, cu siguranță aspectele aduse în prim – plan trebuie transpuse și în practică, în cadrul activită-ţilor noastre zilnice.

Așadar, vă propun să vă imaginaţi în ipostaza unui manager de multinational, a căror procese sunt complexe și dificile. Întrebarea e ce vom face mai departe pen-tru a optimiza aceste procese…

Astăzi, companiile folosesc principiile de bază ale metodologiei Lean Six Sigma în vederea obţinerii următoarelor target - uri:

• Focalizarea efectivă asupra dolean-ţelor clientului – creșterea satisfacţiei consumatorului;• Creșterea profitului;• Îmbunătăţirea calităţii produselor;• Creșterea mulţumirii în rândul

angajaţilor;• Reducerea costurilor de operare și

recuperări majore ale capitalului investit;• Mecanism de generare al manage-

mentului schimbarii;• Reducerea defectelor;• Cultivarea gustului extraordinar de

a excela;

Posibile capcane ce pot surveni de-a lun-gul implementării acestei metodologii

Lean Six Sigma oferă o metodologie și un set de instrumente pentru a conduce la îmbunătățirea continuă printr-o analiză bazată pe fapte și feedback permanent din partea clientului. Deseori, această sim-plitate este pierdută în zelul de a obţine rezultate măsurabile cât mai rapide, iar companiile nu reușesc să vadă succesul iminent. Aici se pot identifica unele dintre cele mai comune capcane întâlnite:

• Concentrarea asupra studiului în vederea obţinerii certificării;• Evitarea echilibrării alocării de

resurse;• Focusare maximă asupra colectării

cât mai multor date;• Implementarea unui program rigid

axat pe modele standardizate;• Devierea de la respectarea pașilor

caracteristici metodologiei DMAIC;• Presupunerea faptului că persoanele

certificate au veleităţi de profesare speci-fice managementului de proiecte;• Tendinţa de a obţine cele mai bune

rezultate din primul moment al abordării

acestei metodologii.

ConcluzieOrice persoană care dorește să devină

iniţiat în această metodologie sau efectiv să se implice în implementarea ei, poate să remarce faptul că Lean Six Sigma măsoară performanţa unui produs sau proces la nivel statistic (sau gradul de satisfacere a doleanţelor consumatorilor). Totodată, această metodologie furnizează organizaţi-ilor toate instrumentele necesare în vederea optimizării capabilităţii proceselor sale, creșterii performanţei mediului de afaceri și reducerii variaţiei rezultatelor procese-lor → calitate superioară a produselor si serviciilor.

Sursa: deakinprime.com

Page 48: Today Software Magazine N15/2013

48 nr. 15/Septembrie | www.todaysoftmag.ro

Empatia este definită ca fiind capaci-tatea de a sta în papucii altcuiva. Aceasta este definiţia pe care o folosim cu toţii. Specialiștii în domeniu definesc empatia cam la fel, poate prezentând mai multe faţete.

De ce scriu despre empatie? În primul rând pentru că este un cuvânt tot mai des întalnit. Nu este un cuvânt nou dar în pre-zent are foarte multă acoperire în mediul de presă de business. Acum empatia este considerată acea calitate de care trebuie să se țină cont în mediul profesional. Sunt de acord cu aceasta și probabil mulţi alţii sunt de acord, dar nu pentru că e la modă, ci pentru un aspect pur obiectiv și utilitar.

Empatia, atunci când este prezentă, ne ajută sa interacţionăm cu cei din jurul nos-tru în feluri mult mai relevante, indiferent că vorbim de colegi, subalterni, clienţi, etc. .

Voi încerca să ofer o aplicabilitate foarte specifică empatiei în așa fel încât să nu sim-ţim că e doar o filozofie draguţă și în prezent cool. Voi analiza modul cum se aplică ea în dezvoltarea de produse sau servicii.

Empatia ne permite să construim produse sau servicii care să fie mulate pe nevoile beneficiarilor lor. Am auzit de

foarte multe ori formulări de genul “adap-tat la nevoi” și probabil știm cu toții ce înseamnă aceasta.

Empatia reușește să ne conducă spre o perspectivă nuanţată și foarte fină a nevo-ilor beneficiarilor noștri. Cum face acest lucru? Haideţi sa intrăm în nuanţele defi-nirii empatiei. Descoperind acele nuanţe vom înţelege cum funcţionează dar și cum putem să dezvoltăm empatia mai departe de trăsătură.

Nu voi intra în detalii, deși dacă va trezesc curiozitatea cu acest articol vă reco-mand să vă documentaţi în detaliu despre acest proces1.

În primul rând majoritatea celor spe-cializaţi în empatie spun că aceasta este un proces și nu o stare. Dacă veţi intra în documentare veţi afla că are o componentă genetică și una de mediu. Aceasta înseamnă că ne naștem cu o predispoziţie mai mare sau mai mică spre empatie însă aceasta poate fi extinsă sau restrânsă în funcţie de factori contextuali. De asemenea veţi afla că ea apare exprimată de la vârste foarte fra-gede și că problemele legate de empatie se văd în autism si sociopatie.

1 youtube: the empathic civilization; baza de date: Center for Building a Culture of Empathy

În prezent în psihologie există trei conceptualizări diferite ale conceptului de empatie:1. Învățarea conștientizării stărilor interioare ale unei alte persoane, gândurilor,

percepțiilor și motivelor. Semnificația proceselor cognitive este mare și datorită acestora o persoana este capabilă să perceapă, recunoască și până la un anumit nivel să anticipeze stările celor din jur. În acest context se discută și de acuratețea empatiei.

2. Empatia este o reacție afectivă față de o altă persoană, o „armonizare” a stării emoționale interne la starea unei alte persoane. Focusul în această situație este pe procesul de empatie și nu pe rezultatul acesteia.

3. Empatia este o combinație de mecanisme cognitive și emoționale unde procesele cogni-tive mediază activarea emoțională. Interpretarea unei anumite situații declanșează o reacție emoțională caracterizată prin acceptarea perspectivei celeilalte persoane. Din aceasta per-spectivă, empatia este înțelegerea non-egocentrică a celorlalți coordonată de emoții.

Empatia este prezentată alături de altruism și afiliere și este printre principiile de bază ale comportamentului pro-social dar este diferită de milă sau simpatie (care pot apărea ca și sub-concepte)

(sursa: Alina Cogiel, PhD., Psychology Department, University of Ostrava)

Empatia – noua competenţă

programareHR

Antonia [email protected] aproape 10 ani trainer, psi-holog, consultant sub formă de antreprenor, intraprenor și antreprenor din nou

Page 49: Today Software Magazine N15/2013

49www.todaysoftmag.ro | nr. 15/Septembrie, 2013

TODAY SOFTWARE MAGAZINEprogramare

Empatia în componentele sale (această clasificare este regăsită în majoritatea defi-niţiilor, deși cu alte etichete) presupune:

Pare foarte logică aceasta definire ale componentelor conceptului de empatie însă nu ne spune exact ce și cum. Haideţi să vedem ce înseamnă în acest context cuvân-tul “capacitate”.

Autoempatia se referă la a avea nivelul de introspecţie necesar în așa fel încât să putem să identificăm foarte clar ce sim-ţim și de ce simţim acel lucru. Empatia în oglindă este foarte strâns legată de compo-nente neuropsihologice însă ea presupune cât de “infectabili” suntem de stările celor din jur. Empatia cognitivă presupune să avem suficiente cunoștinţe despre siste-mul de operare uman încât să putem sa analizăm procesele într-un mod detașat de propria noastră stare doar luând în considerare algoritmii prezenţi în cealaltă persoană. Acţiunea empatică presupune că după ce am înţeles mecanismul, să putem identifica acea acţiune asupra acestuia care poate produce modificările dorite în siste-mul specific al celorlalţi.

În concluzie, empatia, fie că este ori-entată înspre noi, spre altcineva sau spre grupuri de oameni presupune o cunoaștere a “stării”. Starea este cum ne simţim adică emoţii dar presupune si înţelegerea felului în care se formează acele emoţii și cum se exprimă acele emoţii precum și relaţia aces-tora cu comportamentele. Voi simplifica

foarte mult psihologia dar pe scurt:Emoţiile sunt shortcut-uri care ne

semnalizează ceva (pozitiv sau negativ). Ele vin ca urmare a unei inter-pretări/procesări a unui context sau situaţii în funcţie de siste-mul nostru de procesare intern. Putem spune că emoţiile sunt consecinţe ale unei interpretări. Mai putem spune și că emoţiile sunt mai nuanţate decât mă simt bine/rău.

Reacţiile comportamentale (ceea ce fac) precum și alte reacţii sunt și ele consecinţe ale felului în care interpretez realitatea.

Putem concluziona atunci că a “practica empatia” presupune să identificăm ce simte si ce face cineva în relaţie cu motivul

pentru care simte și face acel ceva. Mai pe scurt a “practica empatia” presupune să înţelegem ce date au intrat și cum au fost ele procesate/interpretate pentru a duce la rezultatul emoţia “x” sau comporta-mentul “y”.

Cred că este deja evident cum ne ajută empatia în dezvoltarea de produse sau servicii.

Empatia:• Întelegem ce simte și face un utili-

zator ca urmare a interacţiunii cu un anumit produs sau serviciu.• Întelegem de ce simte și face (prin

înţelegerea algoritmului de interpretare a experienţei de interacţiune cu acel pro-dus sau serviciu).

Astfel, dacă dorim ca utilizatorul nostru să simtă/facă un anumit lucru îi construim acel context care va fi interpretat în așa fel încât să genereze consecinţele pe care le dorim ceea ce presupune ca vom cunoaște îndeaproape alogoritmul lui de procesare/interpretare.

Dacă vrem ca el să simtă/facă un anumit lucru într-un anumit fel și într-un anumit context, în primul rând cunoaștem algorit-mul și apoi încercăm să îl modificăm.

În consecinţă, a folosi procesul empa-tic presupune să cunoștem algoritmul de

procesare al fiecărui individ pentru că atunci vom avea un insight în ce output generează și cum putem să schimbăm algoritmul pentru a genera un nou output.

Singura menţiune pe care doresc să o fac este că fiecare algoritm e personal și de multe ori nu este unul raţional. Putem să credem că oamenii ar trebui să gândească sau să simtă sau să se comporte într-un anumit fel pentru ca așa este logic dar aceasta nu înseamnă că așa se va întâmpla.

Aplicând empatia nu căutam ca un algoritm să fie logic ci pur și simplu încer-căm să identificăm care este algoritmul. Făcând acest lucru putem să construim produse/servicii, să interacţionăm cu cei din jur, să exersăm leadership sau să con-struim un sales pitch care creează acele emoţii sau comportamente pe care le așteptăm.

Page 50: Today Software Magazine N15/2013
Page 51: Today Software Magazine N15/2013

powered by

sponsori

Comunicăm mai simplu direct prin SMS.Propune un titlu de articol pentru numărul următorsau trimite-ne sugestiile tale.

SMS 0371700018număr cu tarif normal