Machine Learning for Software Engineering: Models, Methods, and Applications

Machine Learning for Software Engineering: Models, Methods, and Applications

Aman Kumar
DOI: 10.4018/979-8-3693-3502-4.ch007
OnDemand:
(Individual Chapters)
Available
$37.50
No Current Special Offers
TOTAL SAVINGS: $37.50

Abstract

Machine learning (ML) is a field of study that focuses on developing techniques to automatically derive models from data. Machine learning has shown effectiveness in various domains of software engineering, encompassing behaviors extraction, testing, and issue remediation. Several further applications have yet to be determined. Nevertheless, acquiring a more comprehensive comprehension of ML techniques, including their underlying assumptions and assurances, will facilitate the adoption and selection of suitable approaches by software developers for their intended applications. The authors contend that the selection can be influenced by the models one aims to deduce. This technical briefing examines and contemplates the utilization of machine learning in the field of software engineering, categorized based on the models they generate and the methodologies they employ.
Chapter Preview
Top

1. Introduction

It is difficult to avoid encountering discussions about machine learning (ML), data mining, big data analytics, and the transformative impact they have on society when reading a newspaper or watching television these days. Nevertheless, software engineers themselves have experienced minimal influence from these technologies thus far. Through a thorough analysis of the latest scholarly works, we can see subtle yet potentially meaningful shifts that are beginning to emerge in our field. Undoubtedly, a major hindrance to the adoption of these innovative technologies in software engineering (SE) is a widespread lack of understanding of their potential applications. What are the present capabilities of ML in solving problems? Do software engineers find these challenges relevant?

Machine learning is an established field with numerous high-quality contemporary resources available to introduce the subject. Nevertheless, there is a scarcity of viewpoints on machine learning (ML) from the standpoint of software engineering (Louridas and Ebert, 2016). Additionally, it is uncommon to find an introductory resource that is both easily understandable and educational specifically tailored for software engineers. Moreover, several ML techniques currently utilised in SE are not extensively debated in mainstream ML. Machine learning encompasses a broader scope than only deep learning.

In this technical briefing, we will provide an introductory overview of machine learning for software engineering researchers and practitioners who have limited or no prior experience with ML. This material could also be valuable for the AI community in gaining a deeper comprehension of the constraints of their techniques within a SE environment. In order to organise our talk, we will concentrate on three inquiries that we believe should be answered prior to undertaking any novel machine learning solution for a preexisting software engineering issue. The following items are: The suitable class of trained models for solving a SE problem is? Are there any learning techniques available that are suitable for typical cases and sizes of my software engineering challenge within this class of models? Alternatively, can we apply fundamental principles of machine learning to generate novel learning algorithms? Has anyone encountered a comparable software engineering problem, and was it solvable using machine learning?

1.1 Importance and Promptness

Software engineering is currently experiencing a significant shift towards agile software development, which prioritises the iterative and experimental process of coding. Agility, on the other hand, reduces the importance of creating several conventional items like requirements specifications, models, reports, and documentation, which are usually necessary for software analysis. In order to accommodate evolving software development methodologies, forthcoming software engineering processes and tools must be highly automated, streamlined, flexible, and capable of scaling up to match the growing productivity of developers. Specifically, individuals will be required to create their own analytic artefacts and models. Another emerging area of study is on utilising machine learning to address challenges related to systems integration and systems-of-systems, such as the Internet of Things. This includes, for instance, the application of statistical learning techniques for service matchmaking and the utilisation of automata learning methods for emergent middleware. It is important to acknowledge that there is presently no unified conference that encompasses all of these subjects, resulting in a lack of strong connections within the community. The arrangement of theme workshops, namely: (1) Machine Learning Technologies in Software Engineering at ASE 2011, (2) Machine Learning for System Construction at ISoLA 2011, and (3) AI meets Formal Software Development at Schloss Dagstuhl 2012 (Bennaceur et al., 2016), demonstrates the increasing fascination in this domain.

Figure 1.

Key concepts of ML for software engineering

979-8-3693-3502-4.ch007.f01
Source: (Meinke and Bennaceur, 2018)

Complete Chapter List

Search this Book:
Reset