Top Banner
TO DAY SOFTWARE No. 11 • May 2013 • www.todaysoftmag.ro • www.todaysoftmag.com MAGAZINE From The Software Architect’s Kitchen – Scenario Cards Testing in the Cloud Software Craftsmanship Towards An It Community – Via HR Test Automation Orchestration Book review: RESTful Web Services Cookbook by Subbu Allamaraju Developing safety-critical software with SCADE Performance Management The Imagine Cup Rollercoaster Gogu and the gas filling Functional Programming in Haskell Big data and Hadoop Sustainable architecture Let’s not forget about Silicon Valley OPTIONSABILITY - A discrete feature of IT projects a friend for startups The Cluj IT History (V) Lessons learned from “Junimea”
50

TSM_11_2013_en

Mar 31, 2016

Download

Documents

http://www.todaysoftmag.com/pdf/TSM_11_2013_en.pdf#page=11
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: TSM_11_2013_en

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

No. 11 • May 2013 • www.todaysoftmag.ro • www.todaysoftmag.com

M AG A Z I N E

From The Software Architect’s Kitchen – Scenario Cards

Testing in the CloudSoftware Craftsmanship

Towards An It Community – Via HR

Test Automation Orchestration

Book review: RESTful Web Services Cookbook by Subbu Allamaraju

Developing safety-critical software with SCADE

Performance Management

The Imagine Cup Rollercoaster

Gogu and the gas filling

Functional Programming in Haskell

Big data and Hadoop

Sustainable architecture

Let’s not forget about Silicon Valley

OPTIONSABILITY - A discrete feature of IT projects

a friend for startups

The Cluj IT History (V) Lessons learned from “Junimea”

Page 2: TSM_11_2013_en
Page 3: TSM_11_2013_en

6Let’s not forget

about Silicon Valley

Bogdan Iordache

8a friend for startups

Cosmin Mihaiu

9The Cluj IT History (V) -

Lessons learned from “Junimea”

Marius Mornea

11Software

Craftsmanship

Alexandru Bolboacă and Adrian Bolboacă

14From The Software Architect’s

Kitchen – Scenario CardsAttila Antal

17Sustainable architecture

(grow from novice to guru)Levente Veres

20Testing in the Cloud

Vlad Zeciu

22Test Automation

OrchestrationLucian Revnic

22OPTIONSABILITY - A discrete

feature of IT projectsBogdan Matei

29Developing safety-critical software with SCADEHunor Csomortani

32Big data and HadoopRadu Vunvulea

35Functional Programming in HaskellMihai Maruseac

38Book review: RESTful Web Services Cookbook by Subbu AllamarajuSilviu Dumitrescu

40Towards An It Community – Via HR Dan Ionescu and Cristina Nicule

43PerformanceManagementAndreea Pârvu

45Maybe, but probably not!Antonia Onaca

46The Imagine Cup RollercoasterAlex Pana

48Gogu and thegas fillingSimona Bonghez, Ph.D.

Page 4: TSM_11_2013_en

4 no. 11/May, 2013 www.todaysoftmag.com

The buzz of the last months is the creation of structures and opportunities for IT development and maybe more than ever the emergence of some Romanian solutions through the stimulation of startups. TSM has been and remains their

promoter, but we do not wish to fall to the other extreme and not to see the forest for the trees.

Probably 90% of the IT zone, excepting the affairs with the Romanian state, represents outsourcing done for companies abroad. The main problem that emerges is the lack of IP (intellectual property), as the respective companies can at anytime move their develop-ment centers elsewhere. On the other hand, let’s not lose sight of what the outsourcing companies have done for us and what they still can do. First of all, they taught us how to write commercial soft, which is the required level of quality, 99.999% for availability, how to create an efficient architecture of systems and much more. In time, these were assimilated by the Romanian specialists and now we are teaching others. The same is about to happen to the creation of products. The companies which until not long ago only carried their projects into execution in Romania, now trust us and want us to create the products of which they are business owners. This can be seen on the labour market, and the lack of business analysts and of product management does not escape observa-tion. There are not many, but there will be in a few years and they will write in their CV the execution of some important products. They will know how to create a commercial product based on business requirements and probably they will also help promoting the Romanian startups.

Thus, in order to have on a large scale the emergence of new startups, we need a cul-ture and an experience which can be reached only in time and with a lot of perseverance. Of course, there can be exceptions, as the ones we saw in the industry of games or in that of entertainment. The incubators of startups and the co-work areas timidly begin to make their appearance and, starting with the next issue, we will begin to publish an analysis of the existing ones. It is important for a new startup to know from the beginning whom to address for finance or support.

As we have expected, the month of May is full of events in the IT zone: on the 14th of May we have the Software architecture workshop, organized by Arobs, which has Simion Brown as a guest; on the 16th of May, still in Cluj, the second edition of the Romanian Testing Community will take place; on the 17th of May .msg systems orga-nizes the Java EE 7 workshop, held by Silviu Dumitrescu; on the 23rd-24th of May we will have the IT Camp, the biggest conference on Microsoft technologies in Romania and on the 30th-31st of May, I T.A.K.E Unconference takes place in Bucharest, for those who wish to achieve technical excellence. I would also like to mention the ICT Spring Europe which will take place on the 19th-20th of June, in Luxembourg. The event will reunite 3,500 participants from Europe and for the startups there is no participation fee. They will have the opportunity to present their solutions within the event. Those who wish only to participate in the event will be granted a 50% discount by TSM. Those who are interested, please contact us at the following address: [email protected].

Number 11 TSM suggests a series of interesting articles covering the area of interest in this field. In the startup section, the article Let’s forget the Silicon Valley pattern (aka Prince Charming of the Valley and the Silicon Apples) is an objective analysis of this phenomenon. A friend of startups is about Marius Mocian and the support he has offe-red to MIRA. This section ends with the winners of this year’s Microsoft Imagine Cup, who recount to us the evolution of the product from concept to its final implementation. Software Craftsmanship is a domain hardly known and I am glad that we are able to publish an article on this subject. Software architecture is present in the articles: From the kitchen of the software architect, script cards and Extransible and lasting architecture (grow from novice to guru). OPTIONSABILITY is an interesting subject related to the IT projects. We continue with The Development of safety-critical applications in SCADE and a new series about Functional Programming in Haskell. The first results of the study for the completion of some Best Practices in HR are published in Towards the IT community – via HR, and our favorite character, Gogu, is present in the end in Gogu and the refueling.

Enjoy your reading !

Ovidiu Măţan Editor-in-chief @Today Software Magazine

Ovidiu Măţan, [email protected]

Editor-in-chief @ Today Software Magazine

editorial

Page 5: TSM_11_2013_en

5www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

Editorial Staf

Editor-in-chief: Ovidiu Mățan [email protected]

Editor (startups and interviews): Marius Mornea [email protected]

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

Marketing: Ioana Fane [email protected]

Translator: Cintia [email protected]

Reviewer: Tavi Bolog [email protected]

Reviewer: Adrian Lupei [email protected]

Made byToday Software Solutions SRL

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

www.todaysoftmag.comwww.facebook.com/todaysoftmag

twitter.com/todaysoftmag

ISSN 2285 – 3502ISSN-L 2284 – 8207

Copyright Today Software Magazine

Any reproduction or total or partial reproduction of these trademarks or logos, alone or integrated with

other elements without the express permission of the publisher is prohibited and engage the responsibility of the user as defined by Intellectual Property Code

www.todaysoftmag.rowww.todaysoftmag.com

Silviu [email protected]

Java consultant@ .msg systems Romania

Marius [email protected] intrested and involved in different IT activities, from development to, management, education to journalism as part of Epistemio, UTCN and TSM

Radu [email protected]

Senior Software Engineer@iQuest

Authors

Antonia [email protected]

trainer and consultant

Bogdan [email protected]

How to Web co-founder, most important web event in Eastern Europe

Alexandru [email protected]

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

Attila Antal [email protected]

Software Architect@ ISDC

Levente Veres [email protected]

Design Lead @ endava

Vlad [email protected]

Senior QA Engineer@ Small Footprint

Bogdan [email protected]

Senior Php Developer@ 3Pillar Global

Lucian [email protected]

OO Content Arhitect@ HP Software Cluj

Hunor [email protected]

Software Developer@ evoline

Mihai [email protected]

IxNovation @ IXIAmember of ROSEdu, ARIA

Adrian [email protected]

Programmer. Organizational and Technical Trainer and Coach@Mozaic Works

Dan [email protected]

Executiv director@ Danis Consulting

Cristina [email protected]

Consultant@ Danis Consulting

Andreea Pâ[email protected] at Endava

Alex [email protected]

internship student@ Tora trading

Simona Bonghez, [email protected]

Speaker, trainer and consultant in oroject management,

Owner of Confucius Consulting

Page 6: TSM_11_2013_en

6 no. 11/May, 2013 | www.todaysoftmag.com

Let’s not forget about Silicon Valley

(aka prince Charming and the Silicon Apples)

startups

After almost 60 years, Silicon Valley includes hundreds of thousands of engi-neers (from a total of seven million people in Bay Area), hundreds of investment firms and accelerators that attract more than 10 billion USD in annual investment (over 40% of annual venture investment in U.S.), an exceptional educational system, that includes Stanford, one of the most important six universities of the world, and almost all tech industry giants: Intel, Google, Facebook, Apple, Amazon, Qualcomm, Yahoo! etc.

When I got to San Francisco about a month ago, the Launch Festival 2013 was taking place, one of the biggest conferences about startups in SF and I made a short clip.

Romania has to catch up. With a total of approx. 80,000 engineers, with local annual investment not exceeding 10 million dollars (maybe much less) in 2012, with an outdated and inefficient educational system that still does the job due to a low number of passionate people, with some interesting product companies (BitDefender, Avangate etc.), which constitute only 5-10% of total exports of IT & C (the rest is outsourcing), we can conclude that we have a pretty good industry, but we are several size ranges behind.

I often read articles and news about the way Bucharest, Cluj and even Magurele will become a ‘Silicon Valley’ made in Romania. So, if it were so simple, I could even make a Silicon Valley in Turnu Severin, my home-town! It’s nice outside, so investors can visit the Herculane resort in their lunch break

and entrepreneurs can relax at the terraces on the Danube shore. For programmers we have cheap fish, rich in phosphorus after a long working day. I suspect, however, that no one will take it seriously, as they are just figures of speech (parables, hyperbole, etc...), a comparison itself being excluded.

Chances of developing a new Silicon Valley anywhere in the world, including the USA, are extremely small, and I think we should learn what we need to learn and then forget the Silicon Valley model when we think about creating a local tech ecosystem.

Maybe we should forget about the New York model, where tech startups have deve-loped due to the local advertising industry. Maybe we should forget about the Israel model, the second country in the world in terms of the number of tech IPOs of companies on stock exchange in U.S. The technology industry there was primarily created by funding research in the defense industry. And maybe we should also forget about the London model, the most impor-tant European financial center

where the technology industry has been developed due to accessing the existing funding ways. And the list could continue with Boulder, Berlin, Singapore and many other centers where local factors have hel-ped the industry to grow.

Maybe we should carefully look in the mirror, ask who we really are and what we can do that is really efficient in global inno-vation and perform quietly for the next 20 years, with fewer stories about Prince Charming in the Valley and the Silicon

Apples. Instead, we should keep the eyes wide open towards us.

PS: All my good thoughts are heading towards Comic Con Bucharest, where I would have terribly wanted to be.

Almost 60 years ago, William Shockley left Bell Laboratories and founded the Shockley Semiconductor Laboratory in 1956 in Mountain View, believing that silicon, not germanium, is the right material for the production of transistors. In 1957 eight of his engineers left the company and founded Fairchild Semiconductor and later on other two (Robert Noyce and Gordon

Moore) founded Intel.

Bogdan [email protected]

How to Web co-founder, most important web event in Eastern Europe

Page 7: TSM_11_2013_en

LUX

EMB

OU

RG

www.ictspring.com

Koichiro TsujinoFounder Alex Corporation and developed VAIO, Sony, former

President of Google Japon

Ruppert KeeleyCEO EMEA, Paypal

Pepe MODERGlobal Director fot the Digital

Marketing & Communication, Pirelli

BRIAN STEVENSCTO, Redhat

Peter Sondergaard

Senior Vice President, Research Gartner

Laura YeciesCEO, SugarSync

Trip HAWKINSFounder of Electronic Arts,

CEO, Digital Chocolate

Biz StoneCo-founder, Twitter

ReGISTER NOW

MORE SPEAKERS ON

JUNE

www.ictspring.com

Page 8: TSM_11_2013_en

TODAY SOFTWARE MAGAZINE

8 no. 11/May, 2013 | www.todaysoftmag.com

startups

a friend for startups

After Cluj-Napoca Business Days, Marius kept in touch with us and invited us to participate in the OpenCoffee events he organized weekly Through him, we met a lot of people in the start-up scene who, not only were kind enough to share their experiences, but also gave us advice

on how to move our business forward. No later than one month since we met Marius, he sent us an e-mail through which he encouraged us to apply to the Healthbox London Accelerator (www.healthbox.com) . Healthbox is a medical-based accelerator that was beginning in October and was

probably the best shot we c o u l d h a v e e v e r g ot t e n to transform our product in a working business. We listened to his s u g g e s t i o n and over one month later we received an offer to parti-cipate in the first European a c c e l e r a t o r f o c u s e d o n h e a l t h . We p a c k e d o u r b a g s , w e n t t o L o n d o n and for me d the company now known as MIRA Rehab.

I n D e c e m b e r 2012, Marius recommended we apply to

Kairos 50. We listened to him again and we were invited to the Kairos Global Summit. The Kairos Global Summit was an event in New York in February 2013, where 50 of the most innovative student-run busine-sses in the world were flown in to showcase their ideas at the First Floor at the New York Stock Exchange.

We appreciate Marius’ help and his per-severing implication in the development of our project. Before meeting him, we alre-ady knew what direction we were going in, but he helped us make the first steps to our current business. His network of peo-ple, ambition to see other small companies grow and his general advice can help any start-up, anyone who has a good idea make the first steps to a potential success.

You can reach out to Marius Mocian through his e-mail address: [email protected]

We met Marius Mocian, [email protected], at Cluj-Napoca Business Days event in July 2012 where we had a booth to show people our product MIRA (www.mirarehab.com). After explaining to Marius what MIRA was all about, he started bringing people to our booth and discussing more about the business side of the product, rather than the technical or

medical part which we were used to answering. We immediately saw that he believed in what we were doing, the potential MIRA can bring to physiotherapy and that we needed help in refining our business strategy in order to reach out to investors and transform the product into a business.

Founders of MIRA Rehab

Page 9: TSM_11_2013_en

9www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

The Cluj IT History (V)Lessons learned from “Junimea”

history

I’ll start with Iacob Negruzzi’s closing of his book: “Memories from Junimea”.

„When I look back, at the past life of Junimea, I fully convince myself that such a society could have been formed only through the contribution of some utterly special cir-cumstances. A certain number of young men, with a shared vivid love for literature and all intellectual endeavors, had to meet in a country town, away from the political turmoil of the capital. They had to be finan-cially independent, such as to have enough to help other young men that lacked the means, but had the talent and determination. It was required that Junimea’s members fully acknowledge each other’s merits and that not a single sentiment of envy, even hidden ones, muddy the constant serenity of their relationships. Lead by such men and in such circumstances, it is not by mistake that The Society managed to last for so long, even with a complete lack of formal organization. But identical circumstances will not repeat easily in the life of a nation and that is why a second edition of such a society will perhaps be impossible in times to come.

Did Junimea have mentionable merits? One which, as myself, played a part can hardly judge the value of the play in which he had a lead role. Only the future will rightfully judge once we will no longer exist. However, it is my belief that Junimea will hold a page in Romanian literature his-tory, because we enjoyed ourselves to much during our endeavors, to not bring content and usefulness to the general public. There will come, later on, other societies, more edu-cated, maybe even more active and restless, but there will be none which will have done such serious works in such a joyful, pleasant and unusual manner.”

Besides the obvious value of the above quote, we can extract some useful lessons by extrapolating to the current local IT context. A simple re-reading, in which we replace “literature” with “IT”, paints an image so similar to today’s reality. A reality comprised of both similarities and differen-ces compared to the historical context of Junimea. First off, the geographical context,

