Notebooks – rich, interactive documents that join together code, documentation, and outputs – are all the rage with data scientists. But can they be used for actual software development? In this talk, I share experiences from authoring two interactive textbooks – fuzzingbook.org and debuggingbook.org – and show how notebooks not only serve for exploring and explaining code and data, but also how they can be used as software modules, integrating self-checking documentation, tests, and tutorials all in one place. The resulting software focuses on the essential, is well-documented, highly maintainable, easily extensible, and has a much higher shelf life than the "duct tape and wire" prototypes frequently found in research and beyond.
Andreas Zeller is faculty at the CISPA Helmholtz Center for Information Security and professor for Software Engineering at Saarland University, both in Saarbrücken, Germany. His research on automated debugging, mining software archives, specification mining, and security testing has proven highly influential. Zeller is an ACM Fellow and holds an ACM SIGSOFT Outstanding Research Award.
In the last few years the software engineering research community has proposed techniques and tools to automate several code-related tasks. For example, approaches to automatically write new code or fix bugs have been proposed. Among those, data-driven techniques are on the rise thanks to the always increasing amount of information available in open source projects and the possibility to learn coding patterns from it.
In this talk, I'll overview some of the work done in this area, focusing the attention on tasks such as source code generation/recommendation, code review automation, etc. The focus of the talk will not be on the proposed technical solutions, but rather on their evaluation, on the achieved results, and on discussing the extent to which the proposed approaches are actually able to support developers. This will lead to a discussion of the open challenges related to the automation of code-related tasks and a short summary of research directions we are currently investigating in my research group on this topic.
Gabriele Bavota is an Associate Professor at the Faculty of Informatics of the Università della Svizzera italiana (USI), Lugano, where he is part of the Software Institute and he leads the SEART research group. He received the PhD in Computer Science from the University of Salerno, Italy, in 2013. His research interests include software maintenance and evolution, code quality, mining software repositories, and empirical software engineering. On these topics, he authored over 140 papers appeared in international journals and conferences and has received four ACM Sigsoft Distinguished Paper awards at the three top software engineering conferences: ASE 2013 and 2017, ESEC-FSE 2015, and ICSE 2015. He also received the best/distinguished paper award at SCAM 2012, ICSME 2018, MSR 2019, and ICPC 2020. He is the recipient of the 2018 ACM Sigsoft Early Career Researcher Award for outstanding contributions in the area of software engineering as an early career investigator.
Cecília is a Full Professor of the Institute of Computing at State University of Campinas (UNICAMP), Brazil, since October, 2011. She received her Ph.D. in Computing Science in 1994, at the Department of Computing Science in the University of Newcastle upon Tyne, UK. Her current research interests are fault tolerance, exception handling, design diversity, fault-tolerant software architectures, component-based software engineering, software product lines, self-adaptive and organising software systems. She has co-authored more than 100 scientific papers, book chapters, and books in these areas, and also supervises a number of MSc and PhD students at UNICAMP.