Skip to main content

2020 | Buch

Software Engineering in the Era of Cloud Computing

insite
SUCHEN

Über dieses Buch

This book focuses on the development and implementation of cloud-based, complex software that allows parallelism, fast processing, and real-time connectivity. Software engineering (SE) is the design, development, testing, and implementation of software applications, and this discipline is as well developed as the practice is well established whereas the Cloud Software Engineering (CSE) is the design, development, testing, and continuous delivery of service-oriented software systems and applications (Software as a Service Paradigm). However, with the emergence of the highly attractive cloud computing (CC) paradigm, the tools and techniques for SE are changing. CC provides the latest software development environments and the necessary platforms relatively easily and inexpensively. It also allows the provision of software applications equally easily and on a pay-as-you-go basis. Business requirements for the use of software are also changing and there is a need for applications in big data analytics, parallel computing, AI, natural language processing, and biometrics, etc. These require huge amounts of computing power and sophisticated data management mechanisms, as well as device connectivity for Internet of Things (IoT) environments. In terms of hardware, software, communication, and storage, CC is highly attractive for developing complex software that is rapidly becoming essential for all sectors of life, including commerce, health, education, and transportation.

The book fills a gap in the SE literature by providing scientific contributions from researchers and practitioners, focusing on frameworks, methodologies, applications, benefits and inherent challenges/barriers to engineering software using the CC paradigm.

Inhaltsverzeichnis

Frontmatter

Cloud Requirements Engineering and Domain Modelling