political and economic, seems to be on our side. We are a country town, away from the capital city, with a young generation of IT loving men, having an above average finan-cial status (a national statistic places IT in the top 3 best paid industries, with Cluj coming in second after Bucharest). I dare name these contextual similarities as social infrastructure. Looking at the differences we must distance ourselves form the easy matching of social infrastructures and take into account the utterly special instances named by Negruzzi. In order to recreate them we must act on the following lessons.

First we must recognize or peers merits, without envy. Junimea used frequent clo-sed member meetings and the presence of “Literary Conversations” magazine, a very good tool to gather talented people, nur-ture voices and debate with other cultural and university centers around the country. This combination of intensely critical pri-vate communication and a common voice interfacing the general public, helped cre-ate a united uniform society, allowing the burnishing of vanities behind closed doors, before public exposure. There’s a similar individual value recognition effort in Cluj through an open and active communi-cation between the members of different professional communities. TSM magazine has as its main mission the facilitation of this open communication and increasing the visibility between local IT professionals, and we are joined by many others, from technical communities to guild like organi-zations (see Cluj IT cluster). The important lesson is to balance enough pride, to do justice to our own self-esteem, but not too much, as to fall victim to vanity and envy. Even though computer programmers are a vain species, there are enough good signs of success in avoiding the fragmentation, isolation and value diluting introduced by the latter.

Our progress on the next two lessons is still in its early stages: financing emer-ging talents and the joyful and fulfilling environment. When we refer to financing, it’s worth extending Junimea’s meaning of personal financial aid, because nowadays the investor role can be played both by

individuals and companies. It’s also worth extending the concept of talented young man, both to the IT professionals employed by companies and to the entrepreneurs of the startup scene. Regardless of the combi-nation in which the above roles collaborate, the priority lies in fulfilling the financial investment needs and accelerating the cur-rent efforts to counter the existing exodus of local startups towards friendlier interna-tional locations. We follow Junimea’s model in educating talent (company internal technical trainings, but also public pro-grams for entrepreneurial education), but it would serve to extend this effort towards public education (all levels), and also local accelerator and incubator programs for startup investments. We place our hope in the new cluster, in the ever more prevalent openness towards collaboration and social involvement of the local companies, and in the emergent few incubator/accelerators.

In the end I would like to talk about attitude and atmosphere. Both are essential, in Negruzzi’s opinion and I subscribe to it. There are tensions in the current environ-ment, generated by the over specialization in outsourcing and its implications, by the increasing competition on human resour-ces and also by the disconnect between the official friendly diplomatic discourse of the involved parties and the lack of real colla-boration project between the major market players. Even in the emerging startup scene, where open communication and mutual support are more present, we can feel an oscillation between healthy competition and plain vanity. Junimea’s recipe condi-tions the final satisfaction on the pleasure and joy in which the daily activities take place. I consider reordering our values the current top priority, and even if joyous and happy seem a bit farfetched as attributes of IT professionals, at the very least the plea-sure and professional fulfillment should be our first concern.

Marius [email protected]

Engineer intrested and involved in different IT activities, from development to, management, education to journalism as part of Epistemio, UTCN and TSM

Page 10: TSM_11_2013_en

TODAY SOFTWARE MAGAZINE

10 no. 11/May, 2013 | www.todaysoftmag.com

Transylvania Java User GroupJava technologies community.Website: http://www.transylvania-jug.org/

Started on: 15.05.2008 / Members: 539 / Events: 42

TSM communityCommunity created around Today Software Magazine.Website: http://www.todaysoftmag.ro Started on: 06.02.2012 / Members: 652 / Events: 9

Romanian Testing CommunityTesting dedicated community.Website: http://www.romaniatesting.ro Started on: 10.05.2011 / Members: 607 / Events: 2

GeekMeet ClujCommunity dedicated to web technologies.Website: http://geekmeet.ro/ Started on: 10.06.2006 / Members: 547 / Events: 17

Cluj.rbRuby community.Website: http://www.meetup.com/cluj-rb/ Started on: 25.08.2010 / Members: 134 / Events: 34

The Cluj Napoca Agile Software Meetup GroupCommunity dedicated to Agile development.Website: http://www.agileworks.ro Started on: 04.10.2010 / Members: 324 / Events: 29

Cluj Semantic WEB MeetupCommunity dedicated to semantic technologies.Website: http://www.meetup.com/Cluj-Semantic-WEB/ Started on: 08.05.2010 / Members: 140/ Events: 22

Romanian Association for Better SoftwareCommunity dedicated to IT professionals with extensive experi-ence in any technology.Website: http://www.rabs.ro Started on: 10.02.2011 / Members: 223/ Events: 12

May was full of major events and we are sorry that we couldn’t reach all but we are promissing to come back during next issues of TSM with interviews and feedback from them.

Calendar June 6Launch of issue 12 of TSM magazinewww.todaysoftmag.ro

June 7Project Managers Meetupwww.facebook.com/events/519200844808524

June 12Linked Data Technology Stackwww.meetup.com/Cluj-Semantic-WEB

June 12Functional Programming Retreatit-events.ro/events/functional-programming-retreat

June 14Development of a businessit-events.ro/events/proiectarea-si-dezvoltarea-unui-e-busi-ness

June 18Business Analysis Community Group Meetingit-events.ro/events/business-analysis-community-group-meeting/

June 19-20ITC Spring Europe, Luxemburg (recommended by TSM)www.ictspring.com

Thursday/weeklyOpenConnectwww.facebook.com/groups/355893314491424/

Wednesday/bi-monthlyOpenCoffeewww.facebook.com/opencoffeecluj

Cluj-Napoca IT communities

communities

Page 11: TSM_11_2013_en

11www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

To support the need of aspiring software craftsmen to reach this level, the promoters of the movement used a meta-phor based on the history of guilds.

MetaphorDuring the medieval age all goods were

hand made. Professions were structured in guilds, where the craftsmen would meet, learn from each other and defend their profession. Because certain guilds delivered very high quality products, their fame was increasing. This is why guilds were closed institutions; any craftsman that entered a guild needed to produce goods at a certain quality.

A blistering competition took place between the guilds from different cities; therefore, the quality of the products was constantly increasing. Every guild had bylaws that brought under regulation its internal mechanism. Also, laws regulated the way the guilds functioned.

To become a craftsman, a young man needed to pass several stages: he needed to become an apprentice, then a mate and a journeyman to learn from other crafts-men. Only afterwards he could become a craftsman himself. Ascending in a guild was very difficult and needed long years of preparation. A young man was starting his apprenticeship even when he was 10-12 years old. Before starting as an apprentice the young man needed to work as an intern

for 2-3 weeks so the craftsman would test his skills. The apprenticeship lasted around four years, during which the apprentice was a quasi-slave in his master’s home, having to do chores from sunrise until sunset.

After his apprenticeship was complete, the apprentice was given a certificate that allowed him to be hired as a mate. The mate had three options: stay in the master’s shop, get hired at another craftsman or do his journey. The journey was a way of learning; its purpose was to help the mate better master the craft. The minimum jour-ney time was 2 to 4 years.

After the journey, the journeyman needed to pass a craftsman exam through a practical assessment, a craftsman work or a masterpiece. A committee of respec-ted guild members analyzed the work and approved or rejected it. Only after a long process of admission, the young craftsman was allowed to open a workshop. A crafts-man was a citizen of the city he lived in and could take part in the political decisions of the city.

Guilds elected their leadership team. The craftsman with the biggest experience and with an immaculate reputation was usually the guild leader. The leaders took care that the guild would prosper, created the quality standards and did all the admi-nistrative papers.

Software Craftsmanship

The Software Craftsmanship movement started in 2009, as a reaction to the idea that we can temporarily reduce the code quality to ship products faster. The pro-moters of the movement think exactly the opposite: to deliver products in time,

even under pressure, we should improve the speed with which a programmer writes qua-lity code. In the first case the users, customers and the company that produces software can suffer; users and customers due to the mistakes introduced in the applications (bugs), and the company due to medium term decrease of the production speed for new applica-tion versions and due to user dissatisfaction.

programming

Alexandru [email protected]

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

Adrian [email protected]

Programmer. Organizational and Technical Trainer and Coach@Mozaic Works

Page 12: TSM_11_2013_en

12 no. 11/May, 2013 | www.todaysoftmag.com

The principlesAs said before, Software Craftsmanship

is an approach from the Software Development industry that stresses the importance of developers’ skills. The ini-tiators of the movement intend to raise the bar of the IT professionals by applying these concepts from the medieval age. The movement started in the year 2009 by cre-ating a manifesto “Manifesto for Software

Craftsmanship”. T h i s man i fe s to i s e x te nd i ng

the “Manifesto for Agile Software Development”. The Agile Manifesto pro-posed four important values: functional software, fast response to change, value the interactions between people developing software and intensive collaboration with the customer. Software Craftsmanship extends the “Manifesto for Agile Software Development” by saying that we do not want just functional software, but software created with care and skills. Not only answering fast and effective to change, but continuously adding value through functi-onalities important for the users. Not the interactions between people are impor-tant, but also building a community of professionals. Not only collaboration with customers, but also productive partners-hips based on trust.

HistoryStarting from 2009 when this mani-

festo was published, more and more programmers started to self-proclaim “Aspiring Software Craftsman”, the equi-valent of the apprentice from the history of guilds and craftsmen. Their purpose is to get to a point when programmers care about the quality of products, about the code quality and to want to learn conti-

nuously. Like an apprentice was working from sunrise to sundown, aspiring software craftsmen keep practicing to improve their skills. A few ways of learning were promoted: coding kata, coding dojo, pair-programming, and a new concept was invented: code retreat. We will come back to each of them in detail.

Corey Haines is amongst the first pro-grammers who decided to be a “software journeyman”. More than a year Corey tra-veled the world with the only purpose to learn new things from other programmers. During his trip he wanted only to have a place to sleep and to have something to eat in exchange of working on any software. After his journey finished, Corey came back to his master, Robert C. Martin, and told him what he learned, much like in the guilds time.

Programming practicesAs opposed to other professions, a

programmer does not have a set of stan-dardized practices to learn. Teams use, of course, a set of practices, but at the industry level we lack proof about what helps and what does not help when developing com-plex applications.

This was a problem for Software Craftsmanship, because you cannot deve-lop the skills of programmers when you do not know which skills help. The initiators of the movement have done two things: they have selected some of the practices from the experience of programmers who wor-ked for decades in software development and insisted that each programmer should learn continuously inside the community, hoping they will succeed in defining the profession.

Some of these recommended practices for any aspiring craftsman are: automated testing as unit testing or test driven deve-lopment, continuous refactoring, keeping the code clean through specific rules, ele-ments of design and architecture, different programming paradigms – object oriented and functional –, and pair-programming. This list is just a basis for the members of communities to start building upon.

At a personal level, the recommen-dation of the movement is that each programmer tries to master these practices, discuss them in the community and choose the one that help them the most for a cer-tain project.

The movement is sometimes critici-zed because of this list of practices. A lot of the remarks are reactions to Robert C. Martin’s (probably the most vocal promo-ted of Software Craftsmanship) assertions, who tenaciously supports these practi-ces. His purpose is to define a standard for the profession, but the methods used alienate some programmers interested in the movement. In reality most of the to aspiring software craftsmen are pragmatic developers that prefer to master the tools of the craft in order to deploy the useful ones when in need.

Ways to learnOnce a list of programming practices

that need to be mastered is defined, the programmers need ways to learn them. As the experience of Corey Haines (and not only) shows, one of the best ways to learn programming is by interacting with the community. But at the same time pro-grammers should work to develop their abilities on their own.

programming

Software Craftsmanship manifest

Software Craftsmanship

Page 13: TSM_11_2013_en

13www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

Software craftsmanship is suggesting some methods to learn these practices.

Coding kata is a method borrowed from martial arts. It refers to exercising a pro-gramming practice by repeatedly solving a simple problem while using that practice. Many kata problems are documented on the web, as well as video recordings of pro-grammers who demonstrate solving them. The most important thing is to reflect after each kata and figure out what slowed the process down and what should change to accelerate.

Coding dojo is another method borrowed from martial arts. It refers to a group exercise with the purpose of exchan-ging knowledge between attendees. The group will try to solve a problem using certain practices. In its most known way, two programmers write code on a pro-jector so that everyone can see. At a time interval (around 7 minutes), one of them is replaced by the next programmers from the audience. In this way, through rotation, everyone writes code and sees how others write code.

Code retreat is another format, this time borrowed from the writers community. The idea of a code retreat is to combine more elements from a coding dojo or coding kata into one day of practice. Code retreats take place usually on Saturdays and last the whole day. The event is structured in 6 sessions of 45 minutes, divided by short retrospectives. The rules are simple: during each session the programmers work in pairs with the purpose to write code within certain constraints required by the facili-tator, chosen so that the learning process is fast. The code is deleted completely after each session, the pairs and the constraints change and the code writing starts again.

The first code retreats took place in USA

in 2009, followed soon after by Romania, where Maria Diaconu and Alexandru Bolboacă facilitated them within the AgileWorks community. Corey Haines had a very important role in disseminating the event throughout the world, everyth-ing culminating with the “Global Day of Code Retreat”, when during 24 hours code retreats are happening round the clock in the whole world. Adrian Bolboacă is the responsible on Europa of this global event.

Shortly after these practices were taken by the testers community as well, and now there are testing kata and testing dojo. Also, lately Markus Gärtner facilitated the first test automation retreat.

The same, these practices were adapted for architecture learning, named architec-tural kata and architecture retreat.

New types of exercises appeared in time. Adrian Bolboacă invented the ses-sion named “Taking baby steps”, with the purpose of learning refactoring and was successful at international conferences, inside communities and at code retreats. Adrian Bolboacă and Alexandru Bolboacă invented the session “Brutal refactoring” that was facilitated since in many places in the world. Keith Braithwaite invented the session named “TDD As If You Meant It”, now used at almost every code retreat.

Besides community events, learning by pair-programming is an excellent way to master the practices described above. Any programmer should be able to invite another for a private practice session. Several programmers do this remotely as well; Alexandru Bolboacă opened a couple of years ago a “Remote Pair-programming Tour” in this purpose.

ConferencesThe Software Craftsmanship commu-

nity organized several conferences. The most known are in USA and London, but Romania joins this year with I. T.A.K.E. Unconference. On 30-31 May, the event will gather programmers from Europe and a special guest from USA in order to discuss, practice and learn together these program-ming practices. Not only the speakers will write code, but the attendees will program during the workshops, the Kata Lounge contest, will develop an open source pro-duct during a hyper-agile format named “Open Space Software Development”, or during the unconference track organized with the “Open Space” format. The leaders of many European Software Craftsmanship communities will speak and facilitate workshops at this event. This event opens the gates of the highest level of knowledge about software development in Europe to all programmers in Romania.

ConclusionIn conclusion, Software Craftsmanship

is a wide spread international movement, whose foundation is the idea that the pro-gramming profession means the ability to deliver quality code under pressure. To reach this level, the programmers must master a list of practices. To master them they can practice by themselves and inside commu-nities through specific meeting formats. The code retreat is the format that spread the fastest during the last years, climaxing with the Global Day of Code Retreat. In Romania, the movement is promoted by the agile community “AgileWorks”, by the “I T.A.K.E. Unconference”, and by passio-nate programmers from the country.

Referenceshttp://arheologie.ulbsibiu.ro/publicatii/bibliotheca/bresle/4%20capitolul%20II.htm http://manifesto.softwarecraftsmanship.orghttp://agilemanifesto.orghttp://en.wikipedia.org/wiki/Kata_%28programming%29 http://codingdojo.org/cgi-bin/wiki.pl?WhatIsCodingDojo http://coderetreat.org/about http://www.testingdojo.org/tiki-index.phphttp://blog.adrianbolboaca.ro/2013/04/the-history-of-brutal-refactoring-game/http://blog.adrianbolboaca.ro/2013/01/the-history-of-taking-baby-steps/http://www.alexbolboaca.ro/wordpress/articles/how-to-organize-a-code-retreathttp://www.alexbolboaca.ro/wordpress/the-remote-pair-programming-tourhttp://agileworks.rohttp://itakeunconf.com

Page 14: TSM_11_2013_en

14 no. 11/May, 2013 www.todaysoftmag.com

The Scenario CardScenario Cards are used to argument

