Software Maintenance Process Towards Cloud Environment: A Review Study

Software maintenance is the irreplaceable stage in the Software Development Life Cycle (SDLC) and is the most extended, more complex, and costly one. The maintenance phase starts when the software is delivered to the end user and ends after the software goes out of service. In this paper, we review the essential software maintenance models. Also, we propose a model for performing maintenance in the CloudComputing environment due to the characteristics of the Cloud that would facilitate this process.


Introduction
Software engineering is a branch of engineering science concerned with developing software using scientific methods and procedures. Developing software using software engineering procedures and practices would be done through a process called SDLC. The generic process of the SDLC has a set of activities that is performed in the following stages: Requirements elicitation analysis, Modelling and Design, Implementation, Testing, and Maintenance [1]. According to IEEE, software maintenance is the modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment [9]. The need for maintenance is due to three main factors, namely,eliminating errors, adding new features to adapt to the business environment, or improving performance [2]. The maintenance process requires a great effort from professionals. For this reason, the percentage of maintenance costs is significant, where development takes 1 to 2 years, while the maintenance process spans 5 to 10 years. According to [3], the maintenance cost is estimated to be four times the development cost. Many challenges are stated in [4], [ 5] facing the maintenance process, and the most critical challenge is the cost. According to the study [6], the maintenance cost exceeds 70% of the program's total cost. One of the possible solutions to overcome the maintenance challenges is the use of Cloud Computing. Cloud Computing has many characteristics, such as scalability, infrastructure, accessibility, availability, continuous technical support, privacy, and others that can simplify the maintenance process. This paper Volume 4, Issue 6, November-December 2022 2 will review some maintenance models and propose a model to combine the maintenance process with the Cloud Computing environment.

Software Maintenance Types
There are different types of software maintenance, and the purpose of classified maintenance is to find out why maintenance is necessary [7]. Understanding a certain flaw in the right manner can help in fixing a problem without complications in any context; in the same way, software maintainers can easily perform maintenance if they classify the problems based on type [8].
According to the IEEE standards, there are four maintenance types, namely, adaptive, preventive, corrective, and emergency maintenance [9]. These are discussed briefly discussed in the sequel [5]:

 Corrective maintenance
It includes correcting errors after delivering the software to the end user. These errors are of different natures, such as logical errors, design errors, or errors in coding.

 Adaptive maintenance
This type of maintenance includes updates and modifications to keep the system pace with the changing technology and business environments.

 Perfective maintenance
This type of maintenance includes updates and modifications to maintain the system for the longest period of time and to make it integrated in terms of functional and non-functional requirements.

 Preventive maintenance
This type of maintenance includes carrying out changes and updates to prevent problems that may occur in the future and cause system failure.

 Emergency maintenance
The IEEE standard has defined this type of maintenance as when emergency errors occur and require fixing to keep the system operating with continuity and consistency [9].

Maintenance Model
Many software maintenance models have been proposed, and in what follows, we review the most common ones as mentioned in [5].

 Quick-fix model
It is also known as the 'firefighting' approach. This model is proposed to maintain the system (i.e., try to fix the problems facing the system as soon as possible). In this model, bugs are fixed without any concern for future consequences. Figure 1, shows the Quick-fix model [5].

 Boehm's Model
This model was proposed by Boehm in 1983 based on economic models and principles. The maintenance is represented as closed loop, as shown in Figure 2, which illustrates more about this model [5].

 Osborne's Model
This model, proposed by Osborne, differs from others as it deals directly with the maintenance environment. It considers that most of the problems are caused by a lack of management communication and control [5].

