Talking about the impact of cloud computing on traditional software engineering, we need to understand these two concepts first.
First, the traditional software engineering
The first is the traditional software engineering, to understand the traditional software engineering is to understand the history of software engineering, the early computer systems to hardware-based, programmers in the early computers through more complex operation to run a relatively simple program, the size of the program is generally not very large. But with the development of computer hardware, the performance of computer system is more and more strong, and the scale of software running on it is more and more large. In the 60 's, the fact that "software crisis" was gradually recognized, the specific problems include: software production is difficult to meet the growing needs of users, software developers and users of inadequate communication, software quality is difficult to guarantee, software maintenance is not appropriate problems. I think the cause of this problem should be mainly caused by the following reasons: the size of the software is increasing, the development of small programs may not need specific methods and principles, but the scale of the words, there is no clear development principles, engineering methods for guidance, will make the chaotic software development caused more and more problems.
The concept of software engineering was first presented in 1968, and software Engineering emphasized maintainability, emphasizing documentation and emphasizing the systematization of software life cycle. The development of software engineering has also made the research into an independent field, which distinguishes it from the research of hardware. The general process of software development is five steps for analysis, design, coding, operation and maintenance. Although the various new development ideas of software engineering have been put forward in the past few decades, the big pattern has not changed.
Second, cloud computing
Next we'll talk about cloud computing. In Wikipedia, cloud computing is defined as an Internet-based computing method in which shared hardware and software resources and information can be provided to computers on a variety of terminals and other devices on demand. Cloud computing describes a new internet-based IT service growth, usage, and delivery model, often involving the use of the Internet to provide dynamically scalable and often virtualized resources. The service is divided into the following modes:
Infrastructure as a service (IaaS): Consumers use processing, storage, networking, and various basic computing resources to deploy and execute various software components such as operating systems or applications .
Platform as a service (PaaS): Provides the computing platform and the solution stack as a service. Platform-as-a-service enables users to deploy and create cloud infrastructures to clients, or gain access to programming languages , libraries , and services. Users do not need to manage and control the cloud infrastructure, including networks, servers, operating systems, or storage, but need to control the upper-level application deployment and application-hosted environment.
Software as a service (SaaS): In this software delivery model in the cloud centralized hosting software and related data, the software only need to through the Internet, without the need to install and use.
Frankly speaking, I think these three services are three levels respectively. If software development is likened to making a assembled toy, then we need at least parts and tools such as screwdrivers and pliers. The infrastructure that provides us with resources such as basic computing resources as a service is like providing us with parts and tools, and we need to do all the installation work ourselves.
However, some people do not want to start the installation from the first step, but also do not want to directly buy the toys have been assembled, so sometimes they will choose to buy semi-finished products to install. At this time, in the case of toys divided into several modules, if the sale of the toys of the people in advance to assemble several modules, and then to sell, so that they can meet the aspirations of such people. Such services are much like platform-as-a-service (PaaS), providing the required platform.
Of course, some people do not want to do any installation work, just want to use, then such people buy toys as long as they buy ready-made. So sometimes sellers also sell toys that are already assembled. This type of player is like accepting software as a service (SaaS).
Third, the impact of the emergence of cloud computing on traditional software engineering
Understand what cloud computing is, what is traditional software engineering, and how do we analyze what cloud computing will bring to software engineering? I think the most important thing for us is to analyze what the purpose of cloud computing is, what is the relationship between the object and the software development.
1, I think we all can think of is: software development cost reduction. In the past, without the concept of cloud computing, all the hardware needed to develop software had to be purchased by the company itself, and it would have to cost a lot of money to buy expensive hardware if the hardware required high computational power. In addition to hardware, tool software, software licenses are also required for the company's cost, not to mention that hardware and software are generally required to maintain regularly, this is a small and long-term commitment to the company's expenses. These problems, these thoughts of the head of the big overhead, after the concept of cloud computing, will be greatly alleviated.
2, the software installation difficulties will be reduced a lot. I think we all know that the installation of tool software, environment, sometimes very simple, sometimes very troublesome, will consume a lot of time, and sometimes the tool software will have a problem that developers do not know beforehand. All this can make software developers waste a lot of time and energy, emotions can sometimes be greatly affected. With cloud computing software as a service (SaaS), software developers do not need to install software to use it.
3, the use of hardware will also have a lot of improvement. Many times we buy their own hardware, their own management scheduling effect will be poor, so that the effect of the program will be relatively poor. And cloud computing just helps us solve this problem, we don't need to do our own hardware scheduling and management.
4, the software reuse degree will also improve. Software in the cloud is shared by different developers, so different developers are using the same software, not different developers each loaded with one such software, so the common use of the software has been greatly improved. At the same time, the problem of software itself is more easily discovered, so the software is more trustworthy. And the credibility of this point for the efficiency of software development also plays a very important role, according to the domestic well-known PAAs provider 800APP provides information, cloud computing mode development time can be reduced 1/3~1/10. The contradiction between performance and reliability has always been the source of software crisis, and the advantages of cloud computing in these two aspects have undoubtedly brought hope for alleviating the software crisis.
5, not only the quantity, I believe that the quality of software, as well as the satisfaction of users will be greatly improved. Why do you say that? Because in the case of cloud services, especially in the case of platform-as-a-service, software-as-a-service, many of the underlying trivial code that was originally written by the developer in the process of software development is now directly available. This clearly gives software developers more time to think about how to design the entire architecture to better meet the needs of their customers, rather than struggling with the debug of an endless bug. At the same time, because there is no longer the need for developers to have very strong debugging capabilities, so more people will be able to do the work of developers, the increase in staff will increase the speed of software development. So from this angle can also draw the conclusion that cloud computing increases the efficiency of software opening.
6, finally, I also found that developers and users of the two-yuan landscape has been broken into a developer-cloud computing center-the user ternary pattern. This may not be much of a disadvantage for software developers. Because a lot of computing and service work to the cloud computing Center, the user's pay will have to come up with a considerable part of the cloud computing center, so that the status of developers down. So I think for developers, the most important thing is to seize the convenience of all the cloud computing center, to maximize the speed of development, so that in the same time and before the completion of more projects. Of course, this is likely to increase the pressure and burden of developers, so how to grasp this yardstick, in my opinion is a rather difficult, worthy of a good study of the point.
Iv. Summary
We can now know that under the influence of cloud computing, the efficiency and quality of software development will be greatly improved. But all the mistakes have two sides, cloud computing will also break the original bipolar pattern, making the developer is a "love and hate intertwined" idea. However, I think the traditional software engineering development process, although many steps of the implementation will be more convenient than originally, but the big steps or those, and not because of the advent of cloud computing, which step disappeared, so I think cloud computing will not be down to the traditional software engineering "silver bomb."
Reference documents:
Sagessa, Xia Lijun, Shaohua. On the impact of cloud computing on software engineering. Journal of Kunming University, 2011,33 (6): 67-68
"Cloud computing and software development Change", Lee, March 19, 2013
Influence on traditional software engineering