decisions from various points of view. The cards are used by the architect of a cer-tain project and distributed in order to be assessed by the team’s decision makers, including the client.

A template of the scenario card is pre-sented in the diagram below. As seen above, the card has four sections:

• The details section, where a relevant code of the scenario and a short descrip-tion of it are introduced• The section containing details con-

nected to the work environment from an architectural point of view• The section for the decisions that

are going to be made in respect of the scenario • The section for architectural argu-

ments, the reason and a simple diagram reflecting the scenario’s object.

The section for decisions has one field for explanation and other four for impact on the current architecture. These are:

• Sensitivity points marked with the code S1, S2, …• Tradeoff points marked with the

code cod T1, T2, …• Risks marked with the code R1, R2,

…• Non-risks marked with the code N1,

N2, …

A sensitivity point represents the particularity of a component which is critical for obtaining a quality attribute.

The tradeoff point is a particularity affecting several quality attributes or it is a sensitivity point for several attributes.

Risks are architectural decisions that can cause potential problems.

Non-risks represent the specification of good architectural decisions in the scenario card having an informational character.

These columns may contain one or several values in codified form (already mentioned above). These codes are going to be explained in dedicated lists.

From The Software Architect’s Kitchen –

Scenario Cards

The methodology presented in this article was developed at SEI (Software Engineering Institute, Carnegie Mellon) and is part of the ATAM (Architecture Tradeoff Analysis Method) methodology. The article presents this methodology

in a simplified form and stresses its practical application.

architecture

Attila Antal [email protected]

Software Architect@ ISDC

Page 15: TSM_11_2013_en

15www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

Case StudyIn order for the operating procedure through which an appro-

priate solution is found using the scenario cards to be presented as real as possible, I will further bring forward a hypothetical case.

Thus, a supposed client has an application in which he wants to introduce in the business logic start a module that decides and influences the results of certain calculations. It will ask the project’s architect (in this case use) to come up with some imple-mentation ideas.

The architect, meaning us, will carry out three scenarios and get these through an assessment procedure and finally try to find the most appropriate solution.

Let’s see the scenarios!

DL1: Hard-coded Logic

Scenario #: DL1 An internal decision, hard-coded logic will be used.

Attribute(s) Performance Environment During operation (Runtime)

Stimulus Request for a decision coming from Business Logic.

Response Decisions made based on internal logic.Architectural decisions Sensitivity Tradeoff Risk Nonrisk

Hardcodare S1 R1 N1

ReasoningUsing the “hard-coded” decision mode, the complexity level is reduced and also maximum execution performance can be achieved.

Architecture Diagram

DL2: Configurable Logic

DL3: Logic based on Rule Engine

Scenario #: DL3 A Rule Engine will be used for decisions.

Attribute(s) FlexibilityEnvironment During operation (Runtime)

Stimulus Request for a decision coming from Business Logic.

Response Decisions made by Rule Engine.Architectural decisions Sensitivity Tradeoff Risk Nonrisk

Using a Rule Engine

S2, S3 T2

Maintenance of the rules base

S4 R3 N2

ReasoningThe introduction of a Rule Engine into the architecture confers flexibility and configurability.

Architecture Diagram

List of Sensitivity PointsCode Description

S1 The decision logic is difficult to modify afterwards and requires the product to be relaunched into production.

S2 Introduces complexity to the project.S3 Requires expertise and/or experience.S4 In sync communication and planning with the team

maintaining the rules base.

List of Tradeoff PointsCode Description

T1Trebuie decis dacă proprietătile vor fi recitite imediat după modificare sau numai după relansarea aplicației (flexibilate vs. garanția calculațiilor ptr. toți).

T2 Trebuie ales un Rule Engine portivit.

List of RisksCode Description

R1 A change in logic requires development.

R2Since the properties file is a sensitivity point of the system, it must be protected and specific roles must be insured for the modification.

List of Non-RisksCode Description

N1 It is easy to achieve and insures the on-time launch into production.

N2 A simple solution must be found for launching the rules.

AssessmentFor the assessment of scenarios we will use the tabular form

of a “Utility Tree”.We enumerate the scenarios from the cards, but we can also

Scenario #: DL2

Se va folosi o logică de decizie internă semi-hardcodată bazată pe anumite atribute configurabile prin intermediul unui fișier de proprietați.

Attribute(s) Configurability Environment În timpul rulării (Runtime)Stimulus Cerere de luare decizii dinspre Business Logic.

Response Decizii luate pe baza logicii interne influențate din exterior.

Architectural decisions Sensitivity Tradeoff Risk Nonrisk

Hardcodare R1 N1Fișier de Proprietăți T1 R2

ReasoningDacă logica de decizii se bazează pe niște parametri care se pot externaliza, atunci se poate introduce configurabilitate.

Architecture Diagram

Page 16: TSM_11_2013_en

TODAY SOFTWARE MAGAZINE

16 no. 11/May, 2013 | www.todaysoftmag.com

add others (without the card) and ask the parties participating on behalf of the client to grade these according to importance (L – low, M – medium, H - High). The difficulty column will be marked by the project architect. In our case, the table will look like this (the importance column being a speculation):Quality Attribute Scenario Importance Difficulty

Performance DL1: Hard-coded logic

L L

Configurability DL2: Configurable logic

H M

Flexibility DL3: Logic based on Rule Engine

H H

The ones with major importance must be selected from the table above, namely:

• DL2:Configurablelogic(H,M)• DL3:LogicbasedonRuleEngine(H,H)

Since scenario # DL3 presents also high difficulty, we require more analyses to be carried out by the parties and have to see whether they actually need this solution. The high level of dif-ficulty can be translated in our case as: more expensive, longer implementation time and possible license and maintenance costs.

Therefore, we may state that until a decision is made in respect of # DL3, the winning solution is # DL2.

SummaryThe conclusions we can draw after reading this article are:• The Architect must always come up with various scenarios

for a single problem.• The Scenario Card is a presentation medium for an idea and

in the same time it is a decision making medium.• The Scenario Card is the first line where the sensitivity

points, tradeoff and risks are mentioned. • Each card must be assessed by the client or by the client’s

technical representative.• Scenario Cards must be collected and catalogued, because

these are part of the decision making process and also these can be reused.

From The Software Architect’s Kitchen – Scenario Cards

architecture

Throughout the year, ISDC engineers dreams of customers.

Only in spring time, we engineer Easter sponge cakes!

PAȘTE FERICIT!FIJNE PAASDAGEN!FROHE OSTERN! !

Page 17: TSM_11_2013_en

17www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE architecture

THE PHILOSOPHYNowadays, application development

is not only about module development, software maintenance, which was created many years ago, or the simple functiona-lity testing. The Romanian ‘softists’ have reached the level in which not only the client or „developer” wants more, but the market wants something more from ‘Romanian developers’. The customer expects something more precious than coordinated execution, something extra and unexpected, even for him. Of course, the vast majority of programmers neglect this detail which they become aware of when they are customers themselves.

The vast majority of developers will not be able to sacrifice time and additional energy to offer something extra. There are many reasons behind this choice: personal, financial or even stagnation in the comfort zone.

The article below is addressed to all those willing to offer something additional to standard requirements and also to pre-pare in becoming the best in IT. Of course, each has his own unique way to reach the Architect level, which requires years of experience.

To define an Architect, either in the system-software, solution or business category, I’d use a few keywords: dreams, reality, creation, timeless. An architect must take into consideration the fact that any solution or application he created actu-ally reflects some people’s dream and will be a long-lasting creation. If you find the

above mentioned vocation, we can move on to the next level where we will brie-fly discuss some aspects of how to turn a dream into a reality.

THE SECRETWhat is the key to an architecture which

satisfies all the project requirements? The question is rhetorical, but it can be answe-red. The ideal architecture is one that meets the four criteria mentioned above and is consistent with the decisions taken during deployment, while not deviating from the basic criteria proposed in the early stages of architecture.

While it seems easy to handle the later stages, it is actually harder to keep the crea-tion in balance, because of various reasons such as managerial or financial decisions, changing the purpose or team.

THE BUCKET LISTTo keep all under control, we have to be

aware that without a ’to-do list’ we will not be able to be consistent, which will prevent the architecture from being sustainable. This list only makes sense if we regularly resume and check whether what we origi-nally defined is still valid. If the deviation is too high, it’s time to think if the selected architecture would be good enough.

A list of SMART necessities can be the following:

A. Data collection1. Create a list of functional

requirements.

Sustainable architecture (grow from novice to guru)

The dialogue between client and architect is about as intimate as any conversation you can have, because when you’re talking about building a house, you’re talking about dreams. Robert A. M. Stern

Levente Veres [email protected]

Design Lead @ endava

Page 18: TSM_11_2013_en

18 no. 11/May, 2013 | www.todaysoftmag.com

Example: an application that can book plane tickets.2. Create a list of non-functional requirements

Note: : If you do not have something like this from the client, then ARCHITECT is responsible for making a list like the one shown below, which will help the developers. Example: •Oursolutionfindsallticketsavailableforaspecificroute in 30 milliseconds.•Eachdatabasequerylastsnomorethan10milliseconds.•Weserve1,000usersperminute.•Weuseeachapplicationserverwithanoccupancyrateof maximum 70%.

3. Create your own list of possible requirements (define how extensible you want the application to be).

Example: in the near future we want to serve mobile applications through Web Services (Restful).

4. Create a list of expectations of stakeholders from the proposed solution

Example: •EconomicManager:10%reductionofsalescosts•ITManager:reduceemployeedissatisfactionwithaccess to the system•Employees:customersareabletoquicklybooktickets.

B. Shape it: ‘Our friend, the barber’1. Slice – cut the right size

•Breaktheproblemdownintosmallerproblems,majorfunctionalities into sub functionalities that can be resolved.•Anothermethodistodecomposeinmodules/blocksthat are closer to the OOP concept.

2. The orthogonal barber: •Let’sorienttowardsorthogonality,iemodularizethesolution. This allows us to create different modules and interfaces facilitating testing and maintenance of the product.

3. DRY(Don’t Repeat Yourself) – Uscatul •Themostwell-knownacronymrelatedtotheidea:asingle result to a single problem. It’s important not to try to repeat the code, modules, interfaces that have the same functionality.

4. Test it: the mirror test•solutiontestabilityismostvitalinsupportingarobustarchitecture, but still responsive tochanges.•Itisimportanttodecidetowhatextentwewishtotestthe proposed solution: the micro level that will test each variable, method or class or the macro-oriented testing, in which case we are interested in the modules that can be tested.

5. FixIt: - a skilled barber respects himself:•It’sgoodtocreatemodulesthatsupportchangesandfixes so you do not have an impact on other components.•Ifthefixinduceschangestoseveralmodulesatthesame time, it is necessary to review the initial plan, if the architecture really meets our needs.

6. Cost of changes: pay the barber• the robust architecturemust support continuouschange, but at the same time the price of those changes should be minimum.•Tocalculatethecostofchangewecanuseasimpleequation that warns about the risks:

Sum( Change[1..n]x Sum(Affected Module[1..m]) ) = Cost of Change

••wheren,misthemaximumnumberofchangesandmodules.•Eachmoduleandchangehasthevalueof1andcer-tainly if the modules are more complex we can define a specific cost for each of them.•Wewillgetthemaximumcostifeverychangehasanimpact on each module.•Theidealcostis30%ofthemaximum,theoptimalcostis between 30% and 70% and the critical cost is over 70% of the maximum cost.Example: for 3 modules, where Modul3 has cost3, for 2 changes we have the following cost

o Change1 x (Module 1 + Module 2) + Change2 x (Module1+Module2+Module3) = 1x(1+1) + 1x(1+1+3) =2 +5=7o Cost maxim: Change1(Module1 + Module2 + Mod-ule 3) + Change2x(Module1+Module2+Module3)= 1x(1+1+3)+1(1+1+3)=10

o Maximum Cost : 10; Ideal Cost: 3; Critical Cost: 7.

Sustainable architecture (grow from novice to guru)

architecture

Page 19: TSM_11_2013_en

19www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

In the above example we are at the boundary between the critical and ideal cost, which informs us that the archi-tecture may be affected and have major consequences.

C. Focus Point: to remember• check quality, metrics, modules and classesredundancy; •checkwhetherthechosenarchitectureandalignmentstandards (TOGAF, ISO, etc.) are also mapped on the current solution;•introducecheckpointstovalidatethesolutionandarchitecture;•Recallthelimitsofhardware,networkandintegratedcomponents;•Do remember that resourcesare limited (money,developers).

D. The Good is the Enemy of the Perfect: let’s tend to perfection•alwaystrytoimprovetheexistentcode.•don’tsuccumbtoyourideas:improvementisfree,let’sleave for tomorrow what we can do today etc•Respectyourworkandothers.• Use the concept of „Benefits +1”, always bringsomething in addition to what you have been asked.•PROTOTYPE:prototypinghelpsustobesurethatweare on the right track•DRAW:thegraphicaldisplayofarchitecturebringsthevisual benefit of a rapid analysis

A lot can be added to the above list, in order to be very com-plex and satisfactory. However, benefits should be considered each time by introducing new complexities. In the next issue of TSM we will identify some ‘best practices’ to create architectures accessible to the entire team.

Page 20: TSM_11_2013_en

20 no. 11/May, 2013 | www.todaysoftmag.com

A short definition: “The cloud is a complex mechanism made from a suite of software and hardware services configured based on client needs.” Services offered by the Cloud are split into two main catego-ries: SaaS and IaaS

• SaaS – Software as a Service: Rental of software licenses (subscription based). More exactly, SaaS is a method of supplying access to licenses through web. Using this method the client will not need to install and run the application on his local environment which will lead in the end on getting the work done without having to do regular maintenance and support. E.g.: CMS, CRM, Email, Virtual Desktop, Communications, Games, etc .• IaaS – Infrastructure as a Service:

Rental of hardware resources (storage, memory, CPU). Like SaaS, once exter-nalized, this service will provide a more relaxed environment so the focus can be put more on other activities. E.g.: Virtual Machines, Servers, Storage, Load Balancers, Network, etc.

Also there is some other services offe-red by the cloud PaaS and NaaS:

• PaaS – Platform as a Service: Complete platform rental for development which include operating systems, data bases, web servers, etc.

• NaaS – Network as a Service: Network rental, connection services, VPN, optimization of the rented resources, etc

Some of the advantages offered by the Cloud are the mobility, velocity, almost unlimited storage, processing power far superior, no worries regarding maintenance

of hardware and software resources.Other advantages, which are usually

pursued by managers, would be to reduce the expenses with software licenses, adjus-ting the expenses based on the needs and transforming the costs of capital into ope-rational costs.

Who offers these services? Usually big companies like HP, Keynote Systems, Advaltis, Compuware, Load Impact, SOASTA, etc. These providers may also be using hardware services rented or sold by Amazon, Google, Microsoft, etc.

Testing in the CloudTesting is a challenge for many pro-

jects, especially for big applications where the business is complex and performance do suffer under heavy load conditions of usage. The quantity of test cases may vary from a few hundreds to thousands and all these need high capacity of processing and long times of execution. Not taking into account the human resources needed to cover all these needs.

The Cloud comes as a helping hand, offering the best approach to client needs. Hardware virtualization, unlimited storage, software and hardware, all these will reduce the time execution.

Beside all these advantages, migrating into Cloud can be quite expensive and not always is the best solution to our testing problems. What should be then considered before moving our testing activities into Cloud?

A. Application characteristicsThe Cloud can help us when we need

connections distributed all around the

Earth (geo location), (socializing web-site or video-streaming). Firewall and Load Balancer testing imply expenses on hardware/software and maintenance. For the applications where the user increase rate is unpredictable or where we get many environments for deployment, the Cloud shows its advantages over the more tradi-tional “in house” environments.

B. Testing types that we need to runMost popular tests that are usually por-

ted in Cloud and from which testing can benefit most:

• Stress Testing• Load Testing• Performance Testing• Functional Testing• Compatibility Testing• Browser Performance Testing• Latency Testing

Moving into Cloud with testing is usu-ally done for performance testing, trying to simulate a traffic as real as possible and to distribute it in various locations. On these aspects, Cloud proven itself for adaptability and velocity for providing the final results more accurate.

Steps to be followedSo after we decided that we can move

into Cloud, what are the steps to be followed?