Frontmatter
Chapter 1. Requirements Engineering Framework for Service and Cloud Computing (REF-SCC)
Abstract
Requirements engineering (RE) is the most difficult and important stage of any business process or project development. This research endeavors to find out the characteristics and aspects of requirements engineering enforced by cloud computing. Business Process Modeling Notation (BPMN) has made an impact in the respect to capture the process and to make the changes accordingly for improvement in business operations. This chapter defines how BPMN can be used as a method of requirements engineering in cloud business operations. Furthermore, this chapter presents the requirements engineering framework for service and cloud computing (BPMN-REF-SCC) and will also discuss the reference architecture for service and cloud computing. Finally, the research delivers a case of financial cloud business, which has developed 15 hypotheses for the validation and evaluation through simulation.
Krishan Chand, Muthu Ramachandran
Chapter 2. Toward an Effective Requirement Engineering Approach for Cloud Applications
Abstract
Cloud applications, also known as software as a service (SaaS), provide advantageous features that increase software adoption, accelerate upgrades, reduce the initial capital costs of software development, and provide less strenuous scalability and supportability. Developing software with these features adds new dimensions of complexity to software development that conventional software development methodologies often overlook. These complexities necessitate additional efforts in the software development process to fully utilize cloud qualities (e.g., on-demand, pay-per-use, and auto-scalability). Cloud applications can utilize one or more of these qualities based on software and business requirements. It is noteworthy that present software methodologies (traditional and agile) are deficient to a certain extent in supporting cloud application qualities. In this chapter, therefore, we propose a systematic requirement engineering approach to address this deficiency and facilitate building SaaS with cloud qualities in mind. The proposed cloud requirements engineering approach relies on identifying the number of cloud qualities to be utilized in SaaS and consequently addresses any existing shortcomings. First, we examine different deployment approaches of a cloud application. We then identify the cloud applications’ qualities and highlight their importance in the cloud application development process. These qualities are used to derive additional considerations in the form of questions to guide software engineers throughout the requirement engineering process. We demonstrate how these considerations can be used in the requirement engineering process and how the proposed approach effectively produces high-quality cloud applications. This work advocates the need for a systematic approach to support cloud applications requirements engineering.
Abdullah Abuhussein, Faisal Alsubaei, Sajjan Shiva
Chapter 3. Requirements Engineering for Large-Scale Big Data Applications
Abstract
As the use of smartphone proliferates, and human interaction through social media is intensified around the globe, the amount of data available to process is greater than ever before. As consequence, the design and implementation of systems capable of handling such vast amounts of data in acceptable timescales has moved to the forefront of academic and industry-based research. This research represents a unique contribution to the field of software engineering for Big Data in the form of an investigation of the big data architectures of three well-known real-world companies: Facebook, Twitter and Netflix. The purpose of this investigation is to gather significant non-functional requirements for real-world big data systems, with an aim to addressing these requirements in the design of our own unique reference architecture for big data processing in the cloud: MC-BDP (Multi-Cloud Big Data Processing). MC-BDP represents an evolution of the PaaS-BDP (Platform as a Service for Big Data Processing) architectural pattern, previously developed by the authors. However, its presentation is not within the scope of this study. The scope of this comparative study is limited to the examination of academic papers, technical blogs, presentations, source code and documentation officially published by the companies under investigation. Ten non-functional requirements are identified and discussed in the context of these companies’ architectures: batch data, stream data, late and out-of-order data, processing guarantees, integration and extensibility, distribution and scalability, cloud support and elasticity, fault tolerance, flow control and flexibility and technology agnosticism. They are followed by the conclusion and considerations for future work.
Thalita Vergilio, Muthu Ramachandran, Duncan Mullier
Chapter 4. Migrating from Monoliths to Cloud-Based Microservices: A Banking Industry Example
Abstract
As organizations are beginning to place cloud computing at the heart of their digital transformation strategy, it is important that they adopt appropriate architectures and development methodologies to leverage the full benefits of the cloud paradigm. A mere “lift and move” approach, where traditional monolith applications are moved to the cloud will not support the demands of digital services. While monolithic applications may be easier to develop and control, they are inflexible to change to become more suitable for cloud environments. Microservices architecture, which adopts some of the concepts and principles of service-oriented architecture, provides a number of benefits, when developing an enterprise application, over a monolithic architecture. Microservices architecture offers agility, faster development and deployment cycles, scalability of selected functionality and the ability to develop solutions using a mixture of technologies. Microservices architecture aims to decompose a monolithic application into a set of independent services which communicate with each other through open APIs or highly scalable messaging. In short, microservices architecture is more suited for building agile and scalable cloud-based solutions. This chapter provides a practice-based view and comparison between the monolithic and microservices styles of application architecture in the context of cloud computing vision and proposes a methodology for transitioning from monoliths to cloud-based microservices.
Alan Megargel, Venky Shankararaman, David K. Walker
Chapter 5. Cloud-Enabled Domain-Based Software Development
Abstract
A cloud-based software development framework is presented that does not require programmer capabilities. The development starts with a graphical modelling of the process model, defining the top-level flow for the application. Such a flow coordinates the functional units that are components or services linked to the process again through graphical means such as drag and drop. Variability affects all processes and functional constituents, being the principal specification requires for the application under development. The idea has been partially implemented in a commercial setting and is in its assessment phase. This framework needs to be domain-specific for successful deployment of user ideas without programming-level input. As a platform, the suggested environment allows the setting up of different development environments for different domains. A user community can construct new domains by defining reference architectures, process models and other assets for the application developers. Consequently, there is a possibility of a market place shaping up where such assets can be offered and consumed, subject to an administration for security and optionally commercial purposes. Open, free or paid marketplaces can be created based on administrative policies.
Selma Suloglu, M. Cagri Kaya, Anil Cetinkaya, Alper Karamanlioglu, Ali H. Dogru
Chapter 6. Security Challenges in Software Engineering for the Cloud: A Systematic Review
Abstract
Cloud computing is among the fastest growing technologies, and it has brought noticeable growth in security concerns. Despite the security challenges, cloud computing has proven pivotal in the development and success of distributed systems. This comes from certain features such as rapid elasticity, on-demand service deployment, and support for self-service. All these features are associated with security challenges such as data breaches, network security, data access, denial of service attacks, hijacking of accounts, and exploitable system vulnerabilities. Regardless of the cloud model, the cloud software development process and the consideration of integrated security features are critical for securing cloud computing. As such, software engineering is required to play an essential role in combating cloud security issues in the future applications. In this paper, we introduce a systematic review of articles in the area of software engineering security challenges on the cloud. The review examines articles that were published between 2014 and 2019. The procedure for article qualification relied on the elucidation of Preferred Reporting Items for Systematic Reviews and Meta-Analyses premises. Meta-analysis checklist was employed to explore the analytical quality of the reviewed papers. Some of the issues considered were included, but were not limited to, cloud models of service delivery, access control, harm detection, and integrity. All these elements are discussed from the perspective of software engineering and its prospect in improving cloud security.
Mohamed Alloghani, Mohammed M. Alani

Cloud Design and Software Engineering Analytics with Machine Learning Approaches

