CLOUD COMPUTING AND SOFTWARE EVOLUTION

Running Head: CLOUD COMPUTING AND SOFTWARE EVOLUTION

Cloud Computing and Software Evolution
Introduction
Cloud computing when we look at it in parts; “the cloud” is quite obvious to most of us but when we combine with “computing” the meaning becomes much more bigger and lays more to the IT aspect of it. Cloud computing is more applicable or comes to focus as a way to increase capacity or the increase of capabilities without putting any investments in the infrastructure, the training of new personnel or licensing of software. It contains subscription-based or pay-per-use service that enlarges IT’s ability. It helps transform business and technology. According to a leading analyst, Gartner, who is an IT research and advisor, “By 2011, early technology adopters will forgo capital expenditures and instead purchase 40 percent of their IT infrastructure as a service. Increased high-speed bandwidth makes it practical to locate infrastructure at other sites and still receive the same response times. Enterprises believe that as service-oriented architecture (SOA) becomes common, ‘cloud computing’ will take off, thus untying applications from specific infrastructure.”
In this paper I am trying to bring forth the aspect of cloud computing and how it could bring about software development. In the past two decades, Software-as-a-service (SaaS) and the coming up of cloud computing are among the most noticeable developments in the arena of Information Technology and services created, issued and retrived (Alonso, 2010). Their effect in IT sector, are the commercialization of the Internet, advent of Java, evolution of the World Wide Web. According to a research, software vendors 85% of them deploy their applications in the SaaS format.
By 2012 the cloud computing is expected to grow at a rate of 6.24%, this is attributed to the availability of pervasive systems and its connectivity. They both enable IT decapitalization, accessibility scalability and cost effectiveness.
Prior to environments termed to as virtual, the structures put up uphold the development effort was physical. The software engineers had their tools put in place in their own work stations and integration, test, and environments related to production which was mainly composed of servers on their respective networks. In addition to the hardware for the environment one operates in, the installation development tools and custom applications on the workstations and servers mostly had a bad effect on the machines used.
A more comprehensive clouding answer is to join an IaaS provider with other software providers. The IaaS is the format for an advanced project. The IaaS is the infrastructure which gives users or groups that customize server on virtual related grounds and workstation configurations in a plug and play method that agreeable in an environment. A software developer who has an interest in using the cloud has to make a decision on which flavor or taste structure based on the internet is better or more appropriate hence creating a wider working grounds (caturano, 2001). The developers present some integrated development environment (IDEs) to make big their development workspace. Some examples are: Visual Studio: Azure, Eclipse: Google App Engine, AWS, Force.com, Azure, and Netbeans: Google App Engine, AWS.
Through the application of Software-as-a-Services, companies are able to access the applications and virtual computing in huge numbers with no need to buy it. This application is otherwise hosted or put up by another company, this cuts or reduces the hustle and set up costs for users that are normally quite a headache. The SaaS may apply to two or three computers. According to Haluk Demirkan the professor of information systems at the W. P. Carey School of Business, cloud computing represents a large scale implementation. This is a representation of thousands of computers linked together through the Internet or other network, as he continues to say.
An example is email; by getting a Gmail account on Google one is accessing the application using the SaaS model. But when an institution like the University contracts Google to run its students email accounts there is a shift of terrain to Cloud computing from SaaS. As Demirkan puts forth, Google manages the infrastructure and the software applications. One is able to receive the functioning aspects of the service and none of the headaches; security issues, contracts renewals, upgrades, as he calls it, of manipulating the IT infrastructure. The provider of the service is the manager and one is charged based on how much computing one uses.
Basic Technology
The cloud computing consists of a layered form of architecture, the architecture consists of a number of tiers as named below; one tier which is a monolithic form of software, two tiers which is an RPC, and a client/server method of application, there is also the three tiers which is the middleware and the N tier which is actually the modern data center (Carey&Others, 2008). The technical form of motivation and the business cases for the architecture named above involve the advancement of network, the hardware improvements which will ultimately lead to efficient and effective business transactions and finally the software architectures that have been put to play. The multi-layered architecture takes advantage of the level of advanced technology internally, while it externally issues a centralized service which possesses a monolithic infrastructure which is economical in terms of the evolution of software.
The technological drivers involved in the cloud computing have powerful computers both in terms of speed, capacity and security. The bandwidth is at an all-time high with an increased connectivity. The interfaces face improvements to the ones we are used to in the wide area networks, local area network and the metropolitan area network. The software architecture involved in the computing procedures or applications face an improvement for easier reliability of the services provided. There is a change of demands in the number of users and services provided, the new services provided are of exemplary benefit to the customers or clients and make use of this property to market it. The application presents the opportunity of it being reused at the application level creating a no waste of resources. The requirements of the cloud computing does frequently change with the requirements at a fast rate.
The recurring themes in cloud computing are the infrastructure costs which I must say are quite expensive, but as the cloud computing sinks in the world at the pace it is, the services and the infrastructure promises to be affordable. The software maintenance is quite delicate as they involve highly technical observance by the technically advanced experts; any mishandling of the software is costly to the company and the users too. Cloud computing aims to spread its services to a wide number of people at a cheaper cost, the provisioning may at time hit snags with poor provisions to certain areas already covered under the clouding area or region. Marketing of the cloud computing is faced by acceptance issues by the users who find it quite new will take time to sink in, also relevant methods to be used market it are not well taken in or acquired.
There is the scale up and the scale out which both possess the internet bubble and the multicore. Scale up uses bigger computers with the increase in the load which ultimately needs the application of parallel computers (SMP) with additional processors. Scale out on the other hand applies the use of more computers with the increase in the load as opposed to using bigger computers. The two forms are at time combined but with scale out one can use it at any level. There are also the large scale computing facilities like the hardware of the product, easier models of the parallel computations and failures and dynamic method of provision.
Cloud on clusters, cloud computing and the related services offered are created on the clusters and take up all the features of clusters as a hardware platform. The clusters involved are the map reducing programming models, the value for the stores of databases, the consistency models and the algorithms applied to computing.
Networking plays a major role in the technical related matters of the cloud infrastructure, the hierarchical networks involve RAC, clusters, inter-clusters and the across data centers. The connection made to the cloud is made possible due to the internet and the leased lines. Another aspect in computing is virtualization which is the key to cloud infrastructure, in cloud computing, it involves the resource utilization through dynamic provision, sharing and migration. Different stacks are able to share the same resource while multicore makes the virtualization become an interesting model.
The languages available strongly influence the cloud software advancement that the developers have for their systems. These languages may be BPM, CSS, SQL, XML and many other SOA/Web Services. A new set of standards for Graphical User Interface (GUI) development is coming to play and many of the software vendors like Google, Adobe, Microsoft and Sun are all want to be the leading supplier of the GUI.
Advantages of Cloud Computing
Cloud computing is an application development; users spend most of their time creating infrastructures that will ultimately help to solve a certain problem. With cloud computing one is able share resources to help manage certain problems or issues as stated by Jamshid Vaughan a chief enterprise data architect and manager for IBM’s Executive Business Institute.
Cloud computing is a fast and a cost effective way of sharing and accessing resources. If one buys a server and has been in use for a long time with one not using the storage of capacity is not applicable here it’s otherwise a waste of space. In cloud computing the set up costs are not incurred and no idle hours are incurred. The infrastructure resources, the operators of the resources and the security used all are attributed to making the IT’s company operation cost cheaper. Another advantage is the kind of power used; according to BusinessWeek supercomputers are able to handle several computations in a second, by applying the use of cloud computing the computer capacity increases drastically and accessibility is possible using an Internet connection.
Applications of Cloud Computing in Software development
An educational computing platform developed by the University at Buffalo (UB) was designed to help students to have a better understanding of evolutionary biology. This model will have a greater effect on the other levels of learning too. The Pop! World, still a UB development but this time by the faculty members makes use of cloud computing and allows programs to be able to run on remote servers without the need of using servers on departmental levels or for institutions. This model created enables users, who are in different parts or located far and wide, be able to access information without affecting the speed or the quality of service. “The cloud serves as a way to distribute resources for free without limits on how many people can access it and with no regard to what kind of computer you are downloading to,” said Jessica Poulin, PhD, research assistant professor in the Biological Sciences Department who developed Pop! World.
IBM has launched “Blue Cloud” which is a series of offerings related to the cloud computing. Having a partnership with Google, they aim to provide hardware, software that will push the curricula in universities to some universities (Krishna, 2007). They aim to enable the academic excellence in their exploration of this model and provide practical training on the same. Google has also joined forces with Salesforce.com to create a product possessing the tools of Google Apps and the management of the company’s ability and the user’s relationship.
Software Evolution
Software is a program in a computer that makes the accomplishment of a certain action successful. While on the other hand a program is a collection of several actions which need to be performed by software. Software on other hand is a product that is continually being depended upon by the society at large but more or less regarded to as unreliable and lesser in quality. Research shows that it is a complex product developed by engineers and a higher percentage is laid upon its maintenance. Evolution is the collection of several changes that have occurred on an object. There is no system that can be termed to as perfect; there is a continued transformation that it faces and its maintenance. The evolution of software is mainly because of the business and technology drivers. It is estimated that the volume occupied by software is 7000,000,000 function points (FP).
Software has been used to develop several aspects of the technological industries, take an instance of a jumbo jet, it flies due to software. Software evolution looks more into the factors of the software system at its span. It is the transformations that the system entities and their respective attributes pass through from its beginning via the maintenance finally ending with the system termination (Voinea Stefan-Lucian, 2007). The entities comes in addition to source code the information to uphold it like design documents or also project plans. The entities may include document hardcopy. Software evolution mainly deals with the evolution of the source code. Mozilla is web browser that has undergone several changes; take an instance of the research that 1 million changes have been made by several developers in a period of over 6 years.
There are various phases to the development of software, the advancement of software influences are reviewed, verified, and validated by an organisation. According to the IEEE standard for Software Verification and Validation there are aspects that define the independence of software they are the technical aspect of the software, the managerial aspect of it and the financial aspect (Zelkowitz Marvin and Rus Ioana, 2011). There are varied forms of the IV & V software validation and verification processes; they are classical, modified, internal and embedded.
According to Lehman’s theory on software evolution, software is an object that is in continued development which continually makes it better as it advances. As the software evolves it increases in its complexity and consequently its increased size. Lehman also developed the self-regulation concept where he suggested that the evolution of large software is a self regulating process; this consequently leads to the observation of both good and bad correction translations in the evolving of a system made. the feedback relates more or less with the self-regulating systems, it states that S(i) which is the size of the system modules can be explained in form of S(i-1), which is the size of initial release and E(i) which is the effort applied to that release: whence S(i) = S(i-1) + E(i) / S2 (i-1).
With the maintenance of software the entropy increases; there is a scraping of the structure, design and modularization. The level of maintenance also increases with the level of interdependence within the parts or otherwise coupling. There is also a decline in the separation concerns.
Program slicing S as defined by Weiser is a reduced program that is executable, it is acquired from a program P by the removal of statements where hence S replicates the behavioral of P. slicing involves the transformation of a program to make it more workable, it entails the deletion of certain statements. Ps is the slice of P in consideration to the criterion S. Take an instance like these two programs:
W = X + Y W = X + 1
X = X + 8
W = W + Z X = X + Z
They are not equal at all as the value attributed to X is different; it is only workable or equivalent with the deletion of the X. an example of slicing a program is:
Add: = 0;
Multip: =1;
I: =1;
While I ≤ n do
Add: = Add + A[i];
Multip: = multipl * A[i];
I: = I + od;
PRINT (“Add =”, Add);
PRINT (“Multiple =”, Multipl)
The words in blue can be deleted otherwise known as slicing. Slicing can also be performed in the middle to be able to get a desired value an instance is slicing the value I top of the while loop
i :0; r := 0
While i r := r +i;
i := i + 1 od;
i :=0.
The slicing of the program above would lead to the value i be zero going as opposed to our expectations. The addition of a new variable that records the values would correct the value found above; i :0; r := 0
While i Slice := slice + {i};
r := r +i;
i := i + 1 od;
i :=0.
With the removal of i, s and n the program is sliced as
i := 0;
While i < n do
i := i + 1 od
Slicing a program as a transformation explains the concept of slicing with more consideration laid to the syntactic relation and semantic relation. A slice is different from the initial program; S; x: =0 here we are to slice S for it to be x: = 0 the S is refined as ▲ⱵS ≤ S’ S hence approximately equal to S’.
In syntactic slicing of S on X variables on program S’ having similar initial and end states spaces. ▲Ⱶ S; remove (W \ X) ≤ S’; remove (W\X) where W is the final state space for S and S’. The criterion used encompasses a collection of variables with a program point for preserving them. The refinement and transformations described above are simpler versions to apply.
The way one can compute a command has no effect on the abstract property
A (╓Ϲ╖ (Ϭ), Ϭ)
Meaning that A is an invariant on Ϲ means that Ϲ can’t be placed in disguise from skip in reference to the interested property. The evaluation of this solution should be sound, i.e., meaning it is assured.
The machinery required practicality are applied in the criteria and how they are propagated backwards through the code i.e., given A’ after C, we are to find the best A before C as below shown
A Ϭ1, Ϭ2. A (Ϭ1, Ϭ2) → A’ (╓Ϲ╖( Ϭ1), ╓Ϲ╖(Ϭ2))
When a piece of data depends on another data at the abstract level one has to trace the flow of information in reference to the assignments. The semantics of both the concrete and abstract is in the difference not the syntax take an instance of the sign xy2 which only depends x. the binary domains are either null/non-null, zero/non-zero, etc.)? here, the independence of a property from a variable is understood to mean that the solution of a question is not necessary to answer it. If the answer to is x null? this becomes inconsequential to the question is e positive? The sign acquired by e is not dependent on null value taken up by x, the use of binary decision diagrams (BDDs) is appropriate they are sensitive to the ordering of the variable including circuits which achieve exponential complexity.
Practically the automated formal method is used to display errors. There was in reference to the fact that the BDDs don’t display the correctness of errors the Binary Decision Diagrams (BMC) that looks for the counter examples of a specific length for properties of a system which are temporary, it consists of the generation and solving of the satisfiability of propositional decision procedures (SAT) rather than the BDDs
There are several applications that are attributed to software evolution; the samba is a tool that enables windows-UNIX interoperability, there is also the sendmail which is an agent that facilitates emailtransfer, Bind is a DNS server which is located on the internet (Ward Martin, 2011). The OpenSSH is another software application standard mostly used in the secure shell protocols. SQLite is a library implemetation of a self contained SQL database engine. Vsftpd which stands for Very Secure FTP Daemon is an FTP server which is located in Linux. Quagga is an object used to build software routers.
The structure attributed to the software industry is vital to ensuring a reliable system. The structure of software is critical to addressing certain problems identified. In the buildup or development of software there are certain issues that need to be placed under consideration, they are; the structure should guarantee satisfaction of the system-level needs (Balzer Bob, 2000). The structure used should also ensure that the structure of the design applied to the requirements affecting them and the comparison geared to the various structures in accordance to the requirements. The KAOS is an engineering requirements method which guides the process of needs of software system. The Structure or architecture is supported by the ADL (Architecture Description Languages) which upholds the system components, the connectors, the wiring up of the components and the connectors. The ADL can be used to describe both the related families of the architectures as well as the single architectures.
Software evolution aims to uphold the system and development procedure understanding through maintenance of a project, this relates mainly to the software structure and is far more relevant to the understanding of the trend of the system and its related procedures.
Taking S to be a software system, the content of the S is done in terms of files arranged in an orderly manner of folders:
S = {file | I = 1,…, ns E IN}
In the following level, each file is observed to be orderly collected in terms of lines:
File = {line | J = 1… n file E IN}
And at the lowest level we have
Line = {byte | k 1… n line E IN}
This is a hierarchical structure of a file formed by bytes.
An utmost keen consideration is the fast transformation in the factors or aspects that constitute an application. The environments surrounding the software are quickly improving. The fundamental aspect that the older software was built on continues to face challenges such as incompatibility issues as well as performance related areas. This is similarly what occurs at the binary and the source levels. Take an instance like a new operating system (OS) not upholding an older hardware’s desired action. But it’s less expensive to rewrite a control than changing it to operate with a new platform or environment.
The introduction of new software brings forth new purpose which renders the controls present to be obsolete. Take an instance the software vendors who make controls for Active Server Pages. The introduction of ASP.NET rendered some like the file upload to become more or less not useful. Java through apache, new frameworks and libraries took the place of many functions written by software vendors. The new languages render other older languages to be less useful and hence done away with. Languages like Ruby and Python have a huge number of followers. The movement from an older version of language to a new one means the code and library used is less useful and one can only translate it to be able to function with the new language or otherwise web translation and binary functions earlier used.
The supporting hardware and softwares are always at an improving pace, at present, the users of desktops possess strong multi-processor machines, and the database software is always improving too in relation to its features and ease of development. There has also been an improvement of the languages from the earlier FORTRAN, C, to C++ and now c# among others already in the making.
In the area of computing, there have also been some changes latest revolutions like Ajax, RSS/Atom, mashups, cloud computing have all contributed to the change of software at use. The development of software is more so in the usability, performance, language design among others.