First we need to identify the use-cases. Then we extract the test-cases. Usually these two steps are made in the beginning of each sprint or project regardless if the tests will be ran into Cloud.

Third step is the one when we choose

Nowadays everyone talks about the Cloud, how to move IT activities into Cloud, how to gain time and money using advantages offered by the Cloud. So, what exactly is this Cloud and who takes care of it so everything goes fine inside of it?

QA

Testing in the Cloud

Page 21: TSM_11_2013_en

21www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

the Cloud Service Provider. We do this accordingly with our application and the results we need to obtain. Also we need to take into account the services that our Provider is offering and to be sure that in the next period of time it will not change in a way to affect our testing.

Fourth and fifth steps are Setup Infrastructure and Leverage Cloud Servers. These two steps are meant to identify necessary hardware for running the tests, calibration and optimization of the Cloud servers to correspond as much as possible with the production setup.

After all these steps we continue with

running our tests, monitoring intermediate results and then extracting the results we need.

The flow looks simple at first sight from above figure but in order to do a success-ful migration there are a few more hints to take into consideration. One would be to understand very well the platform where we move our testing activities. Another hint is to identify which tests will be moved and how will they be run. Not all the tests worth moving.

Advantages for moving into Cloud• Once moved into Cloud the costs

will decrease. We don’t need to worry anymore for maintai-ning a private cloud;• U n l i m i t e d

s torage , access i -ble from anywhere (using mobile devi-ces and PC’s);• R u n n i n g

automated tests that w e r e p r e v i o u s l y recorded, optimized and checked locally;• F l e x i b i l i t y

on often changes on operating systems and browsers;• High mobi-

lity for testing team where the team is distributed in mul-tiple locations. This way, testing gains a big advantage beca-use the time used to synchronize manu-al ly between the teams decreases very much;• A l m o s t n o

server maintenance;

Disadvantages for moving into Cloud• Initial setup

and adjusting confi-guration has higher costs. Also moving all tests into the new

testing environment has some costs. Usually the cost is one of the criteria taken into account for the final decision;• Security may be a problem for some

kind of applications where sensitive data is traded between DB, WS and so on;• Different results for same tests beca-

use of the often changing of performance on the environment where the Cloud provider is;

ConclusionsWe see all around us companies who

offer Cloud services, especially storage. There are also companies oriented toward more specialized services like Testing in our case. Decision to move testing into Cloud it’s a technical decision but it’s also a mana-gement one from a financial perspective.

Short term advantages for a big project will probably won’t be visible quickly, but as time will go by these advantages will appear and the initial investment will be covered.

So, do we move our testing in the Cloud?

References:http://cloudcomputing.sys-con.comhttp://wikipedia.orghttp://ieeexplore.ieee.org/xpls/abs_all.

jsp?arnumber=5463680

Vlad [email protected]

Senior QA Engineer@ Small Footprint

Page 22: TSM_11_2013_en

22 no. 11/May, 2013 www.todaysoftmag.com

QA

Likewise, in the big software companies where there are Development, Testing and IT departments involved in the developing process there is the need of close collabora-tion. To insure efficiency, the collaboration is realized by standard processes and pro-ducts which, because of the diversity of the processes and products used, becomes an objective that is difficult to attain.

The development methodology which stresses the collaboration between the Development, Testing and It teams is cal-led DevOps. This methodology implies the specification of the teams, the processes and products used so that the production cycle of a version is as short as possible.

In the Romanian IT companies, which implement the DevOps methodology, they often use specific solutions, internally developed, such as scripts or different uti-litarian devices. In the case of the projects developed as outsourcing, they depend on the processes and/or the products imposed by the needs and possibilities of the cli-ents. The IT department and equipments are often situated in a remote data centre which is based on physical, virtual or cloud

servers. The first problem is the collaboration

between the involved departments. From this point of view the development team has, for example, a vision regarding qua-lity that is different from the vision of the testing team, the testing team has a vision regarding the implementation and the IT team regarding the product developed and tested by the preceding teams. The teams need a common language for efficient communication.

The second problem is that of integra-tion and standardization of the processes and products used when the projects, pro-ducts or clients change. Since the initial solutions are specific to the existing pro-jects, they have to be adapted to the new requirements. The cost necessary to the implementation of a new integration is significant and it is multiplied according to the number and nature of the new products used.

The present article presents an approach of these two problems based on a strategy of automatic testing. The solution named TAO is meant to be applied in the DevOps world and it represents an example, not an absolute solution. Furthermore, the exam-ples and the technologies mentioned are from the Java world, and this option is jus-tified by the author’s experience in this IT domain.

The StrategyFor the development of a reliable and

quantifiable solution of automatic testing, we suggest the observation of three aspects: the testing environment, the testability of

Facebook, Google or Flickr have the possibility to introduce in production up to 10 new versions of product per day, in a way that is transparent to the users. In the heterogeneous and agile world of the IT industry, the development of applications

and services becomes a challenge due to the diversity of technologies and products, as well as due to their number.

Test Automation Orchestration

Lucian [email protected]

OO Content Arhitect@ HP Software Cluj

Page 23: TSM_11_2013_en

23www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

the product and the continuous integration.

The Testing Environment • Complexity – – the testing envi-

ronment used varies from a physical server located in the proximity of the programmer or tester, to the complex data centers, based on virtualization or cloud technologies. The testing environ-ment is often conditioned by the costs or by the availability of the clients over here and by the challenge regarding the gene-rality of the automatic testing solution. In the category of free products there are VMware Player, Oracle VirtualBox, Linux KVM. Among the commercial solutions of virtualization the most com-mon are VMware vCenter, Citrix Xen and Microsoft Hyper-V. When it comes to cloud technologies, the leaders are Amazon EC2 and the OpenStack imple-mentations (such as HP Cloud). • Control – the solution of automatic

testing must present basic capabilities of control of the testing environment. It is necessary that the testing system allows the provision of the testing envi-ronment through generic actions: start, stop, configuration for as many tes-ting environments as possible. For the applications which do not offer a silent module of installation, it is helpful that

the testing environment allows the coming back to an initial state. This can be done through snapshots or non-per-sistent storage devices (such a feature is offered by the VMware vCenter).

The Testability of the Product• Installation - the installation and

uninstallation module. The applications often allow a silent way of installation. One must identify parameters (files, registers, data bases etc.) that were

modified in the installation/ unin-stallation process. This is important because in an automatic testing system, the installation/ uninstallation of diffe-rent versions of the application are imperatively necessary. We recommend the usage of the silent way to install/ uninstall, but there are also alternative solutions that can be used, for exam-ple, the non-persistent storage devices mentioned above. The automatic testing system must allow the local or remote execution of scripts: Bash, PowerShell, Python, Perl etc. For remote connection it has to support protocols such as SSH, WMI etc. • Configuration - the options of

configuration of the application. After the installation of the application, the next step is its configuration in view of carrying out the automatic testing. For the input of test data and the con-figuration of the application we often use options such as: the user interface, web protocols (REST, SOAP), files, data bases. The technologies often involved in

this phase are: Selenium, HP UFT (for the user interface), Soap-UI (SOAP), Spring, Apache Http Client (REST). • Monitoring - means of observing

the state of the application: the user interface, the data base, log files. The automatic testing systems must obtain the results of running the tests for vali-dation and notify the involved teams about the results of running the tests. The technologies used to carry out this task are usually the same with the ones mentioned in the sections above.

Continuous Integration Continuous integration represents

a practice of promoting a frequent inte-gration of the source code into a central system of control of the versions, the frequent build of the application together with the running of unitary tests. This practice recommends the existence of an efficient build system, of a series of unitary tests, of a version control system and of a notification system.

• Build system – among the diversity

Figure 1 Testing environment provisioning

Figure 4 TAO generic architecture

Figura 2 Instalarea, configurarea și monitorizarea

Figure 3 Build server invoking automated tests

Page 24: TSM_11_2013_en

24 no. 11/May, 2013 | www.todaysoftmag.com

QA

of systems I identified Jenkins, Hudson and CruiseControl as the most used in the DevOps world.• Integration – – a complete pro-

cess requires the integration between the build system, the unitary tests and the products used by the testing team (HP ALM/QC, Jira, Selenium, HP UFT) as well as the connection with the testing environment. The Jenkins/ Hudson communities offer extensions for the various integrations such as Jira, Selenium, HP UFT, HP ALM/QC, but there are also other solutions.

Considering all these mentioned

aspects, a generic architecture of automatic testing is illustrated in Picture 4.

Our SolutionT h e p r o d u c t H P O p e r a t i o n s

Orchestration (OO) automates the IT processes by using flows and automation operations. The operations are atomic actions which perform specific tasks such as Remote Command Execution, SSH Command, SQL Query.

The flows are sequences of logi-cally interconnected steps, each forming an instance of an operation. The flows represent complex automation processes such as: Server Health Check, Provision Environment, Download and Install Application Build.

Today, the product offers a free library of more than 4000 operations and flows which cover integrations with technolo-gies such as HTTP, LDAP, SSH, WMI, Ant, PowerShell, integrations with products such as HP ALM, Jira and with virtual and cloud systems such as VMware vCenter, Hyper-V, Amazon EC2.

The user has the possibility to use the flows and operations offered or to create new ones, by creating new flows. Studio is a visual environment of development which allows the creation of flows using structures and paradigms borrowed from the object oriented programming such as: data struc-tures (lists, queues), control structures (if, case), reutilization and package.

The flows developed and tested in the Studio are published in a data base from where they are accessible by using a web

component named Central. From here, the user can plan the running of the flows, so that they are carried out for example once per night, after each build.

ResultsBy using the OO product we achie-

ved a series of automation flows grouped under the name of TAO (Test Automation Orchestration). The solution solves the problem of collaboration between the development, testing and IT teams, by a visual environment that is easy to use and understand by persons possessing some minimum experience in the programming languages.

The integration problem between the various technologies and products is solved by using the flows and operations offered by this product. Picture 5 represents some flows used by employing HP Operations Orchestration.

Similar ApproachesThere are similar products which offer

features similar to OO, among which we can mention: Electric Commander,

Test Automation Orchestration

Page 25: TSM_11_2013_en

25www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

Microsoft System Center Orchestrator, UC4. Electric Commander represents, through the number of integrations and DevOps technologies used (build systems, applications server, testing products) a competitor for the OO product. They both provide a visual environment of flow development, planning options for their running, and reporting and monitoring systems. On the other hand, OO offers a set of flows much wider for the provision and integration with other products such as Jira, HP ALM/QC, Amazon EC, HP Server Automation etc.

The FutureOur next steps are the extension of TAO

flows which are necessary in the various DevOps scripts, as well as the integration with code analyzing products (Sonar) and with open-source provision applications. Our goal is to raise the awareness regar-ding the qualities of the HP Operations Orchestration product in general and of TAO solution in particular, by creating a public community which can facilitate and encourage the access to the already existing flows.

References HP Operations Orchestration, Official

Webpage, Hewlett-Packard, November 2012,

HP Op erat ions Orchest rat ion , Concepts Guide, Hewlett-Packard, June 2010,

Electric Commander, Official Webpage, Electric Cloud, November 2012,

Top 10 Virtualization Technology Companies Webpage, Keneth Hess, 2010,

Wikipedia, The Free Encyclopedia DevOps Webpage, November 2012.

Figure. 5 HP Operations Orchestration

Page 26: TSM_11_2013_en

26 no. 11/May, 2013 www.todaysoftmag.com

management

OPTIONSABILITY -

A discrete feature of IT projects

Returning to IT projects, perhaps most, both customers and solution provi-ders, would define a successful relationship when delivery of the product is done on time, on budget and meeting functionality and quality expectations. Most managers would consider the project ended well and would focus attention on a new challenge. In reality, the period immediately following delivery is a critical point where opportuni-ties arise for both the client (beneficiary of the software) and the supplier. The purpose of this article is to show why it’s important this moment, who is responsible and what it deserves to treated as a purpose itself, starting with the early stages of the project, when contract is signed.

Overall, the simplest generic way about conceiving and implementing a software project gathers together, as functional team, three main parts, unified by a purpose:

Looking more in depth at successful

projects, it appears that beyond the diffe-rences in technology, methodology and process, their success is due to a property that, in the absence of a name, I called it „optionsability”. It is defined as the pro-perty of having and providing options. The functional relationship between the above parties changes a bit and tries to anticipate the future ways of the project:

In real life, meeting customer inde-

cision is actually quite common, but thankfully the technical and management components know precisely their roles. If for the project’s goal all parties are con-sistently caring, for „optionsability” the responsibility returns to: .... developers and architects (the technical team). I would like to underline especially the role of develo-pers, because a plan may have a correct implementation, but rigid, and they are the ones who make this decision, voluntarily or

An overview of the social and professional actuality reveals a rather exponential trend, especially in the last twenty years, which makes our today’s standards and benefits higher and higher. Beyond obvious evolution, the dynamics and

magnitude of these events have led to take place an important, but yet subtle, change of emphasis positioning: the achievements do matter, but more than that, today, it matters most the further options you have. If there are other areas where this is less true, in IT this conclusion is real and representative.Bogdan Matei

[email protected]

Senior Php Developer@ 3Pillar Global

programare

Page 27: TSM_11_2013_en

27www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINEprogramare

imperceptible. Thus „optionsability” beco-mes an important property that builds up continuously during the project develop-ment and it will influence later decisions.

It would be ideal that client comes with some outline directions, but in practice this rarely happens and this makes the role of the technical team even more impor-tant. And managers have an important role through continuous attention to maintain the project in time, budget and required functionality.

We defined the property, we presen-ted its lifetime, we found the responsible, but why is it important and for whom? To respond to „why?” is enough to take a short look at products enjoying suc-cess today: SUVs, smartphones, smart TVs, modern furniture (like Ikea), sports goods, tools, DIY tools, etc.. and even IT trends (Facebook, WhatsApp, iTunes etc). The appearance of a product (design) and quality of materials (or implementation) usually qualifies a product for consumer’s attraction and/or affection (he becomes interested in it), but those that mark the product’s success are the options the pro-duct offers. Sometimes the offered options manage by themselves to decide on suc-cess. Most of us have or will have children. After I made more unsuccessful toys shopping, I noticed that even at an early age, the choices are naturally influenced by offered options. I think it’s pointless to detail what options have Spiderman, Batman, Ironman, the heroes of Star Wars and Transformers ...

Regarding the answer to the question „for whom?”, the answer is simple, but yet surprising: for all.

For the customer involved in the

business community, the options are more important than the achievements themselves, particularly in times of cri-sis, when the possibilities decrease. An argument in this regard is the evolution of Apple shares in the past year, although the company reported record profitability. Having options became an advantage more important than having achievements. For the business itself the options are a reser-voir of safety, a border of flexibility and for the business owner they mean comfort providing a feeling of trust and freedom. In themselves, these details may seem insignificant things, but they are the basic foundation that produces consequences in important decisions.

By extending the focus beyond the scope of the project, towards possible worthy options, in the short term this may mean an increase in costs, due to higher required skills and, maybe, necessary mindset changes. The mentality to think of options does not mean to immediately implement them! Instead it must make you aware of their possible later existence and they might need the ground prepared even from the initial design or develop-ment phase. Selecting between options only those beneficial comes from constant communication between the parties and a thorough knowledge. But on long term (over 1 year), the earnings are obvious:

• increased efficiency, by reducing the time spent on „reinventing the wheel”;• a valuable knowledge base and more

reliable tools, available to be (re)used;• decreased reasons for rewriting pro-

jects (client’s biggest nightmare);• a solid foundation for faster „best

practice” achievements;

• less development time, helped by making more adaptations and integra-tion of reusable code;• faster integration of newcomers or

juniors;• more accurate estimations.

Another important benefit is the increasing appreciation of clients who come to consult with you, start recommen-ding you and trust more in the business relationship held together. In time, the results of thinking with „optionsability” translate into the company’s reputation.

For the technical team are also considerable advantages: the level of professionalism increases, writing code becomes more challenging. It requires greater involvement in business context. Developers must put themselves in client’s or client’s customers place and seek solu-tions and possibilities. Making a more flexible architecture or writing more rea-dable, reusable and reliable code, is more exciting and more useful. Once the code is written, in time, a helpful foundation is building up, providing more confidence, reducing the stress brought by „unknowns” and making estimates a smaller problem. Juniors also have a better model than the classic „trial and error”.

