zrnec

Upload: abdillah-aziz

Post on 06-Apr-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/2/2019 Zrnec

    1/5

    ELEKTROTEHNIKI VESTNIK 78(3):123-127,2011ENGLISH EDITION

    Software Engineering in the Cloud for Reducing the Application

    Time-to-market

    Alja Zrnec

    University of Ljubljana, Faculty of Computer and Information Science, Trzaska 25, 1000 Ljubljana, Slovenia E-mail: [email protected]

    Abstract. In this paper we present the possibilities offered by cloud computing in development and testing ofsoftware. They allow us to shorten the time required for developing software and to shorten the time of softwareto become available on the market. We mainly focus on provisioning cloud resources on demand, accounting forthe actual consumption of resources and adjusting the scale of the computing resources to contribute to moreeffective implementation of development and testing activities and ensure a higher level of quality of designedsolutions.

    Keywords: cloud computing, cloud, software, development process, cost

    1 INTRODUCTIONNowadays, in most business systems software is a keyenabler of their business processes. Besides, thesoftware availability and stability directly impact thecompany revenue and customer satisfaction. Softwaredevelopment is one of the most critical processesensuring successful business in majority of businesssystems as it requires a lot of effort in ensuring adequatefinancial resources and software development resources

    (hardware and software).Recently, software development is undergoing major

    changes. A growing number of independent softwarevendors transform themselves into service providersdelivering their applications in the form of serviceshosted in the cloud [1, 2, 3]. They have become the socalled Software-as-a-Service vendors (SaaS).Applications for financial management, taxes andinvestments represent a typical example of software thathas been until recently available only for servers anddesktops, but now it's available to thousands ofsimultaneous users in the form of secure web services inthe cloud. Business success of cloud vendors depends

    on reducing the time needed for the development of theaforementioned services and promoting their entry intothe market respectively (time to market). Eachadditional month or quarter in which the cloud servicesare accessible to users has a direct impact on increasingrevenues, which affects the final financial statements.The SaaS delivery model itself aids business systems inaccelerating their time to market, as the vehicle forapplication delivery is directly over the Internet, ratherthan the traditionally packaged distribution ordownloadable modules.

    Timely production of software has a major impact onbusiness. In manufacturing companies, software

    development includes the design or simulation of aproduct to be sent to the market. In media andentertainment companies, creating a new brand orspecific web site can accelerate the end user traffic,thereby driving advertising which directly impacts therevenue. In the financial-services industry, the need toprovide new online capabilities for trading, portfolioand wealth management impacts the customer attractionand retention.

    From the above we can clearly see that the speed at

    which software applications can be developed, testedand brought into production is one of the critical successfactors for many companies. Therefore, any solutionaccelerating the application time-to-market has animmediate and measurable impact on return oninvestment (ROI).

    The paper is organized as follows. In Section 2 wepresent problems occuring in the context ofconventional software development in terms ofpreparing an appropriate development environment andissues related to performing software testing. In Section3 we present advantages of using cloud computing forsoftware development and factors accelerating the

    application time-to-market. In Section 4 we present ROIof using cloud computing for software development.The paper ends with a concluding discussion in Section5 we draw conclusions and give proposals for our futurework.

    2 PROBLEMS IN SOFTWARE DEVELOPMENTTo configure hardware and software, softwaredevelopers demand a highly dynamic environment. Inpractice, they all too often encounter resistance ofsystem administrators [4] striving to establish morerigid environments and thereby providing greater

    stability in operation of the computer infrastructure inbusiness systems. This is why for many years differentReceived 28 December 2010

    Accepted 18 February 2011

  • 8/2/2019 Zrnec

    2/5

    124 ZRNEC

    demands of developers and administrators have beenconflicting and have as such considerably reducedproductivity of software development.

    2.1 Development environmentApplication developers are regularly confronted with arequest to establish special environments fordeveloping, debugging and compiling appropriatesoftware libraries and tools for making the softwarecode. Typically, these environments are established fora limited period of time, usually several hours. Thenthey become obsolete and can be removed. Accessingappropriately configured development environmentswith an adequate processing power and storage space ondemand within a computer center in the company, iscrucial for creation of such development environmentsand for ensuring productivity of software development.

    To perform their tasks, the programmers should be ableto quickly configure servers, storage and networkconnections. Unfortunately, in many developmentenvironments it is particularly the speed of relevantresource preparation that inhibits or even preventsexecution of the programmer tasks as assurance ofcomputer resources in the business system is in thedomain of the IT department (administrators) or,resources allocated to the development are limited to acertain level. These conditions are forcing developers tocarry out development activities in the traditional -waterfall manner thus preventing parallel execution ofactivities and slowing down the development process.

    The inability of developers to rapidly provision, de-provision or copy (clone) properly configureddevelopment environments are therefore seriousinhibitors to productivity and hence time-to-market.

    2.2 TestingThe software development process also includes testingactivities. To be successfully completed, these activitiesrequire more resources than there are available fordevelopment within computer facilities in the businesssystem. The test environment is very dynamic by itsnature. It is created to run a series of test cases and to

    review and analyze the results, but then becomesdormant until the next iteration. The describedprocedure of testing shows the need for more agile ITcapability, where test environments can be provisionedon demand. It would be ideally if the role responsiblefor testing itself created a proper test environment.

    2.3 Quality assurance2.3.1 Performance testingThe Quality Assurance (QA) process has its ownrequirements that affect execution of tests and timely

    preparation of a sufficient amount of computing

    resources. On top of running functional test cases andregression sequences, the QA process typically bears theadditional burden of performance and scalability testingmaking the QA environment unique contrasted to thedeveloper's iterative code/test cycle.

    To implement performance testing, the QAenvironment needs to provision computer-centerresources that perform at production levels. Thisincludes: appropriate number of servers, appropriate number of processors in servers, adequate amount of the RAM memory, fast communication links to provide an adequate

    quality of service (QoS), and appropriate storage systems with the types of

    throughputs and latencies that will be seen inproduction.

    The objective of establishing the QA environment forperformance testing is to optionally reflect the actualsituation of the production environment. This is oftenvery difficult to attain within a computer center in abusiness system, because the setting up an environmentto reflect the actual situation of production, even on alimited scale, is a highly complex task. Even if abusiness system has adequate computer resources tocreate such an environment, its creation solely for thepurpose of performance testing is very questionable interms of cost and time. Therefore, the activity ofperformance testing defined within the QA process isoften postponed to the production phase.

    2.3.2 Scalability testingWith the advent of software services, scalability testingbecame one of the most important activities within thetesting process. With delivery of applications in ahosted or SaaS model, the number of concurrent usersaccessing the service can very quickly rise to a veryhigh number, which can lead to performancedegradation of the vendor's network connections,servers and storage. Software that performs perfectlywell for ten users can encounter bottlenecks or evenbugs in its code when exposed to 100 or moreconcurrent users. The need for QA process to haveadequate computer-center resources at its disposal ondemand can be viewed as a major accelerator for time-to-market provided that scalability and performance ofthe new software have been thoroughly tested.

    3 SOFTWARE DEVELOPMENT IN THE CLOUDToday, IT environments in which a developmentprocess takes place should be more agile to meet thehighly dynamic and resource-intensive needs of theapplication development environment. A newgeneration of cloud services can address these

  • 8/2/2019 Zrnec

    3/5

    SOFTWARE ENGINEERING IN THE CLOUD FOR REDUCING THE APPLICATION TIME-TO-MARKET 125

    requirements for more agile IT by providing thefollowing important capabilities:

    on-demand provisioning of resources in less than anhour through a self-service access,

    multiple-service levels (Quality of Service - QoS) toaddress the wide range of requirements in theapplication lifecycle,

    rapid scale-up and scale-down of resources withusage-based billing,

    support for virtual development environments andmulti-tier application architectures, and

    migration of the existing virtual-server images andworkloads into the cloud.

    Developers can leverage these capabilities on theirown, with no intervention of IT administrators in thebusiness system, which dramatically speeds time-to-market for new applications.

    3.1 On demand resource provisioningAs mentioned in Section 2, ensuring appropriateresources for developing applications within thecomputer center in a business system can be a verycomplex and expensive task. In doing so, administratorsmust work together, to make appropriate developmentenvironments. This involves collaboration with ITadministrators, who prepare proper developmentenvironments on request of developers. Preparation ofdevelopment environments usually takes a lot of timeand effort in the mutual communication betweendevelopers and administrators, as the latter are reluctantto interfere with the resources of the computer centerwhich they are directly responsible for.

    By using the cloud services, it is possible to establishappropriate computing resources (developmentenvironment) in the cloud. Computing resources areprepared on demand and are used in different softwaredevelopment activities of the software process. Usingthese resources can accelerate the development cycle bycreating multiple development environments. Multipledevelopment environments enable several softwareprocess activities to be carried out simultaneously. Forexample, using several development environments canbe established to run multiple tests concurrently with thedevelopment activity. The idea of preparing thenecessary resources in the cloud is presented in Fig. 1:

    Figure 1. On-demand resource provisioning in the cloud

    Developers who use the cloud services can preparedevelopment environments tailored to particular needsof the development-process activities. This makes itpossible to release some of the key resources of thecomputer center that could have posed a bottleneck inthe context of the development-process activities. In this

    way, developers can increase productivity. Moreover,administrators no longer need to fear that changing theconfiguration of the resources in a computer center of abusiness system may jeopardize operation of thebusiness information system.

    3.2 Using different levels of QoS in the cloudThe use of the cloud services is linked to multipleQuality of Service levels (QoS - Quality of Service).The higher the QoS level required, the better itsperformance and the higher the price of its application.

    Developers can use different levels of QoS, so that

    for each developmental stage in the application lifecycle they can optimize the relationship between serviceperformance and its price. For example, the ability fordevelopers to create an environment in a cloud that isoptimized for the needs of development and functionaltesting would entail lower levels of performanceguarantees, but at the return of a lower hourly cost. Asthe application lifecycle moves to QA (see Section 2.3),the development environment needs to more closelyreflect the production environment. This means that ahigher level of performance, security and availabilityneeds to be assigned to our development environmentfor performance and scalability testing. In exchange, thehourly cost of such environment gets higher.

    The QA process will also benefit from on-demand upand down scaling of cloud resources, as this finallysolves the problem of testing performance andscalability of applications at a large scale, but withoutindefinitely reserving and paying for resources whenthey are unused. With usage-based billing, the cloudwill bring closure to the need to pay for unusedresources and their prior booking in traditionalcomputer centers, enabling the customers to pay forresources used, as opposed to resources deployed.

  • 8/2/2019 Zrnec

    4/5

    126 ZRNEC

    3.3 The use of virtual environments and supportfor multi-tier architectures

    Services in the cloud support the establishment ofdifferent virtual environments. The most classic use of

    the cloud includes the establishment of an environmentconsisting of several virtual servers. These virtualservers are used to perform development, functionaltesting and quality testing (see Section 2.3). Today, aselected set of cloud services is also beginning tosupport modern, multi-tier application architectures [5].Typically, these are 3-tier architectures consisting of apresentation tier, logic or application tier and data tier.In this way development of traditional web applicationsis directly supported by providing a proper number ofvirtual servers used for development in eachaforementioned tier.

    When the development in a virtual cloud

    environment is finished, the images of virtual serverscan be easily transferred to the production environment.The production environment can be established in thecloud, so the images only have to be moved to anothervirtual environment intended for the productionpurpose. Another possibility is to install the images ofvirtual servers to local servers in a computer center in abusiness system. The advantage of the two cases is thepossibility to avoid problems related to configuring anew application for transfer from the development to theproduction environment, which again affects the speedof the application time-to-market.

    Services in the cloud also allow to transfer virtual

    server images in the opposite direction, namely from thecomputer-center servers or a private cloud to the cloudof a particular service provider. In this case, the initialapplication-development activities are performed usingthe own computing infrastructure. When it comes toperformance and scalability testing at a large number ofusers, the development environment is moved to thecloud, because computer centers in business systemsdon't usually have adequate resources to perform suchtests.

    4 SOFTWARE DEVELOPMENT IN THE CLOUD:RETURN ON INVESTMENT

    Many authors have proposed several different models[6] to calculate ROI of using cloud computing. Theproposed models take into account several economicand technological indicators which make the ROIcalculation quite complex.

    A simplified model for the ROI calculation of a cloudusage to develop software (and thereby reducing thetime needed for application to enter into the market)takes into account the different economic andtechnological advantages of using services in the cloud.These services impact the cost of the developmentprocess. Their technological advantages are as follows:

    recently, the progress of cloud computingcontributed to emergence of services enabling to setup a complete virtual development environment inthe cloud,

    developers can set up a development environment ondemand very quickly,

    resources used within a virtual developmentenvironment in the cloud can dynamically adapt tothe needs of a development process,

    virtual environments support the use of multi-tierarchitectures directly, and

    possibility of migrating virtual developmentenvironments between the cloud and own computinginfrastructure or between different clouds.

    Economic advantages are as follows: costs for the cloud-service usage are charged only

    for the resources and the time actually used, the use of the cloud services doesn't imply any

    advance costs, and the use of a cloud services doesn't require any long

    term commitment to a particular cloud vendor.

    The technological advantages of using the cloudenable us to implement a parallel execution ofdevelopment activities and assure quality of thedeveloped applications, thus speeding up the entiredevelopment process at lower cost. The economicadvantages of using services in the cloud considerablyreduce the cost of the development process. Speedingup the execution and reducing the costs of the

    development process increase the speed of theapplication time-to-market and its fast ROI. Fig. 2shows the relation between the development activitiestransferred to the cloud, duration of applicationdevelopment using these activities and ROI of asoftware development in the cloud.

    Design

    Installa

    tion

    Confi

    gurati

    on

    Perf

    orm

    ance

    testin

    g

    Scalability

    testin

    g

    Figure 2. Return on Investment

    We can see that ROI increases with the number ofdevelopment activities carried out in the cloud. It isparticularly affected by performance and scalabilitytesting under the high load. These two activities can be

    carried out quickly and at a low cost if executed in the

  • 8/2/2019 Zrnec

    5/5

    SOFTWARE ENGINEERING IN THE CLOUD FOR REDUCING THE APPLICATION TIME-TO-MARKET 127

    cloud. By accelerating the development process, theymake the total time for application development todecrease and the investment to become profitable morequickly.

    5 CONCLUSIONUsing cloud services in development of software interms of speed of development and profitability ofinvestment is meaningful. Of course, this doesn't meanthat a business system which already has a computercenter with adequate resources has to immediately moveall of its software development activities into the cloud.First, a business system should examine its capabilitiesand identify which activities cannot be supported by itsown IT infrastructure. Then, on the basis of identifiedactivities, it should decide whether a particular activitywill be carried out in the cloud and what will be the

    impact of using the cloud services on the overall pace ofthe development process. It is necessary to considerseveral criteria for implementation of developmentactivities in the cloud, such as the cost of services,security and performance [7]. However, we certainlyfind it reasonable to carry out performance andscalability testing under the heavy load in the cloud,since business systems usually lack the resourcesenabling them to carry out these activities to the extentrequired.

    Our further work will therefore be focused onadapting the software development process by using thecloud services. We will define a model of a procedure

    based on several criteria enabling us to answer thequestion whether a particular development activityshould be carried out locally in a business system or byusing the cloud. Our model will be based on the theoryof process adaptation to the project-specific needs [8, 9],that defines several kinds of decision rules for processadaptation.

    REFERENCES

    [1] B. HAYES, Cloud Computing, Communications of theACM, Vol. 51, No. 7, pp. 9-11, 2008

    [2] A. REED, S. G. BENNET, Silver Clouds, Dark Linings: AConcise Guide to Cloud Computing, Prentice hall, ISBN-13: 978-0-131-38869-7, 2010

    [3] N. STINCHCOMBE, Cloud computing in the spotlight,Vol. 6, No. 6, pp. 30-33, 2009

    [4] S. VRHOVEC, R. RUPNIK, A model for resistancemanagement in IT projects and programs, Electrotechnicalreview, Article in reviews

    [5] G. J. POPEK, R. P. GOLDBERG, Formal requirements forvirtualizable third generation architectures,Communications of ACM, Vol. 17, No. 7, pp. 412421,1974

    [6] M. SKILTON, Building Return on Investment from CloudComputing, The Open Group,http://www.opengroup.org/cloud/whitepapers/ccroi/index.htm, 2010

    [7] D. SVANTESSON, R. CLARKE, Privacy and consumerrisks in cloud computing, Computer Law & SecurityReview, Vol. 26, No. 4, pp. 391-397, 2010

    [8] A. ZRNEC, D. VAVPOTI, An approach to create aproject-specific software development process.Electrotechnical review , Vol. 75, No. 1/2, pp. 44-49, 2008

    [9] A. ZRNEC, M. BAJEC, M. KRISPER, An approach toadapting the IS software process. Uporabna informatika,Vol. 14, No. 1, pp. 75-80, 2006

    Aljaz Zrnec received his B.Sc., M.Sc. and Ph.D. degrees fromthe Faculty of Computer and Information Science, Universityof Ljubljana in 1999, 2002 and 2006 respectively. He works inthe Laboratory for data technologies as a lecturer and assistantin the field of databases. His research interest is in databasemanagement systems and cloud computing. He is the author orcoauthor of numerous professional and scientific papers.