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.
Modern systems need to be able to self-adapt to changes in user needs, and changes affecting the system itself or its environment. Examples of systems demanding self-adaptive capabilities include mobile devices applications, which should deal with environmental changes, service-oriented systems that should replace unreliable services on-the-fly, and cyber-physical systems that should be resilient under uncertainties. The provision of rigorous techniques and tools to support adaptation so that it can be performed at runtime is challenging. It is necessary, for instance, an architecture and runtime support for dynamic monitoring, analysis, plan synthesis and plan execution. The first half of this talk will provide a retrospective of our prior work on the realization of dynamic variability in dynamic software product line solutions. The second half of the talk will cover more recent work focusing on automated plan generation and execution under uncertainty.
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.
A transferência do ensino presencial para o modelo remoto emergencial em 2020 nos desafiou a reinventar nossa maneira de ensinar e interagir com os estudantes. Novos problemas surgiram neste contexto remoto e a tentativa de transportar o modelo síncrono tradicional para uma modalidade online mostrou-se pouco adequada. De um lado, muitos alunos tiveram diminuição da motivação e engajamento, restrições tecnológicas que comprometem o acesso a conteúdo e às aulas, utilização de ambiente de estudo pouco adequado, com presença de distrações em casa e compartilhamento do espaço com a família, dentre outros problemas. Do outro lado, os docentes tiveram desafios em diferentes níveis de intensidade, relacionados a tecnologias, metodologias de ensino, avaliações e reorganização do modelo ensino-aprendizagem, além de problemas para conciliar atividades de ensino dentro do espaço familiar. O objetivo deste painel é discutir alguns destes impactos do ensino remoto emergencial, focando em experiências positivas e negativas encontradas no ensino de disciplinas relacionadas à engenharia de software. Os painelistas irão compartilhar algumas de suas experiências, identificando quais devem ser promovidas para melhoria do ensino de engenharia de software, permitindo também que seja inserida a perspectiva do aluno dentro desta discussão.