Optimising the Software Development Process with Artificial Intelligence (Natural Computing Series) [1st ed. 2023] 9811999473, 9789811999475

This book offers a practical introduction to the use of artificial intelligence (AI) techniques to improve and optimise

194 43 39MB

English Pages 360 Year 2023

Report DMCA / Copyright

DOWNLOAD FILE

Optimising the Software Development Process with Artificial Intelligence (Natural Computing Series) [1st ed. 2023]
 9811999473, 9789811999475

Table of contents :
Foreword
Preface
Acknowledgment
Contents
Contributors
1 Introduction
1.1 Introduction
1.2 The Rise of Artificial Intelligence
1.3 AI4SE: Artificial Intelligence for Software Engineering
1.4 Organisation of This Book
1.4.1 AI for the Software Development Process
1.4.2 Background on Metaheuristics and Machine Learning
References
Part I Planning and Analysis
2 Artificial Intelligence in Software Project Management
2.1 Introduction
2.2 Software Project Scheduling (SPS)
2.2.1 AI Approaches for SPS
2.2.2 Running an AI Algorithm for SPS
2.3 Software Effort Estimation (SEE)
2.3.1 AI Approaches for SEE
2.3.2 Running an AI Algorithm for SEE
2.4 Conclusion
References
3 Requirements Engineering
3.1 Introduction
3.2 Requirements Engineering
3.3 Use Case About Requirements Elicitation
3.3.1 The Problem of Requirements Elicitation from User Feedback
3.3.2 A Solution to Requirements Elicitation Based on NLP Techniques
3.3.3 Identifying Speech Acts
3.3.4 Training a Classifier
3.3.5 Applying on Two Case Studies
3.3.6 Discussion
3.4 Use Case About Requirements Prioritisation
3.4.1 The Problem of Requirements Prioritisation Using User Feedback
3.4.2 A Solution to Requirements Prioritisation Based on Genetic Algorithms
3.4.3 Applying the Prioritisation Method
3.4.4 Discussion
3.5 The Two Use Cases in a Requirements Management Process
3.6 Discussion
3.7 Conclusions
References
4 Leveraging Artificial Intelligence for Model-based Software Analysis and Design
4.1 Introduction
4.2 Background
4.2.1 Model-Driven Engineering: Models, Meta-models, and Model Transformations
4.2.2 Running Example
4.2.3 Selected Applications of AI for Model-Based Engineering Problems
4.3 Optimizing Models with AI Techniques: Two Encodings for the Modularization Case
4.3.1 Model-based versus Transformation-based Encodings: An Overview
4.3.2 Model-based Approach
4.3.3 Transformation-based Approach
4.3.4 Synopsis
4.4 Conclusion and Outlook
References
Part II Development and Deployment
5 Statistical Models and Machine Learning to Advance Code Completion: Are We There Yet?
5.1 Introduction
5.2 Code Completion with Software Mining
5.2.1 Frequent Pairs or Sets as Code Patterns
5.2.2 Graphs of Code Elements as Code Patterns
5.2.3 Leveraging Editing History for Code Completion
5.2.4 API Code Recommendation Using Statistical Learning from Fine-Grained Changes
5.3 Code Completion with Statistical Language Models
5.3.1 N-Gram Language Model
5.3.2 Lexical Code Tokens and Sequences
5.3.3 Lexical N-Gram Model for Source Code
5.3.4 Semantic n-Gram Language Model for Source Code
5.3.5 Code Suggestion with Semantic N-Gram Language Model
5.3.6 Graph-Based Statistical Language Model
5.4 Deep Learning for Code Completion
5.4.1 Deep Neural Network language Model
5.4.2 Recurrent Neural Network Language Model
5.4.3 Deep Neural Network Language Model with Syntactic and Type Information
5.4.4 Other Neural Models for Code Completion
5.5 Conclusion
References
6 Cloud Development and Deployment
6.1 Introduction
6.2 Open Problems in the Context of Software Configuration, Integration and Transition
6.2.1 Open Problems and Suitable AI Techniques
6.2.2 The QoS-aware Web Service Binding Problem
6.2.3 Optimal Configuration Selection Problem in HCSs
6.3 Solving the QoS-aware Web Service Binding Problem
6.3.1 Path Relinking
6.3.2 Objective Function
6.3.3 Solution Encoding
6.3.4 Constraints Handling
6.3.5 GRASP Building Phase
6.3.6 GRASP Improvement Phase
6.3.7 Adaption of Path Relinking
6.3.8 Running Example
6.4 Solving the Optimal Configuration Selection Problem in Highly-Configurable Systems
6.4.1 Solution Encoding
6.4.2 Constraints Handling
6.4.3 Objective Functions
6.4.4 Operators
6.4.5 Running Example
6.5 Conclusions and Future Trends
References
Part III Testing and Maintenance
7 Automated Support for Unit Test Generation
7.1 Introduction
7.2 Example System—BMI Calculator
7.3 Unit Testing
7.3.1 Supporting Unit Testing with AI
7.4 Search-Based Test Generation
7.4.1 Solution Representation
7.4.2 Fitness Function
7.4.3 Metaheuristic Algorithms
7.4.4 Examining the Resulting Test Suites
7.4.5 Assertions
7.5 Advanced Concepts
7.5.1 Distance-Based Coverage Fitness Function
7.5.2 Multiple and Many Objectives
7.5.3 Human-Readable Tests
7.5.4 Finding Input Boundaries
7.5.5 Finding Diverse Test Suites
7.5.6 Oracle Generation and Specification Mining
7.5.7 Other AI Techniques
7.6 Conclusion
References
8 Artificial Intelligence Techniques in System Testing
8.1 Introduction
8.2 System Testing
8.3 Application of AI in System Testing
8.3.1 Classification Scheme
8.3.2 Test Optimization
8.4 Industrial Case Study
8.4.1 Motivation
8.4.2 Industrial Context
8.4.3 Detecting Test Case Similarity Using Natural Language Processing
8.4.4 Clustering Similar Test Cases Using Unsupervised Machine Learning
8.4.5 Data Processing and Visualization
8.4.6 Test Optimization Strategies
8.5 Levels of Autonomy of AI in System Testing
8.6 Conclusion
References
9 Intelligent Software Maintenance
9.1 Introduction
9.2 Background
9.2.1 Anti-patterns
9.2.2 Convolutional Neural Networks
9.2.3 Regularisation
9.3 CAME: Convolutional Analysis of code Metrics Evolution
9.3.1 Input
9.3.2 Architecture
9.3.3 Training
9.3.4 Evaluation of CAME
9.3.5 Impact of Metrics History's Length on the Performance of CAME
9.3.6 Comparison of CAME with Existing Techniques
9.4 NLP2API: A Query Reformulation Technique for Improved Code Search
9.4.1 Development of Candidate API Lists
9.4.2 Borda Score Calculation
9.4.3 Query-API Semantic Proximity Analysis
9.4.4 API Class Relevance Ranking and Query Reformulation
9.4.5 Evaluation of NLP2API
9.5 Conclusion
References
Part IV AI Techniques from Scratch
10 Metaheuristics in a Nutshell
10.1 Introduction
10.2 Background: Formal Definitions
10.2.1 Optimisation Problem Definition
10.2.2 Multi-objective Optimisation Problems
10.2.3 Metaheuristics Definition
10.3 Taxonomy
10.3.1 Constructive Heuristics and Local Search Methods
10.3.2 Trajectory-Based and Population-Based Metaheuristics
10.4 Trajectory-Based Metaheuristics
10.4.1 Hill Climbing
10.4.2 Iterated Local Search
10.4.3 Variable Neighbourhood Search
10.4.4 GRASP
10.4.5 Tabu Search
10.4.6 Simulated Annealing
10.5 Population-Based Metaheuristics
10.5.1 Evolutionary Algorithms
10.5.2 Swarm Intelligence
10.5.3 Multi-objective Algorithms
10.6 Methodology for Evaluating Results
10.6.1 Quality Indicators
10.6.2 Statistical Analysis Procedure
10.7 Conclusions
References
11 Foundations of Machine Learning for Software Engineering
11.1 Introduction
11.2 The ML Pipeline
11.2.1 Overview
11.2.2 Data Preprocessing
11.2.3 Learning from Data
11.3 Classification
11.3.1 Algorithms
11.3.2 Evaluation
11.4 Regression
11.4.1 Algorithms
11.4.2 Evaluation
11.5 Clustering
11.5.1 Algorithms
11.5.2 Evaluation
11.6 Deep Learning
11.6.1 Convolutional Networks
11.6.2 Recurrent Networks
11.6.3 Autoencoders
11.6.4 Other Deep Learning Models
11.7 Conclusions
References

Polecaj historie