Mircea F. Lungu

Mircea F. Lungu
IT University of Copenhagen

About

87
Publications
11,996
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
1,516
Citations
Introduction
Mircea Lungu is associate professor at the ITU in Copenhagen. He does research in Software Engineering with a focus on Ecosystem Evolution as well as computer supported learning.
Additional affiliations
August 2010 - June 2015
Universität Bern
Position
  • Senior Researcher

Publications

Publications (87)
Conference Paper
Learning the vocabulary of a new language and a new programming API are similar in multiple ways. In this paper we evaluate several of the similarities and show that based on them we can design systems that can guide the learner towards improving their knowledge without an external tutor or preset curriculum. Instead, the class of systems we propos...
Data
You don't really need to download the file. It is available online at: https://vimeo.com/250152073
Conference Paper
Full-text available
The article presents: (1) the interactive features of the Zeeguu and (2) a case study and analysis of high-school students using it for one month. ____________________________________________________________________________________ Online: https://zeeguu.unibe.ch ____________________________________________________________________________________...
Conference Paper
During software evolution technical debt (TD) follows a constant ebb and flow, being incurred and paid back, sometimes in the same day and sometimes ten years later. There have been several studies in the literature investigating how technical debt in source code accumulates during time and the consequences of this accumulation for software mainten...
Article
Parser combinators offer a universal and flexible approach to parsing. They follow the structure of an underlying grammar, are modular, well-structured, easy to maintain, and can recognize a large variety of languages including context-sensitive ones. However, these advantages introduce a noticeable performance overhead mainly because the same powe...
Conference Paper
Full-text available
Background: Bug prediction helps developers steer maintenance activities towards the buggy parts of a software. There are many design aspects to a bug predictor, each of which has several options, i.e., software metrics, machine learning model, and response variable. Aims: These design decisions should be judiciously made because an improper choice...
Conference Paper
Full-text available
Software systems must evolve over time or become increasingly irrelevant says one of Lehman’s laws of software evolution. Many studies have been presented in the literature that investigate the evolution of software systems but few have focused on the evolution of technical debt. In this paper we study sixty-six Java open-source software projects f...
Conference Paper
Learning the vocabulary of a new language is a very slow and time consuming process which can take many years of dedicated study. Free reading is known to be important for improving vocabulary and so are optimally timed repetitions of learned concepts. However, these two have not been put together until now. This paper presents the architecture of...
Conference Paper
Parser combinators are a popular approach to parsing. Parser combinators follow the structure of an underlying grammar, are modular, well-structured, easy to maintain, and can recognize a large variety of languages including context-sensitive ones. However, their universality and flexibility introduces a noticeable performance overhead. Time-wise,...
Conference Paper
It is widely acknowledged that null values should be avoided if possible or carefully used when necessary in Java code. The careless use of null has negative effects on maintainability, code readability, and software performance. However, a study on understanding null usage is still missing. In this paper we analyze null checks in 810 open-source J...
Conference Paper
Architectural rules are often defined but rarely tested. Current tools offer limited functionality and often require significant effort to be configured, automated and integrated within existing platforms. We propose a platform that is aimed at reducing the overall cost of setting up and maintaining an architectural conformance monitoring environme...
Conference Paper
Dependency cycles are commonly recognized as one of the most critical quality anti-patterns. Cycles compromise the modularity of a system, prevent proper reuse and increase the cost of maintenance and testing. Many tools are capable of detecting and visualizing package cycles existing within software projects. Unfortunately, detecting cycles is onl...
Conference Paper
A common practice when writing Smalltalk source code is to name method arguments in a way that hints at their expected type (i.e., aString, anInteger, aDictionary). This practice makes code more readable, but the prevalence of this practice is unknown, thus its reliability is questionable. Tools such as the auto complete feature in the Pharo Smallt...
Thesis
p>When learning a second language, one usually follows a learning program, which includes studying lists of words, reading standard texts and doing exercises. Learning a second language is much more enjoyable if one enjoys reading materials in the new language. Articles that are not too long, written about topics the student likes could be a good w...
Code
Polite Smalltalk is a programming language that allows programmers to use sentence case identifiers -- a notation for embedding spaces in identifiers. We hope that a syntax like that of Polite will encourage developers to write more readable code. Even the smallest increase in code readability is to be desired since software developers spend the la...
Article
Imprecise manipulation of source code (semi-parsing) is useful for tasks such as robust parsing, error recovery, lexical analysis, and rapid development of parsers for data extraction. An island grammar precisely defines only a subset of a language syntax (islands), while the rest of the syntax (water) is defined imprecisely. Usually, water is defi...
Conference Paper
Full-text available
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 empirica...
Conference Paper
Full-text available
When analysing software metrics, users find that visualisation tools lack support for (1) the detection of patterns within metrics; and (2) enabling analysis of software corpora. In this paper we present Explora, a visualisation tool designed for the simultaneous analysis of multiple metrics of systems in software corpora. Explora incorporates a no...
Conference Paper
Software ecosystems are becoming increasingly pervasive, leading to new research, management, and engineering challenges. Opening product architectures and platforms for third parties, designing closed innovation networks among partners through APIs and SDKs, coordinating multiple platforms, or participative engineering across organizational border...
Article
Software erosion can be controlled by periodically checking for consistency between the de facto architecture and its theoretical counterpart. Studies show that this process is often not automated and that developers still rely heavily on manual reviews, despite the availability of a large number of tools. This is partially due to the high cost inv...
Conference Paper
Full-text available
Software corpora facilitate reproducibility of analyses , however, static analysis for an entire corpus still requires considerable effort, often duplicated unnecessarily by multiple users. Moreover, most corpora are designed for single languages increasing the effort for cross-language analysis. To address these aspects we propose Pangea, an infra...
Article
Full-text available
Software developers are often unsure of the exact name of the API method they need to use to invoke the desired behavior. Most state-of-the-art documentation browsers present API artefacts in alphabetical order. Albeit easy to implement, alphabetical order does not help much: if the developer knew the name of the required method, he could have just...
Article
Full-text available
Dynamically typed languages lack information about the types of variables in the source code. Developers care about this information as it supports program comprehension. Basic type inference techniques are helpful, but may yield many false positives or negatives. We propose to mine information from the software ecosystem on how frequently given ty...
Article
Full-text available
The creation and adoption of a software ecosystem is becoming increasingly pervasive, leading to new research and management challenges. Several companies are platformizing successful products and opening these products up for outside innovation where customers expect to be actively involved in the shaping of the technology they use. This also lead...
Article
Full-text available
We present the results of an investigation into the nature of information needs of software developers who work in projects that are part of larger ecosystems. This work is based on a quantitative survey of 75 professional software developers. We corroborate the results identified in the survey with needs and motivations proposed in a previous surv...
Article
Software developers are often unsure of the exact name of the method they need to use to invoke the desired behavior in a given context. This results in a process of searching for the correct method name in documentation, which can be lengthy and distracting to the developer. We can decrease the method search time by enhancing the documentation of...
Article
Software architecture consists of a set of design choices that can be partially expressed in form of rules that the implementation must conform to. Architectural rules are intended to ensure properties that fulfill fundamental non-functional requirements. Verifying architectural rules is often a non-trivial activity: available tools are often not v...
Conference Paper
Software architecture is the result of a design effort aimed at ensuring a certain set of quality attributes. As we show, quality requirements are commonly specified in practice but are rarely validated using automated techniques. In this paper we analyze and classify commonly specified quality requirements after interviewing professionals and runn...
Conference Paper
Full-text available
Detecting bugs as early as possible plays an important role in ensuring software quality before shipping. We argue that mining previous bug fixes can produce good knowledge about why bugs happen and how they are fixed. In this paper, we mine the change history of 717 open source projects to extract bug-fix patterns. We also manually inspect many of...
Article
Full-text available
Architecture recovery is an activity applied to a system whose initial architecture has eroded. When the system is large, the user must use dedicated tools to support the recovery process. We present Softwarenaut — a tool which supports architecture recovery through interactive exploration and visualization. Classical architecture recovery features...
Article
SUMMARY Software dependences play a vital role in programme comprehension, change impact analysis and other software maintenance activities. Traditionally, these activities are supported by source code analysis; however, the source code is sometimes inaccessible or difficult to analyse, as in hybrid systems composed of source code in multiple langu...
Article
Polymorphism-the ability of a client to send a message that is implemented by objects of different types without needing to know the exact type of the object that will respond to the message-is a cornerstone of object-oriented programming. It is intended as a way to facilitate the modularity and extensibility of software systems by hiding the varia...
Conference Paper
This paper presents a case study of analyzing a legacy PL/1 ecosystem that has grown for 40 years to support the business needs of a large banking company. In order to support the stakeholders in analyzing it we developed St1-PL/1 - a tool that parses the code for association data and computes structural metrics which it then visualizes using top-d...
Conference Paper
Full-text available
We present the results of an investigation into the nature of the information needs of software developers who work in projects that are part of larger ecosystems. In an open-question survey we asked framework and library developers about their information needs with respect to both their upstream and downstream projects. We investigated what kind...
Conference Paper
Stack Overflow can be seen as an information market for software engineering knowledge in which the goods that are exchanged are answers to questions and the rewards are score points and badges that contribute to a users reputation. By analyzing the transactions in Stack Overflow we can get a glimpse of the way in which the different geographical r...
Article
ContextDevelopers often need to find answers to questions regarding the evolution of a system when working on its code base. While their information needs require data analysis pertaining to different repository types, the source code repository has a pivotal role for program comprehension tasks. However, the coarse-grained nature of the data store...
Article
When the Application Programming Interface (API) of a framework or library changes, its clients must be adapted. This change propagation---known as a ripple effect---is a problem that has garnered interest: several approaches have been proposed in the literature to react to these changes. Although studies of ripple effects exist at the single syste...
Conference Paper
Full-text available
Informed decision making is a critical activity in software development, but it is poorly supported by common development environments, which focus mainly on low-level programming tasks. We posit the need for agile software assessment, which aims to support decision making by enabling rapid and effective construction of software models and custom a...
Article
Detecting code duplication in large code bases, or even across project boundaries, is problematic due to the massive amount of data involved. Large-scale clone detection also opens new challenges beyond asking for the provenance of a single clone fragment, such as assessing the prevalence of code clones on the entire code base, and their evolution....
Conference Paper
Full-text available
Highly available software systems occasionally need to be updated while avoiding downtime. Dynamic software updates reduce downtime, but still require the system to reach a quiescent state in which a global update can be performed. This can be difficult for multi-threaded systems. We present a novel approach to dynamic updates using first-class con...
Article
Full-text available
Unit testing is often made more difficult by the heavy use of classes as namespaces and the proliferation of static methods to encapsulate configuration code. We have analyzed the use of 120 static methods from 96 projects by categorizing them according to their responsibilities. We find that most static methods support a hodgepodge of mixed respon...
Article
Full-text available
Presents the welcome message from the conference proceedings.
Article
Understanding the legacy of code in a software ecosystem is critical for the organization that is the owner of the ecosystem as well as for individual developers that work on particular systems in the ecosystem. Model driven development (MDD) and model driven architecture (MDA) techniques for describing inter-project dependencies are rarely used or...
Conference Paper
Full-text available
Programming idioms, design patterns and application libraries often introduce cumbersome and repetitive boilerplate code to a software system. Language extensions and external DSLs (domain specific languages) are sometimes introduced to reduce the need for boilerplate code, but they also complicate the system by introducing the need for language di...
Conference Paper
Programming idioms, design patterns and application libraries often introduce cumbersome and repetitive boilerplate code to a software system. Language extensions and external DSLs (domain specific languages) are sometimes introduced to reduce the need for boilerplate code, but they also complicate the system by introducing the need for language di...
Conference Paper
Full-text available
Software dependencies play a vital role in program comprehension, change impact analysis and other software maintenance activities. Traditionally, these activities are supported by source code analysis, however, the source code is sometimes inaccessible, and not all stakeholders have adequate knowledge to perform such analysis. For example, non-tec...
Conference Paper
Full-text available
Unit testing is often made more difficult by the heavy use of classes as namespaces and the proliferation of static methods to encapsulate configuration code. We have analyzed the use of 120 static methods from 96 projects by categorizing them according to their responsibilities. We find that most static methods support a hodgepodge of mixed respon...
Conference Paper
Full-text available
Developers often need to find answers to questions regarding the evolution of a system when working on its code base. While their information needs require data analysis spanning over different repository types, the source code repository has a pivotal role for program comprehension tasks. However, the coarse-grained nature of the data stored by co...
Article
Full-text available
When the Application Programming Interface (API) of a frame-work or library changes, its clients must be adapted. This change propagation—known as a ripple effect—is a problem that has gar-nered interest: several approaches have been proposed in the litera-ture to react to these changes. Although studies of ripple effects exist at the single system...
Conference Paper
Much of human learning is built on observing, retaining, and replicating behavior witnessed in a model. On this basis, instructors often teach informatics by providing programming examples to be observed and analyzed by learners. By retaining and replicating the steps leading to the final artifacts, students learn. However, professors usually illus...
Article
Full-text available
Software systems are hard to understand due to the complexity and the sheer size of the data to be analyzed. Software visualization tools are a great help as they can sum up large quantities of data in dense, meaningful pictures. Traditionally, such tools come in the form of desktop applications. Modern web frameworks are about to change this statu...
Article
Software evolution research has focused mostly on analyzing the evolution of single software systems. However, it is rarely the case that a project exists as standalone, independent of others. Rather, projects exist in parallel within larger contexts in companies, research groups or even the open-source communities. We call these contexts software...
Conference Paper
Full-text available
What was I working on before the weekend? and What were the members of my team working on during the last week? are common questions that are frequently asked by a developer. They can be answered if one keeps track of who changes what in the source code. In this work, we present Replay, a tool that allows one to replay past changes as they happened...
Conference Paper
Full-text available
In large software systems, knowing the dependencies between modules or components is critical to assess the impact of changes. To recover the dependencies, fact extractors analyze the system as a whole and build the dependency graph, parsing the system down to the statement level. At the level of software ecosystems, which are collections of softwa...
Conference Paper
Full-text available
Software evolution researchers have focused mostly on analyzing single software systems. However, often projects are developed and co-exist within software ecosystems, i.e., the larger contexts of companies, research groups or open-source communities. We present The Small Project Observatory, a web-based analysis platform for ecosystem reverse engi...
Article
Software evolution analysis provides a valuable source of information that can be used both to understand a system's design and predict its future development. While for many program comprehension purposes, it is sufficient to model a single version of a system, there are types of information that can only be recovered when the history of a system...
Conference Paper
Full-text available
Software systems are hard to understand due to the complexity and the sheer size of the data to be analyzed. Software visualization tools are a great help as they can sum up large quantities of data in dense, meaningful pictures. Traditionally such tools come in the form of desktop applications. Modern web frameworks are about to change this status...
Conference Paper
Full-text available
We analyzed the gnome family of systems with the small project observatory, our online ecosystem visualization platform. We begin by briefly introducing the model of SPO. We then observe and discuss several phases in the activity of the gnome ecosystem. We follow and look at how the contributors are distributed between writing source code and doing...
Article
Full-text available
Reverse engineering is an active area of research concerned with the development of techniques and tools that support the understanding of software systems. All the techniques that were pro- posed until now study individual systems in isolation. However, software systems are seldom developed in isolation; instead, they are developed together with o...
Conference Paper
Full-text available
Reverse engineering is the process of recovering a projectpsilas components and the relationships between them with the goal of creating representations of the project at a higher level of abstraction. When dealing with the large amounts of information that are analyzed during reverse engineering visualization and exploratory navigation are importa...
Conference Paper
Full-text available
In October 2004 the University of Lugano in southern Switzerland established a new faculty of informatics. Its founding principles are innovation in teaching and faculty participation in the research community. With respect to teaching, students spend mornings at- tending lectures and afternoons in an Atelier designed to support interaction both am...
Conference Paper
Full-text available
Reverse engineering and software evolution research has been focused mostly on analyzing single software sys- tems. However, rarely a project exists in isolation; instead, projects exist in parallel within a larger context given by a company, a research group or the open-source community. Technically, such a context manifests itself in the form of...
Conference Paper
Full-text available
The analysis of the evolution of software systems is a useful source of information for a variety of activities, such as reverse engineering, maintenance, and predicting the future evolution of these systems. Current software evolution research is mainly based on the information contained in versioning systems such as CVS and SubVersion. But the ev...
Conference Paper
Full-text available
Software evolution research has been focused mostly on an- alyzing the evolution of single software systems. However, it is rarely the case that a project exists as standalone, independent of others. Rather, projects exist in parallel within larger contexts in companies, research groups or even the open-source communities, contexts that we call sup...
Conference Paper
Full-text available
Many of the existing approaches to reverse architecting - the reverse engineering of the architecture of software systems - are based on software exploration tools which provide interactive ways of exploring the system. These tools start with high-level views of the system and refine them with drill-down techniques applied on the high-level entitie...
Conference Paper
Full-text available
Data visualization is the process of representing data as pictures to support reasoning about the underlying data. For the interpretation to be as easy as possible, we need to be as close as possible to the original data. As most visualization tools have an internal meta-model, which is different from the one for the presented data, they usually ne...
Conference Paper
Many reverse engineering an