Professional Documents
Culture Documents
com
TSM
Ed
T O D A Y S O F T WA R E MAG A Z I NE
l a i c e p iie s
Inovaie i Antreprenoriat la IT Days n Cluj-Napoca Gestionarea Autentificrii n AngularJS Scrum n practic: un studiu de caz Real time web with Meteor mbuntirea continu o practic de luat n serios Testarea funcional n PHP
Interviu cu domnul primar Emil Boc Pstrarea angajailor talentai, o tem recurent n IT Cum sa menii succesul unui joc la peste 2 ani de la lansare? Extension Points Alinierea partiiilor n medii virtuale How To Web 2013
6 IT Days 2013
Ovidiu Man
8 How to Web 2013 a reunit comunitatea tech din Europa de Sud Est
Irina Scarlat
38 SpotTune
George Platon
39 CTF365
Marius Corci
41 Cum s menii succesul unui joc mai mult de doi ani de la lansare?
George Abramovici
19 Specificaii executabile
Alexandru Bolboaca i Adrian Bolboac
27 Extension Points
Radu Vunvulea
editorial
tartup-urile, un subiect la mod, fa de care companiile manifest un interes crescut, dorind s se implice n apariia noilor produse. Riscurile sunt mari pentru ambele pri, dar recompensa ce poate aprea n civa ani este o fata morgana care devine realitate. La How To Web 2013, unde am participat de curnd, unul dintre speakerii intervievai a atras atenia asupra faptului c exist un numr mare de startup-uri care aduc pe pia produse mult prea facile, crend de fapt doar o interfa grafic peste o simpl baz date. Dar ultimele produse create de startup-uri sunt foarte ncurajatoare, demonstrnd mult creativitate. Un exemplu sugestiv n acest sens este chiar produsul startup-ului castigator al ediiei How To Web din acest an: o mn complet robotizat, low cost, pentru persoanele cu dizabiliti. De asemenea, n acelai sens, trebuie s-l menionm pe Ionu Buditeanu, cel care a ctigat marele premiul al competiiei Intel ISEF cu un proiect de automobil autonom. Exemplele acestea sunt dovada c trebuie s ndrznim mai mult, c trebuie s abordm interdisciplinar realitatea, valorificndu-i conexiunile ascunse. Dac pn acum era suficient s ai o echip de programatori, acum a venit momentul n care trebuie s existe cel puin un electronist sau poate chiar un specialist n robotic n echip. Oare cum s-ar mai putea mbunti mediul domestic, cu tot confortul pe care l deinem deja? Aceasta poate s nu fie o ntrebare retoric.Gndii-v c acas avem telefoane, tablete, calculatoare care pot simula i accesa aproape orice din perspectiva unui uz caznic. Evoluia lor implic adugarea de noi senzori, putere de procesare, durat de via a bateriei i conectivitate. Nimic nou sau spectaculos. Alternativ, uitai-v n jur i numrai ci roboi avei n jurul vostru prin cas? Poate un Roomba, destul de prostu de altfel. Nu avem o platform mobil larg rspndit pe care s poat fi instalate diferite brae, senzori i care s ne fac viaa de zi de zi mai uoar. La fel avem i dronele, au devenit n ultimul timp destul de accesibile, iar n curnd vom asista la o evoluie exponenial a numrului acestora. Din pcate sau poate din fericire pentru noi, toate sunt controlate prin telecomand,iar partea de autonomie i AI nu i-a fcut simit prezena serios. Sper aadar c v-am ridicat un semn de ntrebare nainte de a decide s lucrai pentru urmtoarele ase luni la o aplicaie care i arat pe hart cea mai apropiat benzinrie sau ordoneaz task-urile n funcie de prioriti. Continum aceast pledoarie pentru inovaie i n cadrul evenimentului IT Days, eveniment organizat de revista TSM. Sperm c evenimentul va oferi reprezentanilor comunitii clujene de IT ocazia concretizrii unei abordri originale i creative, care s se transforme ntr-un reper al activitii lor. Participanii vor asista din punct de vedere al tematicilor abordate la o mbinare a subiectelor tehnice cu prezentrile de startup-uri locale, precum i cu prezentri ale proiectelor de cercetare. Pentru a afla mai multe, v invitm s citii primul articol al acestei ediii speciale a Today Software Magazine. V dorim o lectur plcut !!!
Ovidiu Man
alex.bolboaca@mozaicworks.com Agile Coach and Trainer, with a focus on technical practices @Mozaic Works
leonard.abu-saa@arobs.com
Radu Vunvulea
Bogdan Matei
Copyright/Corector: Emilia Toma emilia.toma@todaysoftmag.com Traductor: Roxana Elena roxana.elena@todaysoftmag.com Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Reviewer: Adrian Lupei adrian.lupei@todaysoftmag.com
dify.ltd@gmail.com
George Abramovici
Business Manager @ King Romnia
Adrian Bolboaca
adrian.bolboaca@mozaicworks.com Programmer. Organizational and Technical Trainer and Coach @Mozaic Works
Drago Masarasan
dragos.masaran@endava.com
Claudia Jelea
Produs de
Monica Soare
Manager @ Artwin
monica.soare@@artwinconsulting.ro
George Platon
Papp Lszl
Marius Corci
Co-fondator @ CTF365
marius@ctf365.com
Irina Scarlat
Ovidiu Dolha
eveniment
IT Days 2013
evista online clujean Today Software Magazine organizeaz n 5-6 Decembrie 2013, la Cluj Arena, evenimentul IT Days. n cadrul conferinei sunt invitai att speakeri internaionali ct i reprezentani din industria software local. n prima zi, se abordeaz teme precum inovaia i tehnologia n IT , pentru ca n cea de-a doua zi, tema principal s fie antreprenoriatul . Vom reveni n numerele urmtoare Deschiderea evenimentului o va realiza reprezentatul administraiei locale, domnul cu nregistrrile complete i cu multe primar Emil Boc, care a acceptat invitaia informaii de la aceasta prim ediie a IT noastra, manifestnd astfel susinerea Days. acestui eveniment cu implicaii pozitive n dezvoltarea oraului nostru. Acestuia i va urma Alexandru Tulai, preedintele Cluj IT Cluster, organizaia ce reunete un numr mare de companii de IT clujene. Gazda e venimentului este Dan Mircea Suciu, lector doctor la Facultatea de Matematic i Informatic din Universitatea Babes Balyai i Director of engineering la compania 3Pillar Global. Subiectele tehnice vor fi susinute de experi locali i vor acoperi o arie larg din domeniul IT: ncepnd cu arhitectura sistemelor, programare, testare, tehnologii SAP, direcii de cercetare, project management i terminnd cu design-ul adaptiv i securitatea aplicaiilor web. Evenimentul este susinut de importante companii de IT din Cluj: EBS, Arobs, Endava, Evoline, Accesa, Gemini Foundry, Skobbler, Yardi, msg systems Romania, 3Pillar Global. Detaliile complete despre eveniment se gsesc online pe www.itdays. ro.
Invitaii principali sunt: Eduardo Mendez Polo , head of IT Cloud la Telefonica Spain care va vorbi despre evoluia serviciilor cloud n viitor Tine Thygesen , CEO Everplaces Danemarca, susine o prezentare despre inovaie i startup-uri avnd tema Disruptive technologies. Voicu Oprean, CEO Arobs, are ca tem de prezentare tranziia de la outsourcing la produs. Maria Diaconu, CEO Mozaic Works, va prezenta modul n care poate fi crescuta inovaia n cadrul echipelor de dezvoltare de produselor. Mirel Borodi, director general al Trustului de Consultan Transilvnean, fondator www.multifinantare.ro, va prezenta iniiativa de crowd sourcing adresat comunitii locale. erban r, director tehnic al grupului de firme Gemini Solutions prezint o abordare practic pentru suportul startupurilor locale.
business
evenimente
How to Web 2013 a reunit comunitatea tech startups din Europa de Sud Est
ucureti, 25 noiembrie 2013 Sptmna trecuta How to Web a transformat pentru a patra oar consecutiv Bucuretiul n capitala tehnologiei din Europa de Sud-Est. Desfurat n jurul conceptului central S cretem mpreun, How to Web 2013 a adus n faa celor peste 800 de persoane din audien mai bine de 40 de vorbitori internaionali de calibru de pe 4 continente care au abordat teme precum dezvoltarea de produse inovative la scar global, valorificarea contextului local sau tehnologiile viitorului. n paralel a avut loc Startup Spotlight, competiie i program de mentorat adresat celor mai performante 32 de echipe din regiune. Prezentrile How to Web 2013 s-au desfurat n paralel pe dou scene. Astfel, pe scena principal a evenimentului, Grow Stage, au avut loc prezentri ale profesionitilor din domeniul tehnologiei la nivel mondial. Acestea s-au adresat dezvoltatorilor, designerilor i comunitilor din jurul produselor tech i au adus n discuie inovaia n tehnologie, dezvoltarea echipelor durabile, tendinele actuale n industrie sau importana design-ului pentru dezvoltarea produselor inovative. Conferina a fost deschis de Thomas Hartwig (Co-Fondator i CTO King.com), care a vorbit despre avantajele i provocrile aduse de creterea accelerat a unui startup (de la 1 la peste 100 de milioane de utilizatori n cazul specific al King) i a continuat cu prezentarea lui Mike Butcher (Senior Editor TechCrunch), care a vorbit despre cei mai puternici oameni n tehnologie la nivel european. O alt seciune a fost dedicat leciilor nvate lucrnd la distan cu echipe de cercetare-dezvoltare, subiect care a fost dezvoltat n cadrul unui panel moderat de Philipp Kandal (Co-Fondator i CTO Skobbler), din care au fcut parte Marius Jumolea (General Manager al centrului R&D Visual.ly Romania) i Michael Levit (Fondator Spigot). Cea de a doua zi a conferinei a nceput cu prezentarea lui Robin Wauters, jurnalist n tehnologie, care a vorbit despre tendinele din industrie i modul n care companiile mici din Europa inoveaz i se menin cu un pas naintea celorlalte. Evenimentul a continuat cu o discuie cu Radu Georgescu, Fondator Avangate, care a vorbit despre deciziile strategice pe care le-a luat n dezvoltarea companiei, de la idee pn la exit. David Bizer ( C E O Ta l e n t Fountain), a prezentat leciile nvate din lansarea, dezvoltarea i nchiderea HackFwd, iar instrumentele adresate dezvoltatorilor au fost aduse n discuie de Martyn Davies (Developer Evangelist SendGrid), Jamie Hannaford (Software Developer Rackspace) i Michal Wawra (Developer Evangelist Twilio), n cadrul unui panel moderat de Ivan Brezak Brkan (Netocratica). Christopher Martin (Senior Manager Bosch) a abordat dificultile dezvoltrii unui produs tech de calitate, iar Vitaly Golomb (Fondator i CEO Keen Systems) a prezentat motivele pentru care nimic nu este mai important dect designul unui produs. Pe parcursul celor dou zile ale evenimentului, pe scena principal a How to Web au urcat profesioniti importani ai industriei printre care se numr Paul Ford (CIO Softlayer), Alex Hunter (CEO Rushmore. fm), Philipp Kandal (Co-Fondator i CTO Skobbler), Marco Cecconi (Software Engineer Stack Exchange), Simon Stewart (Software Engineer, Facebook), Matt Clayton (Co-Fondator i CTO Mixcloud)
sau tefan Szakal (Fondator X3 i [e-spres-oh]). Ignite Stage, cea de a doua scen a conferinei, a gzduit paneluri care au abordate subiecte specifice startup-urilor: bune practici pentru un startup care trece printrun program de accelerare; cum s dezvoli echipa potrivit; cum s atragi investiii; cum s colaborezi cu i s nvei de la mentori, investitori i clieni; greeli frecvente pe care le fac fondatorii. Acestea au fost abordate de cei peste 25 de investitori, reprezentani ai acceleratoarelor i fondurilor de investiii prezeni la eveniment. Adresat tuturor celor care i dezvolt propriul startup sau care se pregtesc de acest pas, scena Ignite a avut drept principali beneficiari cele 32 de echipe finaliste ale programului Startup Spotlight. Echipele au fost evaluate de un juriu de specialitate care a urmrit criterii precum echipa i experiena acesteia, dimensiunea pieei, scalabilitatea, traciunea, sau
posibilitatea de a participa la un eveniment Seedcamp, infrastructur c l o u d of e r it de Rackspace, conturi premium Evernote, produse oferite de F6S i acces direct la Romanian Innovation fezabilitatea produselor dezvoltate. Smart Hand, startup din Bulgaria care dezvolt o mn prostetic mioelectric pentru persoanele cu dizabiliti, a fost desemnat ctigtorul competiiei Startup Spotlight. Echipa clasat pe locul II a fost Synetiq, aplicaie care ofer companiilor informaii utile despre clienii acestora, iar Wyliodrin, startup care propune o metod simpl de dezvoltare web pentru servicii ncorporate, a primit IXIA Innovation Award. Premiul pentru cea mai bun prezentare a fost acordat echipei de la Data Maid, instrument pentru crearea i publicarea de coninut media bogat. Finalitii competiiei au primit premii n valoare total de 20.000 USD oferite de IXIA, partener principal al How to Web Startup Spotlight. Pe lng premiile n bani, echipele finaliste au primit i alte premii valoroase oferite de partenerii programului: acces la platforma Microsoft Azure, infrastructur gratuit i mentorat n cadrul programului pentru startup-uri Software Catalyst, office hours cu Jon Bradford (Managing Director al programului de accelerare TechStars), 3 ore de consiliere juridic oferite de Biri Goran, posibilitatea de a-i prezenta produsele n cadrul Startup Bootcamp, acces la workshop-ul Hub:raum din Cracovia, Commercialization Program (RICAP). Am nceput How to Web cu o prim ediie n 2009, n Politehnica Bucureti, i l-am continuat cu o prim ediie internaional n 2010. An de an, How to Web a crescut ca numr de participani dar, i mai important, s-a maturizat din punct de vedere al structurii agendei i al obiectivelor pe care i le propune. How to Web nu a fost niciodat doar o conferin ne-am dorit mereu s-l facem un instrument util, practic, cu rezultate msurabile pentru cei care i trec pragul. Ne bucurm c am reuit s ne atingem obiectivele i de aceast dat, iar lista de poveti de succes confirm acest lucru, a declarat Bogdan Iordache, Co-Fondator i CEO How to Web. How to Web 2013 a fost dezvoltat cu sprijinul IXIA, X3, Bitdefender, CyberGhost, SoftLayer, Enterprise Ireland, Avangate, Microsoft, Hubraum, PayMill, Twilio, Biris Goran i Banca Comercial Romn i a avut loc pe 20 i 21 noiembrie la Crystal Pallace Ballrooms n Bucureti. Mediatizarea evenimentului a fost asigurat de parterii media principali Prove PR, Digi TV, Adevrul, Forbes Romnia, Capital, Wall-Street.ro, Evenimentul Zilei, DAS Cloud, Revista Cariere, Ct r l - D, s t ar tup s . ro i Entrepreneur. bg, si de partenerii media Economy.bg, Newtrend.bg, Digjitale, IT D ogadj aji, CEE Startups, Invendor.hu, Goal Europe, Times New Roman, Akcees, IQ Ads, C omputer Wor l d , P C Wor l d , Ag or a , I T Tre n d s ,
Business Cover, Tech Cover, Business Woman, Gadget & Trends, Comunicaii mobile, Market Watch, Business Review, Manager Express, Romnia Liber, Comunicatedepres.ro, Zelist, Ejobs, Softlead, Ziare.com, Business24, Romanian Startups i Today Software Magazine.
Irina Scarlat
evenimente
Industria de IT local este n continu cretere, spunei-ne cum sprijin Primria Cluj-Napoca acest domeniu? n aceast perioad lucrm la definitivarea Strategiei Municipiului pentru 2014-2020, iar industria IT este o component esenial a procesului. Am urmrit s implicm n proces specialiti din ntreaga comunitate, pe fiecare component, de la educaie la antreprenoriat i inovaie. Corelarea studiilor preuniversitare i universitare cu cerinele pieei este doar un aspect care va avea un impact semnificativ n dezvoltarea industriei. Cei interesai pot afla mai multe despre direciile principale ale strategiei pe site-ul cmpg.ro. Cluj-Napoca s-a definit n ultimii ani ca un ora al serviciilor i se poziioneaz din ce n ce mai puternic pe harta Europei ca un centru cultural i ca un centru al inovaiei. Am ncredere c, avnd strategia potrivit i sprijinul comunitii, vom depi Bucuretiul n mai multe domenii, n primul rnd n IT. Oraul nostru are potenialul de a fi cu adevrat un smart city al Europei, iar la Primria ClujNapoca, avnd acest obiectiv, urmrim
omnul primar Emil Boc a avut amabilitatea s ne rspund la cteva ntrebri referitoare la susinerea IT-ului clujean, modul n care comunitatea local a programatorilor se poate implica i proiectul de susinere a startup-urilor locale s implementm soluii smart, etapizat, pe fiecare direcie - de la transport n comun la plata taxelor i impozitelor. Avem totodat proiecte majore, menionez aici Cluj Innovation City, pe care le sprijinim cu toat convingerea, lucrnd alturi de reprezentanii industriei pentru a gsi cele mai bune soluii pentru ca aceste proiecte s devin realitate. Credem c muli programatori ar fi interesai s scrie aplicaii bazate pe o platform care le-ar putea da acces la informaii n timp real. Ne referim la datele de trafic, poziia sau timpul estimat de a ajunge n staie a mijloacelor de transport n comun, nivelul de poluare etc. . Astfel s-ar crea cu un efort minim posibilitatea de a dezvolta aplicaii folositoare pentru clujeni prin intermediul direct al programatorilor locali. Credei c este posibil n viitor acest lucru ? Suntem deschii la orice iniiativ care ar putea mbuni viaa de zi cu zi a cetenilor i procesele de lucru ale instituiei, ceea ce, pn la urm, va fi
tot spre beneficiul fiecrui clujean. Sunt aspecte n care am primit deja propuneri prin intermediul grupurilor care elaboreaz Strategia Municipiului. Sunt mai multe domenii n care s-ar putea ncepe chiar acum dezvoltarea de aplicaii i m-ar bucura ca ideile i punerea lor n practic s vin de la comunitate. i invit aadar pe toi cei interesai s ne contacteze, pentru c Serviciul Strategii de informatizare al Primriei v st la dispoziie. Clujul este un ora cu muli vizitatori, avei n considerarea crearea unei reele wireless gratuit la nivelul centrului oraului? tim c exist ceva asemntor n Parcul Mare, iar aceasta poate crea un
10
11
comuniti
Comuniti IT
Transylvania Java User Group Comunitate dedicat tehnologiilor Java. Website: www.transylvania-jug.org Data nfiinrii: 15.05.2008 / Nr. Membri: 550 / 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: 1029 /Nr. Evenimente: 15 Romanian Testing Community Comunitate dedicata testerilor. Website: www.romaniatesting.ro Data nfiinrii: 10.05.2011 / Nr. Membri: 672 / Nr. Evenimente: 2 GeekMeet Romnia Comunitate dedicat tehnologiilor web. Website: geekmeet.ro Data nfiinrii: 10.06.2006 / Nr. Membri: 567 / Nr. Evenimente: 17 Cluj.rb Comunitate dedicat tehnologiilor Ruby. Website: www.meetup.com/cluj-rb Data nfiinrii: 25.08.2010 / Nr. Membri: 151 / Nr. Evenimente: 36 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: 330 / Nr. Evenimente: 40 Cluj Semantic WEB Meetup Comunitate dedicat tehnologiilor semantice. Website: www.meetup.com/Cluj-Semantic-WEB Data nfiinrii: 08.05.2010 / Nr. Membri: 152/ Nr. Evenimente: 23 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: 230/ Nr. Evenimente: 14 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: 356/ Nr. Evenimente: 20
ecembrie vine cu surprinztor de multe evenimente nainte de srbtorile de iarn. V invitm sa participai la ele iar recomandarea noastr este IT Days pentru cei din Transilvania i nu numai.
Calendar
Decembrie 4 (Cluj) Lansarea numrului 18 al Today Software Magazine www.todaysoftmag.ro Decembrie 4 (Cluj) An introduction to web application security with Simon Bennetts 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/152638932/ Decembrie 5-6 (Cluj) IT Days - recomandarea TSM www.itdays.ro Decembrie 7 (Cluj) Android Workshop 1 it-events.ro/events/android-workshop-1/ Decembrie 7-8 (Iai) Winter Web Workshop it-events.ro/events/winter-web-workshop/ Decembrie 10 (Cluj) UI/UX Cluj Meetup #2 www.meetup.com/UXUICluj/events/150664862/ Decembrie 10 (Cluj) How to make smartphone hits with Bart Decrem, Senior VP @ Walt Disney it-events.ro/events/make-smartphone-hits-bart-decremsenior-vp-walt-disney/ Decembrie 14 (Cluj) Global Day of Coderetreat 2013 - Cluj Napoca www.meetup.com/cluj-rb/events/149860962/ Decembrie 14-16 (Bucure;ti) Talks by Softbinator #30 it-events.ro/events/talks-softbinator-30/ Decembrie 22 (Braov) Braov Tech Meetup: December Meet it-events.ro/events/brasov-tech-meetup-december-meet/
12
programare
Bogdan Matei
Instalarea
13
programare
Testarea funcional n PHP
sunt necesare configurri speciale suplimentar, prin faptul c nu pot php bin/behat --init pentru https, ntruct invitaia certifiexista mai multe versiuni de IE pe aceeai catului face imposibile testele, iar acest main. n acest moment practic suntem gata lucru depinde de proxy-ul utilizat; scoDiagrama de interaciune i instalare a de utilizare a unui cadru BDD minimalist, pul final este ca browser-ul s cunoasc componentelor este urmtoarea: ns n practic cerinele se extind la: adresa https i certificatul s fie deja p o s i bi l it at e a d e a r u l a t e s t e instalat; funcionale n atunci cnd ne aflm n imposibilitabrowser-e specifice; tea de a utiliza browser-e comune (spre rularea tesexemplu ne aflm pe un server cu mod telor n mediul text), se poate testa funcional inclus e r v e r- si d e, c nd siv codul Javascript folosind browser-ul browser -ele lipsesc PhantomJS; ntruct Mink nu are drisau nu este nevoie de ver pentru acesta, utilizarea lui se ele; poate face printr-un proxy. Pentru Sahi necesitatea browser-ul PhantomJS trebuie adugat la de a avea rapoarte configurri; ser ver-side dup atunci cnd proiectul este mare, ceea e x e c u i a t e s t e l or ce implic multe teste, este mai bun, n funcionale; Behat versiunea 2, o organizare cu mai intervenia minim n procesul Procesul de instalare permite mai multe multe template-uri de behat.yml, pentru de configurare, pentru o mentenan variante. Dac Sahi vine cu un installer fiecare browser, iar la nivel de profile s uoar. vizual, este mai uor ca celelalte compofie testarea trsturilor individuale ale Majoritatea acestor cerine se ndenente s fie instalate mpreun, folosind aplicaiei. Composer. Se editeaz un fiier text, com- plinesc prin realizarea unui fiier behat. yml cu profile specifice, cel implicit fiind poser.json, cu urmtorul coninut JSON: profilul Mink de baz, server-side, care nu Structura testelor { require: { permite interpretarea de Javascript: behat/behat: 2.4.*@stable, Dan North a mai venit cu o realizare behat/mink: 1.4.*@stable, default: nsemnat: el a simplificat structura testebehat/mink-extension: *, extensions: behat/mink-goutte-driver: *, Behat\MinkExtension\Extension: lor clasice de la patru faze (setup, executare, behat/mink-selenium2-driver: base_url: https://www.site.com/ 1.0.*, goutte: verificare, teardown) la trei, i anume behat/mink-sahi-driver: 1.0.*, guzzle_parameters: phpunit/phpunit: 3.7.* ssl.certificate_authority: Given, When, Then . Acestea au devenit }, false minimum-stability: dev, filters: cuvinte cheie care semnific actorul, conconfig: { tags: ~@javascript bin-dir: bin/ textul (procesul) i rezultatele aciunilor. } chrome_selenium: } extensions: Testele sunt organizate n storyBehat\MinkExtension\Extension: base_url: http://www.site.com / uri sau suite, care prezint un titlu i o se aduce i se demareaz instalarea ntregii javascript_session: selenium2 default_session: selenium2 descriere. Fiecare story cuprinde unul suite definite mai sus: browser_name: chrome selenium2: sau mai multe scenarii. Un scenariu este o curl http://getcomposer.org/installer | php wd_host: 127.0.0.1:4444/wd/hub php composer.phar install capabilities: { browser: compoziie ordonat de mai muli pai de chrome, version: 24} testare (steps). Fiecare pas reprezint n Operaiile de instalare pot dura cteva firefox_sahi: extensions: limbaj Gherkin o aciune. Cum tie calminute, dar la final rezultatul este un folBehat\MinkExtension\Extension: base_url: http://www.site.com/ culatorul ce s execute la ntlnirea unui der vendor/ care conine dependenele default_session: sahi javascript_session: sahi pas Gherkin? este o ntrebare care i afl proiectului. browser_name: firefox sahi: rspunsul printr-un dicionar, nimic mai n aceast etap sunt utile cteva host: localhost port: 9999 mult dect o tabel de asociere injectiv de meniuni speciale: filters: tags: @javascript la limbaj spre metode PHP. pentru o organizare fr modificri phantomjs_sahi: Behat vine implicit cu un dicionar de n afara directorului de proiect nu se extensions: Behat\MinkExtension\Extension: baz. Pentru aflarea acestuia, cu detalii sau recomand includerea executabilulului base_url: https://www.site.com/ javascript_session: sahi fr, se pot folosi comenzile : bin/behat n lista comenzilor cunosbrowser_name: phantomjs goutte: ~ cute, ci lansarea executabilui prin calea sahi: ~ php bin/behat -di filters: php bin/behat -dl complet sau relativ la directorul de tags: @javascript proiect; Extinderea dicionarului este simpl este bine de creat un folder dedicat Ultima parte a configurrii se refer la i n acest sens Behat ajut prin indicarea rapoartelor. unui prototip de metod PHP pentru fiebrowser-e: se recomand efectuarea configur- care fraz Gherkin pe care nu o cunoate. rilor de proxy server, corespunztoare Metoda va trebui implementat n cadrul Congurarea Sahi sau Selenium2. Aceast operaiune contextului. Imediat dup instalare este necePersistena story-urilor pe disc se reaaproape c leag exclusiv browser-ele de sar configurarea mediului de testare testarea funcional, funcia de navigator lizeaz ca fiiere text, cu extensia .feature. funcional. fiind obstrucionat de proxy-uri - de Pentru proiectele mari se poate realiza o Pentru acest lucru se iniializeaz aceea se impune un mediu dedicat pen- structur logic cu directoare imbricate, (prima i o singura dat pe proiect) mediul dar aceasta presupune c suitele vor trebui tru testarea funcional; Behat, prin comanda:
14
Mai sus scriam despre dicionar c este conceput ca o tabel care traduce Gherkin n metode PHP. Dac Gherkin este descris n fiiere features/*.feature, metodele sunt organizate n aa-numitele fiiere de context, localizate implicit la features/ bootstrap/*.php. Exist un singur fiier de context
De asemenea, se poate injecta cod Javascript direct n browser sau se pot apela funcii specifice proxy-lui utilizat. Este uor de anticipat c pentru proiecte mari, atunci cnd exist un singur fiier de context principal, acesta risc s cuprind multe definiii i s devin greu de gestionat, mai ales c expresiile regulate trebuie s fie injective inclusiv la utilizarea sub-contextelor. n Behat versiunea 2 (singura stabil n acest moment) ,proiectele mari au urmtoarele alternative de organizare: utilizarea profilelor, din fiierul behat.yml, i pentru fiecare profil se poate utiliza proprietatea cheie class sau mpreun proprietile features si /** * Some function description bootstrap; acest lucru necesit atenie * * @Given /I am (\w+ user)/ la setup-ul profilelor (numele trebuie s * @Given /I am user:/ */ fie unice); public function iAmUser(User $user) { $this->user = $user; } utilizarea sub-contextelor; contextul principal poate ncrca contexte copil, Funcia poate avea orice nume, exprefiecare cu sesiune individual sau partasia regulat este cea determinant. Aceeai jat de la contextul parinte. funcie poate avea mai multe adnotri, cum se vede mai sus, important fiind c relaia Versiunea Behat 3, n curs de dezvolregex-funcie s fie injectiv, altfel survine o eroare. De asemenea este recomandat tare, va aduce posibilitatea de organizare s fie scris i o descriere-titlu a funciei, feature-context. Mai departe, Behat ofer i posibilitacare va fi vizibil la afiarea detaliat a tea de a avea aciuni automate, rulate prin dicionarului. intermediul hook-urilor: nainte sau dup rularea testelor n corpul unei funcii se poate scrie limfuncionale (tag-ul @BeforeSuite); baj Gherkin, realizndu-se un pas complex: nainte sau dup un story (tag-ul @ /** * @Given /I entered ([^]*) and expect BeforeStory); ([^]*)/ */ nainte sau dup un scenariu (tag-ul public function complexStep($number, $result) { @BeforeScenario). return array(
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
15
programare
Testarea funcional n PHP
pot fi folosite mai multe fiiere behat.yml); f isier u l .fe ature dorit; dac se dorete sau nu scrierea de rapoarte i n ce format:
Acestea sunt utile pentru operaiunile de conectare la baza de date, pentru pregtiri de teste sau curri i raportare. Figura alturat prezint etapele de execuie ale acestor operaii, intercalate n faza de rulare a fiierelor *.feature. Se poate ntmpla ca anumite site-uri s php bin/behat --config behat. yml features/test.feature se ncarce mai greu i din acest motiv tes- profile firefox_sahi --format html --out behat-reports/Retele funcionale s invalideze. n acest sens port.html sunt utile spin urile, care au rolul de a Rapoartele XML pot testa prelungit un anumit step, nainte ca fi analizate automat, iar rapoartele HTML sunt foarte uor de citit: n cazul testelor n browser este necesar ca proxy-ul s fie instalat pe aceeai main unde se afl browserul, s fie pornit, iar browser-ul s aib setrile de proxy deja configurate. Mink va transmite comenzile la adresa proxy-ului specificat n behat.yml , proxy -ul va deschide browser-ul local, ns rapoartele i rezultatele testelor se desfoar pe maina unde s-a rulat linia de comand. Acest lucru permite utilizarea mainilor virtuale, cu diferite instane de browser -e (de obicei cerute de Internet Explorer), maini care la acesta s invalideze rapid. rndul lor pot fi controlate prin utilizarea script-urilor. Condiia este ca serverul de Vericarea datelor n cadrul fiierlor de context, n corpul test s aib mod grafic i o soluie de virtufunciilor, att celor implicite ct i celor alizare (VMWare, VirtualBox etc.). dezvoltate ulterior, intervine operaia de comparare ntre rezultatul ntlnit i rezul- Testarea funcional independent tatul ateptat. Util n acest sens este librria Un caz destul de frecvent este cerina PHPUnit care vine cu o larg varietate de de a implementa testri funcionale comoperaiuni de comparare care valideaz sau plet independent de proiect. Acest lucru nu rularea testelor. presupune crearea unui proiect pentru Folosirea PHPUnit aduce avantajele testele funcionale, care s permit o strucintegrrii mature cu mediile de Continuous tur flexibil de extindere pe orizontal, Integration/Delivery i utilizarea unui cod mai ales cnd portalul web are dimensiuni existent. Mink are deja funcii de com- mari. Extinderea presupune trei sau patru parare derivate din PHPUnit, dar pentru dificulti: folosirea tuturor funciilor PHPUnit este structura pe disc a fiierelor .feature; necesar importul: structura fiierelor de context i decizia de organizare a testelor pe profile require_once PHPUnit/Autoload.php; require_once PHPUnit/Framework/Assert/Func(mai eficient i mai uor de intreinut, tions.php; cel mai bine cu template-uri de behat.yml n contextul principal. specifice unui tip de browser) sau pe subcontexte (n acest caz nu se recomand Rularea testelor folosirea funciilor magice); Execuia testelor funcionale presu modul de obinere al setului de date pune rularea unei linii de comand n care cunoscute; se specific: opional, mai ales n cadrul pro profilul ales din behat.yml (util mai iectelor n care structura DOM a ales cnd avem feature-uri mprite pe HTML-ului nu permite acionarea facil profil) ; a elementelor (spre exemplu avem lipsa locaia relativ a behat.yml (deci proprietilor id, name, class la elementele HTML), este necesar identificarea programatic a elementelor de pe UI (de obicei folosind Xpath locators); cnd numrul acestora crete considerabil, este necesar o structura favorabil de persisten, aflat n relaie cu setul de date cunoscute. Pentru o mai bun organizare i pentru c de multe ori QA-ul nu cunoate modul de stabilire al datelor corecte, este mai bine ca setul de date cunoscute s fie pstrat n cadrul proiectulului printe, iar ntre acesta i proiectul de testare funcional s se poat stabili o metod de comunicare (REST, http, baz de date comun etc.), prin care se poate interoga valoarea corect pentru un element funcional specific. Testarea funcional reprezint apogeul actual al testelor efectuate din perspectiva utilizatorului. O intuiie sau o reproducere a comportamentului acestuia i a contextului acestuia (browser) asigur un nivel excelent de calitate a produsului software. Menirea pricipal a testelor funcionale o reprezint analiza comportamental i contextual, ns ele pot fi extinse i la anumite analize de performan sau securitate.
Concluzii
16
programare
Leonard Abu-Saa
System Architect @ Arobs
leonard.abu-saa@arobs.com
Atenie!
Nu uitai c toate aciunile au loc n browser-ul clientului, ceea ce nseamn c acesta are control deplin asupra browser-ului i poate evita controalele de securitate. De aceea este foarte important s verificm i n back-end.
Urmtorii pai sunt recunoaterea utilizatorului autentificat i verificarea accesului acestuia la rute.
Acest lucru se poate face n multiple moduri, dar preferm folosirea de servicii n AngularJS. De aceea am creat un UserService n care am stocat numele de utilizator actual Congurarea rutrii clientului Aici vom selecta paginile care vor i o valoare care indic dac utilizatorul este avea nevoie de autentificare i vom confi- autentificat sau nu. gura rutarea aplicaiei. O rut se definete // in UserService.js furniznd cel puin template-ul sau temmyApp.factory(userService, function () { plateUrl-ul i controller-ul paginii. n plus, var user = { isLogged: false, am adugat proprietatea access cu atributul username: , }; allowAnonymous . n acest fel tim dac var reset = function() { ruta actual necesit autentificare sau este o user.isLogged = false; user.username = ; pagin cu acces nerestricionat. n exemplele }; de mai jos avem pagina Login care este accereturn { user: user, sibil oricui i pagina MembersPage care reset : reset }; necesit autentificare. });
// in app.js var myApp = angular.module(myApp,[ngResource, ngCookies, ngRoute]); myApp.config(function ($httpProvider, $routeProvider) { window.routes = { /Login: { templateUrl: /Account/Login, controller: AccountController, access : {allowAnonymous : true} }, /MembersPage: { templateUrl: /Home/SomePage, controller: SomePageController, access: {allowAnonymous:false}}}; for (var path in window.routes) { $routeProvider.when(path, window. routes[path]); } $routeProvider.otherwise({ redirectTo: / Login }); });
Dup ce am configurat serviciul, este timpul s l folosim i s implementm funcionalitatea de verificare a rutei. n cazul schimbrii rutei exist mai multe metode de interceptare, dar pe noi ne intereseaz doar schimbarea care are loc nainte ca utilizatorul s fie redirecionat pentru a putea verifica dac este autentificat: $routeChangeStart, $locationChangeStart. Prin aceste metode putem verifica dac ruta accesat permite accesul unui utilizator neautentificat. n caz de eroare putem afia un mesaj de eroare i
17
programare
Acest serviciu ofer o modalitate de a comunica cu serverul i stabilete statusul de autentificare. n acest moment ne intereseaz metodele de login/logout. Pe partea de back-end se folosete un serviciu de Web API service. Metoda de login este un post request care transmite datele de logare consistnd din numele de utilizator i parol. V rog s observai c RequestVerificationToken este folosit pentru a se evita cross-site request forgery attacks.
//in AuthenticationService.js myApp.factory(authenticationService, function ($http, $log, $location) { return { login: function (login, antiForgeryToken) { return $http({ method: POST, url: /api/Account/AuthenticateUser, data: login, headers: { RequestVerificationToken: antiForgeryToken } }); }, logout: function () { return $http.post(/api/Account/Logout); } }; });
Authentication Service
Asamblare datelor Singurul lucru care mai rmne de fcut este crearea unei forme care s adune informaiile de logare i un controler n care s putem folosi mpreun serviciile de autentificare i de utilizator. O form foarte simplificat de Login arat ca n exemplul de mai jos.
//in Login.cshtml @model Model.LoginModel @{ Layout = null; } @functions { private String GetAntiForgeryToken() { string cookieToken, formToken; AntiForgery.GetTokens(null, out cookieToken, out formToken); return cookieToken + : + formToken; } } <div class=container> <form name=loginForm class=form-signin> <input id=antiForgeryToken data-ng-model=antiForgeryToken data-ng-init=antiForgeryToken=@GetAntiForgeryToken() type=hidden/> <h2 class=form-signin-heading>Authentication</h2> <br /> <input type=email required=required name=username class=formcontrol ng-model=userData.username placeholder=Email address /> <input type=password required name=password class=form-control ng-model=userData.password placeholder=Password /> <label class=checkbox> <input type=checkbox value=remember-me>Remember me</label> <button type=submit class=btn btn-lg btn-primary btn-block ng-
When the user clicks login button, the form data is sent to the account controller. Using the authentication service, the data is sent in a POST request. In case of success we use the user service to store the data and redirect the user to the desired page, otherwise we show an error message and keep the user on the login page.
// in AccountController.js myApp.controller(AccountController, function AccountController($scope, $cookies, $log, $location, authenticationService, toaster, userService) { $scope.login = function (userData, loginForm) { if (loginForm.$valid) { authenticationService.login(userData, $scope.antiForgeryToken) .success(function (response) { if (response.status) { userService.user.username = response.data.userName; userService.user.isLogged = response.data.isLogged; toaster.pop(success, You are signed in!, , 2000, true); $location.path(/MembersPage); } else { toaster.pop(error, Invalid username or password!, , 2000, true);} }).error(function (data, status, headers, config) { $log.info(data);});} }; });
Acestea sunt lucrurile de care este nevoie pentru a implementa o autentificare rudimentar cu AngularJS.
18
arhitectur
Specicaii executabile
Alexandru Bolboaca
alex.bolboaca@mozaicworks.com Agile Coach and Trainer, with a focus on technical practices @Mozaic Works
pecificaiile executabile sunt o modalitate de a folosi testele automate cu scopul de a documenta funcionalitile unei aplicaii. Testele automate sunt tot mai utilizate n industria software cu scopul de a valida funcionarea corect a unei aplicaii. Validarea funcionrii corecte implic evident i un dialog cu persoanele care formuleaz cerinele (analiti business, product owners, product managers, ali stakeholders) i testele automate nu ne scutesc de documentarea cazurilor de utilizare ale aplicaiei. Pentru documentarea funcionalitilor exist cteva soluii, cea mai comun fiind scrierea de documente de specificaii. Problemele ncep n momentul n care funcionalitile se schimb, de cele mai multe ori documentele de specificaii nemaiinnd pasul. Motivele sunt variate: aceasta procedur este greoaie, adesea de durat si adesea documentele sunt create de alte persoane dect cele care scriu codul pentru aplicaie. Apare astfel riscul ca specificaiile s nu arate, pentru o perioad de timp, modul actual de funcionare. Testele s se concentreze pe comportaO soluie pentru a reduce risipa generat mentul utilizatorului sistemului. de rescrierea documentelor de specificaii ar fi folosirea testelor ca specificaii. Acestea verific deja codul i sunt sincronizate n Mai trebuie i alt fel de documentaie? permanen cu codul de producie. De ce n funcie de tipul de sistem software s nu fie scrise n aa fel nct s arate ca un dezvoltat este nevoie i de alte tipuri de document de specificaii? documentaie care nu pot fi generate automat din codul de producie. Iat cteva exemple: manualul utilizatorului, documentaie de Cum se scriu specicaiile executabile? Testele pot fi scrise ca specificaii executa- arhitectur, documentaie comercial, pentru operaiuni, etc. . bile respectnd cteva reguli: Evident c acest tip de documentaie Testele s fie scrise ntr-un asemenea fel trebuie s fie scris folosind documente sau nct s poat fi citite n limbaj natural. Numele testelor s foloseasc doar diagrame specifice. limbaj din domeniul de business, fr termeni tehnici. Testele s nu includ detalii de implementare n nume.
www.todaysoftmag.ro | nr. 18/Decembrie, 2013
Adrian Bolboaca
adrian.bolboaca@mozaicworks.com Programmer. Organizational and Technical Trainer and Coach @Mozaic Works
19
arhitectur
Specicaii executabile
Programatorii vin apoi i leag acest text cu funcii din cod, care apeleaz codul de producie, ntr-un mod foarte similar ca testele scrise n JUnit/NUnit/xUnit , dar puin altfel structurate. Aceste teste vor pica la nceput, urmnd s treac pe msur ce RSpec2 si Cucumber3 au fost dezvoltate funcionalitile sunt implementate. iniial pentru ruby, dar acum exist i variante n alte limbaje. De exemplu SpecFlow 4 este o adaptare pentru .Net, iar JBehave5 a Avantaje specicaiilor executabile? fost dezvoltat pentru tehnologii Java. M i n i m i z e a z m u n c a d e documentaie, legnd-o cu testarea automat. Cum se lucreaz cu specicaii executa Feed-back foarte rapid pentru persoabile nele care creeaz cerinele pentru produs. Specificaiile pot s fie scrise de persoaPot s tie oricnd ce funcioneaz i nele de business (analiti, product owners, cum, cu condiia s ruleze un set de teste. product managers, etc.) n limbaj natural Feed-back foarte rapid pentru dezntr-o form de genul urmtor: voltatori. neleg repede unde trebuie s Feature: Adition modifice sistemul actual pentru a aduga In order to avoid silly mistakes noile funcionaliti. Cashiers must be able to calculate a O unealt de dialog foarte util ntre sum persoanele de business i persoanele tehnice. Specificaiile sunt nelese de Scenario: Simple numbers ambele grupuri de persoane i evitm I have entered 4 at the calculator situaiile noi vs. ei. keyboard Crete ncrederea echipei c au un I have entered 3 at the calculator produs care face ce trebuie. keyboard I press sum The screen should display 7 as a Dezavantaje? result Nu se poate realiza dac nu avem teste automate pentru toate cazurile de Astfel oricine cunoate limbajul de utilizare a sistemului software. domeniu poate s neleag i s citeasc Trebuie meninut o disciplin acest test. riguroas n echipele care scriu testele pentru a se concentra asupra compor1 http://en.wikipedia.org/wiki/FitNesse tamentuluidin partea utilizatorului i 2 http://rspec.info/ 3 h t t p : / / e n . w i k i p e d i a . o r g / w i k i / pentru a folosi doar nume din limbajul Cucumber_%28software%29 4 http://www.specflow.org de domeniu. 5 http://jbehave.org/ Fitnesse1 este, istoric vorbind, prima unealt pentru a scrie teste executabile. Folosete tabele i poate fi folosit pe aproape orice tehnologie.
Unelte
Specificaiile executabile sunt o soluie foarte bun pentru a avea un feed-back constant i pentru a verifica dac aplicaia se comport precum se ateapt utilizatorii. Pentru a scrie specificaii executabile trebuie ca programatorii s stpneasc scrierea de teste unitare, de teste de acceptan i folosirea limbajul din domeniul business pentru care lucrm. Tranziia ctre specificaii executabile poate s fie treptat, n pai mici, pn ce dialogul ntre persoanele de business i dezvoltatori devine eficient. Folosind specificaiile executabile, analitii business pot s scrie n limbaj natural cerinele pe baza crora poart un dialog cu dezvoltatorii, n acelai timp crend testele de acceptan pentru aplicaie.
Concluzii
20
management
Ovidiu Dolha
rogramele de studiu superior din Romnia orientate spre informatic i calculatoare deseori includ cursuri de inginerie software, analiz i design software i managementul proiectelor. n ciuda aspectului iniial atractiv pe care cursuri de tipul acesta l arat, studenii deseori devin uor dezamgii ctre finalul lor, sau cel puin n comparaie cu alte cursuri (limbaje de programare, hardware, chiar i fizic, matematic), acestea fiind vzute mai puin interesante sau utile. n realitate, nu e vorba de o lips intrinsec pe care o au studenii n legtur cu aceste subiecte. O parte din problem const n abordarea teoretic a acestor materii i dificultatea pe care o au studenii n a nelege n mod fundamental coninutul. Aceasta rezult n nevoia de a nva pe de rost o parte bun din cursuri, fr a nelege cu adevrat principiile din spate. c, n mare parte, se poate aplica foarte bine i altor concepte (management de proiect, analiz i design software, arhitectur software, specificarea cerinelor software). Voi ncerca s expun pe scurt unele din motivele responsabile pentru situaia menionat, dar apoi m voi concentra n principal pe soluii care s-au dovedit a fi eficace i care ar putea s mbunteasc situaia ntr-o oarecare msur. Fr ndoial, una dintre cauzele principale ale conceptelor nenelese este educaia. Educaia, dup cum am menionat deja, ofer acces ctre o sursa valoroas de coninut, dar care din nefericire nu este ntotdeauna transmis eficient. Cnd vorbesc de educaie, includ att experiena colar n acest articol m voi concentra pe (pre-absolvire) ct i educaia din cadrul mbuntirea continu (.C.), una dintre organizaiei, deseori numit dezvoltare procele mai puin nelese practici din cadrul fesional. mi voi ndrepta atenia mai mult ingineriei software; e demn de menionat n Cluj, dac vei ntreba persoane care lucreaz n companii de dezvoltare software ce profesie consider c au, o bun parte vor rspunde inginer software. Sun bine, dar muli dintre ei doar dup ani buni de experien n IT ajung s neleag ce e cu adevrat ingineria software i ce implic ea. Motivul principal pentru care studenii nu neleg nsemntatea diverselor aspecte de inginerie software nu are legtur cu coninutul. Revizuind acele materii dup ani de experien n IT, descoperi c erau de fapt relevante i interesante. Chestiuni precum CMMi par foarte captivante i clar explicate. De ce nu aveam acelai sentiment i n momentul respectiv, cnd eram n facultate?
www.todaysoftmag.ro | nr. 18/Decembrie, 2013
21
management
mbuntirea Continu o practic de luat n serios
spre aceasta din urm deoarece este una n care avem mai mult control i flexibilitate, astfel nct m atept s descoperim soluii pragmatice cu rezultate imediate. Un motiv deseori invocat pentru educaia ineficient este lipsa abilitilor didactice. Studenii sau nceptorii nu se simt atrai sau inspirai de la bun nceput. De asemenea, lipsa entuziasmului profesorului sau mentorului se transmite foarte repede. Un alt motiv (i din punctul meu de vedere) dei mai rar invocat, este unul care contribuie mult mai mult. Acesta e lipsa unui context ataat materiei. n universitate, lipsa contextului uneori devine ridicol. Subiecte precum CMMi un model foarte abstract a crui esen implic un program real de .C. poate fi neles doar n contextul vieii n organizaie. Aceasta ns este necunoscut majoritii studenilor la momentul respectiv (unii vor avea locuri de munc n IT cnd sunt nc la facultate, dar i aa abia au nceput s descopere ce nseamn viaa n organizaie). n facultate este foarte dificil s oferi acest context, dar chiar i cnd vorbim de dezvoltare profesional ntr-o organizaie, prea des vedem aceeai lips. .C. trebuie cultivat ntr-un cadru potrivit, i din pcate chiar i organizaiile care par s neleag foarte bine conceptul tind s impun practica n loc s nvesteasc n educaie i n oferirea unui mediu prielnic. i aici se afl de fapt cheia. Propunerea mea pentru .C. este s o lum n serios. Aceasta presupune o serie de schimbri i ajustri pe care trebuie s le facem n organizaie, iar eu cred c cea mai bun abordare este bidirecional (pornind att de sus, ct i de jos, n acelai timp). Privind de sus, principala schimbare este practicarea .C. ntr-un mod ct mai transparent posibil . Cu siguran managementul senior din echipa de leadership practic .C., dar cnd i cum? Asigurai-v c devine clar pentru organizaie. Managementul senior ar trebui s-i fac un el din a fi cei mai buni la .C. Oamenii vor s afle despre deciziile luate la nivel nalt ntr-un mod bine calculat i informat (mai ales cele dificile), despre planificarea strategic, retrospective care iau n considerare date istorice (colectate de-a lungul timpului), riscuri calculate, managementul proceselor i al calitii la nivele de management senior, i aa mai departe. Dac e posibil, oamenii ar fi plcut surprini s vad chiar dovezi concrete ale acestor activiti: documente ajuttoare (de exemplu, analiza de decizie), rapoarte ale ntlnirilor, msurtori, liste i log-uri, orice poate inspira nivelele de mai jos. Conducerea prin exemplu se dovedete a fi unul dintre cele mai bune moduri de a induce schimbarea n cultura organizaional. Din pcate, aceasta funcioneaz i n cazurile n care practicile artate sunt slabe. Privind de jos n organizaie, atenia pe educaie trebuie ntrit . Majoritatea angajailor este dispus s nvee i s neleag, dar majoritatea profesionitilor IT este sceptic de la natur (i e foarte bine s fie aa). Pentru a-i ctiga, e important s vorbim concret, ceva ce poate fi cu adevrat solicitant cnd subiectul este .C. O metod bun e aceea de a spune poveti de succes. Identific cele mai bune proiecte unde .C. merge foarte bine i ofer cadrul potrivit pentru ca oamenii din aceste proiecte s-i spun povestea. ncurajeaz promovarea succesului prin .C prin metode gen sesiuni deschise, trguri interne, workshop-uri, i schimburi de experien ntre echipe. O abordare de tip trg intern a fost folosit de cteva ori n ISDC. Este un loc n care oamenii pot s arate ceva de care ei sunt mndri din viaa profesional. Poate fi o arhitectur inteligent, un design funcional interesant din produsul la care au lucrat, o component re-utilizabil sau, pur i simplu, practici bune pe care le-au colectat de-a lungul timpului ponturi utile ntr-un context sau altul. n orice caz, este o metod eficient i relativ ieftin de a-i aduce pe toi ntr-un loc i a genera un cadru prielnic dialogului. Un mediu informal e perfect pentru a ncuraja conversaiile prietenoase i deschise. Nu numai c un eveniment de genul acesta e o surs de motivaie, dar e incredibil s vezi cte lucruri noi i deseori relevante afl angajaii despre ceea ce fac colegii lor din alte proiecte i echipe. Alteori, metode mai puin intuitive se dovedesc a fi foarte productive. Un exemplu este ncurajarea oamenilor s nvee de la colegii lor. Aceasta presupune o oarecare mputernicire a ntregii organizaii i, n loc s i implici mereu pe aceiai seniori susintori puternici ai .C., implic-i i pe ceilali. Descoper persoane care vor face publicitate gratis i ncurajeaz-i n mod contient (mai ales dac sunt persoane cu putere informal). ncurajeaz de asemenea dialogul, nu i cenzura sau ascunde pe cei care au o opinie mai puin pozitiv despre .C. Cu ct se vor simi mai puin ascultai, cu att va fi mai greu s-i convingi. Deci e important s nu neglijm acest aspect, pentru c i acetia pot fi persoane cu putere mare informal. n cazuri de conflict de
22
23
programare
Drago Masarasan
Support engineer @ Endava
dragos.masaran@endava.com
Problema alinierii partiiilor a aprut odat cu conceptul de virtualizare i presupune folosirea de storage partajat de mainile virtuale. Vom prezenta pe scurt principalele platformare de virtualizare (VMware i Hyper-V) i modul cum trateaz fiecare problema alinierii corecte a partiiilor. Vom descrie pe scurt i unele concepte pe care le vom folosi ulterior: LUN, Fibre Channel (FC), iSCSI, Chunk, Block, Cluster. n cadrul storage-ului exist mai multe straturi implicate n procesul de aliniere. n principiu, fiecare strat este mprit n structuri de blocuri (blocks sau chunks). Fiecare vendor poate s foloseasc blocuri de mrimi diferite, acest lucru nereprezentnd o problem. Pentru noi este important s tim unde ncepe acel bloc ( starting offset ). Pentru a avea o performan maxim, offset-ul de nceput al sis-
Concepte de storage
temului de fiiere ar trebui s fie aliniat cu blocul din nivelul inferior de storage. Nealinierea celor dou limite va duce la operaii I/O adiionale i la degradarea performanei. Articolul Wikipedia Cylinder-headsector 1 este un bun nceput pentru a nelege conceptele legate de discuri fizice. n trecut, sistemele de operare nu luau n considerare alinierea corect a partiiilor. De exemplu, Microsoft a rezolvat aceast problem doar ncepnd cu Windows Server 2008. Pentru distribuiile Linux, cele care folosesc nc utilitarul fdisk sunt susceptibile s aib aceast problem. Implicit, sistemele de operare moderne vor ncerca s se alinieze la primul sector al unui track. Astfel n momentul instalrii sistemului de operare, acesta va detecta valoarea Cilindru/Cap/Sector (Cylinder/ Head/Sector CHS) de la BIOS care n cazul mainilor virtuale reprezint de fapt un BIOS emulat. Problema st n faptul c informaia returnat nu corespunde cu realitatea, probleme aprnd de exemplu la LUN-uri de peste 8 GB unde numrul de sectoare per track-uri este ntotdeauna raportat ca 63. Am definit anterior noiunea de bloc de
1 http://en.wikipedia.org/wiki/Cylinder-head-sector
24
date. Un bloc de date reprezint unitatea Mware cea mai mic de date care poate fi folosit n cadrul ESXi, exist mai multe pentru a stoca date. Blocurile discurilor modaliti prin care un storage partajat fizice vor avea ntotdeauna 512 bytes, dar poate fi prezentat unei maini virtuale: din motive de eficien i scalabilitate, 1. Virtual Machine File System (VMFS) vendori-i de dispozitive storage folosesc folosind Fibre Channel sau iSCSI, valori puteri ale 2 alea unui block fizic????. 2. Network File System (NFS) exportat Arhitectura NetApp folosete blocuri de 4 ctre un host ESX, KB (8 blocuri fizice), HP 3Par de 16 KB, iar 3. Raw Device Mapping prezentaEMC Symmetrix de 64 KB. rea direct a unui LUN ctre o main Lund ca exemplu NetApp, o operaie virtual, de scriere va folosi cel puin 4 KB i poate folosi multiple blocuri de 4 KB n funcie de mrimea datelor ce urmeaz a fi scrise. Problemele apar n momentul n care schema de partiionare a sistemului de fiiere a mainii virtuale nu respect limita din interiorul LUN-ului (Figura 1). Dac sistemul de fiiere al mainii virtuale nu este aliniat, pentru a citi un bloc de date este nevoie de dou apeluri la stratul inferior. Acest lucru duce la degradarea eficienei deoarece controlorul storage lucreaz n plus pentru a realiza o operaie Figura 2 de citire/scriere.
Att exporturile de tip VMFS ct i NFS sunt referite ca datastores n cadrul ESX. Dac este folosit NFS, stratul de abstractizare VMFS dispare ntruct directoarele mainii virtuale sunt inute direct pe mount point-ul NFS prezentat ca datastore. n cazul folosirii VMFS, figura anterioar are nc un nivel de abstractizare i arat astfel ca n Figura 2 Dac att VMFS ct i sistemul de fiiere al mainii gazd sunt nealiniate,
25
programare
Alinierea partiiilor n medii virtuale
numrul de operaii I/O adiionale este multiplicat. VMFS 2 folosea ca offset implicit 63 de blocuri, provocnd astfel nealinierea la nivel de I/O. VMFS 3 este aliniat implicit ntruct folosete 128 blocuri ca offset. Migrarea de la VMFS 2 la VMFS3 nu duce la alinierea datastore-urilor, pentru a realiza acest lucru fiind necesar copia pe un datastore nou. n cazul Raw Device mapping-urilor i a LUN-urilor mapate direct ctre o masin virtual, trebuie s fim ateni doar la alinierea la nivelul sistemului de operare gazd. Conceptul de aliniere nu se aplic NFS dect la nivelul sistemului de operare gazd. 2. Partiia printe Hyper-V, 3. Storage array. Se recomand folosirea de VHD-uri cu dimensiune fix, ntruct n cazul discurilor expandabile alinierea nu poate fi garantat i exist oricum o penalitate n performan n momentul folosirii lor.
Exist un numr mare de utilitare care permit detecia i corectarea nealinierii partiiilor. n cazul Windows cel mai uor putem verifica offset-ul din System Information (Start > msinfo32). Dac navigm ctre Components Storage Disks, n partea de jos putem vedea partition starting offset. Pentru Linux se poate folosi utilitarul Hyper-V fdisk astfel : n cadrul hyper -vizorului de la Microsoft, acesta suport urmtoarele fdisk -u -l /dev/sdX modaliti de a partaja storage ctre o main virtual: LUN-uri cu sistem de fiiere NTFS (VHD cu dimensiune fix, dimensiune expandabil dinamic i diferenial). Pass-through disk discuri ataate partiiei printe Hyper-V i asignate direct unei maini virtuale, LUN-uri mapate direct prin folosirea unui iniiator iSCSI. Aadar, o main virtual n Hyper-V trece prin trei nivele de storage: 1. Sistemul de fiiere gazd,
Detecie i corecie
26
programare
Extension Points
n acest articol vom descoperi punctele de extensie ntr-o aplicaie enterprise. Bineneles c aceste puncte de extensie se aplic pentru orice fel de aplicaie, indiferent de mrimea acestora. Cu ct o aplicaie este mai mare, cu att aceste puncte de extensie devin mai importante pentru a pstra calitatea codului ridicat, iar costul unei schimbri s fie ct mai redus. De foarte multe ori, adugarea unui numr prea mare de puncte de extensie ntr-o aplicaie simpl va duce doar la creterea complexitii codului, fr a aduce o valoare real aplicaiei n sine. Despre over-engineering , vom completa cu mai multe detalii n rndurile urmtoare. De nenumrate ori am observat c echipele ajung s i defineasc un numr foarte mare de extension points la aplicaia la care lucreaz, chiar dac acest lucru nu este necesar. Putem foarte uor s comparm aceste puncte de extensie cu filoanele de aur. Fiecare filon de aur este extrem de valoros, crescnd valoarea minei (aplicaiei)), dar n acelai timp echipa poate s ajung s sufere de febra aurului i s ncerce s defineasc puncte de extensie i n locuri unde nu avem nevoie de acest lucru. Punctele de extensie i permit s creezi aplicaii software care s nu aib legturi strnse ntre componente sau dependine externe. n cazul n care componentele sunt strns legate ntre ele, va fi foarte dificil s nlocuim sau s modificm o component din aplicaie. Dac nivelul de cuplare este ridicat, n momentul n care nlocuim o component din aplicaia noastr cu o alt implementare, putem s generm un efect de domino i s fie necesar s modificm nenumrate alte componente. Exist diverse moduri prin care putem s crem puncte de extensie. De la cele mai simple, care nu necesit modificri majore ale claselor pn la cele complexe care implic la rndul lor crearea diferitelor clase ajutoare. n rndurile urmtoare vom prezenta cteva moduri de creare a punctelor de extensie. Cel mai simplu exemplu de creare a unui punct de extensie este ilustrat la un exerciiu de TDD Kata. n cadrul exemplului respectiv era nevoie ca valoarea unui parametru s fie validat, iar n cazul n care aceast valoare fcea parte dintr-un domeniu predefinit, atunci trebuia s se execute o anumit aciune.
public class Calculator { private string baseValue; ... public void Add(string value) { if (value==null || value. Count == 0 || value == -) { baseValue = baseValue + -; } ... } }
validarea ntr-o metod separat. Dei acesta pare s fie un pas extrem de mic si simplu, acesta poate s fie primul pas spre crearea unui punct de extensie mult mai complex, folosind o metod virtual, un serviciu extern sau un modul separat care s se ocupe doar cu validarea datelor.
public class Calculator { private string baseValue; ... public void Add(string value) { if (ContainsDefaultValue(value)) { baseValue = baseValue + -; } ... } protected virtual bool ContainsDefaultValue(string value) { return (value==null || value. Count == 0 || value == -); } }
n acest caz, din momentul n care ncepem s scriem validarea ne dm seama Este extrem de important s apreciem c domeniul s-ar putea modifica. Pentru corect momentul creterii complexitii a fi pregtii n faa schimbrilor care se unui punct de extensie. n momentul n pot declana n viitor, putem s extragem care remarcm necesitatea unui punct de
www.todaysoftmag.ro | nr. 18/Decembrie, 2013
27
programare
Extension Points
extensie la codul pe care l-am scris, am putea ntr-o prim etap s l extragem ntr-o metod separat, dup care s lum n considerare eventualitatea crerii unui punct de extensie. Bineneles, cnd ncepem s lucrm la o aplicaie de dimensiuni mari, tim de la bun nceput funcionalitatea pe care fiecare component trebuie s o ofere i modul prin care acestea trebuie s fie pregtite pentru a putea s fie modificate ct mai uor. Moduri prin care putem s crem punct de extensie sunt nenumrate i de foarte multe ori cnd definim un punct de extensie ne folosim de mai multe mecanism, nu doar de unul singur. n cazul aplicaiilor de dimensiuni comenzi externe sau pe baza unei logici mari, pe lng crearea de puncte de exteninterne pe care o are deja implement. sie pentru fiecare librrie sau serviciu extern care este folosit de ctre aplicaie, Servicii Serviciile pot s ruleze n acelai proces exist deja o list de puncte de extensie ca i aplicaia noastr sau pot s ruleze ntr- despre care putem afirma c sunt canonice. un proces separat pe aceeai maina sau pe Aceste puncte de extensie nu lipsesc din o main diferit. n momentul n care se aplicaiile de dimensiuni mari i este neceajunge la declararea unui astfel de punct de sar s ne gndim la ele din faza de design. extensie, de foarte multe ori suntem deja n faza cnd o alt echip poate s lucreze Tracing la implementarea unui serviciu fr s fie Orice aplicaie, indiferent dac ruleaz nevoie s discute cu echipa de baz. sub Linux sau Windows, are nevoie de un sistem de logging. Acesta trebuie s ne permit s logm orice fel de coninut Fiiere de congurare Dei pare ciudat, un fiier de confi- din cadrul aplicaiei noastre indiferent gurare n format XML sau JSON poate s de modulul n care suntem. Totodat este conin definiia unui punct de extensie i necesar s putem controla locaia unde comportamentul pe care dorim s l avem. acest coninut se scrie. Un sistem de logare De exemplu, putem s avem mai multe ideal ar trebui s ne permit s schimbm fiiere de configurare, unde fiecare fiier locaia unde informaia se scrie i s adconine o expresie regular pentru valida- ugm locaii noi cu modificri minime rea aceluiai ir de caractere. n funcie de asupra codului. De exemplu, s putem scrie fiierul folosit, validarea i aciunea n sine informaia att n fiiere, ct i ntr-o baz de date sau ntr-un serviciu precum Service poate s difere. La baza punctelor de extensie stau Bus. Pe lng aceste proprieti, acesta tredesign patern-urile, fr de care ne este buie s ne permit s formatm textul i s aproape imposibil s le crem i s le l filtrm. Din aceast cauz, este bine s abordm sistemul de tracing ca pe un un folosim. Atunci cnd lucrm la o aplicaie, este extension points i s fim mereu pregtii s important a nu se fora apariia punctelor l putem nlocui cu costuri minime. Acest de extensie. n acest mod, meninem com- punct de extensie ar trebui s ne permit s plexitatea aplicaiei la cel mai mic nivel controlm formatarea textului, asculttorii posibil. Totui, n timpul dezvoltrii va fi (s putem aduga 1..n listeneri) i s filtrm necesar ca de nenumrate ori s refacto- informaia care se logeaz. rizm aplicaia pentru a putea aduga i suporta punctele de extensie de care avem Data access nevoie. Un alt punct de extensie extrem de Din aceast cauz este bine s identifi- important ntr-o aplicaie este data access cm punctele de extensie ntr-o faz ct mai provider. Orice aplicaie are nevoie de incipient, pentru a putea reduce ct mai o baz de date, indiferent de tipul ei mult costurile i pentru a le putea extrage relaional/non relaional. Chiar dac la ntr-un mod optim. E important ca punc- prima vedere, am putea s spunem c nu tele de extensie majore s fie identificate la va fi nevoie niciodat nevoie s nlocuim o faza de design, nerecomandndiu-se desco- baz de date cu o alt baz de date, trebuie perirea lor n momentul n care s-a nceput s fim contieni c la un moment dat va implementarea acestora. trebui s facem upgrade la o nou versiune n general, toate dependinele externe de baz de date. Acest update s-ar putea s pe care o aplicaie poate s le aib trebuie cuprind i modificri ale provider-ului, vzute ca puncte de extensie. Din pcate care vor putea fi mult mai uor fcute, aceast abordare poate s creasc mult dac punctul de extensie este pregtit cum complexitatea sistemului. Un bun exemplu trebuie. sunt operaiile I/O. Dei teoretic, putem n orice moment s schimbm stack-ul Cache pe care l folosim pentru a accesa discul, Pe lng o baz de date vom avea n general acesta nu se schimb. Totui nevoie i de un layer de cache. Pe pia, operaiile de I/O se grupeaz ntr-o com- la ora actual exist nenumrate soluii, ponent unic din mai multe motive, dintre dar n comparaie cu o baz de date, riscare menionm reutilizarea codului sau cul schimbrii provider-ului de cache este simplificarea acestuia. destul de mare cnd dezvoltm o nou
Interfee
Una sau mai multe interfee definesc contractul. Prin intermediul acestui contract se faciliteaz nlocuirea unui componente cu o alt component fr s fie necesar s facem modificri n componentele care o foloseau.
Clase abstracte
Prin intermediul claselor abstracte putem s definim punctele de extensie ntr-o manier asemntoare cu cea a interfeelor. Diferena major pe care o avem n momentul care folosim clase abstracte este c limitm funcionalitile pe care o component le poate expune prin intermediul unei clase (n cele mai multe limbaje de programare, o clas poate s extind cel mult o clas abstract). Totodat acestea ne ajut pe partea de versionare, avnd posibilitatea oricnd s adugm o funcionalitate nou n clasa de baz fr breaking code.
Metode virtuale
Ne permit definirea unui comportament default pe care un punct de extensie poate s l aib. Dac este nevoie, cel care creeaz un punct de extensie poate s suprascrie metoda virtual i s defineasc un alt comportament.
Module
Un punct de extensie poate s fie reprezentat printr-un modul care s permit uor nlocuirea altor componente , fr s fie necesar recompilarea sau reinstalarea aplicaiei. Putem s avem unul sau mai multe module care s fie pentru acelai punct de extensie al aplicaiei noastre. n orice moment, aplicaia poate s decid ce modul nregistrat s foloseasc pe baza unei
28
Concluzie
Lista cu toate punctele de extensie pe care le putem defini este extrem de lung. Cu ct o aplicaie este mai mare, cu att componentele ar trebui s fie mai decuplate, iar punctele de extensie mai clar definite.
Criptare
Partea de criptare a datelor apare n orice aplicaie care lucreaz ntr-o form sau alta cu date. Exist nenumrate moduri prin care putem s criptm datele folosind chei simetrice sau s algoritmi de hash. Din aceast cauz este bine s pornim de la premisa c acest algoritm va fi schimbat cel puin odat. n funcie de date, s-ar putea s ne trezim c este nevoie s folosim servicii care se ocup de criptarea datelor. n acest cazuri, punctele de extensie definite din prima faz a dezvoltrii ne vor fi foarte utile.
Securitate
Autentificarea, autorizarea i accesul la date i diferite funcionaliti se face aproape ntotdeauna controlat. Totodat, la ora actual trebuie s fim pregtii s suportm diferite modaliti de autentificare, de la Active Directory, la Facebook sau la cel clasic cu user i parola. Din acest motiv, avem nevoie de un puncte de extensie care s ne permit s facem autentificare i autorizarea utilizatorilor. Managementul i controlul la punctele de extensie se poate face n diferite moduri, de la diferite factory-uri pn la diferite Validare Validarea datelor i a comenzilor face framework-uri de dependency extesion. parte din fiecare aplicaie cu sau fr UI. Niciodat o component ce folosete un
Radu Vunvulea
29
management
e spune c adoptarea unei abordri agile a gestionrii proiectelor software este o cltorie. Aceasta este povestea cltoriei de pn acum a echipei noastre din cadrul firmei evoline. Fiind un studiu de caz, nu este o introducere n Scrum i nici o colecie a celor mai bune practici, ci mai degrab o prezentare a modului n care aplicm noi Scrum. Articolul este structurat n jurul con- plus, ne-am dorit s susinem estimarea cu ceptelor uzuale din Scrum. Majoritatea date statistice, pentru c aa ar deveni mult conceptelor apar n ordinea n care am mai plauzibil. nceput s lucrm cu ele. nainte de toate cred c este important s stabilim contextul n care Scrum fost aplicat n cazul nostru. Echipa noastr a fost solicitat s transfere o suit de aplicaii consacrate spre tehnologii i platforme noi. A fost clar de la nceput c acesta este un proiect pe termen lung. Mai mult dect att, nu a fost preconizat o lansare oficial n primul an de dezvoltare. Am avut timp s investigm noile tehnologii i s implementm un prototip. n timpul acestei faze nu am avut planning i nu am lucrat n sprint-uri. Pri ale prototipului au fost ulterior preluate n proiectul propriu-zis. Scopul planificrii a fost s oferim un fel de predictibilitate pentru product owner. Odat ce am avut un set de cerine bine definite aveam nevoie de o estimare: ct de mult timp ne va lua s le implementm? Pentru c, desigur, product owner-ul aprecia o estimare doar n timp. n
Papp Lszl
Context
Planning
Cerinele pentru proiect au fost descrise n OneNote nc din faza de prototip. Informaia este organizat ntr-un notebook partajat pe care OneNote l sincronizeaz automat astfel ca toi utilizatorii s vad modificrile. Acest depozit central este, de asemenea, util atunci cnd se analizeaz cerinele i se mpart n sarcini (sau task-uri). Stocheaz ntrebri i rspunsuri, rezumatele meeting-urilor n care am discutat problemele deschise cu product owner -ul sau cu alte persoane familiare cu domeniul, cu aplicaia existent i cu funcionalitatea cerut. Backlog -ul este extras din OneNote. Funcionalitile (sau feature-urile) sunt prioritizate de ctre product owner n funcie de ct de apreciate vor fi acestea de ctre client, deci pe baza beneficiilor aduse clienilor. Product owner-ul este, totodat, cel care decide cte funcionaliti ar trebui s intre ntr-o livrare. Noi facem planificarea numai pentru funcionalitile selectate pentru o livrare. Acest lucru nu se ntmpl
Product backlog
30
Msurarea task-urilor
Story point-uri
primei runde. n cazul unor task-uri foarte specifice, cum ar fi cele legate de baza de date sau de interfaa grafic, tim n avans cine va lucra la ele i lsm aceste persoane s plaseze task-urile n coloana iniial. De obicei, aceste task-uri nu-i schimb poziia n runda a doua. Velocity -ul este cea mai important metric pe care o folosim. l msurm continuu n scopul de a prognoza i de a colecta datele istorice necesare pentru a susine estimrile noastre. Avnd n vedere mrimea backlogului i velocity -ul, ambele exprimate n story point-uri, putem calcula numrul de sprint-uri necesare pentru implementarea backlog-ului. Am profitat de acest lucru atunci cnd a fost specificat pentru prima oar o dat de lansare. L-am informat pe product owner c cel mai probabil nu vom putea livra ntregul backlog pn la data respectiv. Nu a fost prea fericit cnd a aflat, dar n cele din urm am analizat mpreun backlog-ul i am amnat task-urile pe care le-a considerat mai puin importante pentru prima versiune. Alegerea velocity-ului pentru calculul de mai sus nu este ntotdeauna clar dup mai multe sprint -uri. Voi descrie dou metode. n cazul de mai sus n care a fost specificat data lansrii primei versiuni, am ales cea mai recent valoare. Pn atunci, velocity-ul crescuse continuu, astfel argumentul meu a fost: Uite, chiar i cu cel mai mare velocity al nostru de pn acum ne va lua cel mai probabil cinci sprint-uri s terminm backlog-ul i sunt doar trei disponibile pn la data limit. Cea de a doua metod ia n considerare mediana valorilor
Velocity
Task-uri de referin
31
management
Retrospectiv
Ce urmeaz?
msurate de-a lungul sprint-urilor. n opinia mea, cea de-a doua metod ar trebui s ia n considerare doar sprint-uri n care componena echipei a fost n mare aceeai. n cazul n care echipa crete de la 5 membri la 10, velocity-urile anterioare obinute de echipa de cinci persoane sunt foarte puin relevante.
Feed-back
Primim feed-back cel puin o dat la dou sptmni n meeting-urile de followup, n care facem demo la ce am lucrat recent. n acest fel putem prezenta evoluia funcionalitilor pe parcursul implementrii lor i avem posibilitatea de a ne adapta la modificrile de cerine sau chiar la cerine noi intervenite. nainte de fiecare follow-up trimitem un mail product owner-ului care conine dezvoltrile recente din proiect. Acest mail descrie tot ce merit prezentat, deci joac rolul unei agende pentru follow-up. Toat echipa particip la follow-up-uri i fiecare membru al echipei i prezint contribuia. Principalul beneficiu al implicrii ntregii echipe n aceste ntlniri periodice este c dezvoltatorii i product owner-ul pot interaciona. Sunt clarificate probleme deschise, sunt transmise informaii contextuale legate de funcionaliti n curs de implementare iar reaciile, feed-back-ul sunt recepionate n mod direct i la cald.
Feature ownership
Avem sprint-uri dedicate system testului i fixrii bug-urilor. Nu avem backlog pentru acest tip de sprint- uri, deoarece majoritatea task-urilor apar n decursul sprint-ului. Folosim un action list n loc de backlog. Acesta este un fiier Excel n care gestionm bug-urile. Fiecare punct din action list are o prioritate care specific ordinea n care acestea urmeaz s fie abordate. Atunci cnd este gsit un bug, nainte de a fi introdus n action list, se discut la faa locului cu programatorul cruia i-a fost alocat task-ul aferent pentru a vedea dac bug-ul poate fi fixat rapid. Dac se poate, atunci bug-ul nu va mai fi nregistrat. Am preluat aceast metod de la Henrik
System Test
32
Referine
[1] Power, K. Using Silent Grouping to Size User Stories. (2011) http://systemagility.com/2011/05/22/ using-silent-grouping-to-size-user-stories/ [2] Kniberg, H. Scrum and XP from the Trenches. (2007) [3] Kniberg, H. Elephant Carpaccio facilitation guide. (2013) http://blog. crisp.se/2013/07/25/henrikkniberg/ elephant-carpaccio-facilitation-guide [4] Patton, J. The new user story backlog is a map. (2008) http://www.agileproductdesign.com/blog/ the_new_backlog.html [5] Rogalsky, S. How to create a User Story Map. (2012) http://www.agileproductdesign.com/blog/ the_new_backlog.html
33
startups
startups
cum zece luni scriam un articol n TSM despre ecosistemul startup-urilor din Cluj. Pe scurt, situaia din primvar era caracterizat printr-o agitaie brownian, n care toi actorii implicai: startup-erii, organizatorii de evenimente pentru startup-uri i mediul de business erau cuprini de buzzword-ul startup i ncercau diverse iniiative proprii pentru a fi n trend. n urm cu un an sau doi, nu existau startup-uri cu vizibilitate n pia, iar pn acum opt luni, startup-urile clujene erau puine i, relativ, la nceput, mai cunoscute fiind: Squirrly, TXT Feedback, UseTogether, Mira, KeenSkim i ShareYourCart, care au reuit s atrag atenia comunitii, mai ales prin obinerea de finanare din partea unor acceleratoare internaionale. Un efect benefic, parial datorat i hype-ului din jurul acestora, a fost faptul c au scos la lumin i alte idei cu potenial de startup sau clujeni care deja ncercau s pun pe picioare un startup. n mod natural, creterea numrului startuper-ilor a generat, n comunitate, o atmosfer uor competitiv ntre organizatorii de evenimente. Att Startup Weekend, cat i Startup Live au revenit n for cu cte o a doua ediie, mult mai mari i mai bine organizate dect precedentele. Mai ales c au beneficiat de ajutorul generaiei anterioare i de vizibilitatea obinut de ctigtorii primelor ediii. Existau i evenimente noi, de exemplu Open Connect, care i propunea s acopere partea de identificare i introducere n comunitate a antreprenorilor nceptori, interesai de startup-uri, completnd astfel eforturile Open Coffee. Pe lng evenimentele cu agend clar i format deja consacrat, au aprut iniiative i concepte mai generice, cu scopuri diferite: de la facilitarea interaciunii necesare construirii unei comuniti, Startup Lounge, la obiective educaionale, Tandem, sau chiar i anunuri ce prevesteau acceleratoare/incubatoare locale: StepUP, Spherik i NextPhase. n acest context efervescent, articolul din primvar prevestea o perioad de sedimentare i stabilizare i sublinia nevoia unor programe de termen mediu i lung care s susin startup-urile n zona Valley of Death, considernd prematur lansarea unor acceleratoare sau incubatoare. Previziuni realiste pentru lansarea unor astfel de programe fiind abia 2014-2015. Meritul principal al agitaiei din primvar a fost ncurajarea celor care cochetau cu ideea lansrii unui startup s[ fac primul pas. Lansarea noilor startup-uri a dus la apariia unei noi generaii care s-a coagulat n jurul evenimentelor, iar acum exist un numr minim de oameni pe care putem s-l numim comunitate. De aici nainte se
Marius Mornea
marius.mornea@todaysoftmag.com Inginer interesat i implicat n diverse activiti IT, de la dezvoltare, management, pn la educaie i jurnalistic n cadrul Epistemio, UTCN i TSM
34
imprim o distincie clar mai multor evenimente de calitate pentru startup-uri i a investitorilor (bineneles, atrai de oamenii din comunitate). nainte de a reveni la contextul actual i de a analiza n detaliu ce se ntmpl n ecosistem, merit s menionm principalele evenimente i evoluii din ultimele 6-8 luni. Exist dou evoluii majore: evenimentele formale i interaciunea informal. La capitolul evenimente stm foarte bine, avnd o gam foarte larg de teme i organizatori: lansri de revist, evenimente business mari organizate de clusterul IT (Cluj IT Innovation Days) sau Business Days, evenimente tehnice sub egida principalelor comuniti profesionale din Cluj (de ex. ITCamp), evenimente organizate pentru studeni de ctre studeni (#defineCluj) i multe altele. Majoritatea acestor evenimente a implicat scena startupurilor clujene prin sesiuni de pitching i prezentri. Surprinde i diversitatea mare a partenerilor de dialog: mediul de business
35
startups
Ecosistemul startup-urilor din Cluj
necesare succesului. Bilanul aproximativ din acest moment este: 20 startup-uri cu produs lansat pe pia, 16 care i vor lansa produsul n urmtoarele luni, iar 6 au fost nchise. Dintre acestea, 5 au participat ntr-un accelerator, dou au gsit investitori, iar restul sunt bootstrapped sau n cutare de investitori. De menionat c exist startupuri care au echipa format din membri ai comunitii clujene (n special partea de development) n combinaie cu oameni din alte orae din Romnia sau alte ri (vestul Europei i SUA). Evenimentele dedicate startup-urilor au suferit i ele transformri. Dup o pauz de mai multe luni, Open Coffee renate sub o alt form, mai structurat i mai apropiat de nevoile comunitii. Cluj Hub nu a mai organizat Startup Lounge n aceast toamn, dar va ncheia n curnd prima ediie a programului Step Up. Cluj Cowork e din ce n ce mai deschis startup-urilor i evenimentelor dedicate (mrturie fiind organizarea primei ediii Startup Pirates din Romnia). Spherik Accelerator se lanseaz n doar cteva zile i are planificate deja cteva workshop-uri. Tot n decembrie se va deschide i Chaos Computer Club care se poziioneaz ca un spaiu pentru IT-isti i startup-eri. Iar Startup Weekend i Startup Live sunt deja binecunoscute i i anun ediiile de primvar. Pentru cei familiari cu ecosistemul, se remarc lipsa Open Connect. Era de ateptat nc din primvar, ca n procesul de sedimentare i maturizare al iniiativelor, unele s se piard, att ca focus, ct i ca relevan. n momentul de fa comunitatea ncepe s acopere implicit unele nevoi, cum ar fi atragerea altor startup-eri, iar evenimentele mari ofer suficiente ocazii de pitching (Business Days, ITDays, etc), rolul evenimentelor de nivel introductiv fiind mai degrab unul de facilitare al comunicrii ntre membrii existeni si cei noi. nainte de a trece la a treia mare categorie de actori, merit menionat c exist i programe de nivel regional, naional i internaional care influeneaz comunitatea clujean. La nivel regional apare interes din partea unor programe de dimensiuni mari, de exemplu Cluj Youth Capital 2015, care vrea s dedice un program startup-urilor. Exist i programe naionale care au ales s fac prezentri la Cluj, de exemplu RICAP i Google Export, programe ce ajut proiectele de cercetare s fac tranziia spre comercializare, n parteneriat cu companii americane. Startup-urile pornite din zona de cercetare fiind i unul din principalele subiecte de discuii la conferinele de planificare strategic a investiiilor din fonduri europene, dedicate cercetrii, n urmtorul exerciiu financiar 2014-2020. Dar pe lng aceste programe formale, startup-erii clujeni profit i de evenimentele din regiune, participnd la How to Web, ediii Startup Weekend i Startup Live din alte orae, i chiar la evenimente internaionale, gen Pioneers Festival. A treia parte component a ecosistemului o reprezint partenerii care ncep s interacioneze cu startup-urile. Cei mai activi, n aceast categorie, sunt partenerii din mediul educaional, mai exact universitile. Acestea au rspuns prompt diferitelor oportuniti de implicare, pornind de la aderarea la cluster , pn la prezena la evenimente, participarea la discuii i chiar construirea i susinerea unor echipe de studeni, care au avut un real succes la competiii internaionale precum Imagine Cup, Digilent, i au continuat proiectele sub forma unor startup-uri. O discuie interesat a avut loc la #defineCluj (eveniment orientat spre studenii tehnici doritori s nceap un startup), unde s-a abordat subiectul implicrii universitilor (UTCN, UBB) n educaia antreprenorial. Practic o nevoie, din perspectiva startup-urilor, este gsirea de angajai sau co-fondatori, i neputnd concura cu salariile firmelor de IT, sunt obligai s se orienteze spre studeni doritori s ncerce o iniiativ, nainte de a fi sub presiunea angajrii. Pe de alt parte, exist proiecte de cercetare care pot deveni startup-uri cu inovaii solide, dar n lipsa experienei antreprenoriale n echip, rmn doar cu obiectivele de cercetare atinse, dar cu potenialul de business nefructificat. O soluie propus a fost instituirea unei catedre private, n colaborare cu Internaional Business Club Cluj, care s ofere studenilor ocazia aprofundrii domeniului antreprenorial cu suportul unor oameni de business de succes din mediul local sau internaional. Sigur i firmele de IT urmresc ce se ntmpl pe scena startup-urilor, sau ar trebui s-o fac din dou motive. n primul rnd, marea majoritate a startup-urilor vor eua i, fondatorii acestora (n cazul n care nu vor avea alte iniiative), i vor caut un job. n al doilea rnd, pe termen lung, este foarte probabil ca industria de outsourcing s se orienteze spre dezvoltarea i marketizarea de produse software proprii i atunci vor fi la mare cutare product manager-ii, adic acei oameni care vor ti cum s construiasc un produs, s fac customer development, s l lanseze i s ctige traciune. Iar aceia care vor fi clii deja n toate aceste domenii sunt startuperii. O confirmare a acestui interes vine din deschiderea cluster-ului Cluj IT, n calitate de reprezentat al intereselor companiilor IT, spre colaborri cu startup-urile clujene. Membrii clusterului sunt mai mereu prezeni la evenimente, de toate dimensiunile, att formal, prin proiecte i strategii, ct i informal, prin implicarea individual n diverse programe de educaie antreprenorial. Dintre aceste programe menionm Tandem, organizat de GRASP i workshopurile organizate de JCI n colaborare cu oamenii de business din Cluj. Acetia din urm jucnd destul de des rolul de speakeri sau mentori ( de exemplu Philipp Kandal i Clin Vduva). Posibilitile de colaborare fiind multiple, de la schimbul de informaii, pn la iniiative de HR sau identificarea oportunitilor de parteneriat: finanri, co-fondatori, spin-offs, intraprenoriat sau chiar consum de servicii/produse create de startup-uri. n final a meniona administraia local, care a nceput s participe la evenimente i s gestioneze programe cu vizibilitate mare. Am mai pomenit Cluj Youth Capital 2015, dar s nu uitm gradul foarte mare de accesare al finanrilor pe SRL-D, cel mai mare din ar cu un total de 1267 din 10220 (locurile doi si trei 1091, 669, fiind ocupate de Bucureti i Timi). Dei lipsesc proiectele de colaborare concret, exist vizibilitate i deschidere spre dialog. nc lipsesc multe elemente pentru a avea un ecosistem cu adevrat clit. n primul rnd nu exist poveti de succes, obinerea finanrilor seed (10-50 de mii de euro) care pot fi considerate doar un pas spre succes. Nu s-a ajuns nc la finanare de tip series A (200-500 de mii de euro) i probabil va mai dura pn s vedem una la un startup din Cluj, deoarece un startup n aceast situaie necesit traciune i product-market fit. Nici la partea de clieni i cashflow sntos nu avem nc startup-uri care s se remarce. Poate Moqups e excepia care genereaz venituri i este recunoscut n pia. n materie de evenimente i programe suntem pe drumul cel bun, dar mai e nevoie de timp ca aceste iniiative s ctige constan i s continue s creasc nivelul calitativ al coninutului. Dup cum menionam la nceput, piaa nc nu este pregtit s alimenteze constant
36
37
startups
SpotTune
n bun profesor mi-a spus o dat: Dac trebuie s faci ceva de mai mult de dou ori, f un program care s fac asta pentru tine! Nu am fost convins n totalitate de acest adevr la momentul respectiv, dar ptruznd tot mai mult n era tehnologiei am nceput s fiu din ce n ce mai convins de acest adevr. Adevrul pe care l-am constatat este c noi oamenii stm foarte prost la capitolul task-uri repetitive. i aa i trebuie s fie s lsam tehnologia s se ocupe de ele i noi s ne bucuram mai mult de lucrurile cu adevrat importante. SpotTune a pornit de la o idee simpl c dup un an de zile ai sacrificat 2-3 filme bune pentru a-i porni care mi-a venit n timpul facultii. Dup sau opri WiFi-ul de la telefon, nu? Te-ai trezit vreodat n timpul unei opere, n mijlocul celei cum bine tii, n perioada aceea toi suntem persoane foarte ocupate i voiam mai frumoase arii din acea oper, cu telefonul din buzunar dornic s fac ceva n privina asta. Mi-am lasat s acompanieze orchestra? SpotTune va putea oferi utilizatorului imaginaia s zboare i aa a aprut, ei i opiunea de a-i pune pe silenios telefonul i / sau a trimite bine, ideea SpotTune. Aveam nevoie de o un mesaj automat oricrei persoane care ncearc s te contacteze aplicaie cu adevrat inteligent care s tie ntr-un interval prestabilit de timp. SpotTune i va oferi posibilitatea s setezi un astfel de proces s fac lucruri personalizate pentru mine. Voiam s i pot trimite un mesaj automat automat cu doar cteva tap-uri. Singurul scop este acela de a face prietenei cnd ieeam de la facultate pen- viaa mai uoar utilizatorului. Pe lng aceste opiuni, aplicaia va nregistra i timpul pe care tru a ne vedea, sau mamei pentru a pregati masa. Voiam s am telefonul pus pe silent utilizatorul l-a salvat, automatizndu-i procesele. Fiecrei aciuni automat n toate locurile pe care le frecven- i va fi asociat un anumit numr de secunde care va fi adunat i tam i cereau asta conferine, cursuri, biseric. Voiam s mi stocat local. Feed-back-ul acesta e un element important care nu anun prietenii prin mesaje/mail-uri cnd ajungeam n anumite trebuie neglijat. Urmtorii pai n dezvoltarea aplicaiei este de a crea aplicaia locaii. Voiam s mi se porneasc Wifi automat cnd ajungeam acas, pentru c aveam un router i s mi se opreasc conexiunea web pentru a permite utilizatorului de a-i introduce aceste evenimente de pe aplicaia web, ca mai pe urm s fie sincronizate de date. Poate deja v regsii ntr-una din aceste situaii. Scenariile de mai sus sunt numai cteva din multele mini- cu telefonul. SpotTune este menit pentru a face viata mai buna utilizatoritask-uri care, fr s ne dm seama, ne mnnc ntr-un mod subtil din timp. De aici i ideea SpotTune tune your spot. Ideea lor. Task-urile pe care tie s le fac pot fi combinate posibilitile aplicaiei este de a seta diferite evenimente/aciuni care s se sunt variate. De aceea, pe website-ul aplicaiei www.spot-tune.com ntmple n diferite locaii i/sau la anumite intervale de timp. se pot aduce orice sugestii de task-uri care ie, ca utilizator i-ar face viaa mai bun. Lsai-v imaginaia s zboare! Simplu i eficient. SpotTune ncearc s automatizeze aceste procese is introduc fluena n user experience-ul oferit de noile telefoane mobile. Principiul e simplu: setezi o dat, te bucuri de mai multe ori. Un exemplu simplu. n medie, un posesor de smart-phone (de orice fel) i activeaz sau dezactiveaz WiFi-ul sau traficul de date de minim patru ori pe zi din diverse motive. Procesul e unul relativ scurt , dar care dup foarte puine repetri devine laborios: deblocheaz ecranul, trage n jos de bara de notificri, apas pe butonul de WiFi, ateapt. Durata procesului e de aproximativ 15 secunde, presupunnd c nimic nu intervine. Dup un calcul simplu vedem c omul nostru cu telefon detept cheltuie aproximativ 7 minute pe sptmn ceea ce echivaleaz cu aproximativ 6 ore pe an de pornit i oprit WiFi-ul telefonului. Cam ciudat s tii
George Platon
38
startups
CTF365
n Octombrie 2011, am nceput proiectul HackaServer, o platform de testare a securitii web folosind puterea crowdsourcing-ului. n timp ce dezvoltm aplicaia HaS, am fost nevoii s cutm un mod prin care s pregtim un spin-off ( produs secundar, nou, derivat) n caz c lucrurile nu decurgeau aa cum am planuit. Trebuie s menionez c proiectul HaS nu este nc deschis pentru afaceri din cauza unui simplu motiv: Suntem o echip foarte mic. nvarea securitii informaionale prin gamificare nu este un concept nou. De fapt, este chiar destul de vechi, de la nceputul internetului. Se numeste CTFCapture the Flag. Renumita conferin pentru securitate informaional DefCon, are una dintre primele competiii CTF. Dac dorii un portal de CTF-uri putei verifica CTF Time pentru a vedea unde are loc o competiie CTF (n industria securitii informaiei). Astfel de competiii sunt organizate de Faculti de Informatic, companii internaionale sau chiar agenii guvernamentale. Cel mai bun mod de a nva este acela de a nva prin practic (hands-on), iar gamificarea exceleaz la acest capitol, avnd rezultate foarte bune cnd vine vorba de mbuntirea abilitilor/competenelor, educaie i pregtire (antrenament). nvarea securitii informaionale prin gamificare ar spori implicarea studenilor/angajailor, ar crete capacitatea de reinere a informaiilor i ar accelera procesul de nvare. Pe lng aceste avantaje, pentru student i/sau angajai este ceva distractiv, provocator i practic. Competiiile CTF din ziua de azi sunt foarte rspndite i diferite prin concept i design. Pe lng frumuseea i atmosfera din jurul lor, de apreciat sunt dedicaia i efortul echipelor participante la fiecare competiie CTF , dar mai ales efortul celor care concep sistemele i aplicaiile respective. Cu toate acestea, competiiile au cteva probleme, dar majore care in de modul n care sunt concepute i organizate: Nu dureaz foarte mult- n ziua de
O scurta recapitulare:
De ce CTF?
azi, competitiile CTF dureaz ntre 24h i cteva zile, sptmni cel mult. Rsfirate i izolate- Nu se organizeaz ntotdeauna pe internet i trebuie s fii prezent n acea camer/cldire. mprtiate -Se ntmpl peste tot n lume dar, fiind mprtiate i scurte, implicit sunt i mici. Nu au nici o valoare/Nu conteaz - Deoarece nu dureaz foarte mult i sunt izolate, departamentele de Resurse Umane nu cer experien n asemenea aciuni cnd angajeaz n domeniul securitii informaiei. Competiii bazate pe un scenariu cu foarte multe restricii i reguli. Nu sunt scenarii bazate pe realitate. Noi, echipa din spatele CTF365, am decis c este timpul pentru a schimba modul n care CTF este conceput i organizat printr-o nou abordare propulsnd jocul la scar mondial. Scopul nostru este de a crea o replic real a internetului, unde profesioniti n domeniul securiii informaionale, studeni si entuziati ai domeniului s aib posibilitatea de a se antrena continuu pe servere i infrastructuri adevrate create de profesioniti, i nu pe nite servere vulnerabile. Practic construirea unui internet n Internet unde user-ii pot ,,hcui,, n voie pe orcine oricnd i orict fr restriciile internetului real.
Pot experimenta noi configuraii de server i pot vedea dac acestea pot fi vulnerabile. Companii de Securitate Pot testa WAFs (Web Application Fiewall) sau orice software n dezvoltare, precum i echipamente hardware de securitate C o m p a n i i l e d e F o r m a r e i n Domeniul Securitatii Pot mbunti capacitile studenilor prin testarea lor n situaii reale/bazate pe realitate. Re cr utori C e r t i f i c ate l e d e Securitate sunt foarte importante, dar performanele candidailor i realizrile acestora ca profesioniti n domeniul securitii conteaz cel mai mult ntr-un interviu. Organizaii de securitate, precum OWASP promoveaz informaii legate de securitatea informaional printre web developers . C o n f e r i n t e l e I N F O S E C Participanii vor cu adevarat s se distreze i mai mult, vor ca realizrile lor s nu fie n zadar.
Red & Blue Teams, specialiti CERT/CSIRT Specialiti n securitate ofensiv i defensiv i pot mbunti abilitile cu ajutorul unor scenarii bazate pe realitate. CTOs, Administratori de Sistem
Ne-am ntrebat i noi acelai lucru, dar se pare c am reuit s ne descurcm pn acum. Dei mai sunt multe lucruri de fcut, Iaas-ul (Infrastructure as a Service) nostru este destul de flexibil i capabil pentru a imita lumea real. Flexibilitatea platformei CTF365 permite utilizatorilor s-i conecteze propria infrastructur, fie c este cloud based, privat sau stocat pe servere dedicate. Am demonstrat i n trecut c este posibil s testezi serverele din cloud . Mai mult de att, am avut un Metasploitable n cloud. Putei citi acest articol chiar aici pe Rapid7Community.
39
startups
CTF365
Companiile i organizatiile pot obine propria lor infrastructur CTF n cteva minute i toate obiectivele atinse de utilizatorii lor pot fi adugate la performanele generale ale angajailor. n acest moment, CTF365 este n alfa testing, ceea ce nseamn c ruleaz cu un numr mic de echipe (peste ~100 de echipe) i de asemenea exist peste 11000 de utilizatori i peste 900 de echipe din toat lumea care sunt gata de joc. Fiind n stagiul alfa nseamn c suntem nc n faza de dezvoltare, iar cei care au primit acces la stagiul alfa i la viitorul stagiu beta pot experimenta i vedea cum va arta versiunea versiunea final . Mai trziu, cnd vom ncepe a mbunti capacitatea hardware vom fi gata de a lasa pe toat lumea s participe. n etapele alfa i beta majoritatea utilizatorilor/juctorilor sunt experi n securitate de la diferite companii de testare a securitatii, companii de training pe securitate . Printre recomandri, acceptm de asemenea i experi Infosec, precum i instructori/profesori Infosec care solicitacces la faza alfa. n cazul n care dorii accesul mai devreme, v rugam s ne informai i vom ncerca s v oferim acest lucru. Securitatea nu va fi niciodata perfect, dar poate tinde ctre perfeciune. Potrivit sursei Frost&Sullivan, se prezice c ocuparea locurilor de munc n cadrul experilor n securitatea informaiei va crete cu 332,000, ncheind anul cu un numr de 3.2 milioane de experi n securitate i ajungnd n anul 2017 la un numr de 5 milioane. Pe lng profesioniti cu diplom, exist peste 25 milioane de utilizatori ai forum-urilor de administrare/ securitate/hacking. Aa cum am mai spus nainte ntr-un interviu, internetul se dezvolt mult mai repede dect capacitatea lumii de a oferi administratori de sistem bine pregtii, precum i programatori profesioniti bine pregtii n domeniul securitii. Exist un decalaj tot mai mare ntre aceste dou lucruri, iar cineva trebuie s-l rezolve sau cel puin s ncerce. CTF365 nu este un joc. Este o platform de formare pentru experi n securitate i pentru industria TIC, care implementeaz concepte CTF i influeneaz mecanicile gamificrii pentru a mbunti rata de retenie i a accelera procesul de nvare/ antrenare. CTF365 este un internet n interiorul Internetului unde utilizatorii i vor crea propriile servere i unde vor experimenta servicii ale vieii reale, cum ar fi platformele de microblogging precum Twitter, reele de socializare precum Facebook sau Google+, servicii de e-mail precum Gmail i Yahoo, pentru ca n final, ei s poat face orice doresc cu aceste servicii. Spre exemplu, n lumea real exist GoDaddy cnd vine vorba de nregistrarea domeniului, nu? Noi avem GoGrandpa.365 unde utilizatorii i vor putea nregistra propriile domain.ctf sau domain.365. Utilizatorii pot nva noi tehnici ofensive sau pot nva de asemenea i tehnici defensive. Dezvoltatorii Web i pot antrena abilitile de a crea aplicaii stabile i pot nva cum s i apere aplicaiile mpotriva atacurilor cibernetice. Experilor n securitate, studenilor n acest domeniu, dar i dezvoltatorilor web i administratorilor de sistem, CTF365 le ofer oricnd soluii eficiente. Apelnd la comparaii sugestive- CTF365 este ca un spaiu imens de antrenament al armatei sau ca un simulator foarte scump unde piloii sunt pui n mijlocul unor situaii neateptate/critice, fr a fi vtmai.
Concluzii
Marius Corci
Co-fondator @ CTF365
marius@ctf365.com
40
management
Cum s menii succesul unui joc mai mult de doi ani de la lansare?
Care este secretul succesului acestui joc marca King, n contextul n care industria de gaming este ntr-o continu cretere, competiia devenind din ce n ce mai puternic, iar jocuri cu mecanici, design i modele de business noi apar n mod constant? Nu cred c se poate vorbi despre o reet care s garanteze succesul, dar uitndu-ne la alte aplicaii (indiferent de specificul lor), putem cel puin nva din greelile altora, fiind ateni mai ales la modul n care au reuit s treac peste piedicile inerente n dezvoltarea de software. nc dinainte de lansare, se tia c Bubble Witch Saga va fi un joc cu o mecanic deja clasic. De aceea, am ncercat s aducem un element de noutate, i anume povestea. Clatoria (saga) juctorului a avut un scop multiplu: diferenierea de alte jocuri de acelai gen, dar i o retenie semnificativ mai bun. Aceast cltorie se traduce pentru juctor att printr-o cretere a skill-urilor n joc, prin mrirea gradual a dificultii nivelurilor sau prin introducerea de blockers (care nu sunt imposibil de depit), ct i prin interaciunea cu ali juctori prietenii de pe Facebook. Partea de interaciune social a fost unul dintre factorii care a meninut Bubble Witch Saga mai bine de doi ani n topuri. Prietenii se ajut n joc: i trimit unul altuia elemente ajuttoare precum vieile (sau energie) sau booster-e pentru a trece peste anumite bariere. Elementul
ubble Witch Saga are 26 de luni de la lansarea iniial pe platforma Facebook i 16 luni de la intrarea pe piaa de mobile. Cu toate acestea, jocul reuete s se menin n TOP 10 jocuri pe platforma social Facebook,iar pe mobile este cel mai popular joc din categoria bubble shooters, bucurndu-se n continuare de cele mai bune review-uri i comentarii. de competiie este i el prezent, iar unii juctori pot fi motivai de obinerea unui scor mai bun pe un anumit nivel sau de a recupera poziia de lider atunci cnd sunt depii de prieteni. n cazul Bubble Witch Saga, a fost foarte important atenia acordat juctorilor i mai ales aciunilor lor din joc. Niciun joc nu este perfect i bug-uri vor continua s apar, iar cum menionam la nceput, opiunile juctorilor sunt din ce n ce mai multe. Dar prin pstrarea unui dialog constant cu utilizatorii, Bubble Witch Saga s-a meninut sus n topuri. Acest dialog a fost purtat prin mai multe canale, precum grupurile de fani de pe pagina de Facebook sau rating-urile i comentariile din AppStore i Google Play. ns cel mai important aspect al acestui dialog a fost existena unui sistem de tracking bine pus la punct. Foarte muli juctori nu sunt dispui s ofere feed-back n mod direct i pot renuna la aplicaie ntr-o secund. Bubble Witch Saga a reuit s opreasc foarte multe dintre aceste poteniale puncte de renunare la joc tocmai prin acest sistem de tracking. De exemplu, recent am observat c unul dintre nivelurile din joc avea o rat foarte mare de abandon: juctorii aveau foarte multe ncercri la acel nivel, dar cei care reueau s treac obineau cu greu scorul necesar. Soluia a fost s gsim o nou versiune pentru nivelul respectiv, una nu neaparat mai facil, dar care a pus mai mult accent pe folosirea skill-urilor deja dobndite de juc tor pe parcursul ntregii cltorii n joc. O alt modalitate prin care Bubble Witch Saga se menine n continuare pe o poziie puternic este adaugarea n mod constant de coninut nou. Aici ne referim att la niveluri noi (la continuarea parcursului juctorului), ct i la grafic. De exemplu, pentru Halloween, Bubble Witch Saga a avut o tem nou sezonier, n care pe harta de progresie au fost introduse elemente specifice acestui eveniment: una din bilele din joc a fost transformat n dovleac, unul din sunetele din joc a fost schimbat ntr-un rs de fantom, schelete animate apreau din loc n loc, iar pe cer zburau lilieci n loc de oimi. i de Crciun jocul va fi modificat cu cteva elemente specifice, dar rmne s descoperii voi care vor fi acestea. De asemenea, este foarte important s se fac o difereniere a juctorilor n funcie de punctul n care se afl pe parcursul cltoriei lor n Bubble Witch Saga. Pe de o parte, exist juctori care ajung aproape de finalul jocului, iar ei vor niveluri noi, vor provocri din ce n ce mai dificile. Pe de alt parte, sunt juctori care se afl la nceputul jocului i care trebuie ajutai s ajung ct mai departe n joc. Pentru acetia din urm, de exemplu, un tutorial interactiv care s-i ajute s neleag fr probleme care este scopul jocului este foarte util. Feature-urile dezvoltate pentru Bubble
41
management
Cum s menii succesul unui joc mai mult de doi ani de la lansare?
Witch Saga s-au axat n primul rnd pe juctori, ncercnd s le ofere o experien ct mai plcut. Una dintre deciziile strategice ale companiei King a fost renunarea la ad-uri n joc, tocmai pentru ca utilizatorii s se bucure de povestea jocului fr ntreruperi. Aceast continuitate a experienei a fost urmrit i asigurat i prin sincronizarea progresului de pe aplicaia de mobile cu progresul din varianta de Facebook. Bubble Witch Saga a fost primul joc cu acest feature i reprezint n continuare un exemplu dat de Facebook (despre detaliile tehnice i problemele ntmpinate n implementare v-a povestit colegul meu, Cristi, ntr-unul dintre numerele anterioare). Un efect secundar pozitiv al acestei strategii este viralitatea. Juctorul care revine mai des i se joac mai mult este mai dispus s recomande jocul prietenilor si, att prin word of mouth, ct i prin mouse to mouse. Jocul trebuie s i ofere i aceast posibilitate i s faciliteze postarea pe Facebook, fr ns a fora acest lucru i fr ca juctorul s nu fie contient. n acelai spirit, n momentul n care vrem s dezvoltm un nou feature pentru Bubble Witch Saga, prima ntrebare pe care echipa de dezvoltare o pune este de ce? sau, mai degrab, ce va ctiga juctorul din acest feature? Odat gsit rspunsul la aceast ntrebare, implementarea rmne o simpl formalitate. Aici intervine un alt aspect prin care Bubble Witch Saga a reuit s se menin drept unul dintre cele mai populare jocuri pe Facebook: o echip extraordinar care lucreaz la acest proiect. Echipa Bubble Witch Saga este destul de mic, fiind format din zece persoane: developeri, QA, artist, designer i producer, iar acest lucru reprezint un avantaj. Fiecare membru al echipei este responsabil de succesul jocului, opinia fiecruia este ascultat, iar deciziile privind ideile puse n practic n joc sunt luate de comun acord i pot veni de la oricine din cadrul echipei. Mediul de lucru este tot timpul unul plcut, relaxat, pentru c ntreaga echip tie foarte bine ce are de fcut, iar deadline -urile sunt fixate tot de membrii si. Mai mult, n momentul n care apare o eroare, este foarte important ca toat echipa s nvee din greeli, s comunice transparent i s mearg mai departe. Ct timp va mai rezista Bubble Witch Saga n aceast pia aglomerat i n continu cretere? Nu tim, dar cu siguran va fi n continuare sus atta timp ct vom continua s inovm, s ascultm i s respectm juctorii.
George Abramovici
Business Manager @ King Romnia
42
programare
43
programare
Pstrarea angajailor talentai, o tem recurent n IT
mult sau manifest un pelerinaj susinut, de la o firm la alta) i cei experimentai, cu vechime, loialii, care nu migreaz de la un proiect la altul sau de la o firm la alta deoarece deja au un anumit statut i au dobndit o anumit maturitate profesional. Un factor deosebit de important pentru a ine programtorii n priz i la un nivel de mulumire ridicat este motivarea. Fiind vorba de persoane pragmatice care lucreaz dup nite pattern-uri fixe, acestea au nevoie permanent de imbolduri i de motivare pentru a continua munca fr a scdea ritmul i calitatea. Motivarea intrinsec ine de adaptabilitatea fiecruia i fluctueaz, ns, cea extrinsec, venit dinspre liderii companiei, are un impact mai mare. n acest fel, compania trebuie s ofere un planning provocator, proiecte din care fiecare poate s nvee lucruri noi i utile. De asemenea, procesul de organizare al proiectului trebuie s fie unul riguros, schiat ntr-o manier exact i profesionist i bazat pe cele mai inovative tehnologii. Dac n completarea celor spuse se mai adaug un mediu de lucru i interacionare pozitiv, constructiv ntre programatori, cu siguran se poate vorbi de nc o metod de pstrare a angajailor n companie. Pentru a evidenia aceast metod de retenie, este suficient s privim comparativ urmtorul exemplu asupra modului de organizare a proiectelor (metodologia de proiect). Mai demult, pentru a se ajunge la un produs finit, proiectele treceau prin faze numeroase i oarecum nepenite: n ceea ce privete delimitarea temporal, de obicei era vorba de un termen lung; plnuirea n detaliu de la care nu prea existau ulterior portie pentru soluii alternative; arhitectura aplicaiei; implementarea. Aceast metodologie desuet poart numele Watterfall i nu este un bun exemplu pentru pstrarea angajailor, deoarece intervine plictiseala, rutina i acea constrngere inovativ trasat de reguli. n schimb, tehnica metodologiei Agile funcioneaz perfect ca modalitate de reinere a programatorilor este o metod de dezvoltare a proiectelor actual, modern, care se caracterizeaz prin perioade scurte de executare, relaie strns ntre membrii proiectului i coordonatorul de proiect, comunicare deschis i adaptativ, att ntre angajai, ct i cu deintorul produsului (designerul produsului, cel care a realizat comanda). Perioadele lungi petrecute de angajai n cadrul unei firme sunt date, mai presus de orice, de calitatea uman i social a grupului i a celui (celor) care conduc/ manageriaz grupul. Este clasic i actual cnd spunem c angajaii se altur companiei i prsesc managerii. S presupunem c la un moment dat o companie primete un candidat deosebit de serios i de muncitor pentru postul de programator. ntr-un timp scurt, se dovedete a fi un angajat extrem de valoros, cu un comportament ireproabil cum probabil l au doar 5% din ceilali programatori. ns, inevitabil, survine problema. Persoana n cauz i dorete un parcurs ct mai lung n cadrul companiei dar, fiind onest, i propune angajatorului s i asigure un program flexibil astfel nct s lucreze n mare parte de acas, deoarece este un familist convins i are nevoie de mai mult timp pe care s-l dedice familiei. Pe lng aceasta, deja i-a dovedit eficiena i calitile. Cum reacioneaz compania n acest caz? Majoritatea afirm c asigur flexibilitatea programului, ns, cnd este vorba de respectarea acestei sarcini, intervin blocaje. Acesta este un punct de cotitur n care cele mai multe dintre companii nu reuesc s gestioneze situaia, pierzndu-i angajaii valoroi. n schimb, celelalte companii, cele care neleg i aplic nevoile angajailor cu adevrat importani, i vor reine i vor ctiga servicii de valoare pe termen lung. Mai exist o serie de avantaje i faciliti care au rol decident asupra pstrrii angajailor. Programul trebuie s fie flexibil, adic att timp ct i realizezi norma distribuit, poi s alegi n ce interval orar s lucrezi. Orele suplimentare trebuie s fie recompensate punctual n diverse moduri. Companiile IT care se respect, asigur angajailor centre de documentare personal gratuite, att la sediu ct i pe cale virtual. Asigurarea unor abonamente la sal, bazin sau la alte centre sportive ar trebui s devin o prioritate deoarece viaa unui programator este sedentar, lipsa micrii putnd conduce la scderea concentrrii i a randamentului. Complementar, angajaii trebuie s beneficieze de training-uri, workshopuri i conferine sponsorizate care s le mbunteasc softskill-urile, astfel nct s nu se plafoneze. Pentru c oamenii sunt fiine sociale, compania trebuie s le ofere un mediu de lucru plcut, confortabil i prietenesc, echipat cu aparate de cafea i suc, diverse jocuri pentru pauzele de munc i spaiu de socializare. Chiar dac aceste facilitri legate de recreere au devenit o obinuin, nemaireprezentnd nici pe departe o noutate, mai exist totui cazuri n care, n cadrul unor firme, ele se identific cu principala (i poate unica) modalitate de motivare i reinere a angajailor. Nu n ultimul rnd, relaia angajator-angajat trebuie s treac peste barierele ierarhice, s fie bazat pe colaborri amicale, ieirile n ora ntr-un cadru informal s reprezinte o obinuin, iar activitile sportive asigurate de companie s fie ct mai dese deoarece doar spiritul de echip spontan dezvolt colegialitatea i prietenia. Spre exemplu, aniversrile angajailor, celebrarea unei reuite n cadrul companiei, angajatul lunii sau ceremoniile de premiere anuale a celor mai eficieni angajai din cadrul companiei constituie, fr dubii, evenimente care consolideaz grupul i pluseaz decisiv la reinerea programatorilor n companiile IT. Chiar dac exist o bun nelegere i interacionare, secondat de lipsa complexului de inferioritate fa de persoanele poziionate superior din punct de vedere ierarhic, un element-cheie este reprezentat de comunicarea fa n fa. Astfel, din momentul angajrii i, inclusiv, pe toat perioada deinerii jobului, este imperios necesar ca interaciunea i comunicarea ntre angajator i angajai s se fac ct mai direct (lund n considerare c ineficiena comunicrii i lipsa feed-back-ului au generat mereu probleme importante i relaii ubrede). Acest lucru nseamn evitarea transmiterii informaiei prin e-mailuri sau prin intermediul terilor. Abordarea direct reduce birocraia i crete nivelul de ncredere ntre persoane, iar relaiile nu au tendina de a se depersonaliza, n sensul n care liderii companiei dovedesc autenticitate i transparen n acest fel ctignd la capitolul imagine i legitimitate, ceea ce pluseaz esenial referitor la problema reteniei. Dup cum se poate observa, scopul principal al companiilor trebuie s fie acela de a ngloba angajaii n cadrul ei. Ca urmare a implementrii tuturor strategiilor descrise (de socializare, de implicare, tehnice), echipa de management a companiei trebuie s fie capabil s formeze un colectiv puternic i unit din care s rezide avantaje pentru ambele pri implicate: pe de o parte, firma ctig stabilitate i nu se va confrunta cu problema reteniei angajailor, iar pe de alt parte, angajaii, care vor munci mai fericii, pasiunea profesional nu le este strin i, cel mai important, nu vor avea tendine migraioniste.
Monica Soare
Manager @ Artwin monica.soare@@artwinconsulting.ro
44
programare
eteor este o platform open-source pentru crearea mult mai rapid a aplicaiilor web, indiferent de nivelul de experien al programatorului. Meteor reuete s mbine foarte elegant aceeai tehnologie att pe partea de server-side ct i pe partea de client-side a aplicaiei. Acest lucru este posibil prin faptul c aplicaiile Meteor ruleaz pe o instan de Node.js. Pentru a putea diferenia codul care ruleaz pe server fa de cel care ruleaz pe client, Meteor v pune la dispoziie dou variabile boleene care s v ajute n aceast situaie: Meteor.isServer specific blocul de cod care va rula server-side. Meteor.isClient specific blocul de cod care va rula client-side. Ca o prim regul best practice nu este recomandat folosirea excesiv a variabilelor precizate mai sus. Se recomand folosirea structurii de fiiere descris n documentaie. Toate fiierele care ruleaz strict pe server se vor crea sub directorul server, iar cele ce vor rula pe client se vor crea sub directorul client. Astfel, ntreaga aplicaie poate fi scris sub un singur limbaj de programare. Acest lucru este un mare avantaj pentru programatorii care sunt expui n proporie mai mare tehnologiilor JavaScript.
Meteor vine cu un sistem de pachete build in, ceea ce permite Meteor se poate instala foare uor folosind urmtoarea folosirea librriilor externe n crearea aplicaiilor. Acest lucru este posibil cu ajutorul comenziilor: comand linux/unix: meteor add <package_name> $ curl https://install.meteor.com | /bin/sh meteor remove <package_name> Dup rularea acestei comenzi se va putea accesa de la terminal Printre pachetele disponibile se numr i cele mai folosite comanda meteor. Cu ajutorul acesteia se poate crea primul proiect librrii i tool-uri: jQuery, Backbone.js, jQuery UI, Bootstrap, Less, Meteor: Underscore etc. . Mai mult dect att, exist un serviciu numit $ meteor create myApp Atmosphere, unde putei rsfoi printre toate pachetele disponibile n momentul acesta meteor a creat directorul myApp care sau putei cauta pachetele dorite. Pachetele de pe Atmosphere se conine aplicaia web mpreun cu o configuraie pentru Node. pot instala cu ajutorul unui utilitar de gestiune a pachetelor numit js prin care vom putea porni serverul local pentru a vizualiza pro- Meteorite. iectul ntr-un browser web: Platforma Meteor are instalat default un sistem de abloane (templating system) cu numele Handlebars. Cu ajutorul acestui sistem putei oferi un nivel mult mai dinamic paginilor. Acestea Prin rularea comenzii meteor n cadrul proiectului s-a pornit vor putea comunica ntr-un mod foarte elegant cu datele procesate serverul local, iar aplicaia web poate fi accesat printr-un IP local server-side care urmeaz s fie transmise ctre view. Momentan Meteor suport doar Handlebars, dar pe viitor vor fi implemenla portul specificat n output. tate mai multe opiuni. Pentru a folosi template-uri n Meteor trebuie doar s creai un One language for both client and server side
www.todaysoftmag.ro | nr. 18/Decembrie, 2013 $ cd myApp $ meteor => Meteor server running on: http://localhost:3000/
Smart packages
Templates
45
programare
Real time web with Meteor
fiier .html n care s introducei tag-ul <template> mpreun cu atributul name care va primi o valoare sugestiv. n acest moment Meteor va evalua fierul, iar template-ul creat va putea fi accesat prin intermediul unei variabile globale Template.nume_template. Mai mult dect att, prin sistemul inteligent de sincronizare, Meteor va menine n orice moment datele din view sincronizate cu cele de pe server, iar orice modificare se va vedea instantaneu pe view. Exemplu de template: Aceasta este singura suportat momentan, dar pe viitor vor fi implementate i alte baze de date. Pentru partea de client-side , Meteor folosete un emulator de mongoDB numit minimongo. Cu ajutorul coleciilor putem manipula documentele din baza de date. Pentru declararea unei colecii se folosete urmtoarea sintax:
Members = new Meteor.Collection(members);
Prin apelarea acestei funcii s-a creat un obiect de tip EJSON care este de fapt un model tradiional dintr-un framework ORM (Object-Relational-Mapper). Colecia Members este declarat glo<template name=hello> bal i este accesibil att din partea de client-side ct i din partea <b> Hello {{ what }} </b> de server-side. Asemenea paginilor HTML, modificrile coleciilor </template> sunt propagate n timp real ctre toi clienii. Astfel, orice modiAcum vom putea popula dinamic coninutul template-ului ficare asupra bazei de date va declana actualizarea coleciilor hello accesnd expresia handlebars numit what din interio- distribuite clienilor. Pentru manipularea obiectului collection se va folosi urmrul acoladelor: toarea sintax: Template.hello({ what: World! }); sau
Members.insert({ name: John Doe, location:ClujNapoca, Romania }); Members.remove({ name:John Doe }); member_john = Members.findOne({ name: John Doe});
n stagiu de dezvoltare baza de date poate fi modificat chiar i de pe partea clientului. Acest lucru este foarte folositor pentru n ziua de astzi meninerea datelor pe client la zi cu cele de debugging i testare, dar odat ce aplicaia atinge un stagiu gata de pe server este un task la ordinea zilei. Meteor reuete s scuteasc producie se vor dezactiva pachetele autopublish i insecure care programatorul de a reinventa roata, iar mecanismul de auto- ofer aceast facilitate. update este build in n platform. Acest mecanism actualizeaz att HTML-ul generat automat ct i HTML-ul creat manual prin Concluzie JavaScript. Meteor este cldit peste o serie de tehnologii de ultim or , Mecanismul din spate const n folosirea unei funcii de care mbinate ntr-un mod foarte elegant, scutesc programatorul randare care este trimis ctre Meteor.render care va returna un de munc i timp n plus. Astfel, reuete s se concentreze mai fragment de DOM numit nod. Acest fragment de DOM se va auto mult la alte aspecte ale aplicaiei dect asupra task-urilor care sunt actualiza singur prin intermediul platformei n momentul n care comune pentru orice proiect. Chiar dac Meteor nu a atins nc se detecteaz o modificare n coninut. Meteor.render folosete un versiunea 1.0, se afl ntr-un stagiu stabil, iar unele proiecte au concept numit reactive computation pentru a afla care nod trebuie nceput deja s migreze spre aceast platform. n momentul de actualizat cu datele noi. Majoritatea aplicaiilor folosesc automat fa platforma este la versiunea 0.6.6.3, dar n ciuda faptului c a acest mecanism, iar programatorul nu este nevoit s apeleze n trecut prin mai multe sesiuni de testare automat dar i manual mod direct aceste metode. Astfel, paginile menin factorul de real unele bug-uri mai pot exista.Totodat, Meteor este ntr-o continu time updates, iar coninutul este permanent actualizat. dezvoltare mulumit unei echipe de programatori care lucreaz full time pentru a oferi schimbri majore n API-uri, cu fiecare update lansat. Chiar dac nu a atins o prim versiune final, Hot code pushes n mod normal cnd aplicaia trebuie s intre n producie sau Meteor este o platform extrem de flexibil, puternic i de ultim se face un deploy pe un server live, acest lucru poate implica un generaie care trebuie s ajung n atenia publicului. nivel de dificultate sporit. Exist o serie de proceduri care trebuie urmate cu mare atenie printre care: portarea bazei de date, oprirea i repornirea serverului HTTP, verificarea unor posibile erori de deploy, sincronizarea serviciilor, etc. . Un lucru extrem de folositor i de interesant pe care l ofer Meteor este Hot code pushes. Acesta este un mecanism complet automatizat pentru efectuarea deploy-ului. Tot ce trebuie fcut este s se execute urmtoarea comand n cadrul proiectului existent:
Att! n acest moment proiectul a fost ncrcat cu succes pe serverul dorit. Mai mult dect att, aplicaia nu se oprete n timpul unui deploy. Meteor se ocup de toat partea de updates i de meninere a serverului, iar clienii nici nu vor simi deploy-ul.
Andrei Cacio
Collections
46
legal
n acest context, piaa aplicaiilor mobile devine din ce n ce mai dinamic i mai profitabil (att pe segmentul entertainment, ct i pe cel business) - potrivit unui raport al Gartner1,va valora 74 miliarde de dolari, n 2016. ns crearea aplicaiilor mobile implic pentru dezvoltatori anumite riscuri deseori neglijate - riscuri care pot fi relativ uor de gestionat dac sunt cunoscute. Iat cteva sfaturi utile. Activul tu cel mai valoros este proprietatea intelectuala care trebuie protejat corespunztor.
reterea fr precedent a utilizarii telefoanelor cu sistem de operare Android, a iPhone-urilor i tabletelor, a determinat companiile s investeasca resurse n aplicaii software create special pentru dispozitivele mobile. denumirea aplicaiei ca marc (de exemplu, marca Angry Birds). Chiar dac nu o nregistrezi, poi face o cercetare a mrcilor similare sau identice deja nregistrate sau care sunt notorii, pentru a nu le imita ceea ce ar putea determina, de exemplu, eliminarea aplicaiei tale din App Store (pe lng eventuale aciuni n instant din partea proprietarilor lezai). deine dreptul de autor att timp ct nu exist un contract care prevede contrariul. Probleme mai delicate privind stabilirea titularului dreptului de autor pot aprea cnd crearea aplicaiei este externalizat, realizat printr-un parteneriat sau cnd implic folosirea unor soft-uri open source. De exemplu, cand externalizezi procesul tehnic de creare a aplicaiei ctre programatori freelance sau ctre un furnizor independent, nu uita s inchei contracte care s menioneze, printre altele, c drepturile de autor asupra soft-ului i a codului surs i revin. Indiferent dac detii o afacere ce pune pe piat aplicaii mobile sau dac esti un programator freelance care creeaz aplicaii mobile pentru diveri clieni, este recomandat s apelezi la un avocat specializat care s i pregateasc contracte standard, avantajoase, pe care doar s le adaptezi cnd este cazul.
Secrete comerciale
Dezvoltarea aplicaiilor mobile implic i secrete comerciale (strategii de pre, plan de afaceri sau de marketing, etc.) pe care este recomandat s le pstrezi confideniale. De aceea, ncheie contracte cu angajaii, programatorii freelance, potenialii parteneri de afaceri, furnizorii, investitorii (adic cu acele persoane crora le-ai mprtit detalii privind aplicaia i implementarea ideii), obligndu-i s nu divulge informaiile la care au avut acces.
Drept de autor
Codul sursa, design-ul, interfaa grafic, textul i alt continut original al aplicatiei mobile (imagini, videoclipuri, melodii, etc.) sunt protejate prin drept de autor, de la momentul crerii lor. Chiar si iconia (icon) pe care utilizatorii o acceseaz pentru a lansa aplicaia, poate fi protejat prin drept de autor. Poi lua n considerare s o nregistrezi chiar i ca marc, dac vrei s interzici altora s o copieze i s o foloseasc. Cu acelai scop, poi nregistra interfaa grafic a aplicaiei (look and feel) ca design industrial.
Brevet
Poate fi util s afli ce brevete au fost Asigur-te c aplicaia mobil pe care acordate deja pentru funcionaliti tehnice o dezvoli nu imit, fr drept, elementele similare aplicaiei tale. unor aplicaii existente deja pe piat, nclcnd drepturile de proprietate intelectual ale altor persoane. Dac vrei ca aplicaia s tii cine deine drepturile de autor? n principiu, dreptul de autor asu- foloseasca un soft, design-ul, codul surs al pra programului software al aplicaiei altei aplicaii (sau chiar alt continut ce nu mobile aparine creatorului (programa- i aparine - de exemplu, imagini, muzic), torul) din momentul n care scrie codul solicit i obine acordul persoanei care Marca Este opiunea ta dac nregistrezi surs. ns dac programatorul scrie codul deine acele drepturi. surs n calitate de angajat, n exercitarea 1 h t t p : / / w w w . e w e e k . c o m / m o b i l e / atribuiilor sale de serviciu, angajatorul va apps-marketing-and-the-cloud-gartner-predictions-for-2013/
www.todaysoftmag.ro | nr. 18/Decembrie, 2013
47
legal
Cum pot protejate afacerile cu aplicatii mobile?
Alege cu grij platforma
Selectarea platformei pe care va fi distribuit aplicaia - iOS ( Apple ), Android ( Google ), Blackberry OS, Windows Store (Microsoft), Facebook, etc. - este o decizie important. Este bine s cunoti avantajele si dezavantajele fiecrei platforme, att aspectele tehnice, ct i pe cele care in de termenii contractuali. De exemplu, pentru a deveni dezvoltator autorizat Apple sau Google, trebuie s nchei un contract prin care primeti o licent ne-exclusiv care ii permite s dezvolii aplicaii mobile ce vor rula pe acea platform. Fii ns atent la clause, mai ales la cele care: i interzic s foloseti aplicaia pe o platform concurent; i interzic s dezvolti aplicaii mobile a cror interfaa grafic este similar unor aplicaii existente deja pe platform; Permit deintorului platformei (sau altor dezvoltatori) s-i modifice aplicaia fr acordul tau; Dau deintorului platformei o licen exclusiv pentru folosirea aplicaiei tale, etc..
Despre autoare:
Claudia Jelea este avocat specializat pe aspecte ce implic mediul online, comerul electronic i IT&C, mrcile, drepturile de autor i protecia datelor cu caracter personal. LinkedIn & Twitter: claudiajelea | www.jlaw.ro | Facebook: IPBoutique.Legal www.avocatnet.ro/claudia_jelea * Acest articol a fost publicat iniial pe blogul http://jlaw.ro/ law-office/blog/.
Concluzie
Claudia Jelea
48
programare
mulime pn cnd devi tipul n vrst care pstreaz sistemul motenit. Toate astea cu aceleai aptitudini. Dup prerea mea, dac petreci zece ani fcnd acelai lucru n informatic, nu ai dobndit zece ani de experien ci ai doar un an de experien, repetat de zece ori. Este mai interesant pentru mine, cred c este o carier mai distractiv i care te face un muncitor mai valoros, s i depeti limitele aptitudinilor tale i s explorezi alte aptitudini. Diversitatea te face bun n toate. Nu poi s le faci pe toate, trebuie s i alegi niele, dar s nelegi: dac cunoti numai un singur limbaj de programare, ai o modalitate foarte ngust de a privi lucrurile. Al doilea tu limbaj de programare va fi o btaie de cap. Al treilea va fi limbajul care va genera un adevrat progres. Acela va fi momentul cnd vei ncepe s vezi ntregul n programare i nu doar zahrul de deasupra, care le face diferite. Dup aceea, al patrulea, al cincilea i al aselea sunt uoare. i alt aspect care are loc n mintea ta este acela c nu i mai pas de limbaje limbajele nu mai sunt aa de importante. Felul n care gndeti este adevrat. i cum rezolvi probleme este important i asta te face un muncitor mai valoros. Asta nu nseamn s nvei
49
interviu
Interviu cu Richard Campbell (II)
tot. Pur i simplu nseamn s te axezi pe a avea o perspectiv real asupra a ceea ce nseamn o abordare productiv a dezvoltrii de software. A: Care crezi c este calea cea mai bun de a nva? i a mpri ntrebarea asta n dou pri: care este metoda cea mai bun de a nva pentru o persoan tnr care dorete s intre n domeniul informaticii? Ar trebui s obin o diplom? Sau s studieze pe cont propriu? i aceeai ntrebare i pentru cineva care este n domeniu de civa ani i dorete s avanseze n carier? R: Cred c mai nti de toate trebuie s te cunoti pe tine nsui suficient de bine pentru a ti cum s nvei. Care este un mecanism eficient pentru ca tu s nvei? Una dintre vetile bune este c exist mai multe modaliti de a nva n prezent i resurse pentru toate aceste modaliti. Eu mi-am dat seama de mult vreme c sunt un cititor bun. C nv foarte repede citind i c nu am rbdare cu alte metode de nvare, aa c eu citesc pentru a nva. Aa sunt eu. Dac tu nvei cel mai bine prin video, exist produse extraordinare pentru a nva prin video. Dac nvei cel mai bine n mod practic, exist cursuri disponibile pentru tine. Aa c depinde de tine cum doreti s nvei. A spune c multe dintre abordrile eseniale ale programrii pe care le avem n prezent au o tachet de pornire foarte ridicat. Este o provocare s fi productiv n unele dintre aceste medii de dezvoltare mai mari, aa c s-ar putea s doreti s alegi ceva mai simplu. Pentru a te propulsa peste nivelul de amator pentru a intra n informatic ca profesie trebuie s faci asta singur. Nici o diplom nu te va salva. Cnd angajez un dezvoltator rar m mai uit la aptitudini de obicei caut dou lucruri: pasiune i capacitatea de a lucra cu echipa ct de bine se poate integra printre oamenii mei? Dac ai aceste dou lucruri, eu te pot nva tot restul. Destul de pasionat nct, dac i impun un nou limbaj, nu eti doar capabil s te descurci, ci vei fi de-a dreptul ncntat s o faci. Dac i dau un cont Pluralsight i i spun c am nevoie s te pregteti s activezi n Aplicaii Single Page n HTML5 vei face foarte rapid asta pentru c ai video-urile i le poi viziona ct de mult doreti. i s lucrezi bine cu echipa: s apreciezi diferenele dintre aptitudini i s vrei s lucrezi aproape acesta pentru mine este cel mai valoros angajat pe care l pot avea. i s realizezi c ambele aptitudini sunt de fapt aptitudini soft aptitudinea tehnic nu te va mai duce departe ci abilitatea de a deprinde noi aptitudini tehnice este cea care conteaz. Ne aflm n aceast perioad de transformare n informatic i astfel, aptitudinile pe care le nvei acum nu i vor mai servi la fel de mult peste cinci ani. Dar capacitatea ta de a nva acele deprinderi i dorina ta de a face asta i vor prinde bine. A: Vorbind despre aptitudini soft care crezi c este cea mai mare concepie greit pe care oamenii din afara industriei noastre o au n legtur cu asta? Lucruri precum stai toat ziua n faa calculatorului, nu interacionezi cu oameni, poi s nvei meseria, iar apoi te-ai aranjat pe via, ... R: Exist ceva ce se numete efectul Dunning Kruger, care spune c cei mai muli oameni tiu att de puine despre asta nct nici mcar nu tiu c nu tiu nimic. i informatica este adeseori aa. De multe ori suntem n situaia n care managerii unei organizaii consider c dezvoltarea software nseamn numai dactilografiere. Deci, dac nu tastezi, nu lucrezi. i trebuie s i educm s neleag c nu este aa. C dactilografierea poate fi extrem de distrugtoare pentru procesul de dezvoltare. Ne poate ndeprta de scop, n loc s ne apropie. C trebuie s existe un plan i o anticipare. Cred c tocmai s educi oamenii i s i ajui s neleag ce este complicat i ce este uor deoarece nu este ceva evident n software este de cele mai multe ori proba de aptitudine soft. Suntem aproape siguri astzi, n acest moment, c sunt foarte puine aptitudini de afaceri care s nu poat fi automatizate, n care s nu putem s introducem tehnologie i s le avantajm ntr-un fel. Tehnologia a strbtut cale lung i este extrem de solid n acest moment. De cele mai multe ori, problema este n echip i n punerea laolalt a cerinelor. De fapt, nelegerea businessului suficient de bine nct s i aplici tehnologie. Aceasta este adevrata zon de cretere. A fost dintotdeauna o problem, dar devine din ce n ce mai acut cu trecerea timpului. A: Mulumesc. Acestea au fost ntrebrile pe care le-am pregtit, dar a mai dori s te rog dac vrei s menionezi cteva resurse, website-uri cu care lucrezi, lucruri pe care oamenii ar trebui s le ncerce? R: .NET Rocks. A fost creat de prietenul meu Carl Franklin n 2002, ceea ce e uluitor, deoarece n 2002 cuvntul podcast (a distribui fiiere multimedia pe internet) nici nu exista. Acesta a aprut civa ani mai trziu. El fcea fiiere MP3 i le punea pe Internet. Dar acum, dup 11- 12 ani, show-ul a devenit destul de puternic. Eu sunt noul venit. Am intrat n echip n emisiunea cu numrul 100. Cred c ne aflm la numrul 916 acum. Am avut al 900lea episod n Wisconsin, la o conferin. A fost i o petrecere mare cu ocazia asta. 900 nseamn multe emisiuni. Showul are loc de dou ori pe sptmn marea i joia. Este gratis de descrcat. Este doar un fiier MP3 i poi s l obi n iTunes sau Zune Marketplace sau oriunde doreti. Acum avem aplicaii mobile pentru toate dispozitivele chiar i pentru Windows Phone. i de dou ori pe sptmn vorbim cu un luminator .NET: Rocky Lhotka sau Scott Guthrie un cunosctor n profunzime al spaiului .NET despre ceea ce i intereseaz i despre noile tehnologii. ncercm s facem lucrurile mai uoare pentru cei care lucreaz n industrie sau sunt interesai de aceasta, s sorteze ce este important pentru ei i de unde s afle mai multe n legtur cu anumite teme. Emisiunile de mari tind s fie emisiuni mai tehnice. Joia mergem mai departe. Uneori este despre tehnologie, alteori poate s fie o lecie de istorie. Odat am avut un interviu cu Les Pinter, cel care a scris versiunea original Word, pe care a vndut-o lui Bill Gates. Sau vorbim despre oportuniti n carier. Cam o dat pe lun facem o emisiune diferit, pe o tem cu totul diferit de zona de dezvoltare. Luna trecut a fost exploatarea asteroizilor. Luna asta va fi despre grtar. Dar tii, ncercm s fim lejeri n legtur cu show-ul. Cunoatem multe persoane care ne ascult n timp ce fac naveta, aa c avem un format de talk-show. ncercm s ne i distrm aa, comportndu-ne uneori prostete n momentele n care suntem n form. i DNR este numai una dintre emisiuni. Mai avem i Tablet Show o dat pe sptmn, lunea, iar acesta este despre dezvoltarea tabletelor i mobilelor pe diferite platforme vorbim despre iOS i Android i Windows i apoi mai sunt i pe partea de IT de la nceputurile informaticii, am construit multe echipamente, am realizat multe reele, aa c vorbesc cu profesioniti IT despre astea, o dat pe sptmn, miercurea, pe Run As Radio un show mai scurt, un pic mai intens, axat pe o anumit gam de subiecte, alta dect lejeritatea caracteristic a DNR. Aa c, da, patru show-uri pe sptmn n prezent. A: Mulumesc mult pentru interviu.
Attila-Mihaly Balazs
dify.ltd@gmail.com Code Wrangler @ Udacity Trainer @ Tora Trading
50
sponsori
powered by