Автор: Jose Raul Romero, Inmaculada Medina-Bulo, Francisco Chicano
Издательство: Springer
Год: 2023
Страниц: 349
Язык: английский
Формат: pdf (true), epub
Размер: 36.0 MB
This book offers a practical introduction to the use of Artificial Intelligence (AI) techniques to improve and optimise the various phases of the software development process, from the initial project planning to the latest deployment. All chapters were written by leading experts in the field and include practical and reproducible examples.
A software development project is complex, and poses constant challenges to the professionals who supervise, plan, design, analyse, develop, and maintain it. When we think of a software project, we must think of all its phases and activities: both in those phases referring to the planning and control of the engineering project, and in the phases of the development process itself, from the specification of the requirements and the architectural design to the testing, refactoring, and maintenance of the software.
In recent years, there has been a clear interest in automating and providing support to the professionals, with the goal of reducing the effort, time, cost, and risk of the different phases of a software project. To this end, initiatives related to the use of Artificial Intelligence (AI) for optimising these tasks have been tested for decades, from expert systems to search and optimisation techniques to machine learning. The editors of this volume have been working for more than 20 years in software engineering (SE), including the application of AI techniques for the optimisation of the different phases of the software life cycle. And we must recognise that during this time great advances have been made, but the most important comes from the industry itself, which acknowledges the need to apply techniques that improve its software engineering process and demands solutions for it. AI-enhanced software engineering or AI4SE (artificial intelligence for software engineering) was born.
An important factor is the popularisation of general-purpose tools among the developer community based on these techniques. Examples of these applications are the GitHub Copilot intelligent assistant, which had a great impact on the community by making visible and tangible the pros and cons of using AI for software development assistance. Other development assistant tools such as DeepMind AlphaCode or OpenAI Codex have also attracted the attention of professionals in this field—a field that had already been generating assistant tools in academia for some time, such as EvoSuite for the automatic generation of test suites.
The discussions generated about these tools, their internal foundations, their scope, and practicability, as well as the near future of AI4SE research and development have motivated the need for a volume like this. With this book, we aim to provide Information Technology (IT) professionals (practitioners, developers, software engineers, or managers) as well as advanced graduate and Ph.D. students with a practical introduction to the use of AI techniques to improve and/or optimise the different phases of the software development process, from the initial project planning to the latest deployment. Notice that AI is a broad term, and the book is intended to cover it from different perspectives: optimisation and search algorithms applied to software engineering (also known as Search-Based Software Engineering, SBSE), machine learning, and pattern mining in software analytics, mining software repositories (MSR), natural language processing (NPL), etc. The AI solutions for SE used throughout the book are explained in a didactic way to provide the reader with a sufficient basis for a complete understanding of its content.
Following the introductory chapter, Chapters 2-9 respectively apply AI techniques to the classic phases of the software development process: project management, requirement engineering, analysis and design, coding, cloud deployment, unit and system testing, and maintenance. Subsequently, Chapters 10 and 11 provide foundational tutorials on the AI techniques used in the preceding chapters: metaheuristics and machine learning. Given its scope and focus, the book represents a valuable resource for researchers, practitioners and students with a basic grasp of software engineering.
Скачать Optimising the Software Development Process with Artificial Intelligence