For the marketing team, the opti-ons are the best quality material. Take for example the most popular products: Coca-Cola, BMW, Audi, Starbucks, etc.. Almost anyone does not promote the pro-ducts themselves, but instead options or emotions/benefits possible with product’s options. Options help marketers to conceive attractive and effective advertise-ments by focusing messages on the options

Page 28: TSM_11_2013_en

TODAY SOFTWARE MAGAZINE

28 no. 11/May, 2013 | www.todaysoftmag.com

managementOPTIONSABILITY - A discrete feature of IT projects

that people value most, but beware, always offered by the product.

For the end consumer to have choi-ces is a rhetorical justification. The more educated they are, the more people rea-lize the importance of having options, in the expense of concrete assets (properties, money etc..). Options are seen as a solu-tion or hope for efficiency, performance or entertainment.

Up to this point we probably we cleared the attributes of this property, but what is more important is how this goes into prac-tice. Like any mindset change I don’ t think it is realistic to expect an immediate and general adherence. This mentality requi-res more creativity and passion (or higher responsibility). As the main responsible are technicians, their adherence to this way of thinking is crucial. They should have a good knowledge of project scope and also, at least, a basic understanding of project’s domain and should capitalize their tech-nical skills from seeing themselves in the

place of the users of that product. They must constantly seek and anticipate pos-sible or beneficial developments, shaping up their ideas into clear and managea-ble implementations that provide easy use of maintainability features (read, use, inspection, monitoring, re-use, adaptation, extension, (de) activation). Technically, it comes consistent help from data structures, algorithms, „design patterns”, methodo-logies and processes. „Agile” has a great contribution.

The best, shortest and most concrete generic suggestion that I can give about how to start put this in practice is by to noticing the reactions of the parties invol-ved in that business area when the solution is presented. A good solution is usually easier understandable. The code is the mirror of ideological expressions, relative to a requirement or a natural feature. As a metaphor, reading a portion of code can be seen as making a reportage about a lan-dscape. Usually landscapes have a cohesive structure and should have the code.

Making projects with „optionsability” as the second goal is not applicable to all projects! There isn’t a predetermined recipe. It depends very much on context, on result brought by an objective analysis of the gains and costs. From experience, it is well suited to long life projects with frequent maintenance needs or for projects seen as foundation for other projects. The decisions concerning the „optionsability” are taken step by step, always argued. The confirmation that the path is correct comes from increased stability of the quality of the project, from higher availability to meet changes and from better awareness about the implications.

Page 29: TSM_11_2013_en

29www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE programming

This article aims to make a short introduction of the tool, highlighting the advantages, disadvantages and challenges the developers using the tool have to face

The SCADE development environmentSCADE is built upon the Scade lan-

guage, a synchronous language designed for developing real-time systems. The extension SCADE offers is a graphical development environment which helps modelling our software very similar to designing integrated circuits.

Developing with SCADE means creating operators, which have their func-tionality defined on diagrams, using a set of predefined operators. Diagrams can be of two types, data- or control flow (using finite state machines) or a combination of these two. Connecting these operators, the model of a real-time application is created, meant to be executed cyclically, reading its inputs at the beginning of each cycle and calculating its outputs based on these inputs and the internal states of the system.

The data types at hand are the basic ones (int, real, char, bool). It is possible to

define composed types, like arrays, enume-rations and structures, or to import types definedinCorC++.Importedoperators,which have their functionality imple-mented in other languages, can also be integrated in the model.

A synchronous model means that the computation of the outputs is not tied to the order in which these are made, out-puts having a single possible value in a cycle. This approach allows omitting time inside the cycles – a useful abstract when developing real-time systems, as it leads to a finite execution time of the software which obeys the limitations of its operating environments.

SCADE forces these theoretical con-straints during modelling, but also by a checker which validates the entire model. This check assures the correctness of the design from all aspects, playing a similar role as a compiler.

In order to verify the model the simu-lator can be used to examine the model during execution. By setting the input interfaces the inner states of the model can be verified to the smallest detail: values of

The requirements imposed by the standards in the field make developing safety-critical software be a continuous challenge for everyone involved in the process. The SCADE development environment prescribes many of these rules right from

the beginning of the project. Built on top of a synchronous language, having a determi-nistic approach, bundled with a certified C code generator and a set of tools to help with testing and verifying the product, SCADE lets us focus on implementing the high level requirements and saves us from worrying about the basic mistakes.

Developing safety-critical

software with SCADE

Hunor [email protected]

Software Developer@ evoline

Page 30: TSM_11_2013_en

30 no. 11/May, 2013 | www.todaysoftmag.com

variables, data flows between and within the operators, transitions and states of the finite state machines.

ExampleLet us model as an example an application which controls a

locking system. As input we will receive the state of a button. For output the command to close or open has to be computed.

Our first operator will transform the state of the button to a rising edge event, which will take place only when the state of the button changes from not pushed to pushed. The functionality could be modelled in the following way:

The second operator models the states of the system (closed or opened) and the possible transitions between these states, using a finite state machine. The activation condition for the transitions is

the true value of the command variable. Finally the data flows of the two operators can be connected,

creating thus the model of the application.

C code generationWe can transform our models in compliable

C code with the help of KCG. The code generated

is certified to be free of low level programming errors. As the precondition for a successful code generation is to have a valid model, the genera-ted C code keeps the theoretical qualities of its source: it is synchronous and deterministic.

Integration is achieved by calling the genera-ted C functions. By creating a wrapper class for these functions as an interface between the gene-rated code and the rest of the software, a single point of dependency for the rest of the applica-tion from the generated code can be achieved. This approach makes the generated C files tem-porary artefacts during the build process of the application, the SCADE model being treated as source code.

KCG is certified to generate code conforming to multiple security standards in the industry: DO-178B (for aerospace and defence), EN 50128 (for rail transportation), IEC 61508 (industrial and energy) etc. This eases the certification pro-cess of the software developed with SCADE.

The RisingEdge operator from the previous example will generate the following C function:

/* Playground::RisingEdge */void RisingEdge_Playground( inC_RisingEdge_Playground *inC, outC_RisingEdge_Playground *outC){ kcg_bool tmp; if (kcg_cond(outC->init)) { outC->init = kcg_false; tmp = kcg_not(inC->btnPressed); } else { tmp = kcg_not(outC->rem_btnPressed); } outC->isRising = kcg_and(tmp, inC->btnPressed); outC->rem_btnPressed = inC->btnPressed;}

AdvantagesUsing SCADE in the development process can assure a higher

level of quality of the software throughout the whole process, without using any other tool. The theoretical guards of the syn-chronous approach applied from the very beginning, ensures that the product will meet the requirements for safety-critical software: the system will always have a well defined state and will react in time constraints which are easy to define and measure. In the same time the diagrams are self explanatory enough to become a good way of communication between the members of the project.

Developing safety-critical software with SCADEprogramming

Page 31: TSM_11_2013_en

31www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

Disadvantages The strong points of SCADE become

the weak ones: the graphical approach requires more attention when developing in a team. Whereas for textual elements there are mature tools which are helpful in merging the work done by different deve-lopers, for diagrams this is still a challenge to be met, in most cases still impossible to achieve and a situation better to be avoided.

The constraints of the language raise the level of dependency between the model files: interfaces between operators need to match exactly in order to have a valid model. This requires closer collaboration between team members.

SCADE has limited ways to handle large and complex data structures. It is also not suitable for developing software which will require intensive computation.

ChallengesGetting used to the synchronous

approach is the biggest challenge develo-pers will face. Constraints which in case of other languages must be imposed by separate tools or a dedicated architecture, in SCADE are at the core of the language and part of the development environment.

Breaking these rules is impossible, even when this would be desirable.

ConclusionBased on a synchronous language,

SCADE guards the most important aspects in real-time software development – to have finite execution time and well defi-ned states under any condition – so that these need to be considered throughout the developing process. The certified code generator helps in transforming the models into C code and integrating with the rest of the system. With all its disadvantages, SCADE suite is a mature solution for deve-loping safety-critical software.

Page 32: TSM_11_2013_en

32 no. 11/May, 2013 www.todaysoftmag.com

programming

In the next part of this article I would like to talk about Hadoop. Why? Big Data doesn’t exist without Hadoop. Big Data could be an amount of bytes that the client wouldn’t even know how to process them. Clients started a long time ago to ask for a scalable way of processing data. On ordi-nary systems, processing 50T would be a problem. Computer systems for indexing and processing this amount of data are extremely costly, not just financial but also in terms of time.

At this point Hadoop is one (maybe the best) of the best processing solution for a

big amount of data. First of all let’s see how it appeared and how did it ended in being a system that can run on a 40.000 distribute instances without a problem.

A little bit of historySeveral years ago (2003-2004), Google

published an article about the way it han-dles the huge amount of data. It explained what solution uses to process and store large amounts of data. As the number of

sites available on the internet was growing so fast, Apache Software Foundation starts creating Apache Hadoop based on the Google article. We could say that the article has become the standard for storing, pro-cessing and analyzing data.

Two important features for which Hadoop is currently a system that many companies adopt it for processing Big Data are scalability and the unique way in which data is processed and stored. About these features we will talk a little later in the article.

During the entire development process, Hadoop system has been and will remain an open source project. At the beginning it was supported by Yahoo which nee-ded an indexing system for their search engine. Because this system was working so well it ended also to be used by Yahoo for publicity.

A very interesting thing is that Hadoop system didn’t appeared overnight and at the beginning it wasn’t as robust as it is today. At the beginning there was a scalability problem when it had to scale up to 10-20 nodes. The same problem was with the performance. Companies as Yahoo, IBM, Cloudera, Hortonworks saw the value that

We all heard about trends. We have trends in music, fashion and of course in IT. For 2013 there were announced some trends that are already part of our lives. Who didn’t hear about cloud, machine to machine (M2M) or NoSQL.

All these trends have entered in our lives as part of our ordinary day. Big Data is a trend that existed last year and it remained one of the strongest one.

Big data and Hadoop

Radu [email protected]

Senior Software Engineer@iQuest

Page 33: TSM_11_2013_en

33www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINEmanagement

Hadoop system was bringing and they invested in it. Each of this system had a similar system which tried to resolve the same problems. At this moment it became a robust system that can be successfully used. Companies as Yahoo, Facebook, IBM, ebay, Twitter, Amazon use it without a problem.

Since in Hadoop data can be stored very simple and the processed information occupy very little space, any legacy system or big system can store data for a long time very easily and with minimum costs.

Data storage – HDFSThe way Hadoop is built is very inte-

resting. Each part is thought for something big starting with files storage to processing and scalability. One of the most important and interesting component that Hadoop has is the files storage system - Hadoop Distributed File System (HDFS).

Generally when we talk about storage systems with high capacity our thought leads us to custom hardware which is extremely costly (price and maintenance). HDFS is a system which doesn’t need spe-cial hardware. It runs smoothly on normal configurations and can be used together with our home or office computers.

1. Sub-system management Maybe one of the most important

properties of this system is the way that each hardware problem is seen. From the beginning this system it was designed to run on tens, hundreds of instances,

therefore any hardware problem that can occur is not seen as an error but as an exception of the normal flow. HDFS is a system that knows that not all the registe-red components will work. As a system that is aware of this it is always ready to detect any problem that might come and start the recovery procedure.

Each component of the system stores a part of the files and each stored bit can be replicated in one or more locations. HDFS is seen as a system that can be used to store files which have several gigabytes and can reach to several terabytes. The system is prepared to distribute a file on one or more instances.

2. Data accessNormal file system storages have as a

main purpose the data storage and they send us the data we need for processing. HDFS is totally different. Because they work with large amounts of data they solve this problem in a very innovative way. Any system we will use, we will have problems in the moment we will want to transfer large amount of data for processing. HDFS allows us to send the processing logic on the components where we keep the data. Through this mechanism the data needed for processing will not be transferred and only the final result must be passed on (only when needed).

In such a system you would expect to have a highly complex versioning mecha-nism. A system that would allow to have

multiple writers on the same file. In fact HDFS is a storage that allows to have only one writer and multiple readers. It is designed this way because of the type of data it contains. These data doesn’t change very often and that’s way it doesn’t need modifications. For example the logs of an application will not change and the same thing happens with the data obtained from an audit. Very often data that is stored after processing they end in being erased or never changed.

3. PortabilityBefore talking about the architecture of

the system and how it works I would like to talk about another property that the system has – portability. For this reason HDFS is not used just together with Hadoop system but also as a storage system. I think this property helped HDFS to be widespread.

From the software point of view, it is written in Java and can run on any system.

4. NameNode and DataNodeIf we talk about the architecture of such

a system is necessary to introduce two terms in our vocabulary: NameNode and DataNode. It is a master-slave system.

NameNode is „the master” of the sto-rage system. This is handling the storage system of file name and knows where it can find it – mapping files. This system doesn’t stores the file data; he is just dealing with the mapping of the files, knowing in every moment the location where these files are stored. Once the name has been resolve by NameNode it will redirect the clients to the DataNode.

DataNode is „the slave” that stores the actual content of the files. Customers will access the DataNode to access the stored information- reading and writing of the data.

As a system that is ready for the fall of a component, in addition to NameNode, we have a SecondaryNameNode. This com-ponent automatically makes NameNode checkpoints and if something happens to the NameNode this component is ready to provide the checkpoint in order to restore the state that the NameNode had it before the fall. Note that SecondaryNameNode will never take the position that the NameNode has. It will not solve the loca-tion where the files are stored. The only purpose it’s to create checkpoints for NameNode.

Figure 1: Hadoop ecosystem

Page 34: TSM_11_2013_en

TODAY SOFTWARE MAGAZINE

34 no. 11/May, 2013 | www.todaysoftmag.com

programmingBig data and Hadoop

5. Data storageAll data that is stored as files. For the cli-

ent the file is not divided into several parts even if this happens internally. Internally the file is divided into blocks that will end in being stored on one or more DataNodes. A large file can be stored in 2, 3 or even 20 nodes. The NameSpace controls this and it may require the blocks to be replicated in several locations. In Figure 1 is the archi-tecture of the system.

What is interesting about this architec-ture is how it works with files. The accessed data by the customers never passes through the NameNode. Therefore even if we have only one NameNode in the whole system once resolved the location of the files no client request will need to go through the NameNode.

6. File structureHow the files are stored to be accessed

by customers is very simple. The custo-mer can define a structure of directories and files. All these data are stored by the NameNode. This is the only one who knows how folders and files are defined by the customer. Options such as a hard-link or soft-link are not supported by HDFS.

7. ReplicationBecause the stored data is very impor-

tant, HDFS allows us to set the number of copies that we want to have for each file. This can be set when creating the file or anytime thereafter. NameNode is the one that knows the number of copies that must exist for each file and makes sure that it exists.

For example, when increasing the num-ber of replications that we want to have for a NameNode file take care that all blocks to be replicated again. NameNode’s job it doesn’t end here. For each block it receives

an “I’m alive” signal at a specific time- heartbeat. If one of these blocks does not receive the signal the NameNode will start the recovery procedure automatically.

How the data replicates is extremely complex. HDFS must take into account many factors. When we need to make a new copy we must be careful since this operation consumes bandwidth. For these reasons we have a load-balancer that han-dles data distribution in cluster, the cluster location where the data is copied to be able to do the load-balance in the best way possible. There are many options for replication; one of the most common is the 30% of responses to be on the same node. In terms of distribution of the replications on racks, 2/3 are on the same rack and the other is on a separate rack.

Data from a DataNode may automa-tically be moved to another DataNode if it detects that the data is not evenly distributed.

All copies that exist for a file are used. Depending on the location where you want to retrieve the data, the client will have access the closest copy. Therefore, HDFS is a system that knows how the inter-nal network looks like- including every DataNode, rack and other systems.

8. NamespaceThe namespace that the NameNode has

it stored in the RAM can be easily accessed. It is copied to the hard disk at precisely defined intervals- the image name that is written on the disk is FsImage. Because the copy on the disk is not the same as in the RAM memory, there is a file in which all changes that are made to the file or folder structure are logged- EditLog. This way if something happens to RAM memory or the NameNode, the recovery is simple and can contain the latest changes.

9. Data manipulation A very interesting thing is how the cli-

ent can create a file. Initially, data is not stored directly in the DataNode, but in a temporary location. Only when there is enough data for a write operation wort-hwhile, the NameNode is notified and copies the data in the DataNode.

