Issuu on Google+

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

TSM tul n e i l C

ay d o T iOS

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

ine z a g Ma e r a Softw

dry n u o F mini e G 8 area hone Lans P s dow n i W M in MVV

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

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ţă


6 TodaySoftMag aplicația TSM pentru iPhone și iPad

27 Clustering for HighDimensional Data Sets

Ovidiu Mățan

Lucian Brăescu

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

30 SAP Conference

Călin Biriș

9 Favorites: de la CRM la FRM Victor Miron

10 Lansarea Gemini Foundry Ovidiu Mățan

12 SmartWeb Conference

Victor Ionescu

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

35 Debugging în producție Radu Vunvulea

38 Model Based Testing fără presupuneri

Iunieta Sandu

Tudor Cobâlaș

13 AGILE LEAN EUROPE 2013

40 TheOpen.com – susţinerea digitală a unui turneu de success

Ana Maria Constantinescu

Bogdan Moscaliuc

15 Clientul iOS Today Software Magazine

42 Business Networking de la offline la online pe platforma Business Days

3Pillar Global Team

19 MVVM în Windows Phone 8 Cosmin Stirbu

22 Cum am facut primul meu Azure Mobile Service Florin Cardasim

24 Test Driven Development și design incremental Alexandru Bolboaca și Adrian Bolboacă

Ovidiu Mățan

45 Lean Six Sigma și managementul inovaţiei Monica Petraru

48 Java SOA Cookbook de Eben Hewitt Silviu Dumitrescu

49 Empatia – noua competenţă Antonia Onaca

51 Gogu și perspectivele Simona Bonghez, Ph.D.


editorial

Î

Ovidiu Măţan, PMP

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

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 evenimentului 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 managementul inovaţiei, Empatia – noua competenţă și interviul despre Business Days.

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

Ovidiu Măţan

Fondator și CEO al Today Software Magazine

4

nr. 15/Septembrie | www.todaysoftmag.ro


TODAY SOFTWARE MAGAZINE Lista autorilor Redacţia Today Software Magazine Fondator / Editor în chief: Ovidiu Mățan ovidiu.matan@todaysoftmag.com

Alexandru Bolboaca

Călin Biriș

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

Marketing manager @ Zonga

alex.bolboaca@mozaicworks.com

calin.biris@trilulilu.ro

Cosmin Stirbu

Editor (startups și interviuri): Marius Mornea marius.mornea@todaysoftmag.com Graphic designer: Dan Hădărău dan.hadarau@todaysoftmag.com

Victor Miron

miron.victor@gmail.com Co-fondator @ Favorites

3Pillar Global Team

Copyright/Corector: Emilia Toma emilia.toma@todaysoftmag.com Traducător: Roxana Elena roxana.elena@todaysoftmag.com Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Reviewer: Adrian Lupei adrian.lupei@todaysoftmag.com Produs de

Today Software Solutions SRL

alex.bolboaca@mozaicworks.com iOS Software Developer @ Fortech

Radu Vunvulea

Radu.Vunvulea@iquestgroup.com

@ 3Pillar Global Senior Software Engineer @iQuest

Lucian Brăescu

Adrian Bolboaca

Software Developer @ Accesa

Programmer. Organizational and Technical Trainer and Coach @Mozaic Works

lucian.braescu@accesa.eu

Monica Petraru

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

adrian.bolboaca@mozaicworks.com

Iunieta Sandu iunieta.sandu@evensys.ro PR & Marketing Coordinator @ Evensys

Cătălin Prata

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

Florin Cardasim

florin.cardasim@endava.com Head of Architecture &Analysis @ Endava Iași

ovidiu.matan@todaysoftmag.com

Director Departament SAP @ msg systems Romania

Project Manager @ Endava

Antonia Onaca

anto@aha-ha.com de aproape 10 ani trainer, psiholog, consultant sub formă de antreprenor, intraprenor şi antreprenor din nou

Simona Bonghez, Ph.D.

Tudor Cobâlaș

Speaker, trainer şi consultant în managementul proiectelor,

Business Developer @ XL Team

simona.bonghez@confucius.ro

www.todaysoftmag.ro www.todaysoftmag.com

bogdan.moscaliuc@endava.com

Editor-in-chief Today Software Magazine

Horea.Ratiu@msg-systems.com

Reproducerea parțială sau totală a articolelor din revista Today Software Magazine fără acordul redacției este strict interzisă.

Mobile Software Developer @ Fortech

Bogdan Moscaliuc Ovidiu Măţan, PMP

Horea Rațiu

Copyright Today Software Magazine

catalinp@fortech.ro

tudor@xlteam.ro

Owner al Colors in Projects Silviu Dumitrescu silviu.dumitrescu@msg-systems. com Consultant Java @ msg systems Romania

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

5


lansare

TodaySoftMag

aplicația TSM pentru iPhone și iPad

A

Ovidiu Măţan, PMP

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

6

nr. 15/Septembrie | www.todaysoftmag.ro

m 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. S-a început cu câteva requirement-uri Au fost și multe feature-uri care din generale ale unui prim prototip, pentru ca păcate au fost scoase pe măsura ce produsul la finalul celei de-a doua iterații, să aveam se maturiza. S-ar putea ca unele să va placă, ceva funcțional. După care, direcția dorită așa că scrieți-ne, poate le reconsiderăm: a fost stabilită, și ne-am îndreptat rapid • infinite scroll - Inițial văzut ca o către produsul final. Am dorit să avem modalitate de aliniere cu alte produse ceva simplu, practic și funcțional, iar în similare cum ar fi clientul Engadget, mai puțin de două luni aplicația era deja s-a renunțat la el, deși tehnic funcționa disponibilă pe AppStore. Principala caracfoarte bine, pentru că, din punct de teristică a aplicației este posibilitatea de vedere al experienței utilizatorului, a vizualiza toate numerele TSM de până focusul era mutat practic pe animația acum și de a citi fiecare articol din acestea. și libertatea de a vedea rapid sute de Dacă unul dintre articolele nu este disponibil î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 încercat să facă întreaga utilizare a aplicației cât mai naturală. Remarcăm de asemenea posibilitatea schimbării limbii, care reîncarcă 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ă.


TODAY SOFTWARE MAGAZINE este doar amânat, iar într-una dintre versiunile următoare, îl vom include într-o formă completă.

Arhitectura generală a sistemului

Atât aplicația de iPhone cât și cea de iPad utilizează același mecanism de comunicare 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 considerând ultimul număr diponibil pe client • articles - lista de articole dintr-un anumit număr al revistei • author - detaliile despre un autor

articole, pierzându-se în schimb un lucru esențial, și anume direcționarea cititorului către ultimele articole publicate, • offline mode - cel mai important feature 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 articolele 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, trebuie să acordăm cititorului posibilitatea de a elibera spațiul folosit. Acest feature

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 organizare a evenimentelor din jurul fiecăruia.

Doresc să mulțumesc echipei de dezvoltare, 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 Dacă vă întrebați cum este transmis poate fi folosit și în scopul suportului miciarticolul propriu-zis, acesta este descărcat lor afaceri locale. 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 schimbat, î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 suportul Gemini Solutions pentru partea de look&feel. În ceea ce privește aplicația TSM de iPhone/iPad, plănuim să avem releaseuri ce vor conține îmbunătățiri graduale și bug fixing. Printre principalele noi featureuri putem enumera:

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

7


business

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

M

odul î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 smartphoneurilor care au deschis un nou orizont către consum colaborativ. 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 playlisturilor ș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 personalizate 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 dezvoltare 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 operator 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 pentru 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.

Călin Biriș

calin.biris@trilulilu.ro Marketing manager @ Zonga

8

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


startups

TODAY SOFTWARE MAGAZINE

Favorites: de la CRM la FRM

A

nul 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.

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 trimite o notificare prin care îți amintește să nu uiți să îi contactezi. Tot în aplicație poți să vezi un istoric grafic al interacțiunilor cu acel favorit și câte un istoric al apelurilor telefonice, mesajelor și întâlnirilor. Întâlnirile au integrată și harta pentru a face lucrurile cât mai ușoare. După primele folosiri ale aplicației utilizatorii 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 utilizatori 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ă dezvolte parteneriate durabile.

Din zona de business a și pornit idee punem în buzunarul oamenilor prin interaplicației. Tot mai multe companii își 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 utilizatori, să realizăm o versiune premium tot pe Android, după care să lansăm și versiunea de iPhone. Vom avea, de exemplu, în viitorul 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 compatibilă atât cu telefoanele cu Android, cât și cu tabletele cu acest sistem de operare. Aplicația este dezvoltată nativ pe platforma Google și folosește o bază de date pentru a pastră informațiile despre favoriți. Victor Miron

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

miron.victor@gmail.com Co-fondator @ Favorites

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

9


startups

Lansarea Gemini Foundry

S

Ovidiu Măţan, PMP

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

10

nr. 15/Septembrie | www.todaysoftmag.ro

tartup-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. Ce înseamnă startup-urile pentru Gemini Solutions din perspectiva colaborării cu acestea? Gemini Solutions are o lungă istorie lucrând cu startup-uri până acum din Silicon Valley. Din acest punct de vedere noi credem că înțelegem foarte bine cultura 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 parteneriate, de diverse feluri cu ele.

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 publicului ț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 suplimentare de venit.