The Future of Software Evolution in Cloud Computing
The business process management is among the fastest upcoming software market that is at a speed of 30% CAGR. A business should be in a position to move at a higher speed which is only applicable in the business process management systems (BPMS) which encompasses defining, visualizing and implementing the processes; this is according to Gartner, Forester, IDC and Datamonitor. BPM eliminates the need for speed. Long ago, businesses developed stovepipes that had a separation of purpose, time and the data applied. The BPM on the other hand gives a holistic view of the organisation that encompasses employees, clients, business partners, systems, and databases. It also gives the opportunity to access the value attributed to the assets.
The services and purposes of a system are all that is needed for a system to become part of the BPM process. SOA, which is more than importantly bringing to light the services for participation in much higher collaborations, is an extension of the BPM process. SOA is considered as the preferred option for the design of systems, its development and also integration. SOA makes possible the services to be reused again to match to the self-contained, logical units of a task which involves the Services Component Architecture (SCA). The SCA is possible to join these services to create an application that is closely connected the requirements of a business.
The joining of SOA and BPMS makes businesses through their clients to create applications by joining together software services, internal and external to an organisation to ultimately create a high-level solution.
Most ISVs domains that is specific in their applications, specific on the industry to ERP systems or independent ERP systems. The ISVs put their focus more on the stable deployment platform; they are not more so involved in the evolving of one’s own platform infrastructure (middleware). According to Forrester Research, 30% of the Software-as-a-Service in business applications is issued on platforms created on home grown basis and that 70% of the SaaS will become applicable to the third party.
Conclusion
The needs a structure of the construction of software are handled differently in the research world even though they are intertwined. The structure of a system are led by the needs of a system, it is of advantage to join the requirements of a system and the development of the software structure.
The aspect of Software-as-a-service (SaaS) form of computing is daily evolving to become a more dynamic, reliable and user-related. The cloud computing customers are able to access the computing resources off the site and are hosted by another different company. The difference one observes is the scale applied. The cloud computing platforms is a huge network of computers possibly even thousands with storage and a backup aspect in addition to several other areas.
The benefits accrued to cloud computing are the cheaper cost of operation, faster development periods and the accessibility to an improved power of computing. The related partners in the cloud are; IBM, Google and Amazon Web Services. Cloud computing supports the translation of business organizations and technology. According to IBM, the organisation class cloud computing ability assists clients to analyze the clouds’ readiness, adopt strategies and the identification of entry points.
My view is that we are at a far distance in relation to the development of software. The number important of development transformations is quite big hence covering the development of software sooner. The sole way of it coming to play is the halting of software innovations.

