Carol V. Alexandru
University of Zurich
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Carol V. Alexandru.
foundations of software engineering | 2016
Andrea Di Sorbo; Sebastiano Panichella; Carol V. Alexandru; Junji Shimagaki; Corrado Aaron Visaggio; Gerardo Canfora; Harald C. Gall
Mobile app developers constantly monitor feedback in user reviews with the goal of improving their mobile apps and better meeting user expectations. Thus, automated approaches have been proposed in literature with the aim of reducing the effort required for analyzing feedback contained in user reviews via automatic classification/prioritization according to specific topics. In this paper, we introduce SURF (Summarizer of User Reviews Feedback), a novel approach to condense the enormous amount of information that developers of popular apps have to manage due to user feedback received on a daily basis. SURF relies on a conceptual model for capturing user needs useful for developers performing maintenance and evolution tasks. Then it uses sophisticated summarisation techniques for summarizing thousands of reviews and generating an interactive, structured and condensed agenda of recommended software changes. We performed an end-to-end evaluation of SURF on user reviews of 17 mobile apps (5 of them developed by Sony Mobile), involving 23 developers and researchers in total. Results demonstrate high accuracy of SURF in summarizing reviews and the usefulness of the recommended changes. In evaluating our approach we found that SURF helps developers in better understanding user needs, substantially reducing the time required by developers compared to manually analyzing user (change) requests and planning future software changes.
international conference on software engineering | 2017
Andrea Di Sorbo; Sebastiano Panichella; Carol V. Alexandru; Corrado Aaron Visaggio; Gerardo Canfora
Continuous Delivery (CD) enables mobile developers to release small, high quality chunks of working software in a rapid manner. However, faster delivery and a higher software quality do neither guarantee user satisfaction nor positive business outcomes. Previous work demonstrates that app reviews may contain crucial information that can guide developers software maintenance efforts to obtain higher customer satisfaction. However, previous work also proves the difficulties encountered by developers in manually analyzing this rich source of data, namely (i) the huge amount of reviews an app may receive on a daily basis and (ii) the unstructured nature of their content. In this paper, we propose SURF (Summarizer of User Reviews Feedback), a tool able to (i) analyze and classify the information contained in app reviews and (ii) distill actionable change tasks for improving mobile applications. Specifically, SURF performs a systematic summarization of thousands of user reviews through the generation of an interactive, structured and condensed agenda of recommended software changes. An end-to-end evaluation of SURF, involving 2622 reviews related to 12 different mobile applications, demonstrates the high accuracy of SURF in summarizing user reviews content. In evaluating our approach we also involve the original developers of some apps, who confirm the practical usefulness of the software change recommendations made by SURF. Demo URL: https://youtu.be/Yf-U5ylJXvo Demo webpage: http://www.ifi.uzh.ch/en/seal/people/panichella/tools/SURFTool.html.
international conference on software engineering | 2015
Carol V. Alexandru; Harald C. Gall
Existing code- and software evolution studies typically operate on the scale of a few revisions of a small number of projects, mostly because existing tools are unsuited for performing large-scale studies. We present a novel approach, which can be used to analyze an arbitrary number of revisions of a software project simultaneously and which can be adapted for the analysis of mixed-language projects. It lays the foundation for building high-performance code analyzers for a variety of scenarios. We show that for one particular scenario, namely code metric computation, our prototype outperforms existing tools by multiple orders of magnitude when analyzing thousands of revisions.
ieee international conference on software analysis evolution and reengineering | 2017
Carol V. Alexandru; Sebastiano Panichella; Harald C. Gall
Software engineering research often requires analyzing multiple revisions of several software projects, be it to make and test predictions or to observe and identify patterns in how software evolves. However, code analysis tools are almost exclusively designed for the analysis of one specific version of the code, and the time and resources requirements grow linearly with each additional revision to be analyzed. Thus, code studies often observe a relatively small number of revisions and projects. Furthermore, each programming ecosystem provides dedicated tools, hence researchers typically only analyze code of one language, even when researching topics that should generalize to other ecosystems. To alleviate these issues, frameworks and models have been developed to combine analysis tools or automate the analysis of multiple revisions, but little research has gone into actually removing redundancies in multi-revision, multi-language code analysis. We present a novel end-to-end approach that systematically avoids redundancies every step of the way: when reading sources from version control, during parsing, in the internal code representation, and during the actual analysis. We evaluate our open-source implementation, LISA, on the full history of 300 projects, written in 3 different programming languages, computing basic code metrics for over 1.1 million program revisions. When analyzing many revisions, LISA requires less than a second on average to compute basic code metrics for all files in a single revision, even for projects consisting of millions of lines of code.
The Essence of Software Engineering | 2018
Harald C. Gall; Carol V. Alexandru; Adelina Ciurumelea; Giovanni Grano; Christoph Laaber; Sebastiano Panichella; Sebastian Proksch; Gerald Schermann; Carmine Vassallo; Jitong Zhao
Today’s software development is all about data: data about the software product itself, about the process and its different stages, about the customers and markets, about the development, the testing, the integration, the deployment, or the runtime aspects in the cloud. We use static and dynamic data of various kinds and quantities to analyze market feedback, feature impact, code quality, architectural design alternatives, or effects of performance optimizations. Development environments are no longer limited to IDEs in a desktop application or the like but span the Internet using live programming environments such as Cloud9 or large-volume repositories such as BitBucket, GitHub, GitLab, or StackOverflow. Software development has become “live” in the cloud, be it the coding, the testing, or the experimentation with different product options on the Internet. The inherent complexity puts a further burden on developers, since they need to stay alert when constantly switching between tasks in different phases. Research has been analyzing the development process, its data and stakeholders, for decades and is working on various tools that can help developers in their daily tasks to improve the quality of their work and their productivity. In this chapter, we critically reflect on the challenges faced by developers in a typical release cycle, identify inherent problems of the individual phases, and present the current state of the research that can help overcome these issues.
Empirical Software Engineering | 2018
Carol V. Alexandru; Sebastiano Panichella; Sebastian Proksch; Harald C. Gall
Researchers often analyze several revisions of a software project to obtain historical data about its evolution. For example, they statically analyze the source code and monitor the evolution of certain metrics over multiple revisions. The time and resource requirements for running these analyses often make it necessary to limit the number of analyzed revisions, e.g., by only selecting major revisions or by using a coarse-grained sampling strategy, which could remove significant details of the evolution. Most existing analysis techniques are not designed for the analysis of multi-revision artifacts and they treat each revision individually. However, the actual difference between two subsequent revisions is typically very small. Thus, tools tailored for the analysis of multiple revisions should only analyze these differences, thereby preventing re-computation and storage of redundant data, improving scalability and enabling the study of a larger number of revisions. In this work, we propose the Lean Language-Independent Software Analyzer (LISA), a generic framework for representing and analyzing multi-revisioned software artifacts. It employs a redundancy-free, multi-revision representation for artifacts and avoids re-computation by only analyzing changed artifact fragments across thousands of revisions. The evaluation of our approach consists of measuring the effect of each individual technique incorporated, an in-depth study of LISA resource requirements and a large-scale analysis over 7 million program revisions of 4,000 software projects written in four languages. We show that the time and space requirements for multi-revision analyses can be reduced by multiple orders of magnitude, when compared to traditional, sequential approaches.
PeerJ | 2015
Carol V. Alexandru; Annibale Panichella; Sebastiano Panichella; Alberto Bacchelli; Harald C. Gall
Research has yielded approaches for predicting fu- ture changes and defects in software artifacts, based on historical information, helping developers in effectively allocating their (limited) resources. Developers are unlikely able to focus on all predicted software artifacts, hence the ordering of predictions is important for choosing the right artifacts to concentrate on. We propose using a Genetic Algorithm (GA) for tailoring prediction models to prioritize classes with more changes/defects. We evaluate the approach on two models, regression tree and linear regression, predicting changes/defects between multiple releases of eight open source projects. Our results show that regression models calibrated by GA significantly outperform their traditional counterparts, improving the ranking of classes with more changes/defects by up to 48%. In many cases the top 10% of predicted classes can contain up to twice as many changes or defects. usefulness and the effectiveness of the prediction, especially when the prediction is used as a means to better allocate resources. As a consequence, researchers have proposed to rethink prediction as a ranking problem, in which artifacts should be ordered by maximizing the ratio of effort spent for a number of defects/changes found (3). In other words, prediction models should be effort-aware and try to rank soft- ware artifacts based on the changes/defects they will exhibit, placing those with most changes/defects at the top. In this case, commonly used evaluation metrics are: the Spearmans rank correlation between predicted and actual ranking, and the Popt metric (6), defined as the difference between the AUC of the optimal ranking (considering the inspection of n% of artifacts) and the AUC of the prediction model. Interestingly, all the presented effort-aware prediction models—regardless of the underlying statistical mechanism they employ—use the same approach for ranking: The model is trained to find the best fit to predict the raw number of changes/defects, based on the given metrics; then the predicted numbers are used to rank the artifacts, and on this ranking the evaluation is conducted. We notice how this approach does not directly tackle the main target, i.e., the ranking, rather an approximation of it. We claim that this approximation can hinder the effectiveness of prediction models, which should be instead trained for the task on which they are evaluated. In this paper, we address this problem by proposing an approach that transforms the way in which statistical models are trained, so that they are tailored to their actual target, i.e., ranking. The underlying idea is to use genetic algorithms (GAs) to tweak the coefficients of a prediction model such that it yields results in the desired order (for example change size or number of defects). We assess our approach by conducting an empirical eval- uation involving both change and defect prediction tasks on a number of distinct software systems and releases. As our baseline, we consider widespread statistical regression models (i.e., generalized linear regression model (GLM) and regres- sion tree (RT)) and metrics (i.e., Chidamber and Kemerer (CK) metrics and Lines of Code (LOC)). Our results show that our approach significantly outperforms traditional models. Moreover, although the model is trained to better fit the target, we did not encounter overfitting issues. Overall, our results also corroborate our underlying hypothesis that prediction models should be trained on the task under which they are evaluated, thus hinting at the generalizability of our approach to different prediction scenarios.
genetic and evolutionary computation conference | 2016
Annibale Panichella; Carol V. Alexandru; Sebastiano Panichella; Alberto Bacchelli; Harald C. Gall
international conference on program comprehension | 2017
Carol V. Alexandru; Sebastiano Panichella; Harald C. Gall
foundations of software engineering | 2016
Carol V. Alexandru