Influence of cloud computing on traditional software engineering

Source: Internet
Author: User
What is cloud computing?

Cloud computing is an Internet-based computing method in which shared hardware and software resources and information can be provided to various computer terminals and other devices as needed.

Cloud computing is another major change following the big transformation from a large computer to a client-server in the 1980 s. Users no longer need to understand the details of the infrastructure in the "Cloud", do not have to have the corresponding professional knowledge, and do not need to directly control. Cloud computing describes a new Internet-based IT service addition, use, and delivery model, which usually involves providing dynamic and scalable resources through the Internet and is often virtualized.

In the "software as a service (SAAS)" service model, users can access service software and data. The service provider maintains the infrastructure and platform to maintain normal service operations. SAAS is often referred to as "On-Demand software" and is usually charged based on the number of hours of use. Sometimes, subscribed services are used.

Promoters believe that SaaS allows enterprises to outsource hardware, software maintenance, and support services to service providers to reduce it operating costs. In addition, because applications are centrally supplied, updates can be immediately released without manual updates or new software installation. The defect of SAAS is that user data is stored on the server of the service provider, which enables the service provider to access the data without authorization.

Users can access cloud services through browsers, desktop applications, or mobile applications. Promoters believe that cloud computing allows enterprises to deploy applications more quickly, reduce management complexity and maintenance costs, and allow the rapid redistribution of IT resources in response to rapid changes in enterprise needs.

Cloud computing relies on resource sharing to achieve economies of scale, similar to infrastructure (such as power grids ). Service providers integrate a large amount of resources for multiple users. Users can easily request (lease) More resources, adjust the usage at any time, and release unnecessary resources back to the entire architecture, therefore, you do not need to purchase a large amount of resources because of the short-term peak demand. You only need to increase the rental volume and withdraw the rent when the demand is reduced. The service provider is able to lease unrented resources to other users, and even adjust the rent according to the overall demand.

Software Engineering under cloud computing and Its Features

Software Development has basically gone through three stages: Program, software product, and software service. In the early days, computer systems were dominated by hardware and used together with small-sized programs. The program development process was relatively simple, and the development efficiency was dependent on the individual talents of programmers. With the improvement of computer performance and application expansion, the proportion of software continues to increase. In terms of scale and complexity, they all surpass individual design and development capabilities. Engineering Design Ideas and related technical methods gradually become more and more important in development. In 1968, the concept of "Software Engineering" was first proposed. Software Engineering emphasizes maintainability, documentation, and systematic management of the software life cycle, making software a product. The emergence of software products separates software from hardware and becomes an independent research system. The software development method gradually forms a general process of analysis, design, coding, operation and maintenance. The relationship between software developers and users is also basically formed. In the decades after software engineering was proposed, development methods and design ideas were constantly innovated, but the basic process and pattern did not change much.

Software development is directly related to the computing mode and running mode. Generally, enterprise computing system resources are designed in a hierarchical manner, which is reflected in the tightly coupled deployment of "applications-middleware/database-Operating System-hardware servers. This resource architecture is a prerequisite for the software engineering design and development model. The service architecture of cloud computing is composed of IAAs, paas, and SAAS. The middleware of the Standard Architecture system shields the differences between different operating systems and provides reliable and stable Service Assurance on Virtualized hardware and operating systems, which is also the core of Paas. In the cloud computing model, software engineering is further abstracted on the basis of object-oriented, and upgraded to a service-oriented level. Service orientation refers to dividing a business flow into sub-business flows, organizing and designing modules at the sub-business flow level, and finally forming a software system as a whole. Service-oriented software is closer to applications in IT system structure hierarchies. The service-oriented development model extends the software engineering under cloud computing. Its basic features are shown in the following aspects:

1) The component maturity is improved, and the degree of software reusability is improved. Software reuse has always been an important way to improve software development efficiency and overcome the software crisis. components can achieve software reuse at a higher abstraction level. To improve the degree of software reuse, mature component modules can be used to reduce software development errors and improve software credibility. On the other hand, the development time can be shortened and the development performance can be improved. According to the information provided by 800app, a famous PAAs provider in China, the development time in cloud computing mode can be reduced by 1/3 ~ 1/10. The contradiction between performance and reliability has always been the root cause of the software crisis. The advantages of cloud computing in both aspects undoubtedly bring hope to ease the software crisis.