References
Alonso, G, (2010). EAI and Cloud Computing. Retrieved on 9 March 2011 from http://www.google.co.ke/url?sa=t&source=web&cd=1&ved=0CBsQFjAA&url=http%3A%2F%2Fwww.systems.ethz.ch%2Feducation%2Fhs10%2Feai%2Flectures%2FChapter-6-EAI-2010-Cloud-HA2.pdf&rct=j&q=technical%20backgroung%20on%20cloud%20computing%20and%20software%20evolution&ei=thB3TcKKHYrItAaCu5mQBQ&usg=AFQjCNHYosFRkib8pUCpar4wCdGsYy7fgQ&cad=rja
Balzer Bob, 2000. W01: ISAW-4 Fourth International Software Architecture Workshop Limerick, Ireland. Retrieved on 29th March 2011
Carey, W. P. & Others, (2008). Cloud Computing: The Evolution of Software-as-a-Service. Retrieved on 8 March 2011 from http://knowledge.wpcarey.asu.edu/article.cfm?articleid=1614
EBooks, (2010). Cloud Computing and Software Evolution. Retrieved on 8 March 2011 fromhttp://ebookbrowse.com/evolution-of-software-development-and-cloud-computing-pdf-d42388301
Krishna, (2007). Software Evolution and Software Reusability. Retrieved on 8 March 2011 fromhttp://www.thoughtclusters.com/2007/09/software-evolution-and-software-reusability/
Vedula M. Vivekananda and others, 2011. Program Slicing for ATPG-Based Property Checking. Retrieved on 8 March 2011 from http://www.google.co.ke/#hl=en&xhr=t&q=BDDs+in+program+slicing&cp=23&pf=p&sclient=psy&source=hp&aq=f&aqi=&aql=&oq=BDDs+in+program+slicing&pbx=1&fp=be54f85a9f8ce588
Voinea, S.L, (2007).Software Evolution Visualization. Retrieved on 8 March 2011 from http://alexandria.tue.nl/extra2/200711345.pdf
Ward Martin, 2011. Program Slicing. Retrived on 20th March 2011 from http://67.195.13.132/us.f1128.mail.yahoo.com/ya/securedownload?
Zelkowitz Marvin and Rus Ioana, 2011. Understanding IV&V in a Safety Critical and Complex Evolutionary Environment: The NASA Space Shuttle Program1. Retrived on 29th March 2011.

Latest Assignments