Haidar Osman, Andrei Chiş, Claudio Corrodi, Mohammad Ghafari, and Oscar Nierstrasz. Exception Evolution in Long-lived Java Systems. In Proceedings of the 14th International Conference on Mining Software Repositories, MSR ’17, 2017. Details.
Exception handling allows developers to deal with abnormal situations that disrupt the execution flow of a program. There are mainly three types of exceptions: standard exceptions provided by the programming language itself, custom exceptions defined by the project developers, and third-party exceptions defined in external libraries. We conjecture that there are multiple factors that affect the use of these exception types. We perform an empirical study on long-lived Java projects to investigate these factors. In particular, we analyze how developers rely on the different types of exceptions in throw statements and exception handlers. We confirm that the domain, the type, and the development phase of a project affect the exception handling patterns. We observe that applications have significantly more error handling code than libraries and they increasingly rely on custom exceptions. Also, projects that belong to different domains have different preferences of exception types. For instance, content management systems rely more on custom exceptions than standard exceptions whereas the opposite is true in parsing frameworks.
Applications are invited for PhD candidates at the Software Composition Group, University of Bern, Switzerland.
The Software Composition Group carries out research in software engineering and programming languages, with a view to enabling software evolution. The SCG is led by Prof. Oscar Nierstrasz and is part of the Institute of Computer Science at the University of Bern.
Applicants will contribute to the ongoing SNSF project, “Agile Software Analysis”, and towards the planned successor project:
The candidate must have a MSc in Computer Science (equivalent to a Swiss MSc), should demonstrate strong programming skills, and have research interests in several of the following areas:
- software evolution
- program understanding
- dynamic analysis
- static analysis
- software modeling
- model-driven engineering
- secure software engineering
- programming language design
- domain specific languages
- virtual machine technology
Female candidates are especially welcome to apply. To apply, please send an email including your research statement and your CV, with at least two references, to Prof. Oscar Nierstrasz (firstname.lastname@example.org), by June 1, 2017.
Stefan Borer. The Lego Playground — Providing an IDE for live programming Lego Mindstorm robots. Bachelor’s thesis, University of Bern, February 2017. Details.
The Lego Mindstorms robotics kit with its visual programming language is often used in schools and universities teaching programming and mathematics. Meanwhile Live Programming is gaining traction in the field of robotics, offering the programmer more feedback and control over the robot than traditional methods. In his work on the back end of this project, Theodor Truffer implements a new way to program Lego Mindstorms robots in a Live Programming way using the Polite programming language. This thesis provides an Integrated Development Environment for the back end including state machine visualization, inspection and manipulation of state machine objects, creating a Live Programming experience.
Manuel Leuenberger. Nullable Method Detection — Inferring Method Nullability From API Usage. Masters thesis, University of Bern, February 2017. Details.
Null dereferences are the cause of many bugs in Java projects. Avoiding them is hard, as they are not detected by the compiler. Many of those bugs are caused by dereferencing values returned from methods. This finding implies that developers do not anticipate which methods possibly return null and which do not. In this study we detect the nullable methods within Apache APIs by analyzing their usage in API clients. We compute the nullability of each invoked method, i.e., the ratio between null-checked and all dereferenced method return values. To collect many API clients of Apache API, we perform a targeted API client collection. Our tool, COLUMBO, exploits the widespread use of the Maven dependency management to find clients of Apache APIs. COLUMBO is fast and scalable. We collect and analyze 45638 Apache API clients and measure 31.4% of conditional expressions to be null checks. We find 65.0% of dereferenced return values of Apache API methods are never checked for null, 33.5% are sometimes checked and 1.5% are always checked. A manual inspection of the methods rarely checked in client usage shows that about a third of them can never return null, hence checking the return value for null is superfluous and hinders code readability. In the Apache API clients we also analyze their usage of the JRE and we find a similar nullability distribution as in Apache usage. We consider method nullability an important part of a method contract, but we find it to be incompletely documented in the JRE API documentation. Most method documentations do not make a statement about their nullability. To bridge this gap, we integrate the nullability data in an IDE plugin that shows developers the measured nullability for each method, giving them an estimation of the potential null return.
Haidar Osman, Mohammad Ghafari, and Oscar Nierstrasz. Hyperparameter Optimization to Improve the Accuracy of Predicting the Number of Bugs. Submitted to MaLTeSQuE 2017: International Workshop on Machine Learning Techniques for Software Quality Evaluation. Details.