Contents
Published by
World Scientific Publishing Co. Pte. Ltd.
5 Toh Tuck Link, Singapore 596224
USA office: 27 Warren Street, Suite 401-402, Hackensack, NJ 07601
UK office: 57 Shelton Street, Covent Garden, London WC2H 9HE
British Library Cataloguing-in-Publication Data
A catalogue record for this book is available from the British Library.
This book has been partially funded by the Cyber Security Research Center at Ben-Gurion University of the Negev and by ISF grant No. 1716/17. This material is based upon work supported by Fundao para a Cincia e a Tecnologia (FCT), with the reference PTDC/CCI-COM/29300/2017 and UID/CEC/50021/2019. The authors further would like to thank Roni Stern for being a research partner.
ARTIFICIAL INTELLIGENCE METHODS FOR SOFTWARE ENGINEERING
Copyright 2021 by World Scientific Publishing Co. Pte. Ltd.
All rights reserved. This book, or parts thereof, may not be reproduced in any form or by any means, electronic or mechanical, including photocopying, recording or any information storage and retrieval system now known or to be invented, without written permission from the publisher.
For photocopying of material in this volume, please pay a copying fee through the Copyright Clearance Center, Inc., 222 Rosewood Drive, Danvers, MA 01923, USA. In this case permission to photocopy is not required from the publisher.
ISBN 978-981-123-991-5 (hardcover)
ISBN 978-981-123-992-2 (ebook for institutions)
ISBN 978-981-123-993-9 (ebook for individuals)
For any available supplementary material, please visit
https://www.worldscientific.com/worldscibooks/10.1142/12360#t=suppl
Printed in Singapore
To my lovely wife Ravit,
our children - Oran, David, Barak and Zohar, and my parents Mira and Eliko.
M.K.
To my lovely wife Liliana, and our children Duarte, Bernardo and Filipe.
R.A.
To my beloved wife Tami, my parents Rosa
and Isidore, and our children Dan, Iris, and Einat.
M.L.
2021 World Scientific Publishing Company
https://doi.org/10.1142/9789811239922_fmatter
Preface
Back in 2011, Marc Andreessen, co-founder and general partner of venture capital firm Andreessen Horowitz, wrote an essay from Cambridge University estimates that software bugs cost the global software Industry a staggering $316 billion per year. As software becomes one of the fundamental pillars of almost any company, following engineering concepts for software designing, creating, improving, and maintaining software becomes of paramount importance.
Software Engineering as a discipline is still evolving (the field is a merely shy of 50 years oldtherefore, require more than just technical expertise: understanding the real needs of different stakeholders, collaborating in a team (nowadays, potentially globally distributed), managing complexity, mitigating risks, delivering projects on time and on budget, and determining when a software product is good enough to be shipped are at least equally important topics that often have a significant human component (the so-called soft skills).
As Alexander Pope stated: to err is human (following the famous Latin proverb errare humanum est attributed to Hieronymus). Therefore, software as a human-made component is naturally prone to errors and/or inconsistencies. Ascertaining that no human errors creep into the different phases of the software lifecycle is where artificial intelligence can be a game-changer. It is already a fact that Artificial Intelligence can simplify several tasks, ranging from interacting with our consumer electronic appliances to playing our favourite music. Bringing together Artificial Intelligence and Software Engineering has the potential to create high quality software artifacts, hence reducing time-to-market, while maintaining high standards.
The history of the field of Artificial Intelligence dates back to the seminal work of Turing and McCarthy. The gist of Artificial Intelligence is about making machines intelligent in order for them to perform tasks that are rather complex for humans. Software engineering is, in fact, one of the most challenging of all engineering disciplines (despite it is often not recognised as such). Therefore, researchers and industrialists alike have sought to apply Artificial Intelligence methods to solve Software Engineering problems. In fact, back in 1986, Simon argued that it is not really a question of whether we want to use artificial intelligence methods in software engineering: it is a question of whether artificial intelligence is powerful enough to help us.
Currently, there are several developments in Artificial Intelligence methods and approaches that make them well suited to address software engineering problems. The authors of the chapters of this book discuss the advances in state-of-the-art of several software engineering problems by leveraging Artificial Intelligence methods to techniques such as Natural Language Processing (NLP), machine learning, fuzzy logic, multi-objective search, and metaheuristics.
In particular, the chapters of this book cover several aspects of the software engineering lifecycle (see image below), organized as follows:
AI for Software Design
Interweaving AI and Behavioral Programming Towards Better Programming Environments by Achiya Elyasaf, Moshe Weinstock and Gera Weiss;
AI Techniques for Software Requirements Prioritization by Alexander Felfernig
Agent-Based Software Programming
Social Commitments for Engineering Interaction in Distributed Systems by Matteo Baldoni, Cristina Baroglio, Roberto Micalizio and Stefano Tedeschi
Intelligent Agents are More Complex: Initial Empirical Findings by Gal A.Kaminka and Alon T. Zanbar
AI for Software Development
Sequence-to-Sequence Learning for Automated Software Artifact Generation by Zhongxin Liu, Xin Xia and David Lo
Machine Learning to Support Code Reviews in Continuous Integration by Miroslaw Staron, Miros-law Ochodek, Wilhelm Meding, Ola Soder and Emil Rosenberg
Software Fusion: Deep Design Learning With Deterministic Laplacian Verification by Iaakov Exman
Using Artificial Intelligence for Auto-Generating Software for Cyber-Physical Applications by Gregory Provan
AI for Software Testing
On the Application of Machine Learning in Software Testing by Nour Chetouane and Franz Wotawa
Creating Test Oracles Using Machine Learning Techniques by Rafig Almaghairbe and Marc Roper
Intelligent Risk Based Analysis Methodology by Eli Menasheof
A Qualitative Reasoning Model for Software Testing, based on Combinatorial Geometry by Spyros Xanthakis and Emeric Gioan
AI for Software Debugging
AI-based Spreadsheet Debugging by Konstantin Schekotihin, Birgit Hofer, Franz Wotawa and Dietmar Jannach
Artificial Intelligence Methods for Software Debugging by Wolfgang Mayer and Franz Wotawa
This book focuses on the above topics since these are the building blocks of every software. The AI techniques presented by the papers in this book could leverage the design process by making it faster and more organized, the development process more comfortable, and the testing and debugging processes more reliable.