2) developers are oriented to business applications, and demand projects become the focus. On the PAAs platform, developers may write very little code or even do not need code. Instead, they only need to design and organize the various resources provided by the platform according to the business process. In this mode, the demand and development have the same context, while the demand in the software engineering position will be more important.

3) software engineering under cloud computing breaks the dual structure between software developers and users. The role of a third-party cloud computing center is even more important. In the cloud computing mode, the software development and operation environments are basically structured by the cloud computing center. These resources are configured according to the requirements of developers. At one end of the developer end, the hardware architecture and running environment debugging work are saved, and development can be implemented with only one browser and some simple tools. The cloud computing center is also responsible for testing, running, and maintenance after development. This three-pronged relationship is not found in traditional software engineering, which changes both the engineering business chain and the business value chain. The cloud computing center associates developers with users and occupies an important position in the software system. This situation will be a problem faced by a large number of small and medium-sized enterprises after the promotion of cloud computing. For large software development enterprises, the transformation can be completed by building an enterprise private cloud. However, there will also be huge technical and financial challenges. Therefore, software engineering on the public cloud and private cloud will coexist and develop, which is also a realistic prediction.

Impact on traditional software engineering

Compared with the traditional software architecture, the most important feature of cloud computing-based software architecture is its unprecedented openness and mature componentization. Cloud Computing Application Software will make a lot of use of the ready-made software components of cloud services to provide management middleware. At the same time, the newly developed software will become a mature component that can be used by subsequent application software development.

The architecture of cloud computing application software is completely distributed in nature. It is organically integrated by clients, servers, management terminals, development terminals, test terminals, and other software components. Multiple applications share public software components, there are still clear logical boundaries between applications, but there are no completely separate physical boundaries.

From the perspective of the characteristics of the life cycle, the traditional software life cycle model is serial, And the essence is the deformation of the waterfall model. Such a life cycle model is easier to control, it can ensure that there are definite results at the specified time. However, in the cloud computing environment, the software development lifecycle model is becoming mainstream, and the concurrent model and multi-spiral model are becoming less and less popular. After the software deployment, the intermediate version is delivered, and software upgrades become the norm.

Development Process: software development is no longer a closed, global control process, but a process with multiple concurrency and autonomy. In a project, supports bottom-up and top-down organic integration.

In each basic stage of software development, the demand stage will occupy a large proportion of the workload, and 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 improvement of software reuse, the workload of software testing will be greatly reduced, while the software quality will be effectively improved.

There is no clear division of roles between users and developers during the development process. Generally, at different stages, software developers, service providers, and software users have multiple roles. software development tools are provided by cloud computing service providers by the same person. development organizations do not need to purchase permanent software licenses, you only need to rent the software license of the cloud service provider on demand within the development cycle, which can greatly reduce the cost of software tools.

Cloud computing brings high flexibility to software deployment, operation management, and maintenance. for a specific application, the process of software deployment, operation management, maintenance, and development is parallel, the first deployment may only involve a small number of features, which are constantly improved in subsequent software upgrades. Because the cloud computing mode greatly reduces the coupling between software components, the software client, server, management, and other components are completely deployed and managed in a concurrent and independent manner, even the infrastructure for software operation can be upgraded and redeployed in a transparent manner.

Cloud computing software runs at any time according to user requirements. The software running platform adopts a very mature virtualization method. on the client side, it can generate a variety of virtual environments, such as Windows, Linux, and even browsers, users can choose based on their preferences. on the server side, you can Virtualize a large-scale server system into a single processing unit and a continuous storage unit, reducing the complexity of user management.

The underlying hardware system and basic software system of cloud computing software are centrally maintained and managed by professional computer information system integrators. for users, the details of the underlying software and hardware can be ignored.

Influence of cloud computing on traditional software engineering

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.