The impact of cloud computing on traditional software engineering
The origins of software engineering:
From the late 60 to the early 70, the advent of the "software crisis" has gradually developed a set of technologies that are often referred to as engineering. These technologies treat software as an engineering product: It requires planning, analysis, design, implementation, testing, and maintenance. Software engineering is mainly concerned with the research on the structure of the softwares, software design methodology, software tools, software engineering standards and specifications, as well as the theory related with software engineering. The gradual establishment of the software industry has also led to the development of the engineering discipline. At the same time, the serialization of software production. Product, engineering and standardization form the symbol of the software industry.
What is cloud computing:
Cloud computing (cloud computing) is an increase, usage, and delivery model of Internet-based services, often involving the use of the Internet to provide dynamically scalable and often virtualized resources. The cloud is a metaphor for the internet and the Web. In the past, the cloud was often used to represent the telecommunications network, which was later used to represent the abstraction of the Internet and underlying infrastructure. As a result, cloud computing can even allow users to experience the computing power of 10 trillion times per second, with such powerful computing power to simulate nuclear explosions, predict climate change and market trends. Users through the computer, notebook, mobile phone and other ways to access the data center, according to their own needs to operate. (1)
The generally accepted features of cloud computing are as follows:
(1) ultra-Large scale
"Cloud" has a considerable scale, Google Cloud computing already has more than 1 million servers, Amazon, IBM, Microsoft, Yahoo, and other "cloud" have hundreds of thousands of servers. Enterprise private clouds typically have hundreds of thousands of servers. "Cloud" can give users unprecedented computing power.
(2) Virtualization
Cloud computing enables users to access app services in any location, using a variety of terminals. The requested resource is from the cloud, not a fixed physical entity. Apps run somewhere in the cloud, but you don't really need to know or worry about where your app is running. With just a laptop or a mobile phone, it's possible to do everything we need with a Web service, even a task like supercomputing.
(3) High reliability
"Cloud" uses the data multi-copy fault tolerance, compute node isomorphism and other measures to ensure the high reliability of the service, the use of cloud computing than the use of local computer reliable.
(4) Versatility
Cloud computing is not specific to the application, under the "cloud" support can construct a variety of applications, the same "cloud" can support different applications at the same time to run.
(5) High scalability
The scale of the cloud can be scaled dynamically to meet the needs of applications and user size growth.
(6) On-demand service
"Cloud" is a huge pool of resources that you can purchase on demand; The cloud is billed like running water, electricity, gas.
(7) Extremely inexpensive
Because the "cloud" of special fault-tolerant measures can be a very inexpensive node to form the cloud, "cloud" of automated centralized management so that a large number of enterprises do not have to bear the increasing cost of data center management, "cloud" commonality makes the utilization of resources compared to traditional systems greatly increased, so users can fully enjoy the "cloud" low cost advantage, It often takes $ hundreds of and a few days to complete a task that requires $ tens of thousands of and a few months to complete.
The impact of cloud computing on traditional software engineering can be analyzed from the following aspects:
First, the openness of software architecture
Cloud-based computer, in the software experiment management process, is through the data center of the region's data management and control, such a process will not only make the whole more convenient, but also can improve the overall security, when needed to extract from the database, and in peacetime can be better to save and manage. Not only that, but even after the end of the experiment, the data can still be reused as data from the cloud. (2)
Cloud computing can build multiple computer cluster systems according to different kinds of requirements in different situations. Many times the process of software architecture requires a part of the template, a good time to reuse later than every re-production more convenient, error rate is also lower.
Ii. diversity of software objects
Cloud computing can provide many interfaces. In the process of object-oriented programming, these interfaces can be used by the program, these interfaces through the use of developers and add new features, you can save a lot of cost. These interfaces are not limited to being used by a single program, and their universal applicability allows him to adapt to different objects. As long as the specification is good, software engineering development will be more convenient.
Third, the dynamic nature of software process
From the life cycle characteristics, the traditional software life cycle model is serial, the essence is the deformation of the waterfall model, so that the life cycle model is more easy to control, can ensure that the determination of time has a definite result. But in the cloud computing environment, the software development life cycle model, the concurrency model, the multi-helix model will become the mainstream, the waterfall model, the iteration model use less and more, after the software deployment, the delivery is the intermediate edition, the software upgrade becomes the normal.
Software development is no longer a closed, globally controlled process, but there are multiple concurrent and autonomous processes in which the bottom-up, top-down organic integration is in one project.
In the various basic stages of software development, the demand phase will occupy a larger workload ratio, the architecture design can be determined from the existing mature architecture model selection, detailed design can borrow a large number of mature components and code, with the increase of software reuse, software testing workload will be greatly reduced, and software quality is effectively improved. During the development process, there is no clear role division between users and developers, and typically, in different stages, software developers, service providers, and software users have multiple roles where the same personal software development tools are provided uniformly by the cloud service provider, and the development organization does not need to purchase a perpetual software license. Simply rent the software licenses of the cloud service providers on demand during the development cycle, which can significantly reduce the cost of software tools. (3)
Iv. Socialization of development organizations
Socialization is the process in which individuals learn and master knowledge, skills, language, norms, values and other social behavior patterns and personality traits in a specific social and cultural environment, adapting to society and actively acting on society and creating new culture. It is the result of human and social interaction. Through socialization, the individual learns the standards, norms, values and desired behaviors of the society.
Cloud computing makes software development more than just a few programmers, it can allow more people in the community to participate in the development process, so that the final software usability has a great help, more in line with the needs of people and more humane.
V. The popularity of developers
With the cloud-computing tools, the hardware limitations of software development are less important, and even ordinary people in their own homes with a PC can also be software engineering development. Software engineering development becomes more popular.
Vi. Virtualization of resource deployments
The core of cloud computing technology is virtual technology, the use of virtualization technology can build a number of virtual machines in-house, for the construction of software Systems has a great help. Not only that, it is also in the case of networking, can be between the physical machine and virtual machine to operate with each other, in the convenience of management, while greatly reducing the cost of management, can make it better to use and sublimation.
Summary: The development of cloud computing is undoubtedly beneficial, even in the face of constant questioning, it is to show its strong side. With the development of cloud computing, better computer software system construction and more secure software data preservation will also become a reality.
Reference works
1, Baidu Library: http://baike.baidu.com/view/1316082.htm
2, Jakunlin, "The impact of cloud computing development on software engineering construction system"
3, Zhang Yong, "The cloud computing environment under the software engineering model"
The impact of cloud computing on traditional software engineering