Frontmatter
Chapter 7. Software Engineering Framework for Software Defect Management Using Machine Learning Techniques with Azure
Abstract
The presence of bugs in a software release has become inevitable. The loss incurred by a company due to the presence of bugs in a software release is phenomenal. Modern methods of testing and debugging have shifted focus from ‘detecting’ to ‘predicting’ bugs in the code. The existing models of bug prediction have not been optimized for commercial use. Moreover, the scalability of these models has not been discussed in depth yet. Taking into account the varying costs of fixing bugs, depending on which stage of the software development cycle the bug is detected in, this chapter uses two approaches—one model which can be employed when the ‘cost of changing code’ curve is exponential and the other model can be used otherwise. The cases where each model is best suited are discussed. This chapter proposes a model that can be deployed on a cloud platform for software development companies to use. The model in this chapter aims to predict the presence or absence of a bug in the code, using machine learning classification models. Using Microsoft Azure’s machine learning platform, this model can be distributed as a web service worldwide, thus providing bug prediction as a service (BPaaS).
Uma Subbiah, Muthu Ramachandran, Zaigham Mahmood
Chapter 8. Sentiment Analysis of Twitter Data Through Machine Learning Techniques
Abstract
Cloud computing is a revolutionary technology for businesses, governments, and citizens. Some examples of Software-as-a-Services (SaaS) of cloud computing are banking apps, e-mail, blog, online news, and social networks. In this chapter, we analyze data sets generated by trending topics on Twitter that emerged from Mexican citizens that interacted during the earthquake of September 19, 2017, using sentiment analysis and supervised learning, based on the Ekman’s six emotional model. We built three classifiers to determine the emotions of tweets that belong to the same topic. The classifiers with the best accuracy for predicting emotions were Naive Bayes and support vector machine. We found that the most frequent predicted emotions were happiness, anger, and sadness; also, that 6.5% of predicted tweets were irrelevant. We provide some recommendations about the use of machine learning techniques in sentiment analysis. Our contribution is the expansion of the emotions range, from three (negative, neutral, positive) to six in order to provide more elements to understand how users interact with social media platforms. Future research will include validation of the method with different data sets and emotions, and the addition of new artificial intelligence techniques to improve accuracy.
Asdrúbal López-Chau, David Valle-Cruz, Rodrigo Sandoval-Almazán
Chapter 9. Connection Handler: A Design Pattern for Recovery from Connection Crashes
Abstract
Creating dependable distributed applications for the cloud is a challenging task that heavily depends on the communication middleware. Such middleware will invariably depend on the Transmission Control Protocol (TCP), as TCP stands at the core of reliable communication on the Internet. Despite offering reliability against dropped and out-of-order packets, the ubiquitous TCP provides no recovery options when connections crash due to, for example, lost connectivity. Should this happen, developers must rollback the communication endpoints to some coherent state, using their own error-prone solutions. In fact, overcoming this limitation is a difficult and unsolved problem, and so far, no solution managed to gain wide acceptance, as they all impact TCP’s simplicity, performance, or pervasiveness. In this chapter, we present the Connection Handler design pattern, a reusable design solution that allows the development of cloud communication middleware that is tolerant to connection crashes. Being a design pattern, it bears little or no dependence to the operating system, programming language, or external libraries, having minimal impact on any other cloud system layers. To demonstrate that the Connection Handler does not impair performance and involves a low programming complexity, we applied it to: (i) a stream-based TCP, (ii) an HTTP, and (iii) a message-oriented application. Our results show that our design pattern is efficient and of general use, thus being applicable to a wide range of cloud-based applications and services.
Naghmeh Ivaki, Nuno Laranjeiro, Fernando Barros, Filipe Araújo

Cloud Testing and Software Process Improvement as a Service

