Abstract

How well do you know the dependencies within your system? Dependencies between methods, classes, interfaces, libraries and even different projects play an important role in today’s Java projects. Our solution, called How I KnOw My SYStem (HIKOMSYS), is essentially a platform for developers to improve their knowledge. HIKOMSYS provides a way to learn more about a project. With the help of gamification, HIKOMSYS engages developers to learn about their projects, in particular about its dependencies, while having fun. After uploading a project hosted on Github, users are able to select the modules within this project and draw the dependencies between those. As soon as they complete a quiz, HIKOMSYS gives the users helpful feedback, by showing them the dependencies they ignored, those wrongly assumed and of course those they knew about. Furthermore, users working on the same projects are able to compare their knowledge about their system with the help of a ranking board, displaying the best results for each user and each project. Two different case studies, one quantitative with 23 students of the University of Bern and one qualitative, showed that users are very interested in learning about their projects with the help of our tool. Thanks to the gamification aspect of HIKOMSYS, some of the 23 students started comparing their results to see who did better and who knew more. Adding new levels with different difficulties would increase the fun users have in solving quizzes and competing against each other, as well as increasing their insight into their systems. Additional levels could also help improving the quality of a project, for example by suggesting possible refactorings, recommending improvements to a user’s project and letting them re-upload their project for re-evaluation. Furthermore, letting users guess which dependency is wrong in a given selection of modules or even asking multiple choice questions about properties and relationships existing among classes, methods and dependencies, would be a possibility.

Abstract

Nowadays the number of documents in the World Wide Web grows at extremely fast rate. Tools that can facilitate information retrieval (IR) present a particular interest in the modern world. We believe that considering meta information helps us to build enhanced search systems that can facilitate IR. Particularly, we target an IR task for scientific articles. We consider citations in scientific articles to be important text blocks summarizing or judging previous scientific findings, assisting in creating new scientific work. We propose CiteWise, a software system that automatically extracts, indexes and aggregates citations from collections of scientific articles in a PDF format. We evaluated the capabilities of CiteWise by conducting user evaluation experiments that compare it with alternative approaches. In the first set of experiments, we measured the efficiency of our system, i.e. how fast users can find relevant results in comparison with Google Scholar. We found that CiteWise performs equally well as Google Scholar. Secondly, we developed a citation aggregation feature to create automatic summaries of scientific articles and asked domain experts to evaluate summaries created by CiteWise and TextRank algorithms. We found that CiteWise outperforms TextRank algorithm in generating article summaries.

Abstract

Subtype polymorphism is a cornerstone of object-oriented programming. By hiding variability in behavior behind a uniform interface, polymorphism decouples clients from providers and thus enables genericity, modularity and extensi- bility. At the same time, however, it scatters the implementation of the behavior over multiple classes thus potentially hampering program comprehension. The extent to which polymorphism is used in real programs and the impact of polymorphism on program comprehension are not very well understood. We report on a preliminary study of the prevalence of polymorphism in several hundred open source software systems written in Smalltalk, one of the oldest object-oriented programming languages, and in Java, one of the most widespread ones. Although a large portion of the call sites in these systems are polymorphic, a majority have a small number of potential candidates. Smalltalk uses polymorphism to a much greater extent than Java. We discuss how these findings can be used as input for more detailed studies in program comprehension and for better developer support in the IDE.

Abstract

Visualisation provides good support for software analysis. It copes with the intangible nature of software by providing concrete representations of it. By reducing the complexity of software, visualisations are especially useful when dealing with large amounts of code. One domain that usually deals with large amounts of source code data is empirical analysis. Although there are many tools for analysis and visualisation, they do not cope well software corpora. In this paper we present Explora, an infrastructure that is specifically targeted at visualising corpora. We report on early results when conducting a sample analysis on Smalltalk and Java corpora.

Abstract

Since Smalltalk is a dynamically typed programming language it remain agnostic to variable types at compile time, and only take them into account at runtime. This gives more freedom to the developer, as one variable can take on radically different types during program execution. Lack of understanding of dynamic behavior of Smalltalk applications can lead to misleading conclusions about the presents of dynamic features such as duck typing. By instrumenting Smalltalk source code and tracking the different types that variables receive, we concluded that duck-typed variables account for around 1% of total variables. We gather this information using our tool named VariableTracker. We also present an analysis of usage patterns of duck-typed variables from our collected data.