Cloud Computing
CloudComputing refers to ubiquitous computing resources available on demand via the internet and provided to users remotely without being restricted. Users can use and control these resources through Volume 4, Issue 6, November-December 2022 4 an interface that makes them more accessible without knowing many details about the internal processes [10], [11].
The most important types of cloud services are, Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS), which is illustrated in Figure 3. These services provide services to users based on different Cloud deployment models, namely, Private, Public, and Hybrid Cloud [12]. There are many benefits of Cloud Computing mentioned by earlier studies [13], [14], [15] as follows:  Simplify management: Cloud Computing facilitates management activities due to the support of a Cloud service provider to prepare the infrastructure and necessary hardware that the end user uses. Where the users do not care about the intricate internal details.
 Reduce Cost: Cloud Computing provides the resources such as; storage, processing power, databases, networking, analytics, databases, and other services for users, which contribute to reducing ownership fees. In addition to reducing the maintenance fees for equipment, software, and systems updates, all these services are provided according to the Pay-as-you-go principle.
 Reduces the failures: Cloud Computing provides services continuously without interruption. In the case of an interruption, the Cloud has alternative resources that can use without the users feeling the interruption of services.
 High Security: In Cloud Computing, many firewalls and security applications are available to prevent hackers from accessing, so it is not easy for malware to penetrate the Cloud environment.
 High Performance: Cloud Computing works on the principle of Virtualization, which makes it possible to work in parallel, so it contributes to increasing Performance, especially in terms of developing and maintaining programs.  Accessibility: Users can access the Cloud environment from anywhere through the Internet.

Combining the maintenance process with Cloud Computing Combining the maintenance process with Cloud Computing
CloudComputing characteristics and importance are mentioned in the preceding section.In this study, to exploit these properties, aCloudComputing environment for the maintenance process is proposed that may simplify the maintenance process.The proposed Cloud-based maintenance model is illustrated in Figure 4. The proposed maintenance model is launched on a Cloud Computing platform. The Cloud Service Providers (CSPs), based on the request of the maintenance teams, prepare and install the necessary infrastructure, such as; the operating systems, IDEs, project management tools, and other applications and tools that are necessary for the maintenance process, all these done without any efforts from the maintenance team.
The users report errors or improvements that need for the system to the support and maintenance team. Using the model created on the Cloud, the team conducts an analysis study for the requested change.
Then they schedule the request using one of the management tools. Also, the maintainers use proper IDE to implement the required modification according to the user's request. All these steps are illustrated in Figure 4.
All maintenance processes are carried out on the infrastructure that has been established. Team members communicate with each other and customers through appropriate Cloud-based tools. Additionally, team members can track the project's progress through available tracking tools. Thus, the maintenance process in all its details takes place in the Cloud environment.
The proposed model is based on a Cloud environment and differs from the traditional environment in the following features: 1. Scalability: Tthe developers and maintainers can scale up or scale down the resources according to their needs with minimum time and effort. This feature is essential in the maintenance process, as it is known that in maintenance could be some improvements in the system that require the expansion of resources, such as; the need for more storage and a more extensive database.

Portability:
The team can move data and applications from one system to another without restructuring them.
3. Flexibility: This feature enables the team to reach their resources and environment in real-time. 4. Maintainability: Cloud service provider take care of any hardware failure without interacting with the team.

Disaster Recovery:
Users can recover their data in the case of disaster.
These advantages stated above, may also be a gain for using the Cloud for maintenance. There are other benefits related to the team members, as the Cloud platform provides many tools that facilitate the process of managing software projects and improve the communication between team members in different geographical locationsand other benefits.

Conclusion
The maintenance process faces many challenges, and the most important of these challenges is related to the cost, as the maintenance cost reaches around 70% of the totalsystem cost. Therefore, studies are still seeking to achieve progress in this regard. One of the solutions already applied in the development process is the use of CloudComputing due to the characteristics of the Cloud that have enabled teams to facilitate the software development process. However, there is still a need to propose models for the maintenance process in this environment. This paper reviewed the types of maintenance and their main models. In addition, we proposed a model for implementing the maintenance process in the Cloud environment. We also reviewed the most important benefits of using Computing for development, which are expected to achieve the same results in the maintenance process.We aim to evaluate this model in an industrial software company for future work.