When a client wants to delete a file it is not physically deleting from the system. The file is only marked for deletion and moved in the trash directory. In the trash is kept only the latest copy of the file and the client can enter into the folder to retrieve it. All files in the trash folder are automatically deleted after a certain period of time.

Conclusion In this article we saw how Hadoop

appeared, which are its main properties and how the data is stored. We saw that HDFS is a system created to work with large amount of data. This is made extre-mely well and with minimal costs.

Figure 2

Page 35: TSM_11_2013_en

35www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE programming

Functional Programming in Haskell

History made it so that the commonest programming languages of today are in the imperative camp. There, the code is nothing more than a set of orders given to the com-puter. However, very few programmers know that the imperative programming paradigm is but one of the fourth invented by the mathematicians which laid out the bases of Computer Science. Hardly alike, these paradigms are linked together by one thing: the Church-Turing thesis which says that no paradigm can be used to solve more problems than the other ones. However, code can be written more easily in the functional paradigm than in the imperative one for some problems. In today’s langua-ges landscape one sees an astonishing fact: even if all four paradigms were created roughly at the same time, the fact that the von Neumann computer model is so suc-cessful has made the imperative languages be the predominant ones in the field. Still, the other ones have their uses too, espe-cially in Artificial Intelligence. The oldest programming language still in use today – LISP – was created by John McCarthy for Artificial Intelligence studies.

An important moment in the history of programming languages is represented by the influential article of John Bachus Can Programming Be Liberated From the von Neumann Style? A Functional Style and its Algebra of Programs. An important point is made there: functional programs can be more easily composed by assembling pre-viously tested components. Basically, this article is the catalyst for the apparition of new functional programming languages beside LISP. In 1970s there were no less than 10 new languages. From them, the ML family languages stand aside, being repre-sented by two languages: OCaml which is

still in use today and Miranda.It was from these languages where

members of the 1990 committee for inven-ting a new language started their work. They wanted an open standard capable of allowing and encouraging research in pro-gramming languages design and compilers. In the end, they have created Haskell.

In time, this language managed to become a powerful programming lan-guage. Now, it is used in various domains, for example in Artificial Intelligence, Security, Web Development and Operating Systems. Many of the novelties which were created for this language later found their wayintoC++,Java,etc.

