Documente Academic
Documente Profesional
Documente Cultură
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
Comparaie ntre dezvoltarea aplicatilor native i cele hibrid Lean Six Sigma i managementul inovaiei SAP Conference Echipa Trilulilu din Cluj a lansat un serviciu naional revoluionar Model Based Testing fr presupuneri
Cum am facut primul meu Azure Mobile Service Business Networking de la offline la online pe platforma Business Days Debugging n producie Clustering for High-Dimensional Data Sets Empatia noua competen
30 SAP Conference
Victor Ionescu
35 Debugging n producie
Radu Vunvulea
12 SmartWeb Conference
Iunieta Sandu
38 Recenzia crii:
Silviu Dumitrescu
editorial
mi face mare plcere s v anun c odat cu publicarea numrului 15 lansm i prima aplicaie 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 crem aceast aplicaie. n doar dou luni, colaborarea tehnic a dou companii, 3Pillar Global i Gemini Solutions, a dus la realizarea unei aplicaii finite care ofer un mod facil de a citi revista atunci cnd nu eti n faa calculatorului. n dorina de a oferi ceva mai bun comunitii echipa a nvestit mult pasiune i pricepere. Mulumesc tuturor pentru sprijinul acordat iar n paginile revistei vei gsi dou articole dedicate acestei aplicaii. V invit totodat s o descrcai de pe site-ul revistei i s ne trimitei prerile voastre !!!! Pentru a pstra o concordan cu lansarea aplicaiei TodaySoftMag, numrul 15 TSM a dedicat tema general aplicaiilor mobile. De asemenea, pe lng lansarea lunar de la Cluj a revistei, TSM va avea ocazia s se fac cunoscut i n Bucureti, n cadrul evenimentului Gemini Foundry. Alte evenimente inedite la care v invitm s luai parte n luna septembrie sunt : SmartWeb Conference (Bucureti), SAP Conference (Cluj) i Cluj Business Days (Cluj). Fiecrui eveniment i-am dedicat un articol. Ca de obicei, facem o scurt inventariere a articolelor care se gsesc n acest numr. ncepem cu Test Driven Development i design incremental care este o revizuire a modului n care se aplic TDD i ne propune soluii practice a designului aplicaiilor. Pattern-ul MVVM este aplicat pentru Windows Phone 8. Din aceeai sfer a aplicaiilor mobile menionm titlurile: Clientul iOS Today Software Magazine, Comparaie ntre dezvoltarea aplicatilor native i cele hibrid, Favorites - de la CRM la FRM precum i Echipa Trilulilu din Cluj a lansat un serviciu naional revoluionar. Celor ce vor s i aminteasc de geometria euclidian i spaii v recomand s citii: Clustering for High Dimensional Data Sets. Seciunea de management conine Lean Six Sigma i managementul inovaiei, Empatia noua competen i interviul despre Business Days.
Ovidiu Man
alex.bolboaca@mozaicworks.com Agile Coach and Trainer, with a focus on technical practices @Mozaic Works
Radu Vunvulea
Lucian Brescu
Adrian Bolboaca
adrian.bolboaca@mozaicworks.com Programmer. Organizational and Technical Trainer and Coach @Mozaic Works Iunieta Sandu iunieta.sandu@evensys.ro PR & Marketing Coordinator @ Evensys
Monica Petraru
bogdan.moscaliuc@endava.com
Horea Raiu
Antonia Onaca
anto@aha-ha.com de aproape 10 ani trainer, psiholog, consultant sub form de antreprenor, intraprenor i antreprenor din nou
Tudor Cobla
tudor@xlteam.ro
lansare
TodaySoftMag
articole, pierzndu-se n schimb un lucru esenial, i anume direcionarea cititorului ctre 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 pn atunci. Dar din punct de vedere al folosirii se nate ntrebarea: de ce a vrea s recitesc un articol deja citit? Valoarea real ar fi n schimb s pot citi tot timpul ultimul numr al revistei sau pe cele pe care doresc s le descarc. De asemenea, trebuie s acordm cititorului posibilitatea de a elibera spaiul folosit. Acest feature
Doresc s mulumesc echipei de dezvoltare, pentru c am creat mpreun o aplicaie foarte practic i util n mai puin de dou luni. Am demonstrat cu aceast ocazie potenialul pe care industria de IT romneasc l are n acest moment, i care Dac v ntrebai cum este transmis poate fi folosit i n scopul suportului miciarticolul propriu-zis, acesta este descrcat lor afaceri locale. direct n format HTML, oferind n acest fel, o mare libertate din punct de vedere al afirii coninutului. Practic, de la listarea n AppStore au fost adugate comentariile Disquss, iar modul de afiare al articolelor ce nu sunt n format complet a fost schimbat, n momentul de fa redirectarea fcndu-se direct la issuu.com
Att aplicaia de iPhone ct i cea de iPad utilizeaz acelai mecanism de comunicare cu serverul i anume REST folosind obiecte JSON. Am ncercat s inem totul ntr-o form simpl, astfel nct avem doar trei tipuri de request-uri: issues - lista de reviste noi considernd ultimul numr diponibil pe client articles - lista de articole dintr-un anumit numr al revistei author - detaliile despre un autor
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 privete aplicaia TSM de iPhone/iPad, plnuim s avem releaseuri ce vor conine mbuntiri graduale i bug fixing. Printre principalele noi featureuri putem enumera:
business
Clin Biri
startups
Favorites te ajut s ii legtura cu persoanele importante din viaa ta. Acele persoane a cror contact l marchezi la Favorii n agenda telefonului. E vorba de patru categorii de persoane importante pentru un om: familie, prieteni, jumtate (so, soie, iubit, iubit) i business (clieni, furnizori, parteneri). Prin intermediul aplicaiei poi s i setezi ct de des vrei s interacionezi cu favoriii ti: zilnic, sptmnal sau lunar. Aplicaia urmrete ct suni, trimii mesaj sau te ntlneti cu un favorit. Dac trece perioada cu a crei frecven vrei s interacionezi cu un favorit aplicaia i trimite o notificare prin care i amintete s nu uii s i contactezi. Tot n aplicaie poi s vezi un istoric grafic al interaciunilor cu acel favorit i cte un istoric al apelurilor telefonice, mesajelor i ntlnirilor. ntlnirile au integrat i harta pentru a face lucrurile ct mai uoare. Dup primele folosiri ale aplicaiei utilizatorii au fost foarte ncntai de faptul c mamele lor de exemplu i laud c le sun mai des i sunt i mai ateni cu ele. Ali utilizatori au fost extrem de entuziasmai de folosirea aplicaiei ca tool de networking. i-au trecut n Favorites acele contacte din zona de business alturi de care vor s dezvolte parteneriate durabile.
nul acesta am pitch-uit la Startup Weekend Cluj ideea unei aplicaii de mobil pe nume Favorites. La cinci luni de la eveniment am reuit s lansm o prim versiune de Android a aplicaiei. Din zona de business a i pornit idee punem n buzunarul oamenilor prin interaplicaiei. 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 cutare poate fi gsit cel mai uor dup favorit.es. Urmtorii pai pentru Favorites sunt s implementm feedback-ul de la utilizatori, s realizm o versiune premium tot pe Android, dup care s lansm i versiunea de iPhone. Vom avea, de exemplu, n viitorul apropiat opiunea s poi fi notificat dac trece o anumit perioad fr s suni tu o anumit perioad. Astfel se vor putea evita foarte uor situaiile n care mama (sau orice favorit) i reproeaz c doar ea te sun. Favorites este o aplicaie compatibil cu Android versiunea 2.2 i mai noi. Este compatibil att cu telefoanele cu Android, ct i cu tabletele cu acest sistem de operare. Aplicaia este dezvoltat nativ pe platforma Google i folosete o baz de date pentru a pastr informaiile despre favorii.
Victor Miron
dau seama de importana folosirii unui soft de CRM (Customer Relationship Management). Prin Favorites vrem s adaptm softurile de CRM la viaa de zi cu zi i s l scoatem din companii i s l
startups
tartup-urile ncep s fie un subiect la mod n 2013. Apar din ce n ce mai multe organizaii ce doresc s sprijine aceste eforturi, iar recent chiar am publicat, n numrul 12, un articol despre Gemini Foundry. Revenim cu acest subiect deoarece diferite startup-uri au fost interesate de aceast iniiativ i exist nevoia unei clarificri. erban r, directorul tehnic al grupului de firme Gemini Solutions mpreun cu Radu Popovici ne-au rspuns la cteva ntrebri. Ce nseamn startup-urile pentru Gemini Solutions din perspectiva colaborrii cu acestea? Gemini Solutions are o lung istorie lucrnd cu startup-uri pn acum din Silicon Valley. Din acest punct de vedere noi credem c nelegem foarte bine cultura de startup. Chiar dac startup-urile din Romnia sunt un pic diferite de cele din US, n esen cultura i modul lor de lucru i de a pune problema este acelai. Din acest punct de vedere Gemini Solutions pune mare pre pe oamenii cu iniiativ, antreprenorii, pe cultura de startup, simindu-se ntotdeauna atras de astfel de iniiative i dorete s ncheie parteneriate, de diverse feluri cu ele. Cum vedei evoluia corect a unui startup pentru a deveni un succes? Nu credem c are cineva o reet general valabil pentru succesul unui startup. Sunt muli factori care pot contribui la succes: evident conteaz i ideea - dar nu att de mult pe ct nclinm la prima vedere s credem, conteaz fine tunning-ul idei - un proces complex care trebuie s considere muli factori precum publicul target, modalitile de promovare, viralitate, evaluarea corect a niei de pia adresate. Evident nu n ultimul rnd conteaz realizarea n sine a produsului, nelegerea feedback-ului de la utilizatori i nglobarea lui n produs, precum i direciile viitoare de dezvoltare spre care se merge. Este important s nelegem c o dat un produs out in the wild nelegerea feedback-ului de la utilizatori i acionarea n consecin sunt un factor cheie n meninerea produsului n vederea publicului int. Un alt factor care de obicei tinde s fie elaborat mai puin dect este cazul este evaluarea corect a potenialelor metode de monetizare. La ora actual metodele clasice de monetizare (vnzarea aplicaiei 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. Ce prere avei despre piaa de startupuri din Romnia pn acum i dac putei s ne oferii o previziune pentru urmtorii doi ani? Credem i sp erm c piaa de startup-uri din Romnia va crete considerabil n urmtorii ani. Economic vorbind, Romnia nu va mai putea mult timp s se vnd ca o ar cu fora de munc ieftin - fie ea i n cazul sectoarelor unde este necesar nalt calificare. n aceste condiii urmtorul pas logic este s apar activiti economice cu valoare adugat mai mare. Aceasta evident se poate doar prin inovare, iar
10
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 sntoas 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 ctre investitorii i environment-ul din Silicon Valley. Ce primim n schimb ? Aici este simplu, primim un procent din compania incubat, care oricum va rmne minoritar. Evident c acest procent difer n funcie de serviciile oferite.
11
evenimente
Jonathan Snook e
Designer / Developer, World Wide Web Hosting LLC. Conferina Smartweb este susinut 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
12
evenimente
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 gndesc ntr-un mod diferit. n momentul n care cititorul consum comics-uri el este deja un agent activ, iar comics-urile sunt eseniale pentru cunoatere i nelegere. Comics-urile sunt cea mai eficient unealt. Un creier antrenat cu comics-uri este deja un creier pregtit s decodeze. Mixnd imagini i text determin creierul s lucreze n dou forme diferite n acelai timp ceea ce nlesnete generarea de sentimente i conexiunea cu cititorul. A urmat Oanei Juncu (Twitter @ojuncu), care a vorbit despre A journey to our cognitive biases. Cu toii avem o tendina natural de a face lucrurile bine dar de multe ori le facem greit. Greeala este omeneasc i cu toii facem greeli tot timpul. Chiar i cnd credem c am nvat din erori tot mai greim. i asta a motivato pe Oana Juncu s ntreprind un studiu mai amnunit al erorilor cognitive. Oana a vorbit despre un set de mai multe erori cognitive care ne duc la greeli n viaa de zi cu zi i ne-a vndut cteva ponturi despre cum s nelegem cum funcioneaz mecanismul cognitiv ce ne conduce uneori s lum decizii greite. Totodat, cunoscndune erorile cognitive nu ne ajut s nu mai facem greeli deloc, ci doar s facem mai puine.
Dup Oana Juncu noi am urmrit-o pe Anna Obukhova care a inut o prezentare despre SCRUM i voina, i despre cum neurotiina poate spori productivitatea. Anna spune c voina este ca un muchi i ca urmare acesta trebuie exersat greu i ct mai des. Combustibilii voinei sunt zahrul i Lysine-ul i acetia nu trebuie risipii. Pasul 1. n SCRUM este sa nu i iroseti voina (1. Standup 2. Sprint Pulse 3. Pick the task).Pasul 2, este s nu i lai pe alii 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 obii rezultate i s fii fericit ( Obine rezultatele, Autorizeaz rezultatele i Vinde rezultatele! Iar continuarea sub-pasilor pentru succes ar fi urmtorii 8. Story done, 9. Tasks<= 1 day 10. Fixed Price Agile. Pe Anna Obukhova o putei gsi pe Linkedin sau la email: Anna.Obukhova@luxoft.com. Cam att 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 minunai care au luat parte i au fcut conferina att de minunat!
13
comuniti
Comuniti IT
m ncheiat luna august prin participarea la Agile Lean Europe 2013, un important eveniment european ce s-a desfurat la noi n ar anul acesta. Putei citi n acest numr un prim articol cu impresii calde de la acesta. Luna septembrie se anun plin de evenimente dintre care v sugerm: Lansarea Gemini Foundry ce va avea loc mpreun cu prima lansare a numrului 15 TSM n Bucureti. n aceeai zi va avea loc i SmartWeb Conference, o conferin dedicat web developer-ilor. Pe cei din Cluj i invit s participe la ediia 2013 a Business Days n 25-26 Septembrie.
Calendar
Transylvania Java User Group Comunitate dedicat tehnologiilor Java. Website: www.transylvania-jug.org Data nfiinrii: 15.05.2008 / Nr. Membri: 545 / Nr. Evenimente: 43 Comunitatea TSM Comunitate construit n jurul revistei Today Software Magazine. Website: www.facebook.com/todaysoftmag Data nfiinrii: 06.02.2012 / Nr. Membri: 790 / Nr. Evenimente: 11 Romanian Testing Community Comunitate dedicata testerilor. Website: www.romaniatesting.ro Data nfiinrii: 10.05.2011 / Nr. Membri: 640 / Nr. Evenimente: 2 GeekMeet Romnia Comunitate dedicat tehnologiilor web. Website: geekmeet.ro Data nfiinrii: 10.06.2006 / Nr. Membri: 560 / Nr. Evenimente: 17 Cluj.rb Comunitate dedicat tehnologiilor Ruby. Website: www.meetup.com/cluj-rb Data nfiinrii: 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 nfiinrii: 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 nfiinrii: 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 nfiinrii: 10.02.2011 / Nr. Membri: 226/ Nr. Evenimente: 13 Tabra de testare Un proiect care i dorete s strng ct mai muli oameni care lucreaz ca i testeri. Website: tabaradetestare.ro Data nfiinrii: 15.01.2012 / Nr. Membri: 320/ Nr. Evenimente: 19
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/ Septembrie 9 Lansarea numrului 15 TSM (Cluj) www.todaysoftmag.ro Septembrie 10 Entrepreneur X Factor (Bucureti) it-events.ro/events/entrepreneur-x-factor-season-2 Septembrie 11 How To Build A Winning Startup (Trgu 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 numrului 15 TSM (Bucureti) www.todaysoftmag.ro Septembrie 24 Lansarea Gemini Foundry (Bucureti)- recomandarea TSM gemsfoundry.com Septembrie 24 SmartWeb Conference (Bucureti) www.smartwebconf.com Septembrie 25-26 Cluj Business Days cluj-napoca.businessdays.ro Octombrie 4-5 ...even mammoths can be Agile n Iai! colorsinprojects.ro/eveniment-iai-4-5-octombrie-2013 Octombrie 12 Codecamp (Iai) iasi.codecamp.ro
14
programare
ererea de aplicaii pentru dispozitivele mobile este n cretere i, din acest motiv, preocuparea publicitilor din new media a vizat nu doar prezena exclusiv, ci i orientarea spre mai noua paradigm a disponibilitii pe mobil i web sau spre partajarea coninutului folosind dispozitive moderne ca tabletele i cu telefoanele mobile. n acest peisaj schimbtor al accesibilitii mobile, Today Software Magazine a realizat un parteneriat cu 3Pillar Global pentru a implementa nu doar o simpl aplicaie de partajare a coninutului (ceea ce nu ar fi nsemnat altceva dect nc o aplicaie n marea de aplicaii new media deja disponibile) ci pentru a oferi o soluie bazat pe coninut disponibil utilizatorilor terminalelor Apple iOS. Aceast soluie faciliteaz utilizatorilor mobili accesul la articolele din sfera IT sau conexe dar i socializarea n jurul acestora prin mijlocirea partajrii articolelor, n felul acesta amplificnd puterea creativ comun a tuturor pentru beneficiul mutual. Lund n considerare acest principiu al comunitii ce evolueaz n jurul tehnologiei i - mai larg - al comunitii ce evolueaz n jurul tehnologiilor evolutive - am gsit potrivit s mprtim o parte din expertiza nou creat pe care am acumulat-o n procesul de dezvoltare a aplicaiei TodaySoftMag pentru iOS (deja disponibil n Apple Store), ntruct acesta a fost un exerciiu plcut i, de asemenea, o experien de rafinare a expertizei precedente. Pe lng dezvoltarea echipei, un alt efect pozitiv a fost faptul c ne-a oferit o viziune mai clar asupra aspectelor congruente n dezvoltarea unei aplicaii de tip client-server pentru iOS. n paragrafele care urmeaz am ncercat s mprtim o parte din aceast expertiz.
nc de la prima rulare, aplicaia ncearc s satisfac nevoile utilizatorului, prin a-i oferi posibilitatea de a alege limba n care prefer s citeasc articolele, ntruct revista este disponibil att n limba englez, ct i n limba romn. Odat aleas limba, aceasta este salvata n baza de date implicita a utilizatorului. Interaciunea cu aceasta se face cu ajutorul interfaei programatice NSUserDefaults. Dup alegerea limbii, aplicaia va afia ultimul numr al revistei. Pentru a nu perturba lectura utilizatorului articolele celorlalte numere sunt aduse ulterior (mai multe detalii privind descarcarea articolelor se gsesc n seciunea Considerente tehnice). Dintre toate caracteristicile aplicaiei, putem meniona urmtoarele: 1. Parcurgerea / citirea revistelor / articolelor - Caracteristica principal a aplicaiei 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. Numrul afiat va fi selectat n list, n acest fel
15
programare
Clientul iOS Today Software Magazine
aplicaia va memora mereu starea utilizatorului n aplicaie. Versiuni ale aplicaiei Fiecare numr are o list de articole aranjate n ordinea apariiei. Implementarea a dou versiuni n paralel a aceleai aplicaii Odat selectat articolul, acesta va rmne aa, pn cnd este aduce cu sine mai multe provocri. selectat unul nou din lista de articole a acelui numr. 2. Aducerea / readucerea numerelor revistei - Deoarece revista este scris att n limba romn ct i n englez, utilizatorul poate comuta ntre ele alegnd o alt limb din meniul Setri, comportament care va declana aducerea/ readucerea numerelor n limba dorit. Aplicaia va intra n starea de descrcare, i va afia o nou fereastr cu un mesaj sugestiv pn cnd articolele din ultimul numr sunt aduse de pe server. 3. Trimiterea articolelor - Prin integrarea reelelor de socializare, aplicaia 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 aplicaia TSM s fie disponibil att pentru iPhone, ct i una pentru iPad i, n ceea ce privete interfaa grafic, lucruPentru selectarea metodei de distribuire a articolului s-a rile nu puteau fi mai diferite de att. Intenia era ca aceleai date utilizat componenta UIActivityViewController. Fiind o compo- sa fie afiate i n acelai timp s fie corespunztor adaptate pentru nenta introdus numai din versiunea 6-a a iOS, am ntmpinat fiecare tip de dispozitiv mobil. iPad-ul are un display mare pe care cteva impedimente neateptate. Pentru afiarea activitailor dis- un utilizator poate vedea cu uurin orice tip de informaie, de la ponibile, aceast component folosete credenialele stocate n icoane mici pn la grafice mari i detaliate, n timp ce iPhone-ul setarile telefonului. n cazul n care credenialele nu sunt stocate, - pe de alt parte - are un ecran mai mic, dar dispozitivul este mai componenta nu afieaz activitai pentru reelele de socializare des ntlnit printre utilizatorii de iOS. Facebook si Twitter. Pentru a oferi acces spre aceste activitai, Datorit diferenei mari de rezoluie dintre iPhone i iPad, s-a am introdus activiati custom ce asigur logarea utilizatorului n decis ca aplicaia s afieze n permanen informaia relevant contul reelei de socializare, naintea trimiterii articolelor. La acce- existent n locul afirii tuturor informaiilor n acelai timp. n sarea activitilor custom, se declaneaz aciunea de compunere aceast idee au fost gndite toate ecranele aplicaiei. a unei postari pe reeaua 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];
aplicaia va observa lipsa credenialelor i va prompta utilizatorul spre Setri, unde acesta i va introduce informaiile contului. Astfel activitatea prestabilit din UIActivityViewController devine disponibil. Dup selectarea metodei de distribuire, aplicaia va afia un dialog specific fiecrei reele de socializare i va completa mesajul aciunii cu un text standard ce include un link care va conduce la articolul respectiv.
Dup selectarea limbii, principalul ecran al aplicaiei apare afind cea mai important informaie: lista articolelor pentru cel mai recent numr al revistei. Pentru versiunea de iPad s-a ales ca lista cu numrul revistelor sa fie afiat simultan cu lista de articole, versiunea pentru iPhone ns arat doar lista articolelor, iar o alt revist putnd fi selectat accesnd meniul din partea stng. S-a dorit ca amndou versiunile s pstreze acelai comportament. Lista articolelor va fi afiat ntr-o pozitie centrat, iar n partea stng va fi afiat lista revistelor, mai ascuns, astfel nct s nu deranjeze vizual utilizatorul. De aceea, pe iPad a fost introdus componenta Split View, ce conine o coloan mai ngust n stnga i una mai lat n dreapta, iar pe versiunea pentru iPhone meniul din stnga este din nou prezentat ntr-o form ngust, prin adugarea unei componente denumit IIViewDeckController, o clas open source ce este din ce n ce mai des folosit n aplicaiile iPhone.
16
Urmtoarea fereastr a aplicaiei afieaz articolul selectat. n partea de sus a ecranului sunt afiate informaiile despre autor, astfel nct - la derularea articolului - acestea s rmn vizibile. Pe iPad, n partea stng, apare din nou lista cu articole pentru a ajuta utilizatorul s schimbe mai uor articolele ntre ele. Versiunea pentru iPhone este meninut, ns, simpl, aa cum se ateapt orice utilizator de telefon mobil.
Articolele care pot fi vizualizate n aplicaie, precum i detaliile autorilor, sunt preluate de pe server prin intermediul interfeei programatice puse la dispoziia clientului de iOS. Partea de comunicare i transfer a datelor dintre client i server este realizat folosind framework-ul AFNetworking, astfel nct se va menine controlul asupra cererilor fcute la server i se va avea un control mult mai mare asupra gestiunii rspunsurilor lund n considerare i faptul ca unele cereri ctre server ale cror rspuns au o dimensiune mai mare vor fi fcute separat i rspunsul va fi tratat astfel nct experiena utilizatorului nu va fi afectat. n secvena 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; }
Aplicaia folosete n acelai timp multe componente noi introduse in limbaj ct i unele personalizate pentru a spori interesul utilizatorului. Aici vorbim despre micile atenii din listele cu articole, animaia de la nceputul aplicaiei 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 privete tehnicile i componentele folosite. Aspectul final al fiecrei versiuni a fost proiectat astfel nct informaiile s fie afiate ntr-un mod eficient. Fiecare utilizator poate spune c aplicaia i ndeplinete nevoile i cerinele, lund n considerare constrngerile impuse de fiecare dispozitiv n parte i pstrnd, n acelai timp, concentrarea pe ceea ce este important i modul n care acesta este afiat.
Considerente tehnice
Aplicaia pentru iOS suport versiunile 6.0 i 6.1 ale sistemului de operare pe dispozitive de tip iPhone i iPad, astfel inct utilizatorii vor putea beneficia de toate avantajele sistemului de operare i datorit faptului c aplicaia TodaySoftMag va putea fi instalat pe ambele tipuri de dispozitive mobile.
Cmpul picturePath va fi folosit ulterior pentru descrcarea imaginii autorului. Aceasta nu este primit n rspunsul iniial, deoarece descrcarea unei imagini poate lua mai mult timp, acest lucru se va face printr-un mecanism creat astfel nct partea de interfa grafic s nu fie afectat i imaginea va fi ncarcat direct dup ce descrcarea ei de pe server va fi finalizat. Pentru mbuntirea experienei utilizatorului, toate cererile trimise ctre server sunt mprite n cereri mai mici din punct de vedere al dimensiunii rspunsului, iar cele ale cror rspuns presupune un transfer mai mare de date se vor realiza ntr-o asemenea manier nct componentele interfeei grafice nu vor fi afectate, astfel nct - chiar de la prima utilizare a aplicaiei - utilizatorul va putea vedea articolele aferente ultimului numr, articolele celorlalte numere fiind descarcate i afiate 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 rspunsurilor de la server s-au creat anumite clase dedicate comunicrii cu server-ul. La prima rulare, pe timpul descrcrii datelor, pe fereastra principal a aplicaiei se afieaz o animaie sugestiv. Atunci cnd transferul de date este finalizat, utilizatorului i va fi prezentat pagina principal a aplicaiei, n timp ce articolele celorlalte numere vor fi descrcate n fundal, astfel nct utilizatorul nu va sesiza nici o alt activitate a aplicaiei, putndu-se concentra pe ceea ce este relevant pentru el. Imaginile de dimensiuni mari vor fi descrcate ntr-un mod n care componentele interfeei grafice nu vor fi afectate, la fel fiind procesate i informaiile referitoare la datele despre autorii articolelor, astfel nct dei datele aferente autorilor nu sunt descrcate
www.todaysoftmag.ro | nr. 15/Septembrie, 2013
17
programare
Clientul iOS Today Software Magazine
de pe server, ele vor fi ncrcate n momentul n care descrcarea lor s-a finalizat. Deoarece aceste informaii nu sunt necesare exact n momentul n care utilizatorul va intra n aplicaie, ele vor putea fi aduse de pe server ulterior, fr nici un impact major, iar dac o imagine este utilizat, dar nu a fost adus de pe server pn la momentul respectiv, sau nu exist pe server, o imagine nlocuitoare va fi folosit. Toate datele descrcate de pe server vor fi salvate pe dispozitivul mobil, astfel nct acestea nu vor fi descrcate de fiecare dat cnd sunt accesate. De asemenea, n ceea ce privete informaia despre autori, dac aceasta nu este salvat local pentru a fi accesat, atunci o cerere ctre server va fi trimis, pentru a fi descarcat i salvat local. Evident, n cazul n care informaia despre un anumit autor a fost descrcat de pe server, mai puin imaginea ataat acestuia, detaliile autorului vor fi afiate, iar cnd descrcarea imaginii s-a finalizat, se va afia i fotografia acestuia, fr a afecta celelalte informaii despre autor. Pentru o mai bun gestionare a librriilor i framework-urilor utilizate n proiect, s-a folosit librria CocoaPods. n acest fel, toate librriile prezente pot fi actualizate la ultima versiune ntr-un mod facil, iar faptul c librria CocoaPods a fost adaugat n proiect nu afecteaz produsul final, acest lucru fiind invizibil n ceea ce privete setrile pentru AppStore, aceasta afectnd doar partea de dezvoltare a proiectului. Aplicaia folosete 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 acioneaz ca un wrapper peste framework-ul iniial Google Analytics, toate metodele din acest wrapper fiind orientate spre optimizarea procesului de trimitere a evenimentelor si adaptarea lui pentru cazurile folosite n aplicaie Suport pentru iOS 7 - Sunt luate n considerare anumite schimbri pe partea de interfa grafic, n ceea ce privete anumite standarde i repoziionri ale componentelor de interfa i nu numai, toate acestea fiind implementate folosind facilitile puse la dispoziie de iOS 7. Opiunea de reactualizare a coninutului - n versiunile urmtoare utilizatorii vor avea posibilitatea de a reactualiza automat coninutul, oricnd vor considera c acest lucru este necesar. Aciunea 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 animaie specific. Adugarea articolelor noi n list se va face ntr-un mod optim, care nu va afecta experiena utilizatorului. Adugarea noilor opiuni de setare - Se ia n considerare adugarea mai multor setri de personalizare a aplicaiei i a comportamentului acesteia, de exemplu un utilizator va putea alege numrul de articole ce vor putea fi salvate local pe dispozitivul mobil.
Dezvoltri 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 urmtoarele faciliti: Notificri Apple - Vor fi utilizate pentru notificarea utilizatorului cu privire la apariia de noi articole, n cazul n care aplicaia este nchis sau dispozitivul mobil este pus n modul sleep.
Our core competencies include:
Product Strategy
Product Development
Product Support
3Pillar Global, a product development partner creating software that accelerates speed to market in a content rich world, increasingly connected world.
Our oerings are business focused, they drive real, tangible value.
www.3pillarglobal.com
18
programare
Cosmin Stirbu
cosmin.stirbu@fortech.ro iOS Software Developer @ Fortech
ablonul de proiectare Model-View-ViewModel (MVVM) definete trei componente principale: Model, View i ViewModel: Model: Business domain (logica ce ine de domeniul aplicaiei, accesul la date, entiti), View: Interfaa cu utilizatorul (n Windows Phone PhoneApplicationPage), ViewModel: Modelul View-ului abstractizare a View-ului ce intermediaz comunicarea dintre View i Model.
Una dintre diferenele majore ntre Model-View-Controller i MVVM este c un obiect de tipul ViewModel nu pstreaz o referin la obiectul de tip View. Obiectul View se leag (binding) la proprietile obiectului ViewModel care n schimb expune datele coninute n model i alte stri specifice View-ului. Mecanismul de binding asigur c, atunci cnd proprietile din ViewModel se modific, cele din View se actualizeaz automat i vice-versa. Cnd utilizatorul apas un buton, o comand se execut n ViewModel, View-ul nu modific niciodat n mod direct entitile din model. Clasele View nu tiu de existena claselor din model n timp ce clasele ViewModel i modelul nu tiu de existena claselor View. n acest fel View-ul este pur i simplu un client (consumer) al obiectelor ViewModel, ele putnd fi foarte uor nlocuite cu clase de test pentru ViewModel.
popular dezvoltat i ntreinut de Laurent Bugnion, fiind folosit pentru a dezvolta cu rapiditate aplicaii MVVM n WPF, Silverlight i Windows Phone. Acest toolkit ne ajut s seprm View-ul de Model pentru a crea aplicaii mai curate i mai uor de ntreinut i de extins, stratul dedicat interfeei cu utilizatorul este ct se poate de subire iar astfel aplicaiile dezvoltate fiind uor de testat automat. Una dintre componentele oferite este clasa ViewModelBase pe care fiecare clas ViewModel a aplicaiei noastre o poate extinde fr a fi nevoit s implementeze interfaa INotifyPropertyChanged (pentru a notifica View-ul la schimbarea valorii unei proprieti). n general, ntr-o aplicaie Windows Phone 8, fiecrei Pagini i va corespunde un obiect ViewModel ce va extinde clasa ViewModelBase. Un alt mare avantaj al clasei ViewModelBase este expunerea proprietii IsInDesignMode, proprietate Cum aplicm MVVM n Windows Phone 8? ce ne permite s verificm 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
19
programare
MVVM n Windows Phone 8
Designer i s oferim design data cu care designerul poate lucra. Suntem nevoii s facem acest lucru, deoarece att Blend ct i Visual Studio Designer nu permit operaii n reea sau conexiuni la baze de date. n general, o abordare posibil i des ntlnit este de a expune toate obiectele noastre ViewModel ca proprieti 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 dependene n acestea (de exemplu o interfa care expune metode pentru a manipula diferite entiti din model). Obiectul de tip ViewModelLocator poate fi adugat n resursele aplicaiei n App.xaml i folosit apoi n fiecare pagin pentru a seta DataContext-ul acesteia la ViewModel-ul corespunztor expus n ViewModelLocator. ViewModelLocator adugat 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 nevoii s scriem cod de UI (cunoscut drept code-behind) pentru a actualiza textul din TextBlock-ul respectiv. Legarea o putem face att n codul XAML ct 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 cnd valoarea proprietii se schimb. Codul de legare arat astfel:
<TextBlock Text={Binding TextProperty} Style={StaticResource PhoneTextNormalStyle} HorizontalAlignment=Center VerticalAlignment=Center TextAlignment=Center TextWrapping=Wrap FontSize=40 />
Putem seta ca DataContext pentru Pagina (View) un obiect ViewModel expus ca proprietate n ViewModelLocator pentru a realiza apoi binding ntre proprietile obiectului ViewModel i Pagin (View). Acest lucru l putem face fie direct n .xaml sau folosind Blend. Dac vrem de exemplu s afim Cum comunic View-ul cu ViewModel-ul? coninut ntr-un obiect TextBlock, tot ce MVVM Light ofer clasa trebuie s facem este s legm proprieta- EventToCommand ce extinde clasa tea Text de o proprietate de tip string n Behavior i ce permite legarea unei
Practic orice proprietate a unui element de UI poate fi legat de o proprietate din obiectul ViewModel fr a fi nevoii 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 rndul su un ViewModel (sau ItemViewModel).
comenzi de un eveniment de pe interfaa cu utilizatorul. Astfel la apariia unui eveniment putem executa direct codul din ViewModel fr 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); }); } }
20
Concluzii
ablonul MVVM este foarte popular n rndul dezvoltatorilor de aplicaii Windows Phone, acesta permite dezvoltarea unor aplicaii uor de meninut, mbuntit, testat i de ce nu, cu o interfa grafic uor de creat (Blend). Componentele definite de ablon au responsbiliti bine definite iar cuplajul este redus pe ct de mult posibil. Dac atunci cnd ablonul a fost introdus, implementarea acestuia prea destul de greoaie, necesitnd multe linii de cod, n perioada recent librriile i instrumentele disponibile fac implementarea acestui ablon uoar i interesant.
Referine
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 adugat Paginii i a fost legat evenimentul Loaded.
1 winrtbehaviors.codeplex.com
2 appbarutils.codeplex.com
21
programare
programare
V voi povesti cum am redescoperit recent frumuseea cloud-urilor publice: eram n toiul pregtirilor pentru ediia urmtoare a conferinei IT din Iai CodeCamp1. Site-ul evenimentului (versiunea browser) era pregtit ns nu aveam vesiune pentru mobile, i aceasta e o greeal ntr-o lume n care fr prezen pe mobile eti aproape inexistent. Din fericire, comunitile sunt alctuite din oameni inteligeni i sritori, aa c fr ca mcar noi (organizatorii evenimentului) s tim, versiunile mobile native erau deja n marketplace (Apple, Google, Microsoft) i sunt nca acolo, donwloadeaz-le si altur-te comunitii! Super!, am zis; dar de unde i iau aplicaiile acestea datele despre eveniment (speakers, sesiuni, agenda etc)? Am aflat imediat c prietenii notri trebuie s ii laud un pic, exceleni programatori iPhone, Android, Windows Phone foloseau un fiier static n format JSON n care copiaser datele de pe site si le menineau manual dupa fiecare modificare a noastr (i desigur ca apreau desincronizri). Probabil c agilitii denumesc aceasta arhitectur emergent i desigur c am decis s emergem n continuare i s construim un backend comun aa cum se cuvine pentru aplicaii i site-ul web. Aa c am nceput s cutm o soluie tehnic, avnd vedere urmtoarele constrngeri: Timp de dezvoltare pentru backend foarte puin; nu voiam s investim mai
1 iasi.codecamp.ro
mult de vreo dou zile, incluznd testare i integrare; Modificri ct mai puine n aplicaiile mobile aici aveam deja interfaa JSON, deci prea c suntem asigurai; Simplitate la hosting, deployment i configurare; Intenia de a avea suport de push notificaion pentru mai multe platform mobile (iOS, Android, Windows); aici ne ateptam sa fie complicat, dar s-a dovedit a fi de fapt a fi extrem de simplu. Desigur c primul lucru pe care l-am fcut a fost s aruncm o privire n nori (n Cloud, vroiam s spun). i am descoerit acolo o ofert destul de promitoare, 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 subscripie MSDN cu credit inclus pentru Windows Azure. Haidei 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 ateptare aveam deja serviciul creat, cu toat infrastructura aferent. Foarte simplu spus (imaginea de mai sus ajut la nelegerea conceptelor), serviciul mobil este un set de tabele relaionale ntr-o baz de date SQL Server, pus la dispoziie n timpul crerii serviciului, accesibile prin servicii HTTP REST care ofer acces CRUD la date formatate JSON, prin intermediul verbelor HTTP - POST (create), GET (read), PATCH (update),
22
relativ simplu scris n JavaScript, care fie interaciona cu baza date, fie genera notificri de tip push prin intemediul unui API foarte simplu. Restul muncii investite e legat de cteva configurri banale pentru securitate, notificri, integrare cu Facebook, managementul bazei de date din spatele seriviciului. Ai putea crede cam facut toate astea n mai puin de dou zile? Ei bine, n primul rnd au fost nopi, iar in al doilea rnd au mai fost cteva ore n plus pentru rezolvarea unor bug-uri mind twisting de Java Script. Dar totul a mers att de repede nu pentru c a fi eu un geniu al progamrii, ci pentru c plaftorma e foarte clar i simplu de folosit. Voi incheia prin a v ntreba: ce-am vzut pn acum e suficient pentru a spune c avem un serviciu robust, gata pentru medii de producie? N-am spus nimic despre monitorizare, logging, scalabilitate, scheduled tasks i alte funcii obligatorii pentru o aplicaie serioas. Ei bine, toate astea sunt deja acolo, i v recomand s le ncercai2!
2 www.windowsazure.com/en-us/develop/mobile/
23
programare
up cum afirmam n articolele anterioare despre software craftsmanship, Test Driven Development este una dintre practicile considerate de baz pentru artizanii software. n ciuda numrului tot mai mare de articole, blog-uri, filmulee sau cri despre acest subiect, Test Driven Development (TDD) continu s fie un subiect de confuzie n comunitile de programatori. Acest articol va ncerca s structureze i s clarifice subiectul i s ofere suport celor care vor s nvee 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 (soluiei) programatorul: verificarea faptului c modificrile Scrie un singur test automat care pic din cod nu au afectat rezolvarea proble(adesea numit pasul Red); mei de pn la momentul rulrii lor. Realizeaz cea mai mic modificare n cod pentru a face testul s treac ( Deoarece noiunea 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 dect crearea de artefacte care rezolv probleme1. n cazul programAcest ciclu se repet cu o frecven rii, artefactul creat este codul. Mai exact, mare, ajungnd la maxim 5 minute pentru la nivelul cel mai de jos, artefactele create practicienii experimentai. 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 experienei. Nu contracte). discutm aici despre scris teste pe cod existent; n acest caz timpul necesar pentru a Dou lucruri sunt aadar importante scrie teste este proporional cu complexi- pentru design-ul unei aplicaii software: tatea codului. rezolv o problem... Aceast descriere este foarte uor de ct mai simplu i elegant posibil transmis, dar din pcate nu conine 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 definiie nu au obinut design. Cel mai nelegem 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 obine un design potrivit pentru pro- acoper toate aspectele problemei. blema rezolvat. Testele sunt folosite cu Gsirea unor rezolvri simple i dou scopuri: 1 Karl Ulrich, Design Creation of Artifacts in
Society http://opim.wharton.upenn.edu/~ulrich/designbook.html
24
25
programare
Test Driven Development i design incremental Concluzie
Designul incremental nseamn crearea designului pe msur ce codul e scris. Designul incremental este o alternativ la designul fcut pe hrtie sau n unelte specializate nainte de a scrie cod. Design-ul incremental pornete de la exemple i generalizeaz soluia pe msur ce apar dovezi (similariti n cod). Acesta este i avantajul design-ului incremental: se bazeaz pe dovezi i nu pe intuiie (ceea ce ar putea s ni se cear n viitor). Soluiile generate n urma acestui proces sunt cele mai simple pentru problema data, att ct e ea cunoscut la momentul respectiv. TDD este cea mai bun metod cunoscut de a face design incremental. Practicienii TDD codific exemplele folosind teste care sunt apoi pstrate pentru a valida soluia complet. Prin identificarea i diminuarea similaritilor din cod n pasul de refactorizare, design-ul este simplificat i mbuntit n continuu. Scopul primar al designului incremental este de a obine design simplu i uor de modificat ct 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 stpnite de ctre programatori. Pentru adopia TDD este nevoie de exersare, singur sau ntr-o comunitate, folosind una din metodele descrise n articolele anterioare despre software craftsmanship: etc. ntrebrile pe acest subiect sunt binevenite pe programez.ro sau direct ctre autori.
26
programare
lustering (gruparea) este o metod de a analiza date obinute prin msurtori. Aceasta ne permite s grupm datele n clase i s utilizm aa-numitele clase obinute drept baz n nvarea automat. De asemenea, aceasta ofer analizarea mai rapid a msurtorilor sau valori aproximative ale unor msurtori viitoare, prin extrapolare. n seciunile care urmeaz vom ncerca s acoperim subiectul referitor la gruparea datelor. Aceast tehnic este util n special atunci cnd avem de-a face cu cantiti mari de date, un scenariu care nu este neobinuit avnd n vedere explozia de date i informaii din zilele noastre.
Lucian Brescu
lucian.braescu@accesa.eu Software Developer @ Accesa
Introducere
Clustering este un proces care examineaz o colecie de puncte i grupeaz aa-numitele puncte n clusters (grupe) potrivit unor msurtori ale distanei. Scopul principal al procesului de clustering (al gruprii) este s se obin o stare n care punctele din acelai cluster (aceeai 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 spaiu bi-dimensional poate fi vzut n urmtoarea imagine:
Totui, probleme moderne de clustering implic spaii euclidiene de dimensiuni foarte mari sau i mai amuzant este cazul n care sunt implicate spaii care nu sunt euclidiene, fcnd astfel ca msurarea distanei 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 existenei unor cuvinte neobinuite, comune n documente sau cerina 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 msur descris prin cteva proprieti principale. O msur de distan este ntotdeauna nonnegativ (numai distana dintre un punct i sine nsui este zero), este simetric (nu conteaz ordinea n care sunt luate n considerare punctele atunci cnd msurm distana dintre ele) i trebuie s respecte inegalitatea triunghiului (distana de la X la Y la Z nu este niciodat mai mic dect distana care merge direct de la X la Z).
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 su cluster , combin clusteri-i n funcie de diferitele definiii de apropiere i se oprete atunci cnd combinaii suplimentare ar duce la formarea unor clustere indezirabile (de exemplu atunci cnd am ajuns la un numr predeterminat de cluster-e pentru domeniul nostru sau cnd un cluster rezultat are puncte care sunt mprtiate 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 potrivete cel mai bine. Aceasta este de obicei precedat de o faz scurt n care se estimeaz clusterele iniiale. Ocazional, variaii 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 obine un rezultat corect i de ncredere din punct de vedere statistic, cantitatea de date necesar pentru a susine rezultatul crete deseori exponenial cu dimensionalitatea. De exemplu, spaiile euclidiene supra-dimensionale i de asemenea spaiile non-euclidiene au un numr de proprieti non-intuitive, cum ar fi faptul c aproape toate perechile de puncte sunt distanate n mod egal unele de altele sau aproape oricare doi vectori sunt ortogonali. 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 nct ntr-un fel s se gseasc n centru. Un asemenea punct este numit un clustroid i poate fi obinut prin urmtoarele tehnici: Minimizarea sumei distanelor la celelalte puncte din cluster, Minimizarea distanei maxime la un alt punct din cluster, Minimizarea sumei ptratelor distanelor la celelalte puncte din cluster.
Clustering ierarhic
Pentru spaiile euclidiene, cluster-ing (gruparea) ncepe cu fiecare punct n propriul su 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 cnd vom nceta s mai combinm cluster-ele. Algoritmul de baz este ilustrat n figura de mai jos:
Blestemul dimensionalitii
Acest blestem s refer la fenomenele diverse care apar n contextul unor cantiti mari de informaie atunci cnd analizm i organizm datele n spaii supra-dimensionale. Tema comun a acestor probleme este c atunci cnd dimensionalitatea crete, volumul spaiului se mrete att de repede nct datele disponibile devin mprtiate. Pentru spaii non-euclidiene trebuie s utilizm o msurare a distanei care este calculat din puncte cum ar fi Jaccard, cosinus sau edit distance. O restricie n acest scenariu este aceea c nu putem s bazm distanele pe locaia punctelor. O alt restricie este c nu putem s reprezentm un cluster prin centroidul su i astfel
28
Concluzii
citite pe buci i fiecare bucat trebuie s conin suficient de puine puncte astfel nct 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 utiliznd reprezentani este utilizat pentru clustering la scar larg i nu presupune nimic n legtur cu forma cluster-elor. n loc s reprezinte cluster-ele prin centroidul lor, acesta folosete o colecie de puncte reprezentative care se afl la o distan ct mai mare posibil unele de altele i care definesc graniele cluster-ului. Algoritmul trece apoi la atribuirea unor puncte noi clusterelor, n funcie 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 diveri algoritmi care difer prin
Analiza prin cluster sau clustering-ul este sarcina de a grupa un set de obiecte astfel nct obiectele din acelai grup numit cluster se aseamn ntre ele ntr-un fel sau altul mai mult dect cu cele din alte clustere. Aceasta se folosete de obicei n extragerea datelor n scop de explorare i analize de date statistice, utilizate n multe domenii precum nvarea automat, recunoaterea tiparelor, analiza imaginii, recuperarea de informaii i bioinformatica.
Referine
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
29
eveniment
programare
SAP Conference
genda departamentelor de business IT din ntreaga lume cuprinde teme strns legate de extinderea n materie de rapiditate, uurin i agilitate n utilizarea i realizarea componentelor software. De aceea soluiile oferite de SAP se afl ntr-un proces continuu de adaptare la noile tendine de pe piata IT mondial, iar msg systems preia i dezvolt aplicaii alturi de SAP folosind ultimele tehnologii n domeniu. Cunotinele i vasta experien msg systems n domeniul de dezvoltare i implementare a soluiilor SAP vor fi mprtite participanilor n cadrul acestei conferine. Temele ce vor fi abordate sunt mprite pe trei capitole distincte : Design i user experience folosind soluiile SAP o descriere a pailor parcuri pentru a susine nevoile i schimbrile ultimilor ani ce au avut loc n modul n care oamenii lucreaz cu aplicaii software. n trecut focusul soluiilor SAP nu era neaprat bazat pe user experience ci pe integritatea soluiilor i pe capacitatea lor de a acoperi uor fiecare necesitate nou de business. Astfel n cadrul acestei sesiuni vom parcurge modul n care soluiile SAP au trecut de la simplitate la folosirea noilor tehnologii IT cu scopul de a oferi aceleai soluii functionaliti de business, dar cu un front-end ce aduce mbuntiri substaniale n ceea ce privete user experience. Datorit faptului c volumul de date crete simitor n ultima perioad, sistemele de baze date relaionale nu mai sunt capabile s reacioneze la provocrile ce apar tot mai des dinspre scenariile cu volumuri de date foarte mari, aa numitele Big Data. O sesiune dedicat soluiei SAP n acest domeniu sub numele de SAP HANA bazat pe In-Memory Database, va fi punctul central al conferinei. Spre deosebire de alte soluii de tip In-Memory Database, SAP HANA nu este doar un alt tip de baze de date, ci este ntr-adevr o implementare complet pentru In-Memory Computing. Datorita arhitecturii sale ofer funcii adiionale, pe lnga database i application server, cum ar fi Code2Data i UI5 folosind un mediu de dezvoltare de ultim generaie. Showcase-ul SAP HANA dezvoltat de ctre msg systems va demonstra participanilor acest lucru. Proiectele msg systems din domeniul soluiilor SAP se desfoar n echipe mixte alctuite din angajai din Cluj i Germania, astfel managementul acestor proiecte a reprezentat o mare provocare pentru a obine succesul in fiecare dintre aceste colaborari. Pe baza experientei acumulate din activitatea celor cinci ani de cnd msg systems Romnia activeaz pe piaa din Romnia, vom prezenta aspectele principale (orientate pe agilitate i flexibilitate) care ne asigur succesul n proiectele bazate pe soluii SAP. Fiecare sesiune va fi susinut de un speaker cu experien relevant n tematica prezentat. Temele abordate vor provoca desigur discuii sau reflecii pe care dorim s le parcurgem la finalul fiecrei sesiuni. Sunt invitai s participe toi cei interesai i preocupai de temele abordate n cadrul conferinei i doritori s afle care sunt planurile de viitor n materie de business software. nregistrarea la Conferina IT bazat pe tehnologia SAP este deja deschis. Toi cei care doresc s ia parte la acest eveniment sunt rugai s trimit un email cu confirmarea de participare la adresa: info-events@msg-systems.com. V ateptm cu plcere i mare interes!
Horea Raiu
30
programare
Platforme mobile precum iOS, Android, BlackBerry i Windows Phone lupt acum i pentru ctigarea ateniei din partea dezvoltatorilor software care pn la urm au potenialul de a atrage sau chiar respinge utilizatori. Dezvoltatorii de aplicaii software la rndul lor caut s i fac loc n pieele de aplicaii software mobile, un loc care s le asigure stabilitate pe termen lung. Pentru aceasta, dezvoltatorii sun pui la ncercarea de a alege ntre dezvoltarea aplicaiilor mobile utiliznd cod nativ sau opiunea de a dezvolta aplicaii hibride.
Aplicaii native
Aplicaiile native sunt aplicaii scrise n limbajul de programare specific platformei pentru care se dezvolt. n tabelul 1.0 putei observa cteva din sistemele de operare mobile mpreun cu limbajul de programare specific, platformele pentru dezvoltare precum i cu medii de dezvoltare folosite de ctre programatorii de aplicaii mobile.
Sistem de operare Android iOS Windows Phone Limbaj de programare Java, C++ Objective-C C#, Visual Basic .NET (Windows Phone 8), C++ Platform IDE
Android SDK/ Android Studio NDK Cocoa Touch .NET, Windows Phone Runtime API Xcode Windows Phone Software Development Kit
BlackBerry OS
Java
BlackBerry JDE / Eclipse folosind BlackBerry Plugin Orice IDE HTML, JavaScript i CSS (NetBeans, Eclipse, etc.) Qt Creator
Firefox OS
JavaScript C++
Symbian
31
programare
Dezvoltarea aplicaiilor mobile: ntre nativ i hibrid
Caracteristici
Un utilizator de dispozitive mobile fidel poate face diferena foarte uor ntre aplicaiile mobile native sau cele hibrid. Datorit timpului de rspuns 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), aplicaiile native pot fi destul de atractive pentru oricine . Giganii pieelor de aplicaii mobile sunt tot mai pui pe mbuntirea mediilor de dezvoltare i a abloanelor de lucru, totul pentru a atrage de partea lor ct mai muli dezvoltatori de aplicaii mobile. Acesta este un lucru ct se poate de bun pentru un dezvoltator care poate profita de unelte gratuite menite s fac implementarea aplicaiei ct mai rapid, ctignd mai mult timp pentru investirea n idei noi sau finisarea produsului. O aplicaie nativ care respect regulile de dezvoltare specifice platformei pentru care este destinat, nu va folosi niciodat aceleai resurse grafice: butoane, icoane, fundaluri pentru liste, etc. pentru mai mult de o platform. Aceasta din cauz c aplicaiile native trebuie s pstreze din comportamentul i designul sistemului de operare pe care ruleaz. Acestea trebuie s se integreze n platforma aleas de utilizatorul final. Aplicaiile native sunt foarte pretenioase cnd vine vorba de cunotiinele de dezvoltare a programatorului. Aceasta deoarece fiecare platform cere cunoaterea a cel puin unui limbaj de programare diferit fa de alta platform iar la rndul 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 cte un programator pentru fiecare platform n funcie de volumul de munc, termene limit i ali factori. Din punct de vedere al creativitii, dezvoltatorul are fru liber fiind limitat doar de resursele dispozitivului pe care aplicaia va ruleze. Mai jos putei observa cteva elemente ale aplicaiilor native gsite pe cele mai folosite sisteme de operare mobile.
Pri pozitive
Dezvoltarea aplicaiilor native poate aduce urmtoarele beneficii celor care le dezvolt: Posibilitatea de a accesa diferite componente hardware (bluetooth, senzori de micare, leduri de notificare, camera i altele); Timp mai scurt de rspuns pentru unele operaii; Programatorul are acces la ultimile API-uri aprute pe platform nc de la versiunile beta; Aplicaia are o vizibilitate mai mare pe platforma unde este lansat datorit faptului c este distribuit prin pieele de aplicaii folosite de majoritatea utilizatoriilor de dispozitive mobile; Ofer utilizatorului o experien de utilizare superioar fapt ce poate duce la creterea utilizrii aplicaiei; Unelte de dezvoltare gratuite; Mediile de dezvoltare vin de obicei cu unelte bune de testare a codului dar si de analiz a aplicaiei din punct de vedere a consumului de memorie si timpilor de rspuns. Aplicaiile native pot aduce utilizatori noi n timp ce-i pstreaz pe cei care deja le folosesc. Majoritatea brand-urilor mari din lumea aplicaiilor sociale (facebook, twitter, linkedin, etc.) i-au dat seama de puterea aplicaiilor native de a atrage utilizatori i au ales s mearg pe aceast ni.
Pri negative
Ca orice lucru, aplicaiile native au i pri negative care pot pune pe gnduri un starter. Prile negative sunt urmtoarele: Spre deosebire de aplicaiile web, distribuia aplicaiilor native este adesea limitat de forarea acestora de a putea fi distribuite doar prin pieele de aplicaii care pot impune diferite bariere (ex. Prin unele piee de aplicaii nu se pot vinde aplicaii din anumite ri), Dac se urmrete 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.
Aplicaii hibride
Aplicaiile mobile hibride sunt aplicaii care de regul sunt dezvoltate folosind tehnologii WEB (JavaScript, HTML, CSS). La ora actual aplicaiile hibride ncep s prind rdcini tot mai puternice datorit faptului c multe medii de dezvoltare devin tot mai stabile i ofer acces la tot mai multe funcionaliti hardware ale dispozitivelor. n Tabelul 2 putei urmri cteva dintre cele mai folosite medii de dezvoltare ale aplicaiilor hibrid:
Caracteristici
Aplicaiile hibrid de regul sunt formate dintr-o component nativ de tip webbrowser care poate accesa diferite funcionaliti ale platformei pe care ruleaz (ex. camera video, lista de contacte, etc.). De regul aplicaiile hibrid au acelai design grafic pe toate platformele pe care au fost publicate fr s in cont de ghidul de implementare a interfeei cu utilizatorul a fiecrei platforme pe care ruleaz aplicaia. Este de ajuns s scri codul de baz pentru o aplicaie, pentru ca ulterior, ca prin magie aplicaia s funcioneze pe mai multe
32
Denumire PhoneGap
Tehnologii de Platforme lucru suportate HTML, JavaScript i CSS iOS Android BlackBerry Windows Phone Symbian WebOS
Nativ Objective-C Cocoa Touch Java Android SDK C C++ Android NDK
Hibrid HTML CSS Javascript Mediul i ablonul de dezvoltare (Phonegap, Titanium, etc.)
Appcelerator Titanium
HTML, JavaScript
Da
WindowsPhone Runtime C# / VB.NET .NET Stocare date Da Da Da Da Da prin intermediul ablonului de dezvoltare Da prin intermediul ablonului de dezvoltare
Adobe AIR
Nu
Acces API platform Acces componente hardware Timp de rspuns la animaii Potrivit pentru dezvoltarea jocurilor Timp de dezvoltare Exemplu n imagini
Sencha Touch
Nu
Foarte mult
platforme. Din aceast cauz dezvoltatorii de aplicaii hibrid au mai mult timp pentru idei noi sau dezvoltarea unei noi aplicaii. Datorit faptului c majoritatea uneltelor de dezvoltare folosesc tehnologiile WEB pentru implementarea aplicaiei, gsirea unui programator pentru a duce la bun sfrit o aplicaie hibrid pentru dispozitive mobile, este un lucru mai puin stresant. Volumul de lucru pe WEB a fcut ca tot mai muli programatori s nvee tehnologii precum JavaScript, HTML i CSS. Acest lucru duce la o tranziie relativ uoar ctre lumea programrii de aplicaii hibrid pentru dispozitive mobile.
Pri pozitive
Timp de dezvoltare mic pentru o acoperire larg de sisteme de operare; nvarea mai rapid a tehnologiilor de dezvoltare, fiind vorba n principiu de tehnologi WEB; Aplicaia are o vizibilitate mai mare pe platforma unde este lansat datorit faptului c este distribuit prin pieele de aplicaii folosite de majoritatea utilizatoriilor de dispozitive mobile; Unelte de dezvoltare gratuite.
Tabelul 3
Pri negative
Dependen fa de dezvoltatorii uneltelor de lucru, fapt ce poate ntrzia lansarea aplicaiei care s funcioneze pe o versiune nou a unui sistem de operare sau ntrzieri n repararea
problemelor tehnice ce pot aprea mai ales la versiuni noi ale sistemelor de operare pentru mediile mobile; Performan mai sczut n unele locuri Reputaie sczut n rndul utilizatorilor fideli a unei anumite platforme mobile; Pierdere de timp pe repararea problemelor gsite n urma faptului c nu pe toate platformele aplicaia o s ruleze la fel de bine.
33
programare
n primul rnd a dori s evideniez faptul c ambele modaliti de dezvoltare a aplicaiilor mobile se distribuie prin pieele de aplicaii existente pe platformele mobile (AppStore, GooglePlay, Windows Phone Store, etc.). Din aceast cauz, ambele vor participa i la verificarea de dinaintea lansrii propriu zise n magazinul virtual. Dup cum am menionat la prile pozitive a metodei de dezvoltare nativ, branduri puternice care au publicat aplicaii mobile, au trecut la dezvoltarea aplicaiilor native n pai grbii i aceasta se ntmpl i n ziua de astzi (vezi aplicaia 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 aplicaia i totul la performane ridicate. Pe de alt parte trebuie s nu uitm c tot aceti gigani au fcut primii pai ctre lumea mobil cu aplicaii web, urmate de aplicaii hibride i abia mai la urm au trecut la metoda nativ. n Tabelul 3 putei observa comparaia ntre cele dou metode de dezvoltare pe mai multe categorii, am luat n considerare dezvoltarea pentru iOS, Android i Windows Phone doar.
Comparaie
34
programare
Debugging n producie
e cte ori nu vi s-a ntmplat s avei un o problem n producie sau n mediul de testare pe care s nu o putei reproduce pe maina de dezvoltare? Cnd acest lucru se ntmpl, lucrurile ajung s o ia razna, iar noi ncercm diferite modaliti de remote debug. Fr s tim, aceste tool-uri pot s fie chiar lng noi, ns noi le ignorm 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 modaliti prin care putem s facem debug fr s fie nevoie s folosim Visual Ce soluii avem? Studio. n general avem la ndemn dou variante. Prima variant se bazeaz n totalitate De ce fr Visual Studio? pe log-uri. Prin intermediul log-urilor putem Dei Visual Studio este un produs extrem s identificm zonele din aplicaie care nu de bun, care ne ajut cnd avem nevoie funcioneaz corespunztor. Dar folosirea s descoperim bug-uri i s facem debug, log-urilor poate s fie cu dou tiuri. Este acesta nu o s ne fie de foarte mare folos n nevoie s tii ce este necasar s apar n logproducie. n momentul n care avem un bug uri i ct de des. n caz contrar te poi trezi n producie, regulile jocului se schimb. n cu mii de pagini de log-uri nefolositoare i producie aplicaia 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 surprini de schimbarea comportamentului Cnd este nevoie de aceste tool-uri ? aplicaiei. n momentul n care nu putem s repron cazul n care este posibil putem s triducem problema pe mainile de dezvoltare. mitem PDB-urile pe maina de producie. Orice am face nu putem s reproducem pro- Prin acest mod vom avea acces la tot stack blema pe care o avem. Neputnd reproduce trace-ul pe care o excepie l genereaz. problema este ca i cum am cuta acul n Log-urile ne pot fi de mare ajutor pencarul cu fn. tru a rezolva diferite probleme care apar n Dac ntmpltor apare problema, dar producie. Chiar dac log-urile sunt foarte fr s avem un scenariu de reproducere, folositoare, nu ne vor ajuta de fiecare dat. ajungem n acelai caz amintit mai sus. Exist diferite probleme care pot s apar i Un alt caz ar fi atunci cnd memoria care s fie extrem de greu de identificat foloocupat de aplicaia noastr crete n timp, sind log-urile. De exemplu un dead-lock ar fenomenul manifestnd-se doar la mainile fi aproape imposibil de identificat prin interde producie. Putem doar s bnuim 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 reparm cu dispoziie este crearea de memory dump-uri
www.todaysoftmag.ro | nr. 15/Septembrie, 2013
35
programare
Debugging n producie
i analizarea acestora.
Un memory dump este un snapshot a procesului ntr-un anumit moment. Pe lng informaiile despre alocarea memoriei, un snapshot conine informaii despre starea diferitelor thread-uri, obiecte i cod. Folosind aceast informaie putem s obinem informaii foarte valoroase despre procesul care ruleaz. Acest snapshot reprezint imaginea memoriei n format 32 sau 64 de biti, n funcie 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 informaii despre stack starea procesului sau despre ce apeluri se fac i aa mai departe. A l d oi l e a t ip de memory dump este full dump. Acesta conine toate informaiile care se pot obine, incluznd un snapshot la memorie. Timpul necesar pentru obinerea unui full dump este mult mai mare n comparaie cu un minidump, iar fiierul de dump n sine este mult mai mare.
Debugger-ul nativ pentru un dump este reprezentat de Windbg. Acesta este un tool de puternic, cu care se pot obine informaii foarte preioase. Singura problem a acestui tool este c nu este prietenos. Vom vedea puin mai trziu 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 dect Visual Studio 2010. ncepnd cu Visual Studio 2010, acesta ne ofer posibilitatea s analizm dump-urile pentru .NET 4.0+. Ceea ce putem s facem n Visual Studio nu este la fel de avansat n comparaie cu ceea ce ne permite Windbg, dar n general poate s ne fie de ajuns.
Exist diferite aplicaii care ne ajut s facem acest lucru. Unele din acestea ne permit s facem un dump n mod automat n funcie de diferii parametri. n cazul n care este nevoie s facem un memory dump cea mai simpl soluie este din Task Manager. Tot ce este nevoie s facem este s dm click dreapta pe un proces i s selectm Create dump file. Acelai lucru l putem face folosind Visual Studio sau adplus. exe. Ultima variant este un tool de debug pentru Windows care se regsete pe aproape toate mainile care ruleaz Windows. n urmtorul exemplu specificm la adplus s ne creeze un memory dump n acest moment:
adplus hang o C:\myDump pn MyApp.exe
Primul pas pe care trebuie s l facem dup ce deschidem Windbg este s ncrcm un dump (CTRL+D). Odat ncrcat, un dump poate s fie vizualizat din diferite moduri. De exemplu putem s analizm thread-urile, memoria, resursele alocate i aa mai departe. Pentru a putea face mai mult, de exemplu s vizualizm i s analizm codul managed avem nevoie s ncrcm librrii ajuttoare precum Son of Strike (SOS) sau Son of Strike Extension (SOSEX). Aceste dou librri ne deschid noi ui, putnd s analizeze datele din dump ntr-un mod extrem de folositor.
SOS ne permite s vizualizm procesul n sine. Ne permite s Prin intermediul opiunii pn specificm numele procesu- accesm obiectele thread-urile i informaiile din garbage coleclui pentru care dorim s crem un dump. n cazul n care dorim tor. Putem s vizualizm inclusiv nume de variabile i valoarea s crem un dump n mod automat putem s folosim opiunea acestora. crash. Trebuie tiut c toate informaiile care se pot accesa fac parte adplus crash o C:\myDump pn MyApp.exe din managed memory. Din aceast cauz, SOS este strns legat adplus crash o C:\myDump sc MyApp.exe de CLR i de versiunea acestuia. n momentul n care ncrcm Dac este nevoie s crem un dump n mod automat pe lng modulul SOS, trebuie s avem grij s l ncrcm pe cel corespunadplus.exe putem s folosim DebugDiag i clrdmp.dll. Cele trei ztor pentru versiunea de .NET a aplicaiei noastre. opiuni 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 configurm sistemul ca s creeze automat un memory dump n momentul n n exemplele de mai sus am ncrcat 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 ncrcat SOS pentru .NET val de timp. 4.0+. Pe lng aceste tool-uri exist multe altele pe pia. n funcie Toate comenzile SOS ncep cu !. Comanda de baz este de necesiti putei s folosii orice tool de acest tip. !help. n cazul n care dorim s vizualizm lista de thread-uri putem s ne folosim de comanda !threads care are un output asemntor cu urmtorul:
36
Debug la un crash
Pn acuma am vzut c avem la dispoziie 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. Lansm procesul 2. nainte s crape, comandm adplus-ului s creeze un dump n momentul n care procesul crap
adplus crash pn [numeProcesor]
Un deadlock apare n momentul n care dou sau mai multe thread-uri ateapt dupa aceeai resurs. n aceste cazuri o parte din aplicaie dac nu chiar toat aplicaia se blocheaz. Pentru acest caz primul pas este s crem un dump folosind comanda:
3. Lansm Windbg (dupa crash), 3.1. ncrcm dump-ul, 3.2. ncrcm SOS, 3.3. !threads (pentru a vedea ce thread a crpat), 3.4. !PrintException (pe thread-ul care a crpat pentru a vedea excepia), 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 excepiile care nu sunt legate de GC).
Apoi va fi nevoie s analizm 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 gsim resursele folosite de fiecare thread, mpreun cu thread-ul care ine blocate aceste resurse. Pentru aceti ultimi pai comanda !syncblk ne vine n ajutor. Aceasta ne listeaz blocurile de memorie pentru un anumit thread.
n cadrul acestui articol am descoperit cum putem s crem un dump i care sunt tool-urile de baz pentru a-l analiza. Prin intermediul fiierelor dump putem s accesm informaia 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, necesitnd o curb de nvare destul de Trebuie tiut c rezultatele sunt n funcie de modul n care mare. aplicaia este compilat. De exemplu, dac s-a fcut optimizare de cod n momentul compilrii. Totodat lista de excepii pe care o putem obine poate s fie destul de lung din cauza unor comenzi precum !DumpHeap ne returneaz toate excepiile produse chiar i cele pre-create precum ThreadAbord.
Sumar
37
testare
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 orbete un model prestabilit sau ar trebui ca testerul s fie responsabil de pregatirea modelului de testare. n acest articol, aducem un rspuns acestei ntrebri.
Tudor Cobla
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 tradiionale, impuse de metodele tradiionale de dezvoltare software. Lund n considerare procesele contemporane de dezvoltare agile , testerul trebuie s anticipeze noi moduri de a lucra i testa. Proprietile 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 situaii, dar este condiionat de o aplicare corect. Beneficiile aplicrii MBT sunt cunoscute, de aceea printr-o utilizare riguroas i adecvat, MBT se adreseaz oricror ambiguiti, inconsistene i erori n cerinele de funcionalitate semnalate
1 http://en.wikipedia.org/wiki/Model-based_testing
ntr-un stadiu incipient al proiectului. Acest lucru va scurta durata proiectului i va imbunti calitatea software-ului. Un alt avantaj al MBT-ului este flexibilitatea i adaptabilitatea la orice set de testare. Dac apar schimbri n funcionaliti, modelul poate fi uor 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 tradiionale de dezvoltare software, se poate vedea c testerul este independent fa de
38
procesul de dezvoltare. Testarea tehnic i dezvoltarea sunt considerate designul tehnic, i testerul va folosi designul funcional n aranjarea setului de teste pentru testarea funcional. Mai precis acest lucru va rezulta ntr-o viziune independent a testerului fa de interpretarea erorilor n cerinele pe proiect. Testerul nu poate face presupuneri i toat informaia cerut pentru stabilirea a unui set de testare complet este colectat de tester n persoan. Dar cum funcioneaz MBT? Poate un tester s o viziune independent? i oare are testerul o viziune clar s completeze baza de teste, fr s fac presupuneri? Rspunsul este da, att timp ct testerul poate s dezvolte modelele de testare de el nsui. 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 nsui
2 www.dtmtool.com
39
business
programare
he Open Golf Championship este organizat de R&A ncepnd cu secolul XIX, iar barierele acestui sport au fost de mult depite. n prezent The Open reprezint unul din icon-urile turistice ale Scoiei i atrage anual sute de mii de pasionai ai golfului. Este golful un sport potrivit doar pentru anumite categorii de vrst? Jucm golf doar pentru a petrece timp n natur, plimbndu-ne pe un cmp bine ntreinut? Multe persoane care nu cunosc deloc acest sport vor rspunde afirmativ, dar cei ce au petrecut mcar o ora pe un teren de golf vor ncepe s i reconsidere opinia. Endava a nvat s aprecieze golful prin organizarea digital a celui mai mare campionat din lume The Open, susinut de forul ce coordoneaz acest sport. Platforma TheOpen.com nseamn un efort susinut timp de 6-7 luni n fiecare an pentru a dezvolta seciuni i features noi ce vor fi expuse utilizatorilor n cele patru zile de turneu. Numrul de utilizatori unici crete exponenial de la un minut la altul n timpul turneului. Dac n cele trei zile de practice rounds sunt 200-300 de useri concureni 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 concureni. Asigurarea unei experiene 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. Alturi de platforma TheOpen.com utilizatorul este expus unei plaje largi de opiuni digitale, totul pentru a avea acces oriunde i prin orice mijloc la evenimentele din timpul turneului: Jumtate din utilizatori acceseaz versiunea mobile a site-ului care reproduce fidel fiecare seciune i feature a platformei web; Aplicaia 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.
Bogdan Moscaliuc
Project Manager @ Endava
bogdan.moscaliuc@endava.com
40
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 spstreaming, Video on Demand. tmni prin expertiza backend coninut 6 x live Streams 2 canale BBC, i baza de date, front-end JS, CSS dar i ESPN, @TheOpenLIVE on-site live integrarea cu diferii 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 iniiate 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 cteva 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 vrf de 78,000 utilizatori unici concureni pe site pe secund n momentul n care Phil Mickelson a nceput s joace 18th green. 31 milioane page impressions n sptmna campionatului. Pe Twitter #TheOpen a fost plasat pe primul loc trending channels in UK si USA. Cea mai variat gama de opiuni digitale pentru un turneu de golf : desktop, mobile, iPhone, iPad, Android,
41
evenimente
usiness Days este un eveniment consacrat deja pe piaa naional iar luna aceasta vom avea ocazia s participm la ediia din Cluj a acestuia. Laszlo Pacso, organizatorul Business Days a avut amabilitatea s rspund ntrebrilor Today Software Magazine.
Ovidiu Man, PMP
ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine
Spunei-ne cteva 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, productor de materiale video i de emisiuni educative, coordonatorul unor proiecte online i social media i mai nou antreprenor social. n viaa de zi cu zi mi plac mult natura, muntele, filmele, crile, muzica clasic i fotografia. De 3 ani i jumtate coordonm programul Business Days, un program care i dorete s ajute la dinamizarea mediului de afaceri din Romnia i la crearea temeliei unei culturi antreprenoriale sntoase n ara noastr. Este o misiune dificil, cu multe provocri, 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 ncercri sunt cele care ne difereniaz n primul rnd de alii care mai activeaz n acest domeniu. Indiferent ct de greu ne-a fost, nu am abandonat calea. Atunci cnd doreti s ajui i s creezi impact social n mediul n care activezi, trebuie uneori s renuni la confortul tu i s pui pe primul plan interesele celor pe care i serveti prin proiectul tu. Din punctul meu de vedere acest lucru este cel care difereniaz un antreprenor social de un antreprenor. Multi nc nu neleg asta.
Ce nseamn Business Days i ce aduce nou comparativ cu celelalte evenimente de business ? Business Days este mai mult dect o serie de evenimente. Este n primul rnd o platform de oportuniti care are rolul de a genera numeroase posibiliti 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 aplicaiile mobile i online, fie c ne referim la platformele de socializare, fie c ne referim la platformele video educaionale. Dac ne referim strict la zona de evenimente Business Days, ceea ce aducem nou pe piaa de evenimente business este n primul rnd 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 pregtite. nainte de a desena programul unui eveniment, au loc numeroase ntlniri cu oameni de afaceri din regiunea respectiv (manageri, antreprenori, specialiti din diverse domenii) cu care avem discuii de analiz a problemelor i provocrilor cu care se confrunt acetia. Aceste discuii exploratorii ne ajut s identificm noi oportuniti i mai ales s cartografiem nevoile i problemele concrete la care ncercm s gasim modaliti de a
42
Da, aa este. Este esena evenimentelor Business Days s promoveze afacerile romneti i antreprenori sau manageri valoroi din mediul de afaceri autohton. Nu este uor, pentru c, din pcate consumatorii de astfel de evenimente prefer nc s plteasc pentru modele aduse din afara rii i mai puin pentru acei antreprenori care au ncercat i au reuit s obin succesul la noi n ar. Poate c nu toi sunt nc speakeri excepionali, dar informaiile transmise i mai ales dorina lor de a ajuta este mai sincer i mai de folos dect a oricrui strin care vine pentru o zi sau jumtate de zi s-i nvee pe cei prezeni metode i modaliti de a obine succesul bazat pe reete care funcioneaz n alt ar, fr s cunoasc n mod real care sunt nevoile, provocrile i problemele specifice ale mediului de afaceri din Romnia. Mai
43
evenimente
Interviu: Business Days
Days. Business Days nu este despre cum poi deveni milionar peste noapte, ci este despre cum poi avea ansa la succes prin munca cinstit, susinut i prin cooperare, pentru c, da, credem n spiritul asociativ i credem c pentru succes pe termen lung este nevoie s ne gsim parteneri, asociai, investitori i finanatori care s neleag i s cread n afacarea noastr, iar pentru asta trebuie s nvm s fim transpareni n comunicare i n relaii. Cu ce ar trebui s rmn un participant BD dup participarea la cele dou zile ale evenimentului? Cel puin cu trei lucruri: inspiraie, experien i contacte de afaceri. Acesta este i motto-ul nostru: Inspiraie, experien i oportuniti pentru cei care vor s genereze valoare n Romnia. Dac primele dou sunt greu cuantificabile ca valoare i doar timpul i practicarea celor nvate poate genera ntr-o oarecare msur 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 microntlniri, n prima zi, la o sesiune de tipul open n a doua zi i folosete aplicaia 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 puin 4 informaii: cine este, din ce domeniu, ce funcie are, unde l poate ajuta i n ce domenii, unde are nevoie de ajutor sau unde caut referine. Mai mult de att, 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 ntlniri se ateapt la venituri de peste 10.000 de lei, dar jumtate dintre ei estimeaz la peste 100.000 de lei valoarea acestor afaceri viitoare. Cred c aceste cifre vorbesc de la sine. Cu o investiie de maxim 100 de euro, ai 70% anse s generezi peste 2.500 euro afaceri i 100% anse s i creti baza de date cu peste 200 de contacte cu care ai interacionat i ai avut fie o scurt discuie, fie ai corespondat prin aplicaie, fie te-ai intersectat la workshopuri i mese rotunde. bine mediul de afaceri i nevoile lui. Vom avea aplicaia de matchmaking, ce este oferit gratuit tuturor celor prezeni. Vom avea n premier naional un demers comun ntre mediul academic, administraia local, societatea civil i mediul de afaceri de a crea o dezbatere legat de strategia pe termen lung a oraului, cu focus pe atragerea de investitori strini, inclusiv prin implicarea comunitii de expai la acest eveniment. Fa de acestea, vom avea diverse manifestri 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 faa celor prezeni la eveniment i prin facilitarea ntlnirilor cu civa business angels i investitori. 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 ntlnire ntre membrii comunitii de IT din zon. BD este un eveniment mare pentru piaa din Romnia. Ne putei 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 plti pentru participarea la astfel de evenimente. De asemenea, exist o inflaie de evenimente pe pia, care nu ofer ntotdeauna experiena ateptat participanilor i sponsorilor. De aceea, pentru a ctiga ncrederea partenerilor, e nevoie de mult munc, pasiune i o preocupare constant pentru calitate. n plus, pentru a ne diferenia pe piaa evenimentelor, am ales s comunicm total transparent. Facem publice de fiecare dat nregistrrile 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 abandonm aceast cale orict ne este de greu, am reuit s strngem n jurul nostru parteneri, susintori, ambasadori, prieteni, fani i speakeri care ne susin aproape necondiionat. Este un sentiment frumos i care ne d acel imbold de care ai att de mare nevoie atunci cnd dai de greu. Business Days este n sine o poveste inspiraional, pentru c este un proiect pornit de o mn de oameni, n plin criz financiar, cu un buget 0, fr experien n organizare de evenimente, dar cu mult pasiune, capacitate de munc i rbdare.
Deoarece suntem o publicaie de IT, putei s ne spunei cteva cuvinte despre aplicaiile mobile devoltate de BD? Avem mai exact dou aplicaii, una este inclus n alta, dar ca funcionalitate sunt dou. Prima este o aplicaie pentru smartphone-uri i care are rolul de a facilita accesul de pe aceste terminale mobile ctre programul evenimentului, speakerii, canalul video, streaming-ul live, pagina de facebook, blogul i diverse componente interactive de comunicare prin platform. A doua aplicaie este cea de matchmaking meet-me, ce este oferit n mod gratuit fiecrui participant la un astfel de eveniment. Aplicaia permite cutarea, filtrarea i sortarea bazei de date cu participanii, dup patru criterii: domeniu de activitate, funcie, compania i numele permind astfel o uurare a procesului de identificare a potenialilor parteneri. Cu fiecare dintre cei identificai ca interesani se pot iniia dou aciuni: fie se solicit un schimb virtual de cri de vizit, fie se solicit o ntlnire undeva ntr-o zon special amenajat pentru astfel de ntlniri din cadrul evenimentului. Ambele aciuni se fac printr-un email de permisiune, astfel cel care primete solicitarea o poate accepta sau refuza i n cazul ntlnirii o poate reprograma n funcie de agenda sa. Accesul n aplicaie se face pe baza unui username i parole care se regsesc pe invitaia primit la finalizarea procesului de Am vzut c BD va reveni la Cluj n nregistrare. luna septembrie. Ce aducei nou n aceast ediie? Cum vedei evoluia pieei de IT n Fa de anul trecut, avem un program Romnia prin prisma participrii companimai interesant i mult mai bine adaptat. ilor de profil la eveniment? Venim a doua oar i cunoatem mult mai Piaa de IT este foarte prezent la
44
management
deea de inovaie este abordat de un numr ridicat de companii ce au n prim plan optimizarea proceselor sale interne i n final creterea valorii de afaceri plus beneficiul de a-i vedea clienii extreme de mulumii de produsele pe care acestea le ofer. Lean Six Sigma, o abordare relativ binecunsocut pentru obinerea unor rezultate excelente, performante poate s-i ajute pe directorii multinaionalelor s descopere noi oportuniti de inovare dincolo de prestarea simplelor operatiuni, s ating un grad ridicat de productivitate, o performant financiar solid precum i o nclinaie inerent ctre inovaie.
Monica Petraru
monica.petraru@urss.ro Senior Business Analyst @ UNIQA Raiffeisen Software Service
n piaa global de astzi tim cu toii c exist un mediu extrem de competitiv, toate companiile fiind n cutarea unor mbuntiri permanente Astfel, pentru a i atinge scopurile propuse, ele vor apela la consultani experi, acetia avnd ca scop aplicarea acestor metodologii. Multe dintre aceste organizaii sunt deschise la aplicarea modalitii de optimizare a performanei 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 punei urmtoarea ntrebare, Dac firma mea nu este n producie, atunci Lean Six Sigma s-ar putea aplica chiar i pentru organizaia mea? n acest articol, vom rspunde la aceste ntrebri mai pe larg, oferind o imagine de ansamblu a cadrului fundamental al acestei metodologii. nainte de a folosi o metodologie de mbuntire a proceselor din interiorul companiilor n care ne desfurm activitatea zilnic, e bine s tim cu ce anume avem
de a face. Astfel, este esenial s nelegem faptul c Lean, Six Sigma i Lean Six Sigma sunt trei metodologii total diferite. Evident, toate au ca epicentru al existenei lor obiectivul definirii valorii pentru client, iar prin valoare fiecare trebuie s neleag potenialul 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 menionate n rndurile de mai sus presupun optimizarea proceselor prin reducerea pierderilor i simplificarea activitilor 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 obine rezultatele dorite n final. Rspunsurile cutate i dorite nu sunt deloc complicate. E bine de remarcat faptul c la o prim vedere ne dm seama dup jocul de cuvinte Lean Six Sigma c aceast metodologie este o combinare a lucrurilor bune luate din Lean cu avantajele Six Sigma,putnd fi definit ca o abordare integrat, de management. Ea are n vedere
45
management
Lean Six Sigma i managementul inovaiei
obinerea unei mbuntiri constante a proceselor. Pentru acestea se vor prelua att elemente ale metodologiei Lean cu scopul de a reduce timpul de desfurare a acestora apelnd la eliminarea factorilor de pierdere, ct 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 ieire care sunt variabile n timp. Lean Six Sigma este o evoluie natural a disciplinelor de mbuntire a calitii i proceselor care i au originea n anii 1950 n vederea eficientizrii mecanismului de fabricaie. Totul a debutat cu definirea unui accent pe mbuntirea calitii, n scopul de a reduce costul producerii materialului defect. Aceasta a evoluat n aplicarea principiilor similare pentru a mbunti eficiena procesului la nivelul unei fabrici, prin eliminarea de efort irosit doar pentru manufacturarea cantitii necesare, nu de supraaglomerare a depozitelor. De-a lungul timpului, alte pri ale organizaiei 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 ncrcrii DMAIC ilustreaz o metodologie de de lucru i analiza deeurilor, metodologia Six Sigma va aborda modelul DMAIC (Definire, Msurare, Analiz, mbuntire, Control) n vederea reducerii variabilitii proceselor printr-o orientare mai adnc spre client. Astfel se va mbunti perspectiva de nelegere a punctelor critice ale fiecrui produs sau ale serviciului oferit i prin luarea unor decizii pe baza valorilor disponibile i a circumstanelor avute n vedere. n tabelul de mai jos se pot observa trsturile celor dou metodologii descrise n Sursa: www.sixsigmadaily.com rndurile de mai sus: proiect extrem de riguroas ce are ca Lean Six Sigma obiectiv esenial creterea gradului de Obiectiv Eliminarea Eliminarea capabilitate i totodat cel de reducere pierderilor variatiei a defectelor identificate ntr-un proces optimizarea serviciilor, produselor Creterea Eliminarea sau proceselor existente din cadrul unei nivelului de defectelor companii / firme. Este necesar parcuroptimizare a procesului gerea urmtoarelor etape: 1. Definire Focusare Vitez i Calitate maxim cost 2. Msurare 3. Analiz 4. mbuntire Instrumente Evenimente Analiz Pareto, 5. Control necesare de tip chart uri de
Kaizen control Value stream mapping Work load balancing 7 wastes Analiz statistic, realizarea experimentelor
1. Denire
Obiectivul acestei etape este acela de a stabili obiectivul i scopul proiectului. Colectarea informaiilor necesare legate de proces i client. Momentan, obiectivele finale ale proiectului se vor estima n funcie de toate cunotinele legate de obiectivele strategice ale companiei, doleantele clienilor, ct i de procesul care e destinat mbuntirii. Se dorete atingerea unui nivel mai nalt de tip 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 deeurile i eficiena procesului de cretere printr-un accent pe optimizarea vitezei i costurilor. Lean e definit ca o disciplin ce are ca obiectiv asigurarea stabilitii proceselor prin reducerea pierderilor i simplificarea activitilor 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 activitiile: producie, servicii publice, de sntate, financiare etc. . Daca Lean asigur stabilitatea proceselor i desfurarea acestora ntr-un flux continuu, metodologia de management Six Sigma se focuseaz pe mbuntirea calitii prin diminuarea variabilitii apelnd la diverse instrumente statistice i calitative.
Pe baza definiiilor enunate anterior, metodologia Lean Six Sigma e definita ca un hibrid: preia elemente att de tip Lean, ct i Six Sigma. Este nevoie de o abordare pragmatic de mbuntire a proceselor din cadrul unei companii, cu un accent pe ceea ce este necesar i important pentru 2. Msurare client. Caracteristici precum time focu nelegerea procesului . sed strategy din Lean cu instrumentele de Focusare maxim pe efortul de analiz statistic abordate de metodologia mbuntire a situaiei curente. Six Sigma, care permite o soluie flexibil Stabilirea unui nivel al capabilin contextul abordrii unui set complex de tii optim pentru obinerea unui grad probleme. ridicat de performan a procesului. Axul central al metodologiei Lean Six Sigma este reprezentat de framework ul 3. Analiz DMAIC (Definire, Msurare, Analiz, Odat ce datele iniiale au fost mbuntire, Control). Dup cum se stabilite, ulterior se va putea identifica poate observa a fost preluat i de ctre de unde provin cauzele mult mai facil. acest hibrid, n special pentru proiecte care n aceast faz, prin urmare, se vizeaz mbuntirea proceselor de afaceri pot localiza i identifica cauzele, ct i existente. confirmarea lor prin utilizarea unui set
46
Concluzie
47
HR
programare
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 conceptualizri diferite ale conceptului de empatie: 1. nvarea contientizrii strilor interioare ale unei alte persoane, gndurilor, percepiilor i motivelor. Semnificaia proceselor cognitive este mare i datorit acestora o persoana este capabil s perceap, recunoasc i pn la un anumit nivel s anticipeze strile celor din jur. n acest context se discut i de acurateea empatiei. 2. Empatia este o reacie afectiv fa de o alt persoan, o armonizare a strii emoionale interne la starea unei alte persoane. Focusul n aceast situaie este pe procesul de empatie i nu pe rezultatul acesteia. 3. Empatia este o combinaie de mecanisme cognitive i emoionale unde procesele cognitive mediaz activarea emoional. Interpretarea unei anumite situaii declaneaz o reacie emoional caracterizat prin acceptarea perspectivei celeilalte persoane. Din aceasta perspectiv, empatia este nelegerea non-egocentric a celorlali coordonat de emoii. Empatia este prezentat alturi de altruism i afiliere i este printre principiile de baz ale comportamentului pro-social dar este diferit de mil sau simpatie (care pot aprea 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 definiia pe care o folosim cu toii. Specialitii n domeniu definesc empatia cam la fel, poate prezentnd mai multe faete. De ce scriu despre empatie? n primul rnd pentru c este un cuvnt tot mai des ntalnit. Nu este un cuvnt 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 muli alii sunt de acord, dar nu pentru c e la mod, ci pentru un aspect pur obiectiv i utilitar. Empatia, atunci cnd este prezent, ne ajut sa interacionm cu cei din jurul nostru n feluri mult mai relevante, indiferent c vorbim de colegi, subalterni, clieni, etc. . Voi ncerca s ofer o aplicabilitate foarte specific empatiei n aa fel nct s nu simim 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 formulri de genul adaptat la nevoi i probabil tim cu toii ce nseamn aceasta. Empatia reuete s ne conduc spre o perspectiv nuanat i foarte fin a nevoilor beneficiarilor notri. Cum face acest lucru? Haidei sa intrm n nuanele definirii empatiei. Descoperind acele nuane vom nelege cum funcioneaz dar i cum putem s dezvoltm empatia mai departe de trstur. Nu voi intra n detalii, dei dac va trezesc curiozitatea cu acest articol v recomand s v documentai n detaliu despre acest proces1. n primul rnd majoritatea celor specializai n empatie spun c aceasta este un proces i nu o stare. Dac vei intra n documentare vei afla c are o component genetic i una de mediu. Aceasta nseamn c ne natem cu o predispoziie mai mare sau mai mic spre empatie ns aceasta poate fi extins sau restrns n funcie de factori contextuali. De asemenea vei afla c ea apare exprimat de la vrste foarte fragede i c problemele legate de empatie se vd n autism si sociopatie.
1 youtube: the empathic civilization; baza de date: Center for Building a Culture of Empathy
48
49
sponsori
Comunicm mai simplu direct prin SMS. Propune un titlu de articol pentru numrul urmtor sau trimite-ne sugestiile tale.
powered by
SMS 0371700018
numr cu tarif normal