Cum vedeți evoluția corectă a unui startup pentru a deveni un succes? Nu credem că are cineva o rețetă general valabilă pentru succesul unui startup. Sunt mulți factori care pot contribui la succes: 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ă considere mulți factori precum publicul target, modalitățile de promovare, viralitate, evaluarea 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

Ce părere aveți despre piața de startupuri din România până acum și dacă puteți să ne oferiți o previziune pentru următorii doi ani? Credem și sp erăm că piața de startup-uri din România va crește considerabil î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


TODAY SOFTWARE MAGAZINE startup-urile sunt esența inovării. Legat de piața actuală a startup-urilor din România, evident suntem la început, asta însemnând că plaja, modalitatea de abordare a inițiativei de către antreprenorii locali este destul de eterogenă, neexistând o cultură și o tradiție locală în această direcție. Asta înseamnă că am întâlnit 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 mecanismelor 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 lansarea 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 eveniment se va face pe baza formularului de înregistrare 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 incubator este o inițiativă care ajută startup-urile cu o listă predefinită și clară de servicii și facilități, Foundr y-ul este 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 t e s p e c i f i c u l G e m i n i Fo u n d r y în comparație cu alte inițiative similare ? Sp e cif ic u l G emini Foundr y este că își propune să „crească” startup-uri care au ca țintă finală piața din Statele Unite și oferă conexiuni directe și concrete către instituțiile, entitățile și mediul de afaceri de acolo, astfel 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 business-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 serviciile oferite.

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

11


evenimente

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

S

martWeb 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. 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 tehnicile 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 despre 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 parcursul zilei de 24 septembrie, la JW Marriott Grand Hotel, iar specialiştii promit un program intensiv despre tendinţele,

12

oportunităţile şi provocările industriei de web-design. Conferinţa este structurată în patru sesiuni extinse şi intensive iar printre 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

Magazine, InspiredMag, Romanian Startups, BestJobs, Refresh.ro, Joobs. Mai multe informaţii despre eveniment şi program sunt disponibile pe site-ul http://www.smartwebconf.com/

Jonathan Snook e

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

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

Iunieta Sandu iunieta.sandu@evensys.ro PR & Marketing Coordinator @ Evensys


evenimente

TODAY SOFTWARE MAGAZINE

AGILE LEAN EUROPE 2013

N

oi 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, încredere, î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. 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 ierarhie! În închidere a vorbit despre o rețea de business-uri și idei deștepte pe care a creato 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 entuziast și comics fan. Prezentarea sa, The Cognitive Power of Comics2 începe printr-o recomandare de carte și anume: Commitment Novel about Managing Project Risk, de Olav Massen, Chris Matts, Chris Gearryn un roman grafic care demonstrează cum Comics-urile pot fi utilizate pentru a exprima idei complexe. Comics-urile au apărut pentru prima 1 www.happymelly.com 2 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 jurnalism, 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ândescă î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 cognitive biases. Cu toții avem o tendința naturală 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 motivato 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ă mecanismul cognitiv ce ne conduce uneori să luăm decizii greșite. Totodată, cunoscândune 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 rezultatele, 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: Anna.Obukhova@luxoft.com. 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ă!

Ana Maria Constantinescu anamaria@akcees.com Community Manager @ Akcees

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

13


comunități

Comunităţi IT

A

m î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 să participe la ediția 2013 a Business Days în 25-26 Septembrie.

Calendar

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

Septembrie 6 Tabara 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/

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

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

Romanian Testing Community Comunitate dedicata testerilor. Website: www.romaniatesting.ro Data înfiinţării: 10.05.2011 / Nr. Membri: 640 / Nr. Evenimente: 2 GeekMeet România Comunitate dedicată tehnologiilor web. Website: geekmeet.ro Data înfiinţării: 10.06.2006 / Nr. Membri: 560 / Nr. Evenimente: 17 Cluj.rb Comunitate dedicată tehnologiilor Ruby. Website: www.meetup.com/cluj-rb Data înfiinţării: 25.08.2010 / Nr. Membri: 142 / Nr. Evenimente: 34 The Cluj Napoca Agile Software Meetup Group Comunitate dedicată metodelor Agile de dezvoltare software. Website: www.agileworks.ro Data înfiinţării: 04.10.2010 / Nr. Membri: 325/ Nr. Evenimente: 34 Cluj Semantic WEB Meetup Comunitate dedicată tehnologiilor semantice. Website: www.meetup.com/Cluj-Semantic-WEB Data înfiinţării: 08.05.2010 / Nr. Membri: 146/ Nr. Evenimente: 22 Romanian Association for Better Software Comunitate dedicată oamenilor cu experiență din IT indiferent de tehnologie sau specializare. Website: www.rabs.ro Data înfiinţării: 10.02.2011 / Nr. Membri: 226/ Nr. Evenimente: 13 Tabăra de testare Un proiect care își dorește să strângă cât mai mulți oameni care lucrează ca și testeri. Website: tabaradetestare.ro Data înfiinţării: 15.01.2012 / Nr. Membri: 320/ Nr. Evenimente: 19

14

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

Septembrie 10 Entrepreneur ‘X’ Factor (București) it-events.ro/events/entrepreneur-x-factor-season-2 Septembrie 11 How To Build A Winning Startup (Târgu Mureș) www.meetup.com/The-Startup-Lab/events/137928892/ Septembrie 18 SAP Conference (Cluj) www.msg-systems.ro/events.0.html Septembrie 19 Linked Data Technology Stack (Cluj) www.meetup.com/Cluj-Semantic-WEB/events/115920132/ Septembrie 24 Lansarea numărului 15 TSM (București) www.todaysoftmag.ro Septembrie 24 Lansarea Gemini Foundry (București)- recomandarea TSM gemsfoundry.com Septembrie 24 SmartWeb Conference (București) www.smartwebconf.com Septembrie 25-26 Cluj Business Days cluj-napoca.businessdays.ro Octombrie 4-5 ...even mammoths can be Agile în Iași! colorsinprojects.ro/eveniment-iași-4-5-octombrie-2013 Octombrie 12 Codecamp (Iași) iasi.codecamp.ro


programare

TODAY SOFTWARE MAGAZINE

Clientul iOS Today Software Magazine

C

ererea 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.

3Pillar Global Team @ 3Pillar Global