Frontmatter
Chapter 10. A Modern Perspective on Cloud Testing Ecosystems
Abstract
The Cloud testing market share is expected to be over 10 billion USD by 2022. Cloud migration for applications has become an attractive phenomenon, and end users have, as a result, achieved various benefits such as autonomy, scalability and agility and improved return on investment by migrating to Cloud. Cloud environment is inherently elastic with respect to applications, infrastructure and platform resources which consequentially translate to the benefits mentioned. The rapid consumer adoption of Cloud paradigm mandates software testing in order to ensure that services over the Cloud are working as expected. In addition to the need for testing Cloud services and applications, the emergence of Cloud computing has opened new avenues for providing testing services over the Cloud in the form of testing as a service (TaaS). Many quality assurance (QA) processes which have a direct impact on testing cycles, like test environment management and test data management, can be provisioned via the Cloud, resulting in immense additional benefits. This chapter sets the context of Cloud computing and its growing significance for the software industry before focusing on Cloud TaaS. Additionally, different types of Cloud deployments in testing ecosystem are discussed in this chapter including: testing on the Cloud, testing models, test processes relating to the Cloud, tools and frameworks.
V. Vijayaraghavan, Akanksha Rajendra Singh, Swati Sucharita
Chapter 11. Towards Green Software Testing in Agile and DevOps Using Cloud Virtualization for Environmental Protection
Abstract
Among the software engineering activities, software testing is a crucial one which consumes more than 50% of total cost and time needed in the development process. As quality is the most important criterion for successful delivery of the software, complete testing is the only way to achieve it. The various surveys conducted during the past few years reported not only the problems of exhaustive testing but also the problems associated with energy consumption and the overall impact on the environment due to dedicated hardware and other infrastructure resources utilized for testing. In traditional test environment, the quality management and testing activities are performed using the dedicated environmental set-up. This in turn alarmingly increases the amount of carbon emission in the environment. Hence, this chapter provides a key solution to make this higher energy-consuming task into a less energy-consuming one. The objective of this chapter is twofold: firstly, to provide a green software testing framework using cloud-based virtualization, and secondly, to apply cloud-based testing in Agile and DevOps-based software development environments. This chapter focuses on an important paradigm shift from traditional testing with dedicated resources to a cloud-based testing solution to achieve environmental protection. Hence, the testing activities which include the test case generation and execution to deliver quality software can now be achieved by means of cloud-based virtualization and by means of service on the cloud termed as TaaS (testing as a service).
D. Jeya Mala, A. Pradeep Reynold
Chapter 12. Machine Learning as a Service for Software Process Improvement
Abstract
As the technology evolves, software engineering companies must follow new methodologies to implement software process improvement (SPI) to enhance their current practices. It is evident that the rise of big data processing and machine learning allows the development of new technologies to reduce manual workloads in organisations. Therefore, this chapter focuses on proposing new methods to improve SPI in organisations by developing a new maturity model and combining it with machine learning techniques. It proposes the Measurable Capability Maturity Model (MCMM), which contain measurable metrics as its key process indicators to identify maturity levels of software development companies. Compared to existing maturity models in the industry, MCMM has measurable metrics that identify maturity-level achievements through mathematical calculations. These SPI metrics were identified and developed by knowledge obtained through the literature review and qualitative research. Moreover, this chapter proposes a prototype application MLSPI (machine learning for software process improvement) by combining MCMM with machine learning functionalities. It contains functionalities to extract information from a software development organisation and identify its maturity-level achievements through mathematical calculations used in MCMM. Moreover, it provides feedback for SPI and predicts data patterns variations for each metrics using machine learning functionalities.
Supun Dissanayake, Muthu Ramachandran
Chapter 13. Comparison of Data Mining Techniques in the Cloud for Software Engineering
Abstract
Mining software engineering data has recently become an important research topic to meet the goal of improving the software engineering processes, software productivity, and quality. On the other hand, mining software engineering data poses several challenges such as high computational cost, hardware limitations, and data management issues (i.e., the availability, reliability, and security of data). To address these problems, this chapter proposes the application of data mining techniques in cloud, the environment on software engineering data, due to cloud computing benefits such as increased computing speed, scalability, flexibility, availability, and cost efficiency. It compares the performances of five classification algorithms (decision forest, neural network, support vector machine, logistic regression, and Bayes point machine) in the cloud in terms of both accuracy and runtime efficiency. It presents experimental studies conducted on five different real-world software engineering data related to the various software engineering tasks, including software defect prediction, software quality evaluation, vulnerability analysis, issue lifetime estimation, and code readability prediction. Experimental results show that the cloud is a powerful platform to build data mining applications for software engineering.
Kokten Ulas Birant, Derya Birant
Backmatter
Metadaten
Titel
Software Engineering in the Era of Cloud Computing
herausgegeben von
Dr. Muthu Ramachandran
Prof. Zaigham Mahmood
Copyright-Jahr
2020
Electronic ISBN
978-3-030-33624-0
Print ISBN
978-3-030-33623-3
DOI
https://doi.org/10.1007/978-3-030-33624-0