This development couldn’t be possi-ble without the community which exists around the language (the #haskell IRC channel on Freenode, special groups and tags on Reddit and Stack Overflow, many blog articles collected weekly by Haskell Weekly News and twice a year by Haskell Communities and Activities Report) but it is also due to the great number of online reso-urces for language learning (The Monad Reader, wikis and wikibooks, etc.).

Famous names from IT industry are using Haskell today, either in development or on local, small-scale projects: NASA, Galois, Facebook, Google, Microsoft, Jane Street, etc. The first Perl6 interpreter was written entirely in Haskell. Tools for auto-matic program validation and theorem proving are developed in this language (sometimes with some Ocaml parts).

But why is this language so attractive? The common answer has two aspects: the declarative style and a certain guarantee of code correctness. Functional programs are extremely concise; the focus is on what the code should do instead of how it should do

it. For example, here follows a quick-sort listing (always choosing as pivot the first element from the list):

sort [] = []sort (x:xs) = lesser ++ x:greater wherelesser = sort [a | a <- xs, a < x] greater = sort [a | a <- xs, a >= x]

Compare this code with the lengthy implementation of the same algorithm in your favorite language. Clearly, functional code benefits from the declarative aspect: code is more easily read, unknown syntax elements can be skipped over, their mea-ning understood from the context.

To help prove code validation Haskell has static typing: each expression has a type which is known from the compile time. There is no explicit conversion between similar types: the programmer is in charge with doing them where and when they are needed. Some researchers have promoted the idea that a good type system usage can lead to guaranteeing an important inva-riant: if the code compiles there’s a high chance that it is also correct. Quite often, this is true. In fact, what is recommended is to transform the most frequent runtime errors into compile time error. As an exam-ple, let’s look at the null-pointer-exception problem: a special type called Maybe is used in Haskell: the programmer will return values encapsulated into this contai-ner from functions which can fail and the compiler will ensure that every caller will test whether the call succeeded or failed. At an extremity, there are web frameworks where every string is of a different type: one can no longer confound CSS with HTML and SQL injection and similar attacks are no longer possible.

Another advantage of static

Alan Perlis once said A language that doesn’t affect the way you think about programming, is not worth knowing. Judging by the number of Stack Overflow questions and the impressive number of articles and posts on reddit, Slashdot or blogs, it is clear that the Haskell language deserves to be known. In fact, functional programming is indeed a domain which every hacker

should be accustomed with.

Page 36: TSM_11_2013_en

36 no. 11/May, 2013 | www.todaysoftmag.com

programming

typing is the fact that functions are sear-chable by knowing only their type. There are even two search engines for that: Hayoo and Hoogle. Both are able to generalize as much as possible the arguments and both are capable of offering good and eloquent suggestions. After a time, it is possible to arrive at a puzzle-solving like program-ming: the pieces are the functions which will remain into the end program.

An important characteristic of the lan-guage is its purity. Every program must interact with the outside world (reading data, sending data, etc.) Haskell is no diffe-rent. However, his functions for this are marked differently from the type’s point of view. Any function with lateral effects is marked IO. And, if a programmer could extract the values from Maybe, this is no longer true for IO. This enforces that every function with lateral effects is only called from functions marked as having lateral effects. In practice, the code is divided into two parts: the purely functional code for data manipulation and imperative code for interacting with the outside world. It is this segregation which prompted Simon Peyton Jones – one of the language’s founders – to consider Haskell as being the best impera-tive programming language.

This segregation also helps in code parallelization. It is very easily to do this in Haskell: since pure functions have no late-ral effects they can be called in every order, as many times as possible and their results can be memorized in caches. It is too easy to write lock-less code.

Another advantage of the language is its laziness. The programmer is able to write a code which works with infinite structures as long as they have a finite representation and only a finite number of elements is nee-ded. Think of the infinite sequences from Math: they can be represented by a recur-rence relation and you are only interested in the first few terms and some specific properties.

However, even if laziness allows us to write circular programs and work using infinite sequences, sometimes this harms in analyzing program’s performance. Luckily, Haskell has constructs for controlling eva-luation type. Thus it is possible to enforce strictness and eagerness at function level. On the other side, lazy evaluation ensures that only the needed data is computed, loo-sing as few clock cycles as possible.

Finally, by using all of the language’s features it is possible to write code with near C performance. The advantage of using a functional language becomes more

evident now: a declarative code can be read even after 2-3 months have passed since it was first written.

Haskell code can be either interpreted or compiled. Using the GHC (The Glorious Glasgow Haskell Compiler Collection) suite together with Haskell Platform is recommended. Thus, all of the language’s features and some higher level libraries which are consistently checked and perfor-mance improved are available. The GHC suite comes with a compiler (ghc) and an interpreter (ghci). The later enables rapid prototyping of applications, code testing and type evaluation. The compilers is used to generate an executable with the same performance as classical languages. Finally, there are tools in the Haskell Platform suite for profiling and optimizing the code.

Considering that enough details were presented and that the passion to learn the language is ignited it is time to go to some syntax elements. In the end, we will write a simple code for a simple problem: find the order of a permutation. For example, the order of (3 4 2 1 5) is 4: starting from (1 2 3 4 5) we get to (3 4 2 1 5), then (2 1 4 3 5), (4 3 1 2 5) and back to (1 2 3 4 5).

A permutation will be represented by using a list of numbers from 1 to n. In Haskell, [1, 2, 3] is the list of the first 3 natu-ral numbers. To have a generic code, we can use a generator, like in [ 1 .. n]. A Haskell list allows only prepending elements by using the : operator. The empty list is []. List elements must all have the same type and can be accessed via !! operator..

Most of the functional programming functions are recursive. This enables using structural induction to prove code correct-ness. For example, the following function computes the length of a list:

length [] = 0length (x:xs) = 1 + length xs

The first line decla-res that length of any empty list is 0. The second says that the len-gth of a list formed by prepending an element to a list xs is 1 greater than the length of the list xs.

P r o g r a m m e r s accustomed with com-piler structures and low-level programming will say that recursi-vity eats stack space and must be avoided.

However, GHC compiler can do some code transformation arriving at tail recursion: each recursive call replaces the stack frame of the previous call such that the result is given back directly to the caller.

If you look closely at the 2 lines of len-gth, you’ll see that there is exactly one line per each constructor. Almost all functions in functional programming use the same pattern of deconstructing the data type: write an expression for each constructor of the type.

Consider now the following two func-tions. The first one computes the sum of a list while the second the product of its elements.

sum [] = 0sum (x:xs) = x + sum xs

product [] = 1product (x:xs) = x * product xs

As you see, there’s a common pattern: starting from an initial element to be used for the empty list and a binary operation we get to a single result by “folding” the list. This pattern is captured by Haskell via two functions (depending on the direction of the reduction):

foldr f e [] = e foldr f e (x:xs) = f x (foldr f e xs) foldl f e [] = e foldl f e (x:xs) = foldl f (f e x) xs

Observe that one of the 2 functions is tail-recursive from the beginning: one of the call arguments is updated with the par-tial result. The difference between the two functions is observable from the following image:

Other two important patterns are map and filer, illustrated by the following code and images:map f [] = []map f (x:xs) = f x : map f xs filter p [] = []filter p (x:xs) | p x = x : filter p xs | otherwise = filter p xs

Using these patterns enable us to write less code (remember DRY principle) which is also easy to prove for correctness. Finally, the compiler can further optimize our code if using said functions.

Now, let’s write code to apply a permu-tation on a list: for each element from the permutation we give back the correspon-ding element from the list (using !! to get the elements and map to apply this opera-tion on all elements).

applyPerm :: [Int] -> [Int] -> [Int]applyPerm l p = map (\i -> l !! (i - 1)) p

With this function we can compute the answer of our problem using until. This is the equivalent of imperative while: having

Functional Programming in Haskell

Page 37: TSM_11_2013_en

37www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

a predicate and a function for iterating between states it starts from an initial state and returns the state where the predicate becomes True.

computeOrder :: [Int] -> IntcomputeOrder perm = fst $ until test f $ f init where l = length perm - 1 test p = snd p == [1 .. l] f (a, list) = (a+1, applyPerm list perm) init = (0, [1 .. l])

How does it work? Starting from a per-

mutation, we use applyPerm to modify the current state from until. A state has two values: a counter and a list, the result of permuting the first natural numbers.

Using ghci, we test the code:

*Main> computeOrder [3,4,2,1,5] 4

The result is the expected 4. We can test this by using iterate to infinitely call a

function and collect all values, generating the list [x, f x, f (f x), ...]. Finally, we use take to select only the first elements of the list, taking advantage of laziness to get only the needed elements:

*Main> take 5 $ iterate (flip applyPerm [3, 4, 2, 1, 5]) [1..5] [[1,2,3,4,5],[3,4,2,1,5],[2,1,4,3,5],[4,3,1,2,5],[1,2,3,4,5]]

Next time we’ll get into more elements of Haskell’s syntax: how to define new types and how to use them.

Mihai [email protected]

IxNovation @ IXIAmember of ROSEdu, ARIA

Page 38: TSM_11_2013_en

38 no. 11/May, 2013 www.todaysoftmag.com

The guide contains design procedu-res for REST web service, both client and server, but also addresses issues of perfor-mance, scalability, reliability and security.

The first remarkable information that you can learn from this book is that in 2000 Roy Fielding introduced an archi-tectural style known as Representational State Transfer (REST) in his dissertation „Architectural Styles and the Design of Network-Based Software Architectures „. My mind immediately flew in comparative terms, and I imagine the times when we will also have, in Romania, thesis topics on software architectures. The answer is com-plicated, but maybe in 10 years, with a lot of work, it’s possible! The future is yours!

The book is divided into 14 chapters and 5 appendices. The author gradually presents all resources involved in cresting and consuming a web REST service. Each chapter is structured in form of a recipe, the problems are expressed through „How to...” or „When and how...” methods, then solutions are given and eventually discus-sions on the topics.

Web REST services have emerged as an alternative to SOAP-based web ser-vices. They use the HTTP protocol, but are not limited to them. Unlike SOAP, REST does not require XML parsing and does not require a message header to and from the service provider. Due to the HTTP transport protocol, REST uses three communication methods between client

and server:• GET, for obtaining reliable informa-

tion and idempotent• POST, for creating a new resource,

for modifying one or more resources, for running applications with large inputs or for performing any unsafe or non-idem-potent operations, when no other HTTP method seems right• PUT, for creating new resources only

when customers can decide upon the URI of resources, otherwise POST will be used• DELETE, for deleting a resource

If we refer to entities and the con-nection with a persistent module, we can take into account the usage of the four methods using the following template:

• GET, for queries• PUT, for update• DELETE, for deleting• POST, for creating

The way in which we group or combine resources is also of interest, regarding the communication. These actions have rele-vance to performance growth and traffic limitation.

As we know, any of the methods can be Consumer and Producer. In addition, each method can demand the type of resource which it produces or consumes. Choosing the type of resource is difficult. The main types of representations that the author

The book which I submit for review this edition of TSM, entitled „RESTful Web Services Cookbook” by Subbu Allamaraju, Yahoo architect, is part of a special category. This book presents a complete guide to writing and consuming REST

web services in a manner independent of programming language. This is a big challenge. Regarding the new concepts introduced, the book is a comprehensive material and the challenge results in finding the limits of a particular programming environment.

programming

Book review:RESTful Web Services Cookbook

by Subbu Allamaraju

Silviu [email protected]

Java consultant@ .msg systems Romania

business

Page 39: TSM_11_2013_en

39www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

describes are:

• XML, for any representation• JSON, for any representation, but

JSON compared to XML, can provide performance in parsing• Portable data formats, such as: date,

time, numbers, currency• Binary encoded data, such as: video,

audio, photo• Errors, in the form of a plain text or

an error code. The error codes for is 4xx - for errors due to customer input data, and 5xx - for server deployment errors or due to the current state

Resources are identified through URIs. How an URI is built has a great impor-tance in avoiding ambiguities and finding resources. The author describes several elements needed for creating URIs, but also some of the best practices, such as „How to Keep URIs Cool” in section 4.4., for example.

A particular chapter, Chapter 5, deals with the web links topic. These web links exist in XML, JSON representations, in headers and at the client. Building URI templates is efficient because it offers URI dynamicity, clients being able to include additional information in URI, before sen-ding the server request.

Atom and AtomPub formats define resources such as entries and feeds, their representation and an operating protocol on these resources. REST web services

support this type of format, in addition to those previo-usly mentioned.

Star t ing with chap-ter 7, the author presents advanced elements in REST services field. The first topic talked about is ‘content negotiation’, more precisely pointing out the client pre-ferences such as: supported media types, language, cha-racter encoding etc. .

Using the cache is a very important aspect, because used properly it lowers the delays perceived by the user, increases confidence, redu-ces costs and overload and server load.

B a s e d o n u p d a t e s frequency, we can establish an exact period of time for which the cache can serve a representation.

A new challenge that leads to perfor-mance is given by conditional requests. This conditional request reveals two pro-blems: for GET requests it helps clients and caches to identify weather a certain representative can be considered new and for PUT, POST and DELETE requests, the conditional requests provide competition control. Competition control is implemen-ted in two ways:

• Pessimistic competition: the clients blocks the resource• Optimistic competition: by inserting

a version token, that is validated

The followings part contains various topics related to a resource: how a resource can be copied, moved, undo-ed and more. Chapter 11 makes important references regarding this matter.

Chapter 12, the security chapter, describes the aspects related to resources access, through authentication and confi-dentiality, integrity, preventing access to malicious or unauthorized clients.

The last chapter deals with extensibi-lity and versioning and makes references to URI compatibilities, XML and JSON representations, atmos extension and so on.

I found the book content very complex. Some questions arose after reading the book, mainly because some of the features I haven’t tested in Java. At this moment I do not know which of the topics mentio-ned in the book cannot be supported by

the Glassfish server. Most of the tests I have done were a success; however there are still a lot to be tested. Therefore, I ask you, readers of this book review, to try to implement in JAVA EE6 all the problems raised by the author in this book.

If you manage to go through all the books pages and create examples, I consi-der that REST won’t have any uncertainties for you. Looking forward to any debates on this topic.

As always, I wish you to enjoy the rea-ding of this book!

Silviu Dumitrescu

business

Page 40: TSM_11_2013_en

40 no. 11/May, 2013 www.todaysoftmag.com

The idealistic partA mature community of IT professio-

nals and companies that sustain each other and make clients all over the world look towards Cluj with great interest – seems like a dream. A beautiful dream! There was once somebody else who said “I have a dream!”…

What is the reality now in Cluj? Those about 9.000 employees from IT companies are the most critical resource. All compa-nies fight for attracting new employees and, apparently, the incomes are the only moti-vator. There are also additional “incentives”: playing areas, ping-pong tables, massage and other “must-have-s” that could make employees from other industries extremely jealous.

On the other hand, the declared tar-get of employees needed in this market is 20.000 people. Seems like the gap between what is it now and the community that needs to be built is quite big.

A VISION and a great amount of IDEALISM are obviously needed. Without these two ingredients, the IT market in Cluj will remain a source of short-term financial gain, especially for entrepreneurs abroad. There is a great risk for all compa-nies in the market, especially because loan / outsourcing business type represents a big percentage in the total market and is so unpredictable.

In 2015 Cluj-Napoca will be European

Youth Capital, and in 2020 – we hope – it will become European Cultural Capital. These are moment of great pride for local community and also a measurement for the maturity of this community. That is why the need for VISION is vital

The real partFirma Danis Consulting lucrează de

15 ani îThe Danis Consulting Company works for 15 years in the Organisational Development field. We have worked with several ITC organisations; therefore we believe we came to know pretty well the particularities of this industry and some ways for developing. We would like to con-tribute to the creation of a solid and durable community in Cluj. And this is not idealism at all – solid companies mean successful businesses, win-win for everybody.

These are the reasons for which we have started “pro-bono” a research project, in which we will meet quarterly, for about two hours, with a group of HR professionals from Cluj IT companies. The purposes of these meeting are:

a. Analysis of their main problems and reaching some solutions for them and their companies;

b. Identification of successful manage-rial practices that could be shared to the IT community;

c. Finding mechanisms to strengthen

A lot of people want a kind of Silicon Valley in Cluj, with innovative and crea-tive companies. IT Cluster aims a similar goal. In a four articles series, Danis Consulting aims to analyse these companies from Human Resources perspective,

how they evolved, their problems and, the most important, how they can constitute a real community to be proud about.

HR

Towards An It Community – Via HR

Dan [email protected]

Executiv director@ Danis Consulting

Cristina [email protected]

Consultant@ Danis Consulting

Page 41: TSM_11_2013_en

41www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

local IT community.

The results of these discussions, but also some final conclusions, will be the basis for a research available for all interested.

After each meeting we will make public the conclusions, through our media partner Today Software Magazine. During the laun-ching event organised by TSM, we will be more that pleased to debate issues from the article with all interested persons.

Because our interest and experience is linked to the way companies are lead, at different levels, we have proposed a series of topics to be discussed in the project’s meetings:

1. How did Cluj IT companies deve-loped? What were the best leadership behaviours that facilitated growth? What were the worst – that inhibited develop-ment? Conclusions may help companies to continue to develop and grow successfully.

2. Which are the particularities of the leadership style in the present? In exam-ple, it may be discussed: the factors that create trust in leaders, how to run teams of very young and creative people, IQ versus EQ etc. Being lots of interesting topics, we will expect two meeting in this category.

3. What helps and what stops creating an open IT community? How could pre-sent obstacles that created a “feudalist” environment be overcome (each com-pany with its own interests, a lot of egos, strong competition among them – but not necessarily a market competition, etc.) How can we move towards modern concepts, like helping each other to be all more attractive to clients from all over the world?

We wish that these meetings should be less formal and more than a networking opportunity.

First meeting

An overview regarding the first meeting:The purpose was to analyse the past of

the IT companies in order to find exam-ples of good practices (or bad ones) from which we all be able to learn. We realised during the discussions that it was difficult to keep the “track” to the past tense, the par-ticipants coming recurrently in the present. Afterwards, we realised it is possible that this artefact might be, again, very specific to IT industry – a dynamic, permanently chan-ging environment that lives mostly in the present.

Thus, the result of this first meeting is

similar to “opening the Pandora’s box” in the positive sense of the expression. Some of the most interesting topics, regarding the success in IT companies, were shared during this discussion; in the following meetings we will go deeper into some issues such as: “What is the most appropriate leaders-hip style for IT professionals?” or “How do you manage to create real team work – with collaboration, communication and recipro-cal help?”

The most valuable shared ideas from this first workshop are presented in the following main chapters:

1. Development of IT professionalsÎn acest domeniu există de regulă abo-

Regarding this issue, there is usually the logical approach: to develop certain beha-viour / experience when it is observed a specific need. We were glad to find out that management from these companies reached the conclusion that trainings alone (especi-ally those aiming relationships, team work, communication abilities) are not enough in order to develop or change a certain behaviour. iQuest has a series of examples regarding this conclusion. Also Accesa has implemented recently a Development Program – that aimed the management team and the next level of leaders in the company – in which trainings were combined with other development actions like: establishing and implementing individual objectives, coaching, workshops, with the guidance of external consultants.

This is one of the main reasons why we – as a consultancy company –are trying also, for the past years, to promote “deve-lopment programs” instead of just trainings, programs that contains also some other activities (e.g. follow-up workshops, group or individual coaching sessions, applicative projects etc.). These Programs lasts a longer period of time, thus permitting practicing the new abilities, using them in the real working context.

Apart from this approach of develo-ping employees, we have found in ISDC for example, a different way to think about the development process. The Human Resources specialists are those who take responsibility for many development actions – delive-ring internal trainings and team-buildings, according to well-established systems and procedures. Being close to their colleagues, they are able to intervene in a proactive manner, not only when problems arise.

2. Successful Systems and Processes in IT companies

The Human Resources systems and pro-cesses tend to be perceived by IT employees as bureaucratic and, therefore, easily rejected. Some solutions for successfully implement these kinds of instruments can be:

• Using managers for making some processes more flexible. If leaders (from different levels in a company) have the responsibility for some evaluations, deci-sions, employee interventions, then the systems may be more flexible and easy to implement. • Another solution is that the systems

should be born naturally from success-ful practices – it is impossible to reject what you have already done successfully. It is exactly the experience of ISDC orga-nisation – which has level 3 of CMMI certification, using the existent processes.

During the discussions it was agreed that implementing good, mature systems and procedures may be done successfully in organisations where people have mature attitudes.

We hope that, in the future meetings, we will go deeper into the topic of performance evaluation systems from different compa-nies. This time, Răzvan Voica from iQuest offered us a synthetic image of his company’s “career management” system for employees’ evaluation and development. It is a very interesting and complex system in which the responsibility for employees’ develop-ment is mainly upon managers shoulders. Cut it short, every leader from the company is also a “career manager” for a number of employees. He has the responsibility to guide them in their process of development. Therefore, in the case of iQuest managers, communication and coaching abilities are very valuable.

3.Organisational culture and working style in IT

The representatives of the IT compa-nies present in this first workshop admit the general market tendency towards a greater flexibility and independence of workforce, but, in the same time, they realise that Cluj IT employees and companies aren’t still prepared for this. Senior IT professionals may appreciate more the flexible time – in example, at ISDC it was implemented a home-working system: one day per week for employees that have more than 6 months in the company. Juniors and not only “mani-fest – until a certain point in their career – a normal need for affiliation to a group / a community” which working in a company

Page 42: TSM_11_2013_en

TODAY SOFTWARE MAGAZINE

42 no. 11/May, 2013 | www.todaysoftmag.com

can provide for them. For now, Cluj IT market isn’t mature enough to allow an employee a liberty such as: when I enter in a project, I have also the freedom to enter in another project, from a different com-pany, in parallel.

Fortech applied an organisational cul-ture receipt that is very open, transparent and warn towards employees. The top management manifested all the time “sin-cerity and transparency. Organisational culture grew beautifully, basing itself upon some principles established back then, in the beginning of the company”. In addition, another distinctive element of Fortech was recruiting the best technical professionals.

Discussing about organisational cul-ture, fundamental values – those things that are the most appreciated in the company – we have reached together a conclusion drawn from the participants’ experience: in order for an IT company to ensure long-term stability, it is highly needed to establish in the first time a clear set of values – that describe the “personality” of an organisation (“how we are, how things are in our organisation”). Then, it is vital to choose the people you work with, taking into account their values, their attitudes, their ways of being. Of course, the tech-nical criteria are also important, but they need to be smartly balanced with those who describe the personality of a poten-tial employee. In extremis, the participants gave us examples of situations in which some candidates – very good technically – were rejected because of their attitude, character incompatibility with organisa-tional values. Well-matched people with their organisation, regarding their way of thinking, their attitudes, are those people who tend to have better performance than those how are far from the way of being in that company (even if they have exceptio-nal knowledge). Regarding this topic, the challenge for HR specialists and top mana-gement of the company is to maintain this “spine” of values, regardless of the obstacles and problems in the present Cluj labour market.

“If people who come to our employment interviews don’t have sparkled eyes when we

present our technologies/processes, they are not the right people for us.”

4. The leading process in IT companiesAnother subject, about which we just

“embittered” the debates, refers to the right or successful leaders in IT. In these orga-nisations we have encountered different principles, like:

„Leadership is crucial in any organisa-tion that wants a systemic development of the Human Resources. They need to be invol-ved in passing forward” [from their model, from their abilities and attitudes].

Starting the discussion about the lea-ders from the top of the companies – that may be CEO, Administrators or even the founders – we have realised that, usually, this person represents the one that sets the standard in the company and people – at least Romanian IT professionals – need this leader who has a vision for his organi-sation. People need models and believe in successful images. We have also discussed a little bit about the importance of the cha-risma in the top leader. Even if we have discovered different styles of charisma in different companies, our conclusion is that – at least for these four companies – the leader from the top was clearly a success-ful factor in the growth and stability of the company. Sometimes, attractive and inspi-rational speeches are those who attract people around their leader and coagulate organisational culture; other times, the structure and consistency in approaching a certain type of business help.

ParticipantsAlexandra Bayer (Fortech) started the

works in IT field seven years ago, when she became a member of Fortech. Practically, she grew together with the company and learned together with their management colleagues how to gain the trust from the IT people: with logical, concrete, statistical arguments. The basic engineer profession helped her a lot in this structured approach of the Human Resources activity. Even now, when in Fortech are almost 300 employees, Alexandra sees herself as a helped for the entire company, as having “eyes and ears”

for everybody, although it becomes more and more difficult to accomplish this con-sidering the size of the company.

Raluca Pop (ISDC) is a psychologist as a profession and has a 13 years Human Resources experience, and three years IT field experience. When she talks about what she does in ISDC, she clearly mani-fests enthusiasm and pride – things that are very important and valued in ISDC culture.

Răzvan Voica (iQuest) has an “old” background in IT (from 1997), having a great diversity of professional experiences, including that of a programmer. From 2011 he joined the management team in iQuest – one of the important players in IT mar-ket in Cluj (and not only). He admits that this job – a managerial position in Human Resources – was difficult and very challen-ging for him. Since his start in iQuest, he initiated and developed many HR Systems and processes, about which he is willing to speak with pride and passion for hours!

Cristina Puiu (Accesa), psychologist as a profession, covers the Human reso-urces activity in a smaller company than the other 3 represented in this workshop, but being in a great expansion. The growth dynamic of Accesa company – from 20 to 60 employees in one year – gave Cristina important challenges regarding the HR activity. Her previous experience in recrui-ting companies and auto industry made her deal successfully this job.

HRTowards An It Community – Via HR

Page 43: TSM_11_2013_en

43www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

Their goal is to determine the perfor-mance indicators for an organization with high results. External environmental requi-rements are forcing companies to adapt to international competition and be able to be competitive simultaneously in terms of price, quality, flexibility and customer relationships. Managers have developed an interest in creating an organizational culture oriented towards performance and excellence.

Specialized publications describe High Performance Organizations as the organi-zations having exceptional financial results, customer and employee satisfaction, high productivity. They are organizations that encourage innovation and the develop-ment of leadership skills. However, in a closer study of specialized literature we can identify characteristics of each category: sustainable financial development, long-term orientation, obtaining exceptional results, which refers only to the company as a whole and the results thereof.

In 2007, Waal gave a definition of high performance organizations, comparing his own company’s financial and non-financial performance with those in the same field on a period of time comprised between 5 and 10 years. Thus a competitive company develops a sustainable market strategy to gain a competitive advantage, compared to other companies in same field.

The evolution of human resources during the last 50 years is impressive: from the „personnel” dealing with legislation (employment contracts, labor protection, and the personal files of employees) to „human resources”. The difference between the two concepts is more than obvious from a mere reading of the two concepts. When you say human resources you think about resources that can be exploited in order to achieve results for the company. This area has as its important functions: recru-itment and selection, evaluation, training,

motivation and reward, and legislative and administrative services.

The concept of human resources is an umbrella for the concept of personnel, enclosing it and giving new functions and tasks. For a long time it seemed that the term best defined everything it happened in this department, but it turned out not to be so, simply because the ‚human resources’ are constantly developing.

The term that best describes the depart-ment is ‘talent management’. This term puts emphasis on the human potential and a close correlation between individual goals and the company. Two other popular terms besides ‘human resources’ are ‘coaching’ and ‘mentoring’, two impressive con-cepts supporting the discovery of human potential in an extended, personal and pro-fessional development. It is very important that people improve their aptitudes and skills.

This improved definition of personnel, human resources and talent management shows a continuous evolution in this tech era.

Performance management is in close correlation with talent management. The performance evaluates individual and team goals that are consistent with the strategic objectives of the company. For the company to gain that competitive edge in a market constantly changing, it needs to harness the talents it has.

The concept of performance in a simple analysis of dictionary definitions seems to have a multi-purpose nature. It can mean „implementation”, i.e. fulfillment of requi-rements or requests; it can be defined as a „competence” / ability to do something. For a clearer understanding of this con-cept, a close study of specialized literature is needed. Lebas (1995) characterizes perfor-mance as having an impact in the future. A successful business is one that achieves its defined objectives. Thus, the performance

is about capability and future.Folan (2007) emphasizes three gover-

ning objectives of the performance to be analyzed by each entity within the environment where it decides to work. Secondly, performance is about one or more goals established by the entity whose performance is analyzed. And thirdly, performance is reduced to relevant and recognizable characteristics.

Strategic management performance involves aligning individual and team objectives with those of business deve-lopment. It aims at creating a culture of learning to devote time and resources for improving organizational performance. This concept was initiated only in the twen-tieth century by Peter Drucker in his book „Concept of the Corporation „. Until the ‚80s research has focused on two areas: the impact of strategic planning on business performance and importance of strategic planning role in making strategic decisions.

O p e r a t i o n a l l y , P e r f o r m a n c e Management refers to operations manage-ment, because it focuses on objectives and targets of departments, project or team. Federick Taylor developed the concept of scientific management.

In the early ‚20 General Motors has experienced this concept by introducing the DuPont graph to support the reorga-nization of the company in decentralized structures with profit centers.

In the ‚30s in France introduced the „dash board” to monitor the operational performance of organizations. Although the majority of French companies were alre-ady using it, the concept had a minimum spread abroad. The roots of Performance Management nowadays have been establi-shed by the Japanese philosophy.

Employee performance management is considered to reflect the level of organiza-tional maturity. In the early 1800s, Owen monitored the performance of employees

Performance Management

Unlike the other articles published in the previous issues, this one will have several parts. The first part offers a definition of performance management and process and the tools used for its implementation. In a dynamic environment in which com-panies put more and more emphasis on employee development, every organization around the globe tried defining those

elements that contribute to the creation of a successful organizational environment.

HR

Page 44: TSM_11_2013_en

TODAY SOFTWARE MAGAZINE

44 no. 11/May, 2013 | www.todaysoftmag.com

HR

as individuals who perform tasks as part of a group. Only after World War II the per-formance management system was mostly used in public administration, military and industrial plants. Since the 90s, indi-vidual performance management has been refocused on two trends. The first is about increasing self-assessment performance, and the second aims at aligning strategic and employee performance management by creating new tools such as the Balanced Scorecard, which wanted to reflect the organizational objectives into the indivi-dual ones.

Process fundamentals Performance management aims to

increase responsibility in producing results and to improve skills and competencies. In the company, performance management has always been considered an issue for human resources management in order to achieve organizational goals, through alignment with the organization’s strategy, values and culture.

Process and ToolsThe figure The phases of performance

management describes the stages of the process as it takes place in the company during a year.

• Defining the four phases of the pro-cess: (1) Define expectations, (2) Interim evaluation, (3) Monthly review of goals and (4) Evaluation of the final perfor-mance. The Performance Management Process has two essential characteristics: • Emphasizing WHAT (results),

HOW (the methods by which results are achieved) and WHERE (personal deve-lopment plan, professional objectives).• Improving communication between

the manager and employee by creating an ongoing dialogue based on feedback and coaching.

Elements of Performance Management Performance evaluation should reflect

the expectations and achievements should be oriented on goals and values. In addi-tion to this, they must meet the customers’ expectations.

I will further present the way in which the relationship between the values of the organization and process of Performance Management is defined. Values that reflect the methods of the performance manage-ment process (HOW) represent the way each employee performs his tasks and achieves his goals. The detailed presenta-tion of the organization’s valuessignals a set of skills that each employee must develop at the highest possible level.

For example, let’s take innovation as a company value or behaviour trait: ‘we are intuitive, curious, practical and intelligent, which enables us to develop new ideas for clients, business and employees. With the global operations we develop, we enco-urage ideas in any region of the world.’ Encouraging positive behavior ‘anticipates future trends and identifies opportunities which it capitalizes’.

How to measure this behavior for each objective? It means setting expectations and the way in which employees can meet their objectives taking into consideration behaviors encouraged by

them. The second part of the article will provide details about the means of perfor-mance management. Until the next issue, be successful in defining the process and tools that best fit the company you belong to!

Figure 1 Performance management project phases

Figure 2 The phases of performance management

Performance Management

Andreea Pâ[email protected] at Endava

Page 45: TSM_11_2013_en

45www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

We are really motivated! Are we?

We define motivation as that drive the gets us moving to start and then maintain a specific action.

But what is motivation really? (besides the most used word in the world next to “from tomorrow”).

It is indeed one of the least understood concepts. That is because it became sort of an umbrella concept that we use to explain why stuff doesn’t get done.

We know how it feels when we are motivated, we can recognize the drive. Can we say objectively how it appears or how and why it is maintained?

I won’t define motivation scientifically. There are tons of books on this subject. However, I will give you a trick on how to get started and keep doing the thing you wish, or not do it but without the guilt.

We will use a simple definition of motivation:

Motivation is that energy that gets us to feel that the effort needed to do a specific thing is less than the consequen-ces of doing it or the consequences of not doing it.

Anything we do requires effort. That effort has to be worth it. It’s worth it when putting in the effort is surpassed by the benefits of not putting in the effort.

Well … here is the small detail: All this is clear so far but when in reality we only think about the positive consequences of making the wish reality

Whenever we think about “starting to work out” we think about it in terms of all the benefits we will gain. Right? We make a wish to start running from next week, every morning before starting to work, and we think how awesome life would be then.

The problem is that we do not function like that.

Here’s a challenge for you. Bellow you

find a drawing of a rabbit. The puzzle you need to solve is this:

The rabbit will run for a longer distance and with a higher speed in which of the two situations:

When chased by a hungry and scary wolf or when running after a really, really tasty carrot???

The answer is that probably it will start running for both reasons. But when running gets tough and the rabbit is all sweaty and tired it will keep running from the wolf. About the carrot the poor little rabbit will probably say “neah, the carrot is to sour anyway”.

It’s great the we don’t run just because of the wolfs. It’s great to have so nice and yummy carrots. But carrots alone won’t get us to wake up and start running.

If we know this in theory (surely, the rabbit theory) why don’t we use it conscio-usly in real life?

So, the small trick is when you wish for something don’t just think and imagine how awesome life would be if you would make the wish reality. Think of how un-awesome it would be if you don’t.

Because in the morning, when the sleep is the sweetest, and the sheets feel like hea-ven, and every part of your body is really enjoying the sleep and has no desire to get moving it won’t be the awesome life per-spective that will get us to say … NO! This is too good so I’ll stop feeling this good and

get the running shoes and start running.IF there are no negative consequences

that are real and are present, create them. It is indeed really hard to say … “No, I’ll keep sleeping” when there is a friend waiting for you that will nag you for an entire week if you don’t show up.

If you want to see what are your carrots and wolves my suggestion is to look at the things in your life that you do and keep doing and ask yourself “why?”. Why do you still do them? If you analyze the rea-sons you will notice a pattern (a profile) and will be able to apply it to the other things you wish done.

If you need to know more about moti-vation bellow are two great books and an

awesome TED talk.Daniel Pink – DRIVEBF Skinner – Beyond Freedom and

Dignity

Thank you for not running while rea-ding the article!

Maybe, but probably not!

A lot of people I talked to recently talked about a wish to do something, unfortunately it remains a lot of the time just a wish. We each have a “I wanna work out”, “I want to read more”, “I want to eat healthier”, “I want to wake up earlier” and so on …

We really, really wish for those things, we wish to start them, we wish to keep at them, we are really motivated but even so … nothing happens.

HR

Antonia [email protected]

trainer and consultant

Page 46: TSM_11_2013_en

46 no. 11/May, 2013 | www.todaysoftmag.com

Imagine Cup is an annual competition hosted by Microsoft to promote inno-vation and their technologies. Teams of

up to four students, in the timespan of one year, take the challenge of writing an appli-cation that would support the Millennium Development Goals. This year however, the theme requirements were removed, giving us the freedom of making a fun game that didn’t have the responsibility of ending world hunger. I postponed participating to Imagine Cup since my first year in univer-sity. I used to tell myself “Maybe next year I’ll find a fun idea and hone my skills. I’ll try next year”. But this was the start of my third year, and with only two years until graduation, I didn’t have many „next years” left. I had to do something.

JavaScriptEvery year Microsoft announces the

technologies students are required to use in their projects. Among the allowed tech-nologies for last year was HTML5. What? HTML5 isn’t a Microsoft technology! Yet there it was, on their website. And we could use it to build an incredible 3D game using JavaScript and WebGL. I spent the next month reading articles by Douglas Crockford and John Resig. I wrote a bunch of ‚experiments’ that would never see the light of day. My goal was to make an entire game engine in JavaScript from scratch. Input system, graphics, audio, everything. We would then use our engine to build an awesome ‚fun’ game. We had a somewhat working input system, and the skeleton of the graphics system. I wrote a plugin for

Blender to export our 3D models and another tool to convert a glsl shader to json files. The engine could load a 3D model exported from Blender and render it using the shader. It was awesome and it worked. But then the rules for Imagine Cup 2013 came out, and HTML5 was no longer supported.

By now I had invited two of my trusted friends to join us: Timotei Dolean and Soucup Adrian. They are the best pro-grammers I know and my best university buddies. Together I felt we had the poten-tial to make this happen. We didn’t want to make any stupid mistakes, so we agreed we would not start coding until we had every aspect of the game figured out. To begin with, we had to choose between a 2D or a 3D game. 2D graphics are much harder to make, and a 3D world would introduce an additional dimension that our game logic would have to take care of. Also, we felt like in order for our game to be fun, it needed a physics engine. So we gathered in weekends, we talked about ideas and we watched playthroughs of other games. We wanted to build a simple, short game, that would have easy to understand mechanics and creative puzzles built on top of those mechanics. Whatever the final idea was it had to be fun, simple to understand and require imagination and skill to solve. In a few weeks we slowly began to piece

everything together. Our game would have 3D graphics but a 2D world. The physics would be 2D as well. It would involve alien technology. The puzz-les would require the player to use different forces and technologies to move things around and repair a damaged ship. We would have cubes that the player could use to create

special objects with different properties to reach his goals. For instance: 10 cubes could be used to create a gravity switch machine. One cube could be used to create a small ramp to allow the other cubes to pass gaps. Another cube could be used to create a power source for a device already functional. We liked where this was going.

UnityNow that we had the general idea in

place, we had to choose the technology we would be using. The mobile platform and the XBOX were out of the question, sim-ply because we didn’t have the necessary technology. So we were left with the PC. Following an interesting topic in the Imagine Cup forums, we discovered we were allowed to use game engines such as Unity or even Unreal as long as we also used Microsoft products ( such as C# scripts in Unity ). „Awesome” we thought. Getting the engine out of the way would allow us to focus more on the actual game. So all the members installed Unity and tried some tutorials. We created a demo in which a bunch of cubes would follow the mouse and would break if you hit them hard against the walls. Unity had everyth-ing we needed, including a very fancy editor that you could use to drag and drop items to create your game. There was a lot of dragging and dropping, and not enough scripting. Not that scripts weren’t useful, or powerful enough, they were somehow second class citizens. And the engine was complex enough to give the team members shivers when thinking about learning it. And this was only the beginning. We soon

startup

The Imagine Cup Rollercoaster

Page 47: TSM_11_2013_en

47www.todaysoftmag.com | no. 11/May, 2013

TODAY SOFTWARE MAGAZINE

realized that our Free version of Unity didn’t have render targets. That meant no special effects of any kind. Not even a straightforward glow around our cubes to mark them as selected. This was disa-ppointing. We had all the skills we needed to make these effects, but the engine sim-ply wouldn’t give us the possibility. And we sure weren’t going to pay $1500 for that. So for the second time we threw everything away and started from scratch.

XNAOur last choice was the XNA ( XNA’s

Not an Acronym ) framework. It’s a lightweight framework on top of DirectX and it offered us all the power we needed: an abstraction layer complete with tools and mathematical libraries. We were finally ready to start developing our game. We had the basic idea and we’ve chosen a proper technology. Too bad it took us over five months to get here. We set up a git repo-sitory ( and a gitlab client ) on our server, prepared our environments ( XNA doesn’t work with Visual Studio 2012 out of the box ) and we separated the tasks among us. We needed an artist, and I was the closest thing in our team.Andi was going to integrate the physics system and implement the game logic, Adrian was going to write our ren-derer and shaders and Timotei was going to work on the UI and input. We slowly hacked at it, using Skype daily to communi-cate. The game idea also changed a bit along the way. We added a main character to the story: a small triangle shaped robot that walks on caterpillar tracks and possesses interesting abilities. We attempted a few graphics styles but we weren’t very plea-sed with the results. Some problems came from the camera angles and the way tex-tures were filtered, but mostly they had to do with my poor artistic skills. The physics

e n g i n e e n d e d up b eaut i fu l ly integrated with the game. Andi had the ideea of s imulat ing the caterpillar tracks w i t h p h y s i c s instead of having the whole robot be a single 3D model, I expor-ted each piece separately ( one wheel, one thread, one body ) and Andi used them to construct the whole robot as a system of physically simulated components. This means that when you move the robot left, you’re actually rotating the 3 wheels. It’s the physics system that does all the work of moving the threads and making the robot move. This has proven to be the single most important decision we made concerning the game design.

In April we had to send the game for the qualification round despite being nowhere near completion. The team wor-ked through the night to make a playable demo. We wrote code like mad. Adding features and fixing bugs without blinking.. Early in the morning we hacked together a few gameplay recordings into an epic trailer featuring a story about a brave robot stan-ding tall against a merciless universe. Yeah, it didn’t have anything to do with our game. And judging from the graphics, we had a total mess. Most of the textures were hastly snatched from google and our in game tips were rendered with an awful red font that was almost impossible to read. We think it was the physics engine that got as through the round. But we also had a working level

and ( fancy or not ) 3D graphics.

We only received word of qualifying one week before the finals. We had five days to make the game look presenta-ble, so we spammed the TODO list with features: a second level, better graphics, new textures, a depth of field effect, a total rework of the user

interface and many many others. One day before the finals and there were still unfi-nished tasks. The depth of field needed to be improved. The tooltips needed to be improved. The main menu still needed to be improved. We lacked some textures. We only had 24 hours until the presentation but if experience had tought us anyth-ing, is that we’re highly productive under pressure.

Alex [email protected]

internship student@ Tora trading

Page 48: TSM_11_2013_en

48 no. 11/May, 2013 | www.todaysoftmag.com

Gogu took - slowly, as usual – the food tray, and started looking for Misu. It took him a few seconds to find him. Dude, this Misu has a very bad habit to always sit in

the farthest corner of the dining room; he amused himself while walking towards his colleague. He replied to the greetings and felt somewhat important seeing how many people paused from eating to salute him or to wish him good appetite. After all, I’ve been working for some time now in this firm... He sat satisfied near Misu, smiled at him, and realized instantly the major error he had committed.

- Uff, Gogu, tell me what should I do?Shut up and let me eat my food; that is what you should do.

Obviously Gogu said it only to himself; he couldn’t have upset Misu more than he was already. He really liked this young man, calm even in the most critical situations, talking softly and with a strong Transylvanian accent that he hadn’t lost in college, neither in the multinational company they had been working together for some time. I alone can get him out of his silence and calm – Gogu giggled, still to himself. He forced a grimace on his face and sighed prepared - for at least the tenth time that day – to listen to Misu’s lamentation.

- See Gogu? It makes you groan too. Now what can I say? I feel like going to Chief...

He stopped suddenly, with his hands in the air, waiting for the verbal prosecution to follow the movement. „Gogu, you’re a genius!” He gazed in all directions (He’s like a radar! thought Gogu) and stood as soon as he had located Chief. And as his attention was focused on the table where Chief quietly enjoyed his lunch, Misu didn’t realize when he tapped the tray, and neither the noise that the cutlery had done when falling on the ground. The glass of water swayed undecided and dropped on Gogu, who got stunned, unable to utter a word, incapable of understanding what was his merit in the whole story. But he jumped up as soon as the impro-vised waterfall drained on his knees. The whole incident seemed unreal, detached from a movie whose script was totally unknown to him, therefore, with an undisguised curiosity, he followed Misu. The noise of the cutlery and the heavy-footed scrolling of the two men attracted the attention of the other colleagues, so by the time they had reached Chief ’s table, all eyes were on them.

- Chief, you have to help me! I have no solution, you know the deadline is too tight, and we promised to deliver on time, but now all resources are taken by that project in England. And I kept asking around, but no one is willing to help me and I’m desperate, and Gogu is my witness... he turned theatrically towards the latter.

Cool-headed, Chief finished chewing his mouthful, stared at Misu and said:

- You too enjoy, Misu!Hi-hi, if you wanted this to be a subtle irony, you did great, Gogu

laughed under the mustache. It was obviously far too subtle for Misu or at least for the state of excitement he was in. He proceeded

without even blinking:- You too Chief! So what do you say? Will you help me with an

external resource? Only for two or three weeks. - Misu, you’re like a lightning! What’s with this speed and ver-

bose, it’s not like you. And you Gogu wipe that grin under the mustache; do you have anyone available for Misu’s project? Or maybe you have budget for external resources, eh?

- What people Chief? You’ve already taken two of my men. I can’t give him anyone else!

He then thought about the budget and realized that Chief had made fun of him.

- Come on, Chief! Are you kidding us?!!!- Well, who started it, lads? What money for external resour-

ces? Misu, you know that we are on a low budget; your only chance is to renegotiate the deadline. We can’t do everything at once, and the company says that now there are other priorities. That’s it! If there’s no budget, then nothing else is....

- Just ‚one’, Chief, Misu mumbled with his last resources! Just one man, at least two weeks, how much can it cost?

- Well Misu, you know the joke of the gasoline drop?Misu nodded as a „no”. There comes a lesson, Chief couldn’t

have miss an entire dining room as audience, Gogu said to himself while pulling a chair to sit more comfortable. Chief frowned for a second but he was too eager to tell the story so he just shook his hands and continued:

- There was this man that went to the gas station and asked the pump guy: „ - How much does a drop of gasoline cost? - Get out of here, man, it costs nothing, zero lei! the guy answered. - Great, then please fill me up drop by drop...” So Misu, in your case, one resource is no big deal, but one today, two tomorrow...

Simona Bonghez, [email protected]

Speaker, trainer and consultant project management,

Owner al Confucius Consulting

others

Gogu and the gas filling

Page 49: TSM_11_2013_en
Page 50: TSM_11_2013_en

powered by

sponsors