În acest peisaj schimbător al accesibilității mobile, Today Software Magazine a realizat 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 disponibile) ci pentru a oferi o soluție bazată pe conținut disponibil utilizatorilor terminalelor 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 potrivit să împărtășim o parte din nou creata expertiză pe care am acumulat-o în procesul de dezvoltare a aplicației TodaySoftMag pentru iOS (deja disponibilă în Apple Store), întrucât acesta a fost un exercițiu plăcut și, de asemenea, o experiență de rafinare a expertizei precedente. Pe lângă dezvoltarea echipei, un alt efect pozitiv a fost faptul că ne-a oferit o viziune mai clară asupra aspectelor congruente î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ă. O dată aleasă limba, aceasta este salvata în baza de date implicita 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 utilizatorului articolele celorlalte numere sunt aduse ulterior (mai multe detalii privind descarcarea 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

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

15


programare Clientul iOS Today Software Magazine aplicația va memora mereu starea utilizatorului în aplicație. Versiuni ale aplicației Fiecare număr are o listă de articole aranjate în ordinea apariției. Implementarea a două versiuni în paralel a aceleași aplicații Odată selectat articolul, acesta va rămâne așa, până când este aduce cu sine mai multe provocări. 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ă, utilizatorul 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 „descă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 socializare, aplicația oferă utilizatorului posibilitatea de a le comunica altor persoane aspecte despre articolul citit prin: a. Facebook Figura 1. Ecranul introductiv b. Twitter c. Email. 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ă, lucruPentru selectarea metodei de distribuire a articolului s-a rile nu puteau fi mai diferite de atât. Intenția era ca aceleași date utilizat componenta UIActivityViewController. Fiind o compo- sa fie afișate și în același timp să fie corespunzător adaptate pentru nenta introdusă numai din versiunea 6-a a iOS, am întâmpinat fiecare tip de dispozitiv mobil. iPad-ul are un display mare pe care câteva impedimente neașteptate. Pentru afișarea activitaților dis- un utilizator poate vedea cu ușurință orice tip de informație, de la ponibile, această componentă folosește credențialele stocate în icoane mici până la grafice mari și detaliate, în timp ce iPhone-ul setarile telefonului. În cazul în care credențialele nu sunt stocate, - pe de altă parte - are un ecran mai mic, dar dispozitivul este mai componenta nu afișează activitați pentru rețelele de socializare des întâlnit printre utilizatorii de iOS. Facebook si Twitter. Pentru a oferi acces spre aceste activitați, Datorită diferenței mari de rezoluție dintre iPhone și iPad, s-a am introdus activițati custom ce asigură logarea utilizatorului în decis ca aplicația să afișeze în permanență informația relevantă contul rețelei de socializare, înaintea trimiterii articolelor. La acce- existentă în locul afișării tuturor informațiilor în același timp. În sarea activităților custom, se declanșează acțiunea de compunere această idee au fost gândite toate ecranele aplicației. a unei postari pe rețeaua de socializare aleasă, cu ajutorul clasei SLComposeViewController. SLComposeViewController *facebookController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; SLComposeViewControllerCompletionHandler __block completionHandler=^(SLC omposeViewControllerResult result) { [facebookController dismissViewControllerAnimated:YES completion:nil]; switch(result){ case SLComposeViewControllerResultCancelled: default: { } break; case SLComposeViewControllerResultDone: { UIAlertView *alertView = [[UIAlertView alloc] 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 utilizatorul 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.

16

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

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 partea 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 partea stângă va fi afișată lista revistelor, mai ascunsă, astfel încât să nu deranjeze vizual utilizatorul. De aceea, pe iPad a fost introdusă 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.


TODAY SOFTWARE MAGAZINE

Figura 3. Vizualizarea întregului conţinut al unui articol Figura 5. Diagrama de componente

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.

Articolele care pot fi vizualizate în aplicație, precum și detaliile autorilor, sunt preluate de pe server prin intermediul interfeței programatice puse la dispoziția clientului de iOS. Partea de comunicare și transfer a datelor dintre client și server este realizată folosind framework-ul AFNetworking, astfel încât se va mentine controlul asupra cererilor făcute la server și se va avea un control mult mai mare asupra gestiunii răspunsurilor luând în considerare ș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/photosmall.jpg”; }

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 interesul 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 tehnice

Aplicația pentru iOS suportă versiunile 6.0 și 6.1 ale sistemului de operare pe dispozitive de tip iPhone și iPad, astfel incât utilizatorii 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.

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 presupune 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 celorlalte 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 prezentată 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 articolelor, astfel încât deși datele aferente autorilor nu sunt descărcate www.todaysoftmag.ro | nr. 15/Septembrie, 2013

17


programare Clientul iOS Today Software Magazine 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 momentul î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 momentul respectiv, sau nu există pe server, o imagine înlocuitoare va fi folosită. Toate datele descărcate de pe server vor fi salvate pe dispozitivul 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 accesată, 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 anumit 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 imaginii 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 trimiterea 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

• Suport pentru iOS 7 - Sunt luate în considerare anumite schimbări pe partea de interfață grafică, în ceea ce privește anumite 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 specifică. Adăugarea articolelor noi în listă se va face într-un mod optim, care nu va afecta experiența utilizatorului. • - 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 dispozitivul mobil.

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 utilizatorului cu privire la apariția de noi articole, în cazul în care aplicația este închisă sau dispozitivul mobil este pus în modul sleep. Our core competencies include:

Product Strategy

3Pillar Global, a product development partner creating software that accelerates speed to market in a content rich world, increasingly connected world. Our offerings are business focused, they drive real, tangible value.

www.3pillarglobal.com

18

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

Product Development

Product Support


programare

TODAY SOFTWARE MAGAZINE

MVVM în Windows Phone 8

Ş

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ă comunicarea dintre View şi Model.

Cosmin Stirbu

cosmin.stirbu@fortech.ro iOS Software Developer @ Fortech

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 obiectului 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ă automat ş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.

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 aplicaţ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 (pentru a notifica View-ul la schimbarea valorii unei proprietăţi). În general, într-o aplicație Windows Phone 8, fiecărei Pagini îi va corespunde un obiect ViewModel ce va extinde clasa ViewModelBase. Un alt mare avantaj al clasei ViewModelBase este expunerea proprietăţii IsInDesignMode, proprietate Cum aplicăm MVVM în Windows Phone 8? ce ne permite să verificăm dacă suntem în MVVM Light este un instrument foarte Expression Blend sau în Visual Studio

Sursa:

blogs.msdn.com/b/tims/archive/2010/11/02/kung-fu-silverlight-architectural-patterns-and-practices-with-mvvm-and-ria-services.aspx

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

19


programare MVVM în Windows Phone 8 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 folosind clasa oferită de MVVM Light numită ViewModelLocator. În această clasă putem folosi un IoC Container preferat (sau SimpleIoc inclus în MVVM Light) pentru 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>

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 Vi e w Mo d e l B a s e RaisePropertyChanged asigură actualizarea UI-ului de fiecare dată când valoarea proprietății se schimbă. Codul de legare arată astfel: <TextBlock Text=”{Binding TextProperty}” Style=”{StaticResource PhoneTextNormalStyle}” HorizontalAlignment=”Center” VerticalAlignment=”Center” TextAlignment=”Center” TextWrapping=”Wrap” FontSize=”40” />

Practic orice proprietate a unui element de UI poate fi legată de o proprietate din obiectul ViewModel fără a fi nevoiți să scriem cod de UI. De exemplu putem lega proprietatea ItemSource a unui obiect ListBox de o propritetate de tip List<T> din ViewModel și apoi putem configura un ItemTemplate pentru 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).

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 Cum comunică View-ul cu ViewModel-ul? conținut într-un obiect TextBlock, tot ce MVVM Light oferă clasa trebuie să facem este să legăm proprieta- EventToCommand ce extinde clasa tea Text de o proprietate de tip string în Behavior și ce permite legarea unei

comenzi de un eveniment de pe interfața cu utilizatorul. Astfel la apariția unui eveniment 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 Pressed public RelayCommand ButtonPressed { get { return new RelayCommand(() => { Console.WriteLine(„Button Pressed”); }); } }

Merită menționat că putem

20

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


TODAY SOFTWARE MAGAZINE transmite și parametri atunci cînd folosim EventToCommand: de exemplu, putem transmite textul dintr-un TextBox, iar pentru aceasta am expune o proprietate 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 B ehavior, 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 comunica î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 permite 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 proprietatea DataContext). Merită menționat că abordarea preferată 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 portabilitatea aplicațiilor puțin mai dificilă dar sunt librării care oferă clase similare claselor Behavior1.

Probleme des întâlnite și soluțiile lor Una 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 implementăm într-o clasă dedicată apoi o injectăm în obiectele ViewModel din care dorim să realizăm navigarea. O altă problemă este disponibilitatea datelor la momentul designului – abordarea recomandată este crearea unor interfețe pentru managerii de date (clasele în care avem logică de acces la date, persistență, etc) și implementarea acestora în două clase diferite: una pentru momentul designului, și una ce va fi folosită la momentul rulării aplicației. Folosind proprietatea IsInDesignMode putem înregistra

î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 relativ independent. Din nou clasele Behavior permit crearea ș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 situatii 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 instrumentele disponibile fac implementarea acestui șablon ușoară și interesantă.

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

Folosirea EventToCommand din Blend. În exemplu a fost adăugat Paginii și a fost legat evenimentul Loaded. 1 winrtbehaviors.codeplex.com

2 appbarutils.codeplex.com

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

21


programare

programare

Cum am facut primul meu Azure Mobile Service

P

ovestea 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. Florin Cardasim

florin.cardasim@endava.com Head of Architecture &Analysis @ Endava Iași

Vă voi povesti cum am redescoperit recent frumusețea cloud-urilor publice: eram în toiul pregătirilor pentru 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 desincroniză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

22

nr. 15/Septembrie | www.todaysoftmag.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 descoerit 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), serviciul 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),


TODAY SOFTWARE MAGAZINE DELETE (delete). Pe baza formatului JSON pe care aplicațiile mobile îl foloseau deja, a fost foarte simplu sa creez în portal tabele precum 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 nerecomandat, așa că am făcut o aplicație care împinge datele în tabele din Azure), acestea 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.

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 nivelul 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 pentru 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 programator, 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, Desigur că deasupra acestui model backend și mine însumi care m-am asigude acces la date există un nivel de securi- rat ca participanții la conferință știu locația, tate, aplicabil din portal la nivel de tabel și ora de începere și alte informații utile, 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 programatic, cum intervin atunci când vreau să tratez apelurile către serviciu? Răspunsul trimițîndu-le notificări direct pe smart e evident în imaginea de mai jos unde e phone prin intermediul serviciului mobil. descrisă secvența de procesare a cererilor Fiecare operație are în spate un script

relativ simplu scris în JavaScript, care fie interacționa cu baza date, fie genera notificări de tip push prin intemediul unui API foarte simplu. Restul muncii investite 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 twisting” 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/

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

23


programare

Test Driven Development și design incremental

D

upă cum afirmam în articolele anterioare despre software craftsmanship, Test Driven Development este una dintre practicile considerate de bază pentru artizanii 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. Alexandru Bolboaca

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

Adrian Bolboaca

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

Descrierea clasică a TDD este că • avansul design-ului (soluției) programatorul: • verificarea faptului că modificările • Scrie un singur test automat care pică din cod nu au afectat rezolvarea proble(adesea numit pasul „Red”); mei de până la momentul rulării lor. • Realizează cea mai mică modificare în cod pentru a face testul să treacă ( Deoarece noțiunea de software design pasul „Green”); este ambiguă, merită explicat ce înseamnă • R e f a c t o r i z e a z ă c o d u l ( p a s u l design în acest context. Design-ul nu este „Refactor”). altceva decât „crearea de artefacte care rezolvă probleme”1. În cazul programăAcest ciclu se repetă cu o frecvență rii, artefactul creat este codul. Mai exact, mare, ajungând la maxim 5 minute pentru la nivelul cel mai de jos, artefactele create practicienii experimentați. Pentru începă- sunt variabile, metode, clase și modurile tori, 15-30 min este o durată normală care de colaborare dintre obiecte (numite și scade odată cu acumularea experienței. Nu „contracte”). discutăm aici despre scris teste pe cod existent; în acest caz timpul necesar pentru a Două lucruri sunt așadar importante scrie teste este proporțional cu complexi- pentru design-ul unei aplicații software: tatea codului. • rezolvă o problemă... Această descriere este foarte ușor de • cât mai simplu și elegant posibil transmis, dar din păcate nu conține detalii importante pentru cei care vor să înceapă Dacă programatorii scriu cod elegant să aplice TDD, lucru care creează confuzie. care nu rezolvă o problemă, atunci prin Primul lucru pe care trebuie să-l definiție nu au obținut design. Cel mai înțelegem despre TDD este că, în ciuda rapid și elegant mod de a demonstra că numelui (dezvoltare condusă de teste), nu problema este rezolvată este prin rularea este o metodă de testare. TDD este o metodă unor teste automate care pot fi revizuite că de a obține un design potrivit pentru pro- acoperă toate aspectele problemei. blema rezolvată. Testele sunt folosite cu Găsirea unor rezolvări simple și două scopuri: 1 Karl Ulrich, „Design – Creation of Artifacts in Society” http://opim.wharton.upenn.edu/~ulrich/designbook.html

24

nr. 15/Septembrie | www.todaysoftmag.ro


TODAY SOFTWARE MAGAZINE elegante se izbește de câteva obstacole: • Neînțelegerea completă a problePentru a face design incremental, e mei. Creierul uman are o capacitate nevoie de următorii pași: limitată, iar problemele pe care pro• Analiza problemei și împărțirea ei gramatorii trebuie să le rezolve cresc în probleme mai mici. De exemplu, în în complexitate. Nu ar trebui așadar să cazul creării unui joc de Tetris, se poate mire pe nimeni că uneori nici cel mai porni de la cel mai simplu joc cu putință: bun programator nu reușește să înțeleagă o piesă cât un singur pătrat care cade toate aspectele unei probleme. într-o fântână cu înălțimea 1 și jocul se • Generalizarea pripită (precum și termină (alternativ, se poate considera că alte „cognitive biases” ). Adesea proa umplut o linie care trebuie eliminată, gramatorii doresc să obțină o soluție doar că introduce regula eliminării liniei mai generală, înainte de a avea destule care poate fi ușor adăugată mai târziu). cazuri particulare care o justifică. Dusă • Identificarea unor exemple conla extrem, această tendință poate crea un crete (valori de intrare și ieșire așteptate). cod aparent bine conceput care însă este De exemplu, după ce jocul începe, piesa foarte greu de ținut la zi. apare pe tablă într-o anumită poziție. • Tendința de a folosi soluțiile cunos• Implementarea câte unui exemplu cute. „Când ai un ciocan, vezi în jurul în cel mai simplu mod posibil. tău doar cuie”, spune o vorbă veche. Problemele pe care le rezolvă prograDesign-ul incremental combate problematorii în fiecare zi pot părea la un mele enunțate anterior astfel: nivel superficial foarte asemănătoare. • Prin definirea de exemple, problema Realitatea este că soluțiile în programare devine mai clară. Mai mult, exemplele depind foarte mult de mici detalii. pot fi discutate mult mai ușor cu per• Schimbarea rapidă a cerințelor. soane non-tehnice (clienții) decât codul. Este deja un fapt cunoscut că cerințele • Lista de exemple este completată pe se schimbă de la o zi la alta. O soluție măsură ce noi comportamente sunt idencare era bună ieri s-ar putea să nu se mai tificate în timpul dezvoltării. Prin iterare, potrivească azi. șansele de a rata părți din problemă scad. • Simplificarea problemei permite Realitățile de zi cu zi din viața unui prodiminuarea complexității astfel încât gramator duc la nevoia de a avea un design creierul să o poată gestiona. ușor de modificat. Cerințele se modifică, • Implementarea celei mai simple echipele se modifică, programatorii învață soluții pentru fiecare exemplu permite mai multe în fiecare zi despre produs și tehevitarea generalizării pripite. nologii. În zilele noastre, design bun este • Soluția este tot timpul simplă (atât cvasi-sinonim cu design ușor de modicât permite problema), ceea ce ușurează ficat. De aceea, calitățile unui design bun modificarea ei în cazul schimbării sunt: cerințelor. • Atât structura cât și codul sunt ușor de înțeles pentru toți programatorii Test Driven Development este cea mai implicați. bună metodă cunoscută de a face design • Majoritatea funcționalităților incremental. Testele codează exemplele de cerute pot fi implementate cu modifi- utilizare a soluției și pot fi folosite pentru cări minimale în cod. Acest lucru este verificarea continuă a ei. Implementarea posibil când clase mici și foarte specia- celei mai simple soluții la fiecare moment lizate lucrează împreună conform unor ajută la evitarea generalizărilor pripite. contracte bine definite între interfețele Refactorizarea duce la simplificarea lor. soluției. • Este ușor de verificat dacă modificăDeoarece dezvoltarea folosind TDD rile din cod nu au afectat implementarea pornește de la exemple iar codul scris la existentă. fiecare pas este cât mai simplu și fără generalizări, pasul de refactorizare implică mai O soluție pentru aceste probleme este ales identificarea și reducerea similarităților design-ul incremental. Design-ul incre- din cod (numite uneori „duplicare”, deoamental înseamnă crearea design-ului în rece două bucăți de cod fac același lucru în timpul scrierii codului. Design-ul incre- moduri diferite). Similaritățile pot fi elimimental este o alternativă la metoda clasică nate doar prin generalizare, care se traduce de a face design: înainte de a începe scrierea în cod prin abstracții. (Nu este vorba doar codului, pe hârtie sau în unelte specializate. 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, programatorul obține un design flexibil, perfect adaptat la problema curentă. Datorită folosirii testelor automate, programatorul poate oricând demonstra că soluția sa este perfect validă pentru lista de comportamente definită 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 diminuate 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 problemă ș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 programatori. 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 gestiunea schimbărilor.

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

25


programare Test Driven Development și design incremental Concluzie

Designul incremental înseamnă crearea designului pe măsură ce codul e scris. Designul incremental este o alternativă la designul făcut pe hârtie sau în unelte specializate î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 acestui proces sunt cele mai simple pentru problema data, atât cât e ea cunoscută la momentul respectiv.

26

TDD este cea mai bună metodă cunoscută de a face design incremental. Practicienii TDD codifică exemplele folosind 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 simplificat și îmbunătățit în continuu. Scopul primar al designului incremental 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.

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

Pentru adopția TDD este nevoie de exersare, singur sau într-o comunitate, folosind una din metodele descrise în articolele anterioare despre software craftsmanship: etc. Întrebările pe acest subiect sunt binevenite pe programez.ro sau direct către autori.


programare

TODAY SOFTWARE MAGAZINE

Clustering for High-Dimensional Data Sets

C

lustering (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ţinute 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. Lucian Brăescu

lucian.braescu@accesa.eu Software Developer @ Accesa

Introducere Clustering este un proces care examinează 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 domeniul î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 clustering implică spaţii euclidiene de dimensiuni foarte mari sau şi mai amuzant este cazul în care sunt implicate spaţii care nu sunt euclidiene, 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 documente după subiectul lor, în baza existenţei unor cuvinte neobişnuite, comune în documente 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 nonnegativă (numai distanţa dintre un punct şi sine însuşi este zero), este simetrică (nu contează ordinea în care sunt luate în considerare punctele atunci când măsurăm distanţa dintre ele) şi trebuie să respecte inegalitatea 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).

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

27


programare Clustering for High-Dimensional Data Sets Strategii de clustering (grupare) Există două tipuri de strategii de clustering: 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 formarea unor clustere indezirabile (de exemplu atunci când am ajuns la un număr predeterminat 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ă clusterele 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.

Această raritate este problematică pentru orice metodă care necesită relevanţă statistică. 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 asemenea 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 ierarhic Pentru spaţiile euclidiene, cluster-ing (gruparea) începe cu fiecare punct în propriul 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 reprezentate 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:

“Blestemul” dimensionalităţii Acest „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-dimensionale. 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.

28

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ă reprezentăm un cluster prin centroidul său şi astfel

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

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.


TODAY SOFTWARE MAGAZINE definirea a ceea ce constituie un cluster şi care este modul optim de a-i găsi.

Algoritmul începe prin selectarea k prin algoritmii anteriori: puncte. Punctele din fişierul de date sunt

Concluzii

Analiza 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.

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 memoria principală. Algoritmul depozitează în memoria principală rezumate ale clusterelor 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 clustering 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 reprezentative 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 Analiza cluster nu este definită printrrezultatului clustering-ului se poate vedea un algoritm specific, dar sarcina generală în figura de mai jos şi este o formă clar dife- care trebuie rezolvată poate fi îndeplinită rită de rezultatele procesului de cluster-ing prin diverşi algoritmi care diferă prin

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

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

29


eveniment

programare

SAP Conference

A

genda 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. Cunoștințele și vasta experiență msg systems în domeniul de dezvoltare și implementare 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 focusul soluțiilor SAP nu era neapărat bazat pe user experience ci pe integritatea soluțiilor și pe capacitatea lor de a acoperi 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 folosirea 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 provocările ce apar tot mai des dinspre scenariile cu volumuri de date foarte

30

mari, așa numitele „Big Data“. O sesiune dedicată soluției SAP în acest domeniu 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 implementare 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 activitatea celor cinci ani de când msg systems România activează pe piața din România, vom prezenta aspectele principale (orientate pe agilitate și flexibilitate) care ne asigură succesul în proiectele bazate pe

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

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 business software. Înregistrarea la “Conferinţa IT bazată pe tehnologia SAP” este deja deschisă. Toţi cei care doresc să ia parte la acest eveniment sunt rugaţi să trimită un email cu confirmarea de participare la adresa: info-events@msg-systems.com. Vă așteptăm cu plăcere și mare interes!

Horea Rațiu

Horea.Ratiu@msg-systems.com Director Departament SAP @ msg systems Romania


programare

TODAY SOFTWARE MAGAZINE

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 dispozitive 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. Cătălin Prata

catalinp@fortech.ro Mobile Software Developer @ Fortech

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, dezvoltatorii 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 native

Aplicațiile native sunt aplicații scrise în limbajul de programare specific platformei pentru 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. Sistem de operare

Limbaj de programare

Platformă

IDE

Android

Java, C++

Android SDK/ Android Studio NDK

iOS

Objective-C

Cocoa Touch

Xcode

Windows 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 Plugin

Firefox OS

JavaScript

WebAPI

Symbian

C++

Qt

Orice IDE HTML, JavaScript și CSS  (NetBeans, Eclipse, etc.) Qt Creator

Tabelul 1

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

31


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

Părți pozitive

Un 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 diferite 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 specifice 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 sistemului 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 programare diferit față de alta platformă iar la rândul lui și limbajul de programare vine cu un șablon de lucru care de obicei este destul 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 programator 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.

Dezvoltarea aplicațiilor native poate aduce următoarele beneficii celor care le dezvoltă: • Posibilitatea de a accesa diferite componente hardware (bluetooth, 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 platformă î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ăstrează 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 negative Ca 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 distribuite 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 platforme, 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 hibride

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

Aplicaț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:

Caracteristici

Figură 1.1 iOS 7 Selector pentru dată

32

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

Aplicaț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


TODAY SOFTWARE MAGAZINE

Denumire

Tehnologii de Platforme lucru suportate

Suport pentru limbaj nativ

PhoneGap

HTML, JavaScript și CSS

Nu

iOS Android

Categorie

Nativ

Hibrid

Cunoștințe necesare dezvoltării aplicațiilor

Objective-C

HTML

Cocoa Touch

CSS

Java

Javascript

Android SDK

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

BlackBerry Windows Phone

C

Symbian

C++

WebOS Appcelerator Titanium

HTML, JavaScript

iOS

Android NDK Da

WindowsPhone Runtime

Android

C# / VB.NET

BlackBerry

.NET

Windows Phone Adobe AIR

ActionScript, HTML, JavaScript

iOS

Nu

Android BlackBerry

Sencha Touch

HTML, JavaScript și CSS

iOS

Nu

Android BlackBerry Windows Phone Tabelul 2

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 folosesc 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 programatori 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.

Stocare date

Da

Da

Acces 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 Bun spre slab în funcție de funcție de platformă platformă

Potrivit pentru dezvoltarea jocurilor

Da

Nu

Timp de dezvoltare

Foarte mult

Mediu

Exemplu în imagini

Figură 4 Linkedin Android

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 versiune nouă a unui sistem de operare sau întârzieri în repararea

Tabelul 3

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 anumite 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.

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

33


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 lansă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 dezvoltarea 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 considerare dezvoltarea pentru iOS, Android și Windows Phone doar.

34

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

Ambele 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 bugetul 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ă.

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


TODAY SOFTWARE MAGAZINE

programare

Debugging în producție

D

e 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 Vunvulea

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

În cadrul acestui articolul voi prezinta totul alte zone din cod. diferite modalități prin care putem să facem debug fără să fie nevoie să folosim Visual Ce soluții avem? Studio. În general avem la îndemână două variante. Prima variantă se bazează în totalitate De ce fără Visual Studio? pe log-uri. Prin intermediul log-urilor putem Deși Visual Studio este un produs extrem să identificăm zonele din aplicație care nu de bun, care ne ajută când avem nevoie funcționează corespunzător. Dar folosirea să descoperim bug-uri și să facem debug, log-urilor poate să fie cu două tăișuri. Este acesta nu o să ne fie de foarte mare folos în nevoie să știi ce este necasar să apară în logproducție. În momentul în care avem un bug uri și cât de des. În caz contrar te poți trezi în producție, regulile jocului se schimbă. În cu mii de pagini de log-uri nefolositoare și producție aplicația este compilată pentru aproape imposibil de analizat. Dacă ajungem release, iar debug-ul nu mai este posibil. să avem prea multe log-uri putem să fim surprinși de schimbarea comportamentului Când este nevoie de aceste tool-uri ? aplicației. În momentul în care nu putem să reproÎn cazul în care este posibil putem să triducem problema pe mașinile de dezvoltare. mitem PDB-urile pe mașina de producție. Orice am face nu putem să reproducem pro- Prin acest mod vom avea acces la tot stack blema pe care o avem. Neputând reproduce trace-ul pe care o excepție îl generează. problema este ca și cum am căuta acul în Log-urile ne pot fi de mare ajutor pencarul cu fân. tru a rezolva diferite probleme care apar în Dacă întâmplător apare problema, dar producție. Chiar dacă log-urile sunt foarte fără să avem un scenariu de reproducere, folositoare, nu ne vor ajuta de fiecare dată. ajungem în același caz amintit mai sus. Există diferite probleme care pot să apară și Un alt caz ar fi atunci când memoria care să fie extrem de greu de identificat foloocupată de aplicația noastră crește în timp, sind log-urile. De exemplu un dead-lock ar fenomenul manifestând-se doar la mașinile fi aproape imposibil de identificat prin interde producție. Putem doar să bănuim pro- mediul log-urilor. blema, dar nu știm cauza exactă. Din această O altă variantă pe care o avem la cauză, putem să ajungem să “reparăm” cu dispoziție este crearea de memory dump-uri www.todaysoftmag.ro | nr. 15/Septembrie, 2013

35


programare Debugging în producție și analizarea acestora.

Ce este un memory dump

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 alternativele 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.

Un memory dump este un snapshot a procesului într-un anumit 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 simplu memory dump care se poate face ș i c o n ț i n e d o a r Windbg informații despre stack – starea procesului sau despre ce apeluri se fac și așa mai departe. A l d oi l e a t ip de memory dump este full dump. Acesta conține toate informațiile care se pot obține, incluzâ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:

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 ajutătoare precum Son of Strike (SOS) sau Son of Strike Extension (SOSEX). Aceste două librări ne deschid noi uși, putând să analizeze 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ă Prin intermediul opțiunii pn specificăm numele procesu- accesăm obiectele thread-urile și informațiile din garbage coleclui pentru care dorim să creăm un dump. În cazul în care dorim tor. Putem să vizualizăm inclusiv nume de variabile și valoarea să creăm un dump în mod automat putem să folosim opțiunea acestora. –crash. Trebuie știut că toate informațiile care se pot accesa fac parte adplus –crash –o C:\myDump –pn MyApp.exe din managed memory. Din această cauză, SOS este strâns legat adplus –crash –o C:\myDump –sc MyApp.exe de CLR și de versiunea acestuia. În momentul în care încărcăm Dacă este nevoie să creăm un dump în mod automat pe lângă modulul SOS, trebuie să avem grijă să îl încărcăm pe cel corespun“adplus.exe” putem să folosim DebugDiag și “clrdmp.dll”. Cele trei zător pentru versiunea de .NET a aplicației noastre. opțiuni pe care le avem pentru crearea unui dump în mod automat .loadby sos mscorks .loadby sos clr sunt destul de similare. DebugDump ne permite să configurăm sistemul ca să creeze automat un memory dump în momentul în În exemplele de mai sus am încărcat modulul de SOS pentru care nivelul CPU-ului este mai mare de X% într-un anumit inter- .NET 3.5-, iar în al doilea exemplu am încărcat SOS pentru .NET val de timp. 4.0+. Pe lângă aceste tool-uri există multe altele pe piață. În funcție Toate comenzile SOS încep cu “!”. Comanda de bază este de necesități puteți să folosiți orice tool de acest tip. “!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: adplus –hang –o C:\myDump –pn MyApp.exe

36

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


TODAY SOFTWARE MAGAZINE 0:000> !threads ThreadCount: 5 UnstartedThread: 0 BackgroundThread: 2 PendingThread: 0 DeadThread: 0 Hosted Runtime: no Lock ID OSID ThreadOBJ Count Apt Exception …

Debug la un crash

Pănă acuma am văzut că avem la dispoziție multe tool-uri pentru 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 procesul 2. Î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).

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 ajutor. 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 accesate 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 Trebuie știut că rezultatele sunt în funcție de modul în care mare. 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.

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

37


testare

Model Based Testing fără presupuneri

M

odel Based Testing (MBT) este un mod nou de testare eficient pentru metodele 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ș

tudor@xlteam.ro Business Developer @ XL Team

Din ce în ce mai mult se vede că Model Based Testing 1 (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 multidisciplinaritate, trebuie să fie în consistență cu modul de testare curent. MBT se descurcă bine în astfel de situații, dar este condiționat de o aplicare corectă. Beneficiile aplicării MBT sunt cunoscute, 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

38

nr. 15/Septembrie | www.todaysoftmag.ro

î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ă s e iau în considerare metodele tradiționale de dezvoltare software, se poate vedea că testerul este independent față de


TODAY SOFTWARE MAGAZINE

procesul de dezvoltare. Testarea tehnică și dezvoltarea sunt considerate designul tehnic, și testerul va folosi designul funcțional în aranjarea setului de teste pentru testarea 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ă pentru 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 acestor modele nu a gresit interpretarea? Cine are grijă de actualizarea modelelor după o actualizare a cerințelor? Oare toți cei implicați, spre exemplu testerul, managerul de proiect etc. înțeleg aceste modele? Sunt toate situațiile de testare capturate în aceste modele? Și poate mai important, sunt aceste modele aranjate în scopul generarii 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 echipei 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 perspectivă 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

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

39


business

programare

TheOpen.com – susţinerea digitală a unui turneu de success

T

he 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.

Bogdan Moscaliuc

bogdan.moscaliuc@endava.com Project Manager @ Endava

40

nr. 15/Septembrie | www.todaysoftmag.ro

Este golful un sport potrivit doar pentru 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ţinut 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 pentru aproape 7 milioane de utilizatori pe parcursul turneului aduce un sentiment de împlinire dar şi certificare pentru o companie 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 reproduce 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.


TODAY SOFTWARE MAGAZINE • Spectatorii şi turiştii prezenţi în jurul terenului de golf unde are loc evenimentul pot accesa un website dedicat prin care organizatorii trimit informaţii updatate regulat; • În materie de Live Coverage, website-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 dedicat @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 coordonatele poziţiei de pe teren. Aceste coordonate sunt apoi reprezentate pe un teren digital în miniatură, astfel utilizatorii 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 rampup atât de abrupt în cele 4 zile de turneu. Diferite nivele de caching pentru Sitecore CMS respectiv Akamai CDN dar şi optimiză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 canalele Live streaming. Totul pentru a oferi o experienţă cât mai placută şi a reţine utilizatorul pe site. Echipa de proiect din Endava a monitorizat în rotaţii de 8 ore turneul şi evoluţia

constantă a site-urilor dintr-un WAR room Blackberry, WinPhone, on-site mobile asamblat special pentru acest eveniment. site, live video streaming, live audio Suportul 24/7 a fost asigurat pentru 2 săpstreaming, Video on Demand. tămâni prin expertiza backend – conținut • 6 x live Streams – 2 canale BBC, şi baza de date, front-end – JS, CSS dar şi ESPN, @TheOpenLIVE on-site live integrarea cu diferiţi 3rd party service broadcast, @TheOpenRadio si Radio 5 suppliers. Live. Integrarea cu mediile sociale prezintă • 4 milioane de clipuri video on un interes ridicat, Twitter şi Facebook sunt demand iniţiate în 4 zile. principalele platforme de promovare, iar • Peste 50% din utilizatori provin de pe Widgeturi specifice sunt plasate direct pe un dispozitiv mobile. homepage pentru a angrena utilizatorii în dezbateri. Planul pentru The Open 2014 conIată câteva cifre ale succesului din 2013: ţine deja surprize pentru fanii golfului, iar • Aproape 7 milioane de utilizatori Endava va demonstra încă odată că inovaunici în cele 4 zile ale campionatului. ţia digitală nu are limite. • Un vârf de 78,000 utilizatori unici concurenţi pe site pe secundă în momentul în care Phil Mickelson a început să joace 18th green. • 31 milioane page impressions în săptămâna campionatului. • Pe Twitter #TheOpen a fost plasat pe primul loc trending channels in UK si USA. • Cea mai variată gama de opţiuni digitale pentru un turneu de golf : desktop, mobile, iPhone, iPad, Android,

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

41


evenimente

Business Networking de la offline la online pe platforma Business Days

B

usiness 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, organizatorul Business Days a avut amabilitatea să răspundă întrebărilor Today Software Magazine Ovidiu Măţan, PMP

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

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 evenimente, 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 provocă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 referim la sesiunile de business networking, fie că ne referim la aplicaţiile mobile şi online, fie că ne referim la platformele de socializare, fie că ne referim la platformele video educaţionale. Dacă ne referim strict la zona de evenimente 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, antreprenori, 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


TODAY SOFTWARE MAGAZINE aduce soluţii, răspunsuri şi idei în special prin cele 16 workshopuri ale evenimentului. Un alt fapt prin care ne diferenţiem de orice alt organizator de evenimente de business din România este structura evenimentului, care se desfăşoară pe trei paliere: • conferinţe - care au rolul de a-i încărca cu energie pozitivă pe cei prezenţi, prin care inspirăm, motivăm şi oferim idei, prin care oferim o analiză a tendinţelor, relevăm oportunităţi în dezvoltarea şi progresul tehnologic • workshopuri - care au rolul de a dezvolta abilităţi în special prin schimb de experienţa şi interactivitate, unde focusul 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. • sesiunile 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 implicarea unor televiziuni locale sau naţionale într-un maraton de emisiuni conexe sau de transmisiuni directe de la locul evenimentului, prin care facem ca informaţiile

valoroase transmise de speakeri să ajungă şi la cei care nu au putut fi la locul evenimentului, 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 domenii de activitate în evoluția pieței românești?

Laszlo Pacso - organizatorul Business Days

Da, aşa este. Este esenţa evenimentelor 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 consumatorii 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ă succesul 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 convinşi că dezvoltarea abilităţilor de public speaking la cei care vorbesc la evenimentele Business Days va genera o mai mare reuşită şi un succes mai mare în transferarea 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 - evaluează î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 calităţ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 prezentă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, succesul nu întârzie să apară. De la astfel de oameni se pot inspira şi pot afla soluţii cei care participă la evenimentele Business

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

43


evenimente Interviu: Business Days 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 participant 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, experienţă ş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 sesiune 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 ajutor 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 acestor î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.

bine mediul de afaceri şi nevoile lui. Vom avea aplicaţia de matchmaking, ce este oferită 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 manifestă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 facilita 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 matchmaking „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 participanţ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 solicită 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 invitaţia primită la finalizarea procesului de Am văzut că BD va reveni la Cluj în înregistrare. luna septembrie. Ce aduceți nou în această ediție? Cum vedeți evoluția pieței de IT în Faţă de anul trecut, avem un program România prin prisma participării companimai interesant şi mult mai bine adaptat. ilor de profil la eveniment? Venim a doua oară şi cunoaştem mult mai Piaţa de IT este foarte prezentă la

44

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

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 mentalitatea î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ă participanţ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 abandonăm această cale oricât ne este de greu, am reuşit să strângem în jurul nostru parteneri, susţinători, ambasadori, prieteni, fani şi speakeri care ne susţin aproape necondiţ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.


TODAY SOFTWARE MAGAZINE

management

Lean Six Sigma și managementul inovaţiei

I

deea 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 productivitate, o performantă financiară solidă precum și o înclinaţie inerentă către inovaţie. Monica Petraru

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

Î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ăspunde la aceste întrebări mai pe larg, oferind o imagine de ansamblu a cadrului fundamental al acestei metodologii. Înainte de a folosi o metodologie de îmbunătăţire a proceselor din interiorul companiilor în care ne desfăşurăm activitatea 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 obiectivul 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 produs de valoare în final. În prezent, toată lumea a auzit de metodologia 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

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

45


management Lean Six Sigma și managementul inovaţiei 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 metodologia 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 materialului 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 relevant în acest sens fiind şi departamentele comerciale din cadrul unei întreprinderi.

În timp ce în Lean se utilizează evenimentele de tip Kaizen, cartografierea Framework – ul DMAIC fluxului de valoare, echilibrarea încărcării DMAIC ilustrează o metodologie de de lucru şi analiza deșeurilor, metodologia 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 perspectiva 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 Sursa: www.sixsigmadaily.com rândurile de mai sus: proiect extrem de riguroasă ce are ca Lean Six Sigma obiectiv esenţial creşterea gradului de Obiectiv Eliminarea Eliminarea capabilitate şi totodată cel de reducere pierderilor variatiei a defectelor identificate într-un proces – optimizarea serviciilor, produselor Creşterea Eliminarea sau proceselor existente din cadrul unei nivelului de defectelor companii / firme. Este necesară parcuroptimizare a procesului gerea următoarelor etape: 1. Definire Focusare Viteză şi Calitate maximă cost 2. Măsurare 3. Analiză 4. Îmbunătățire Instrumente Evenimente Analiză Pareto, 5. Control necesare de tip chart – uri de

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

Lean şi Six Sigma sunt ambele discipline pentru remedierea permanentă a proceselor din cadrul unei companii, dar acestea diferă în stabilirea obiectivelor primordiale ş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 simplificarea activităţilor ce oferă clientului valoare Pentru orice elemente precum reducerea pierderilor, fluxul de valoare, flexibilitatea proceselor reprezintă componente arhetipale ale unei structuri sau companii de tip Lean, indiferent de domeniul de activitate sau de sectorul în care se prestează activităţiile: producţie, servicii publice, de sănătate, financiare etc. . Daca Lean asigură stabilitatea proceselor ş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.

46

Kaizen

control

Value stream mapping

Analiză statistică, realizarea experimentelor

Work load balancing 7 wastes

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 clienţilor, cât şi de procesul care e destinat îmbunătăţirii. • Se doreşte atingerea unui nivel mai înalt de tip sigma.

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 2. Măsurare client. Caracteristici precum time – focu• Înţelegerea procesului . sed strategy din Lean cu instrumentele de • Focusare maximă pe efortul de analiză statistică abordate de metodologia îmbunătăţire a situaţiei curente. Six Sigma, care permite o soluție flexibilă • Stabilirea unui nivel al capabiliîn contextul abordării unui set complex de tăţii optim pentru obţinerea unui grad probleme. ridicat de performanţă a procesului. Axul central al metodologiei Lean Six Sigma este reprezentat de framework – ul 3. Analiză DMAIC (Definire, Măsurare, Analiză, • Odată ce datele inițiale au fost Îmbunătăţire, Control). După cum se stabilite, ulterior se va putea identifica poate observa a fost preluat şi de către de unde provin cauzele mult mai facil. acest hibrid, în special pentru proiecte care • În această fază, prin urmare, se vizează îmbunătățirea proceselor de afaceri pot localiza şi identifica cauzele, cât şi existente. confirmarea lor prin utilizarea unui set

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


TODAY SOFTWARE MAGAZINE acestei metodologii.

Concluzie

Orice 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ţiilor toate instrumentele necesare în vederea optimizării capabilităţii proceselor sale, creşterii performanţei mediului de afaceri Sursa: deakinprime.com şi reducerii variaţiei rezultatelor proceselor → calitate superioară a produselor si de date concrete. Astăzi, companiile folosesc principiile serviciilor. de bază ale metodologiei Lean Six Sigma în 4. Îmbunătăţire vederea obţinerii următoarelor target - uri: • Definirea si validarea sistemu• Focalizarea efectivă asupra doleanlui de monitorizare şi control a noului ţelor clientului – creşterea satisfacţiei proces. consumatorului; • Identificarea potenţialelor moda• Creşterea profitului; lităţi de optimizare. • Îmbunătăţirea calităţii produselor; • Elaborarea unor studii pilot. • Creşterea mulţumirii în rândul • Corectarea / Reevaluarea soluției angajaţilor; potenţiale. • Reducerea costurilor de operare şi recuperări majore ale capitalului investit; 5. Control • Mecanism de generare al manage• Controlul performanţei noului mentului schimbarii; proces. • Reducerea defectelor; • Definirea unor standarde interne • Cultivarea gustului extraordinar de şi proceduri de lucru. a excela; • Implementarea unui proces de control statistic. Posibile capcane ce pot surveni de-a lun• Realizarea unui plan de proces de gul implementării acestei metodologii control statistic. Lean Six Sigma oferă o metodologie • Determinarea capabilităţii noului şi un set de instrumente pentru a conduce proces. la îmbunătățirea continuă printr-o analiză • Elaborarea şi transferarea soluţiei bazată pe fapte și feedback permanent din către beneficiarul proiectului. partea clientului. Deseori, această sim• R e d u c e r e a c o s t u r i l o r plitate este pierdută în zelul de a obţine și creşterea profitului. rezultate măsurabile cât mai rapide, iar • Finalizarea proiectului şi a companiile nu reușesc să vadă succesul documentaţiei. iminent. Aici se pot identifica unele dintre cele mai comune capcane întâlnite: • Concentrarea asupra studiului în Implementarea metodologiei Lean Six vederea obţinerii certificării; Sigma în cadrul firmelor sau a marilor • Evitarea echilibrării alocării de companii resurse; Dacă tot am vorbit până acum din • Focusare maximă asupra colectării punct de vedere teoretic, cu siguranță cât mai multor date; aspectele aduse în prim – plan trebuie • Implementarea unui program rigid transpuse şi în practică, în cadrul activităaxat pe modele standardizate; ţilor noastre zilnice. • Devierea de la respectarea paşilor Aşadar, vă propun să vă imaginaţi în caracteristici metodologiei DMAIC; ipostaza unui manager de multinational, • Presupunerea faptului că persoanele a căror procese sunt complexe şi dificile. certificate au veleităţi de profesare speciÎntrebarea e ce vom face mai departe penfice managementului de proiecte; tru a optimiza aceste procese… • Tendinţa de a obţine cele mai bune rezultate din primul moment al abordării www.todaysoftmag.ro | nr. 15/Septembrie, 2013

47


programare

Java SOA Cookbook de Eben Hewitt

N

umărul acesta al revistei Today Software Magazine apare într-un moment în care lumea se întoarce din vacanţă, are energie, poftă de a cunoaşte şi de a se perfecţiona. Tocmai de aceea nu voi dezamagi cititorii revistei şi implicit ai recenziilor mele, alegând un subiect captivant.

Cartea Java SOA Cookbook de Eben Hewitt se adresează cu adevărat dezvoltatorilor şi arhitecţilor cu un grad de experienţă. Cei mai puţin experimentaţi pot găsi, totuşi, repere despre nivelul la care ar trebui să ajungă arhitecturile cu care lucrează. Cei experimentaţi găsesc soluţii pentru problemele lor. Cartea are un avantaj major, nu pune doar probleme ci oferă şi soluţii. Arhitecturile orientate pe servicii (SOA) sunt probabil cele mai răspândite arhitecturi enterprise şi implicit în world of web. Trebuie spus încă de la început că SOA nu înseamnă un stil sau o metodologie de dezvoltare a aplicaţiilor web, ci este o arhitectură şi o strategie de organizare. Dezvoltatorii pot înţelege astfel contextul în care munca lor se desfăşoară, iar arhitecţii îşi vor îmbunătăţi munca pe baza bunelor practici, venite din anii de experienţă ai echipei autorului şi din studiul dedicat evoluţiei limbajului Java. Personal, cred că orice dezvoltator sau arhitect al unei aplicaţii enterprise, care a ajuns la un anumit nivel de profesionalism, ar trebui să aibă în vedere şi soluţiile oferite de aceasta carte. Chiar dacă suportul tehnic al aplicaţiilor este JDK 6, versiunea enterprise a platformei este 5, iar serverul Glassfish are doar versiunea 2, nu văd nicio problemă. Sigur, evoluţiile sunt către a elimina unele dintre operaţiile ce fac parte din ceea ce numim “dirty job”, dar cunoașterea a cât mai multor detalii este benefică. Înainte de a intra în descrierea propriu zisă a cărţii doresc să precizez că pentru servicii de proces, autorul folosește BPEL (Business Process Execution Language) în ciuda disputelor existente de-a lungul timpului între BEA Systems şi BPEL (http://www.infoworld.com/d/developerworld/oracle-bea-battle-over-bpel-944). Alternativa pentru BPEL este oferită de BPM suite. Cartea este structurată în patru părţi: 1. Partea de fundamente, în care sunt prezentate, mai degrabă, noţiuni folosite pentru SOA, dar şi multe detalii legate de

48

limbajul XML. Până la apariţia adnotaţiilor, XML-ul a jucat un rol hotărâtor, atât pentru descrierile de date cât şi pentru validări sau conversii. 2. Partea de servicii web, care cuprinde o trecere în revistă, destul de detaliată, a serviciilor web şi API-urile Java ce le susţin. Capitolul de început al părţii se concentrează pe introducerea descriptorului WSDL, clienţilor de servicii şi instrumentelor de monitorizare şi debugging ale serviciilor, în timpul dezvoltării. Exemple simple completează partea teoretică. Capitolul următor se concentrează pe API-ul SAAJ (SOAP with Attachments API for Java). Este binevenită această trecere treptată spre API-urile actuale. Pe de o parte pentru că este un API low-level, ce comunică direct cu XML, dar şi pentru că API-urile ce urmează sunt mult mai abstracte, deci mai greu de înţeles fără SAAJ. În capitolul următor este prezentat JAX-WS (Java API for XML Web Services). Acest API se bazează pe JAX-RPC API, fiind însă mult modificat faţă de acesta. Clienţii serviciilor web sunt introduşi în capitolul următor, care este de fapt o continuare detaliată a discuţiilor despre clienţii serviciilor introduşi în capitolele anterioare. În sfârşit, ultimul capitol al acestei părţi este probabil şi cel mai actual. El se concentrează pe servicii REST (REpresentational State Transfer). Sunt, evident, mult mai uşor de utilizat şi în consecinţă mult mai populare. Lipsa aproape completă a XML-urilor este un atu demn de luat în seamă. Actualmente foarte mulţi clienţi, printre care şi cei de pe dispozitivele mobile, folosesc REST ca modalitate de comunicare cu backend-ul. La fiecare nouă versiune de Java Enterprise apar specificaţii noi pentru REST. 3. Partea despre Business Processes. Deşi puţin surprinzător pentru mine, autorul foloseşte BPEL pentru Service Orchestration. Surpriza este dată de faptul că Oracle susţine BPM suite şi

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

de aceea majoritatea arhitecţilor Java folosesc acest standard pentru a crea business process. În mod cert, ambele au o largă răspândire. Prezentarea procesului de orchestrare a serviciilor este introdusă gradual (invocarea multiplelor servicii web sau XSL transformation - pentru transformarea documentelor din format XML în alte formate). Nu lipsesc elementele avansate printre care activităţile paralele, întârzierile sau corelările. În ultimul capitol al acestei părţi sunt introduse instrumente de urmărire a serviciilor web. Poate cel mai popular element introdus aici este serviciul UDDI (Universal Description, Discovery and Integration). 4. Ultima parte este despre interoperabilitate şi calitatea serviciilor. Principala temă despre interoperabilitate se referă la interoperarea serviciilor web cu servicii şi clienţi de pe alte platforme. Se face referire la specificaţiile WS-Addressing şi la implementarea clienţilor în Ruby sau .NET. Despre calitatea serviciilor se discută standardele ce conduc la creşterea încrederii în servicii web. Cartea are un grad de dificultate înalt. Nu este chiar cartea de pe noptieră, de citit seara înainte de culcare. Exemplele numeroase şi comentariile pertinente, alături de stilul abordat: prezentarea problemei, soluţia şi comentarii cu multe exemple, creează o ordine în gândire capabilă să aducă performanţa. Luaţi-vă timp şi energie pentru a parcurge materialul, iar la sfârşit, dacă veţi fi înţeles toate problemele abordate, cu siguranţă veţi fi dobândit şi un bagaj de cunoştinţe care vă sporesc valoarea incontestabil. Ca de obicei spun că sunt interesat de discuţii cu cititorii pe care îi invit să le iniţieze sau să ia parte la ele. Silviu Dumitrescu silviu.dumitrescu@msg-systems.com Consultant Java @ msg systems Romania


HR

TODAY SOFTWARE MAGAZINE

Empatia – noua competenţă

Î

Antonia Onaca

anto@aha-ha.com de aproape 10 ani trainer, psiholog, consultant sub formă de antreprenor, intraprenor şi antreprenor din nou

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 cognitive mediază activarea emoțională. Interpretarea unei anumite situații declanșează o reacție emoțională caracterizată prin acceptarea perspectivei celeilalte persoane. Din aceasta perspectivă, 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 este definită ca fiind capacitatea 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 prezent 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 nostru î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 “adaptat 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 nevoilor beneficiarilor noştri. Cum face acest lucru? Haideţi sa intrăm în nuanţele definirii 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ă recomand să vă documentaţi în detaliu despre acest proces1. În primul rând majoritatea celor specializaţ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 fragede şi că problemele legate de empatie se văd în autism si sociopatie. Empatia în componentele sale (această clasificare este regăsită în majoritatea definiţiilor, deşi cu alte etichete) presupune: Pare foarte logică aceasta definire ale componentelor conceptului de empatie însă 1 youtube: the empathic civilization; baza de date: Center for Building a Culture of Empathy

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

49


HR Empatia – noua competenţă nu ne spune exact ce şi cum. Haideţi să vedem ce înseamnă în acest context cuvântul “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 componente 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 sistemul 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 sistemul specific al celorlalţi. În concluzie, empatia, fie că este orientată î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 acestora 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 interpretări/procesări a unui context sau situaţii în funcţie de

50

sistemul 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 comportamentul “y”. Cred că este deja evident cum ne ajută empatia în dezvoltarea de produse sau servicii. Empatia: • Întelegem ce simte și face un utilizator 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 produs 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 algoritmul şi apoi încercăm să îl modificăm. În consecinţă, a folosi procesul empatic 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

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

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 încercă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ă construim un sales pitch care creează acele emoţii sau comportamente pe care le aşteptăm.


TODAY SOFTWARE MAGAZINE

management

Gogu și perspectivele

G

ogu este un personaj amuzant, cinic pe alocuri, un introvertit pentru care monologul interior reprezintă o alternativă la viața reală. Cu ajutorul lui Gogu, analizăm diferite ipostaze din viața managerului de proiect și a echipei sale și sugerăm soluții ușor de înțeles și aplicat. Cum ar spune Gogu...„aproape de bun simț”. Vă invităm să-l urmăriți pe Gogu și să-i trimiteți sugestiile voastre. Simona Bonghez, Ph.D.

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

- Gogule, vezi că-ți pică falca… Mișu îl privi cu milă pe inconștientul care putea să se ia de Gogu într-un astfel de moment. Nimeni nu dorea să devină ținta lui Gogu atunci când acesta era supărat, aciditatea replicilor sale ardea sufletul nefericitului, iar dacă aveai cumva nefasta inspirație să-i mai și răspunzi, pârjolul iadului devenea imediat o alternativă mult mai fericită. Privirile celor de la birourile din departament se fixară cu aviditate pe Gogu. Șacalii - gândi Mișu – stau și-așteaptă măcelul. Însă, spre stupoarea tuturor, Gogu își împinse – cu un gest natural – maxilarul la locul ei (chiar avea gura căscată), fără să lase impresia că s-ar fi intrerupt din reverie. Aha, gândi Mișu, va să zică nu e supărat, numa’ preocupat. În ultimele zece minute analizase fiecare posibilitate, fiecare fapt, mesaj sau întâmplare care ar fi putut cauza supărarea lui Gogu. Evident, în afara unor presupuneri fanteziste, nu găsise nimic. Acum însă reluă cu sârguință analiza din noua perspectivă: ce ar fi putut să-l preocupe în așa măsură pe Gogu, ce probleme ar fi putut avea? - Gogule, probleme?! Mișu avu clara impresie că au prins glas gândurile sale. No, cum ceapa ei... Își dădu însă seama imediat: nu gândurile sale deveniseră guralive ci Șefu’ își făcuse apariția,

zâmbitor, relaxat, bronzat și odihnit, deh, cum îi stă bine omului după concediu. Departamentul dădu în clocot instantaneu. Numai că, în loc să îl înconjoare pe Șefu’ să-l întrebe de concediu, unde-a fost, ce-a văzut, unde-a stat, ce recomandă, agitația părea să îl ignore complet, se verificau liste pe computer, se făceau calcule... - Alo, mă bagă și pe mine cineva în seama? Că n-oi fi lipsit chiar așa de mult! Gogu abia atunci remarcă prezența Șefului. Surpriza i se transformă rapid în ușurare și îi zâmbi lui Șefu’. - Ori ați bolunzit cu toții?! Gogule, ce fac ăștia? - Ha-ha, Gogu își revenise iar acum chiar râse cu poftă. Sunt pariuri, Șefu’! Cât reziști în concediu, cu câte zile te întorci mai repede la program. - Chiar ore, adaugă Mișu cu zâmbetul lațit pe fața de ardelean. Știam noi că nu reziști 15 zile fără agitația de-aici... Două ore mai târziu, după ședința operațională și după ce Mișu își trâmbiță suficient victoria adusă de predicțiile sale, după ce tot departamentul aflase toate detaliile concediului lui Șefu’, venise vremea ca Gogu ‚să dea seamă’ - cum îi plăcea Șefului să spună – de ce se întâmplase în proiectele în care îl înlocuise. - Șefu’, mare bătaie de cap delegarea asta

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

51


management Gogu și perspectivele de la matale... - Ceva probleme, Gogule? zâmbi Șefu’. - Mai degrabă o nedumerire a mea, în rest – își îndreptă Gogu spatele cu mândrie - le-am rezolvat pe toate. - Sunt convins de asta, Gogule, că altfel nu te delegam pe tine să îmi ții locul. Ia spune, care e nedumerirea. - E o ciudățenie, Șefu’, începu Gogu. Mai știi matale ideile de optimizare din proiectul Luna? Pe unele dintre ele le-am analizat chiar eu și le-am formalizat în cereri de schimbare. Au fost câteva a căror aprobare era de competența managerului de proiect și pe acelea chiar le-am implementat deja, sunt câteva însă care erau de competența matale, ca sponsor al proiectului. - Și? întrebă Șefu’ cu nedisimulată curiozitate. Ți le-ai aprobat? Văzând încurcătura lui Gogu, adăugă repede: - O r i c e d e l e g are v i n e at ât c u responsabilități cât și cu autoritatea necesară deciziilor. Am încredere totală în tine, Gogule, și îți voi susține deciziile, n-am nici o îndoială că acele cereri trebuiau aprobate. - Păi tocmai asta e Șefu’, că nu le-am aprobat. Șefu rămase descumpănit. O oarecare umbră de dezamăgire îi apăru în privire când îi reproșă lui Gogu: - Ei, nu mă așteptam să amâni luarea unor decizii până la venirea mea. Știi foarte bine că lipsa unei decizii poate avea un impact mai mare decât o decizie proastă, în special în cazul proiectului nostru. Avem nevoie aici de rezoluții rapide. - Nu, Șefu’, stai. N-ai înțeles. N-am amânat. Am decis, doar că... - Doar că ce? Da’ zi o dată! - Păi rezoluția a fost „Nu”. Mi-am refuzat cererea! pufni Gogu înciudat. Șefu’ răsuflă ușurat. Pentru o clipă se îndoise de decizia sa de a-i delega lui Gogu – pe perioada concediului său responsabilitățile de șef de departament și de sponsor în cele două proiecte majore de reorganizare. Se simți brusc vinovat de lipsa de încredere. Îl încurajă pe Gogu să continue: - Hm, zici că le-ai refuzat? - Da, Șefu’. Și mă macină chestia asta. Oi fi fost bătut în cap când am cerut sau lipsit de vână când am refuzat? Că nu mi s-a mai părut acceptabil riscul... Șefu’ tăcu câteva clipe rumegând răspunsul. - Probabil nici una, nici alta, Gogule. N-ai fi tu primul în situația asta. Circulă pe internet o povestire, o legendă urbană cel mai probabil, despre generalul Milea. Cică

52

– și aici Șefu’ se lăsă tacticos pe spate – pe vremea când era comandant de garnizoană, ca orice alt comandant, trimitea diverse cereri pentru dotarea garnizoanei, către Marele Stat Major. Promovat șef al statului major și obligat de împrejurări să preia rapid noile atribuții, se vede în situația de analiza două dintre ultimele sale cereri trimise în calitate de comandant de garnizoană. Adjunctul său, preluînd dosarul cu cererile, constată cu surpriză rezoluția negativă și extrem de mirat, îndrăznește să întrebe dacă cererile nu fuseseră justificate. Răspunsul generalului, Gogule, cred că se

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

potrivește și în cazul tău: „ Cererile au fost și sunt justificate din poziția de comandant de garnizoană. Din poziția de Șef de Stat Major, însă, lucrurile se văd dintr-o cu totul altă perspectivă!


TODAY SOFTWARE MAGAZINE


sponsori

powered by


Numarul 15 - Today Software Magazine