VLDB 2026 Research / reviewers in the wild / expert
Nicolas Anquetil
dblp:21/1959
· DBLP profile ↗
53ranked-venue papers
8as first author
16since 2021 · last 2026
0000-0003-1486-8399ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 51 · 8 first-author · 15 since 2021Artificial intelligence and machine learning · 4 · 1 first-authorHuman-computer interaction and ubiquitous computing · 3 · 2 since 2021Databases, data management, data science and information retrieval · 1Graphics, computer vision, multimedia, augmented reality and games · 1 · 1 since 2021
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | From Textual Descriptions to Code: A Filtering Approach for Locating Business Rules
Nour Ayachi, Benoît Verhaeghe, Nicolas Anquetil, Christopher P. Fuhrman |
SANER | 3 |
| 2026 | Migrating Esope to Fortran 2008 Using Model Transformations
Younoussa Sow, Nicolas Anquetil, Léandre Brault, Stéphane Ducasse |
SANER | 2 |
| 2026 | Assessing automatically-generated tests code quality: beyond traditional test smells
Juan Pablo Sandoval Alcocer, Maximiliano Narea Carvajal, Geraldine Galindo-Gutiérrez, Alison Fernandez, H. Andrés Neyem, Nicolas Anquetil |
Empir. Softw. Eng. | 6 |
| 2025 | A Multi-Language Tool for Generating Unit Tests from Execution TracesabstractLegacy software systems often lack extensive testing, but are assumed to behave correctly after years of bug fixes and stable operation. Migrating or modernizing these systems is challenging because there is little support for preventing regressions. Test carving addresses this problem by generating unit tests based on the current behavior of the system, treating it as an implicit oracle. In this paper, we present Modest,a multi-language tool that generates unit tests by carving them from execution traces. Modestprocesses method calls, including their receivers, arguments, and results, to recreate these invocations as unit tests. Its model-based approach allows it to support multiple languages. We detail how it can be extended to handle additional languages. Modestaims to generate tests that are human-readable and maintainable over time. To achieve this, it reconstructs values as source code rather than relying on deserialization. We evaluate Modestby generating tests for both Java and Pharo applications. Gabriel Darbord, Nicolas Anquetil, Benoît Verhaeghe, Anne Etien |
SANER | 2 |
| 2025 | Service Extraction from Object-Oriented Monolithic Systems: Supporting Incremental MigrationabstractMigrating large monolithic systems to service-based architecture is a complex process, mainly due to the difficulty of extracting reusable functionality from tightly coupled components. To support this, Service Identification techniques have been proposed to decompose monoliths into service candidates. Implementing these service candidates requires significant restructuring efforts. To address this complexity and build confidence in the target architecture, prior research recommends using an incremental migration approach where services are extracted one at a time. However, incremental migration has been poorly explored in the literature and lacks dedicated tool support. Thus, we explore the idea of a tool-assisted service extraction to support incremental migration, where one service is extracted at each increment. This paper first discusses the challenges associated with incremental migration. Then, it presents a model-based extraction approach aimed at automatically extracting functionality as a service. The approach is supported by a tool prototype evaluated on an industrial system and an open-source project. Our results show that our tool can extract standalone services that are successfully invoked by a reduced version of the monolith. Soufyane Labsari, Imen Sayar, Nicolas Anquetil, Benoît Verhaeghe, Anne Etien |
SANER | 3 |
| 2023 | A manual categorization of new quality issues on automatically-generated testsabstractDiverse studies have analyzed the quality of automatically generated test cases by using test smells as the main quality attribute. But recent work reported that generated tests might suffer from a number of quality issues not considered previously, thus suggesting that not all test smells have been identified yet. Little is known about these issues and their frequency within generated tests. In this paper, we report on a manual analysis of an external dataset consisting of 2,340 automatically generated tests. This analysis aimed at detecting new quality issues, not covered by past recognized test smells. We use thematic analysis to group and categorize the new quality issues found. As a result, we propose a taxonomy of 13 new quality issues grouped in four categories. We also report on the frequency of these new quality issues within the dataset and present eight recommendations that test generators may consider to improve the quality and usefulness of the automatically generated tests. As an additional contribution, our results suggest that (i) test quality should be evaluated not only on the tests themselves, but considering also the tested code; and (ii) automatically generated tests present flaws that are unlikely to be found in manually created tests and thus require specific quality checking tools. Geraldine Galindo-Gutiérrez, Maximiliano Narea Carvajal, Alison Fernandez, Nicolas Anquetil, Juan Pablo Sandoval Alcocer |
ICSME | 4 |
| 2023 | Parsing Fortran-77 with proprietary extensionsabstractFar from the latest innovations in software development, many organizations still rely on old code written in "obsolete" programming languages. Because this source code is old and proven it often contributes significantly to the continuing success of these organizations. Yet to keep the applications relevant and running in an evolving environment, they sometimes need to be updated or migrated to new languages or new platforms. One difficulty of working with these "veteran languages" is being able to parse the source code to build a representation of it. Parsing can also allow modern software development tools and IDEs to offer better support to these veteran languages. We initiated a project between our group and the Framatome company to help migrate old Fortran-77 with proprietary extensions (called Esope) into more modern Fortran. In this paper, we explain how we parsed the Esope language with a combination of island grammar and regular parser to build an abstract syntax tree of the code. Younoussa Sow, Larisa Safina, Léandre Brault, Papa Ibou Diouf, Stéphane Ducasse, Nicolas Anquetil |
ICSME | 6 |
| 2023 | Visualising Game Engine Subsystem Coupling Patterns
Gabriel C. Ullmann, Yann-Gaël Guéhéneuc, Fábio Petrillo, Nicolas Anquetil, Cristiano Politowski |
ICEC | 4 |
| 2023 | A Visualization for Client-Server Architecture AssessementabstractMaintaining large legacy systems often requires understanding their architecture. This is important since legacy system architecture decay over time and architecture violations may dramatically impact planned renovation actions. Merely reading source files is time-consuming and often highly inefficient. Visualizations have been proposed as a tool to support archi-tecture understanding. Some software architecture visualizations decompose the software system architecture into layers, components, or slices from a structural viewpoint. Such visualizations, however, do not take into account the specificities of client-server applications. They do not help maintainers identify and understand software architecture violations. In this paper, we propose Cliservo, a new visualization to help software main-tainers detect architectural violations in client-server systems. Cliservo classifies client-server entities into different levels of dependencies, shared entities, or ambiguous entities (e.g., entities that belong abnormally to different layers). Cliservo identifies and presents entities in their corresponding layers from two distinct viewpoints: global overview entities and violations, i.e ambiguous entities and illegal dependencies between layers. We validated our approach on three real-world industrial projects with access to their maintainers. We report the findings of 91 ambiguous entities, 29 purportedly shared and idle entities, 24 and 82 elements defined as shared but only used by the client or server, and 12 relations violating the layered architecture. Nour Jihene Agouf, Soufyane Labsari, Stéphane Ducasse, Anne Etien, Nicolas Anquetil |
VISSOFT | 5 |
| 2022 | How Libraries Evolve: A Survey of Two Industrial Companies and an Open-Source CommunityabstractThe evolution of software libraries is a process that requires a joint effort of two groups of developers: the library developers who prepare the release and client developers who need to update their applications to the new versions. To build better tools that support both library and client developers throughout the evolution, we need to understand what problems they face and how they react to those problems. In this paper, we present the result of two surveys: one for library developers and one for client developers. Our surveys involved developers from two industrial companies and an open-source community. We assess (1) how they perceive the impact of library evolution and (2) what is the support that library developers can provide to their clients. By approaching those questions from the perspectives of library and client developers, we try to assess how challenging library update is for each of those groups and how motivated they are to overcome those challenges. Oleksandr Zaitsev, Stéphane Ducasse, Nicolas Anquetil, Arnaud Thiefaine |
APSEC | 3 |
| 2022 | A Hybrid Architecture for the Incremental Migration of a Web Front-endabstractInternational audience Benoît Verhaeghe, Anas Shatnawi, Abderrahmane Seriai, Anne Etien, Nicolas Anquetil, Mustapha Derras, Stéphane Ducasse |
ICSOFT | 5 |
| 2022 | DepMiner: Automatic Recommendation of Transformation Rules for Method Deprecation
Oleksandr Zaitsev, Stéphane Ducasse, Nicolas Anquetil, Arnaud Thiefaine |
ICSR | 3 |
| 2022 | What do developers consider magic literals? A smalltalk perspective
Nicolas Anquetil, Julien Delplanque, Stéphane Ducasse, Oleksandr Zaitsev, Christopher P. Fuhrman, Yann-Gaël Guéhéneuc |
Inf. Softw. Technol. | 1 |
| 2021 | Report From The Trenches A Case Study In Modernizing Software Development PracticesabstractOne factor of success in software development companies is their ability to deliver good quality products, fast. For this, they need to improve their software development practices. We work with a medium-sized company modernizing its development practices. The company introduced several practices recommended in agile development. If the benefits of these practices are well documented, the impact of such changes on the developers is less well known. We follow this modernization before and during the COVID-19 outbreak. This paper presents an empirical study of the perceived benefit and drawback of these practices as well as the impact of COVID-19 on the company's employees. One of the conclusions, is the additional difficulties created by obsolete technologies to adapt the technology itself and the development practices it encourages to modern standards. Mahugnon H. Houekpetodji, Nicolas Anquetil, Stéphane Ducasse, Fatiha Djareddir, Jérôme Sudich |
ICSME | 2 |
| 2021 | Migrating GUI behavior: from GWT to AngularabstractIn a collaboration with Berger-Levrault, a major IT company, we are working on the migration of GWT applications to Angular. We focus on the GUI aspect of this migration which requires a framework switch (GWT to Angular) and a programming language switch (Java to TypeScript). Previous work identified that the GUI can be split into the UI structure and the GUI behavioral code. GUI behavioral code is the code executed when the user interacts with the UI. Although the migration of UI structure has already been studied, the migration of the GUI behavioral code has not. To help developers during the migration of their applications, we propose a generic approach in four steps that uses a meta-model to represent the GUI behavioral code. This approach includes a separation of the GUI behavioral code into events (caller code) and the code executed when an event is fired (called code). We present the approach and its implementation for a real industrial case study. The application comprises 470 Java (GWT) classes representing 56 web pages. We give examples of the migrated code. We evaluate the quality of the generated code with standard tools (SonarQube, codelizer) and compare it to another Java to TypeScript converter. The results show that our code has 53% fewer warnings and rule violations for SonarQube, and 99% fewer for codelizer. Benoît Verhaeghe, Anas Shatnawi, Abderrahmane Seriai, Nicolas Anquetil, Anne Etien, Stéphane Ducasse, Mustapha Derras |
ICSME | 4 |
| 2021 | GUI visual aspect migration: a framework agnostic solution
Benoît Verhaeghe, Nicolas Anquetil, Anne Etien, Stéphane Ducasse, Abderrahmane Seriai, Mustapha Derras |
Autom. Softw. Eng. | 2 |
| 2020 | Recommendations for Evolving Relational Databases
Julien Delplanque, Anne Etien, Nicolas Anquetil, Stéphane Ducasse |
CAiSE | 3 |
| 2020 | Modular Moose: A New Generation of Software Reverse Engineering Platform
Nicolas Anquetil, Anne Etien, Mahugnon H. Houekpetodji, Benoît Verhaeghe, Stéphane Ducasse, Clotilde Toullec, Fatiha Djareddir, Jérôme Sudich, Mustapha Derras |
ICSR | 1 |
| 2020 | Analysing Microsoft Access Projects: Building a Model in a Partially Observable Domain
Santiago Bragagnolo, Nicolas Anquetil, Stéphane Ducasse, Abderrahmane Seriai, Mustapha Derras |
ICSR | 2 |
| 2019 | Decomposing God Classes at SiemensabstractA group of developers at Siemens Digital Industry Division approached our team to help them restructure a large legacy system. Several problems were identified, including the presence of God classes (big classes with thousands of lines of code and hundred of methods). They had tried different approaches considering the dependencies between the classes, but none were satisfactory. Through interaction during the last three years with a lead software architect of the project, we designed a software visualization tool and an accompanying process that allows her to propose a decomposition of a God Class in a matter of one or two hours even without prior knowledge of the class (although actually implementing the decomposition in the source code could take a week of work). In this paper, we present the process that was formalized to decompose God Classes and the tool that was designed. We give details on the system itself and some of the classes that were decomposed. The presented process and visualizations have been successfully used for the last three years on a real industrial system at Siemens. Nicolas Anquetil, Anne Etien, Gaelle Andreo, Stéphane Ducasse |
ICSME | 1 |
| 2019 | Empirical Study of Programming to an InterfaceabstractA popular recommendation to programmers in object-oriented software is to "program to an interface, not an implementation" (PTI). Expected benefits include increased simplicity from abstraction, decreased dependency on implementations, and higher flexibility. Yet, interfaces must be immutable, excessive class hierarchies can be a form of complexity, and "speculative generality" is a known code smell. To advance the empirical knowledge of PTI, we conducted an empirical investigation that involves 126 Java projects on GitHub, aiming to measuring the decreased dependency benefits (in terms of cochange). Benoît Verhaeghe, Christopher P. Fuhrman, Latifa Guerrouj, Nicolas Anquetil, Stéphane Ducasse |
ASE | 4 |
| 2019 | GUI Migration using MDE from GWT to Angular 6: An Industrial CaseabstractDuring the evolution of an application, it happens that developers must change the programming language. In the context of a collaboration with Berger-Levrault, a major IT company, we are working on the migration of a GWT application to Angular. We focus on the GUI aspect of this migration which, even if both frameworks are web Graphical User Interface (GUI) frameworks, is made difficult because they use different programming languages and different organization schema. Such migration is complicated by the fact that the new application must be able to mimic closely the visual aspect of the old one so that the users of the application are not disrupted. We propose an approach in four steps that uses a meta-model to represent the GUI at a high abstraction level. We evaluated this approach on an application comprising 470 Java (GWT) classes representing 56 pages. We are able to model all the web pages of the application and 93% of the widgets they contain, and we successfully migrated 26 out of 39 pages (66%). We give examples of the migrated pages, both successful and not. Benoît Verhaeghe, Anne Etien, Nicolas Anquetil, Abderrahmane Seriai, Laurent Deruelle, Stéphane Ducasse, Mustapha Derras |
SANER | 3 |
| 2018 | Relational Database Schema Evolution: An Industrial Case StudyabstractModern relational database management systems provide advanced features allowing, for example, to include behaviour directly inside the database (stored procedures). These features raise new difficulties when a database needs to evolve (e.g. adding a new table). To get a better understanding of these difficulties, we recorded and studied the actions of a database architect during a complex evolution of the database at the core of a software system. From our analysis, problems faced by the database architect are extracted, generalized and explored through the prism of software engineering. Six problems are identified: (1) difficulty in analysing and visualising dependencies between database's entities, (2) difficulty in evaluating the impact of a modification on the database, (3) replicating the evolution of the database schema on other instances of the database, (4) difficulty in testing database's functionalities, (5) lack of synchronization between the IDE's internal model of the database and the database actual state and (6) absence of an integrated tool enabling the architect to search for dependencies between entities, generate a patch or access an up to date PostgreSQL documentation. We suggest that techniques developed by the software engineering community could be adapted to help in the development and evolution of relational databases. Julien Delplanque, Anne Etien, Nicolas Anquetil, Olivier Auverlot |
ICSME | 3 |
| 2018 | How do developers react to API evolution? A large-scale empirical study
Andre Hora 0001, Romain Robbes, Marco Túlio Valente, Nicolas Anquetil, Anne Etien, Stéphane Ducasse |
Softw. Qual. J. | 4 |
| 2017 | What are the Testing Habits of Developers? A Case Study in a Large IT CompanyabstractTests are considered important to ensure the good behavior of applications and improve their quality. But development in companies also involves tight schedules, old habits, less-trained developers, or practical difficulties such as creating a test database. As a result, good testing practices are not always used as often as one might wish. With a major IT company, we are engaged in a project to understand developers testing behavior, and whether it can be improved. Some ideas are to promote testing by reducing test session length, or by running automatically tests behind the scene and send warnings to developers about the failing ones. Reports on developers testing habits in the literature focus on highly distributed open-source projects, or involve students programmers. As such they might not apply to our industrial, closed source, context. In this paper, we take inspiration from experiments of two papers of the literature to enhance our comprehension of the industrial environment. We report the results of a field study on how often the developers use tests in their daily practice, whether they make use of tests selection and why they do. Results are reinforced by interviews with developers involved in the study. The main findings are that test practice is in better shape than we expected; developers select tests "ruthlessly" (instead of launching an entire test suite); although they are not accurate in their selection, and; contrary to expectation, test selection is not influenced by the size of the test suite nor the duration of the tests. Vincent Blondeau, Anne Etien, Nicolas Anquetil, Sylvain Cresson, Pascal Croisy, Stéphane Ducasse |
ICSME | 3 |
| 2017 | CodeCritics applied to database schema: Challenges and first resultsabstractRelational databases (DB) play a critical role in many information systems. For different reasons, their schemas gather not only tables and columns but also views, triggers or stored functions (i.e., fragments of code describing treatments). As for any other code-related artefact, software quality in a DB schema helps avoiding future bugs. However, few tools exist to analyse DB quality and prevent the introduction of technical debt. Moreover, these tools suffer from limitations like the difficulty to deal with some entities (e.g., functions) or dependencies between entities. This paper presents research issues related to assessing the software quality of a DB schema by adapting existing source code analysis research to database schemas. We present preliminary results that have been validated through the implementation of DBCritics, a prototype tool to perform static analysis on the SQL source code of a database schema. DBCritics addresses the limitations of existing DB quality tools based on an internal representation considering all entities of the database and their relationships. Julien Delplanque, Anne Etien, Olivier Auverlot, Tom Mens, Nicolas Anquetil, Stéphane Ducasse |
SANER | 5 |
| 2017 | Recommending source code locations for system specific transformationsabstractFrom time to time, developers perform sequences of code transformations in a systematic and repetitive way. This may happen, for example, when introducing a design pattern in a legacy system: similar classes have to be introduced, containing similar methods that are called in a similar way. Automation of these sequences of transformations has been proposed in the literature to avoid errors due to their repetitive nature. However, developers still need support to identify all the relevant code locations that are candidate for transformation. Past research showed that these kinds of transformation can lag for years with forgotten instances popping out from time to time as other evolutions bring them into light. In this paper, we evaluate three distinct code search approaches (“structural”, based on Information Retrieval, and AST based algorithm) to find code locations that would require similar transformations. We validate the resulting candidate locations from these approaches on real cases identified previously in literature. The results show that looking for code with similar roles, e.g., classes in the same hierarchy, provides interesting results with an average recall of 87% and in some cases the precision up to 70%. Gustavo Santos, Klérisson Vinícius Ribeiro Paixão, Nicolas Anquetil, Anne Etien, Marcelo de Almeida Maia, Stéphane Ducasse |
SANER | 3 |
| 2017 | Identifying Classes in Legacy JavaScript CodeabstractJavaScript is the most popular programming language for the Web. Although the language is prototype-based, developers can emulate class-based abstractions in JavaScript to master the increasing complexity of their applications. Identifying classes in legacy JavaScript code can support these developers at least in the following activities: (1) program comprehension; (2) migration to the new JavaScript syntax that supports classes; and (3) implementation of supporting tools, including IDEs with class-based views and reverse engineering tools. In this paper, we propose a strategy to detect class-based abstractions in the source code of legacy JavaScript systems. We report on a large and in-depth study to understand how class emulation is employed, using a dataset of 918 JavaScript applications available on GitHub. We found that almost 70% of the JavaScript systems we study make some usage of classes. We also performed a field study with the main developers of 60 popular JavaScript systems to validate our findings. The overall results range from 97% to 100% for precision, from 70% to 89% for recall, and from 82% to 94% for F-score. Leonardo Humberto Silva, Marco Túlio Valente, Alexandre Bergel, Nicolas Anquetil, Anne Etien |
J. Softw. Evol. Process. | 4 |
| 2017 | Test case selection in industry: an analysis of issues related to static approaches
Vincent Blondeau, Anne Etien, Nicolas Anquetil, Sylvain Cresson, Pascal Croisy, Stéphane Ducasse |
Softw. Qual. J. | 3 |
| 2016 | How Can We Help Software Rearchitecting Efforts? Study of an Industrial CaseabstractLegacy software systems are valuable assets for organisations and are sometimes their main source of incomes. From time to time, renewing legacy software system architecture becomes necessary in order to offer them a new future. Migrating the architecture of a legacy software system is a difficult task. It involves understanding and aggregating a large set of data (the entire source code, dependencies, etc.), it may have a profound impact on the system's behaviour, and because it occurs very rarely in the life of a system, it is hard to gain experience in this domain. Based on the study of an industrial architecture migration case, we discuss how this essentially manual effort could be helped with automated tools and a better defined process. We identified several issues raised during the task, characterized their impact, and proposed possible solutions. Brice Govin, Nicolas Anquetil, Anne Etien, Stéphane Ducasse, Arnaud Monégier |
ICSME | 2 |
| 2016 | When should internal interfaces be promoted to public?abstractCommonly, software systems have public (and stable) interfaces, and internal (and possibly unstable) interfaces. Despite being discouraged, client developers often use internal interfaces, which may cause their systems to fail when they evolve. To overcome this problem, API producers may promote internal interfaces to public. In practice, however, API producers have no assistance to identify public interface candidates. In this paper, we study the transition from internal to public interfaces. We aim to help API producers to deliver a better product and API clients to benefit sooner from public interfaces. Our empirical investigation on five widely adopted Java systems present the following observations. First, we identified 195 promotions from 2,722 internal interfaces. Second, we found that promoted internal interfaces have more clients. Third, we predicted internal interface promotion with precision between 50%-80%, recall 26%-82%, and AUC 74%-85%. Finally, by applying our predictor on the last version of the analyzed systems, we automatically detected 382 public interface candidates. Andre Hora 0001, Marco Túlio Valente, Romain Robbes, Nicolas Anquetil |
SIGSOFT FSE | 4 |
| 2016 | Mining architectural violations from version history
Cristiano Amaral Maffort, Marco Túlio Valente, Ricardo Terra, Mariza Andrade da Silva Bigonha, Nicolas Anquetil, Andre Hora 0001 |
Empir. Softw. Eng. | 5 |
| 2015 | How do developers react to API evolution? The Pharo ecosystem caseabstractSoftware engineering research now considers that no system is an island, but it is part of an ecosystem involving other systems, developers, users, hardware, ... When one system (e.g., a framework) evolves, its clients often need to adapt. Client developers might need to adapt to functionalities, client systems might need to be adapted to a new API, client users might need to adapt to a new User Interface. The consequences of such changes are yet unclear, what proportion of the ecosystem might be expected to react, how long might it take for a change to diffuse in the ecosystem, do all clients react in the same way? This paper reports on an exploratory study aimed at observing API evolution and its impact on a large-scale software ecosystem, Pharo, which has about 3,600 distinct systems, more than 2,800 contributors, and six years of evolution. We analyze 118 API changes and answer research questions regarding the magnitude, duration, extension, and consistency of such changes in the ecosystem. The results of this study help to characterize the impact of API evolution in large software ecosystems, and provide the basis to better understand how such impact can be alleviated. Andre Hora 0001, Romain Robbes, Nicolas Anquetil, Anne Etien, Stéphane Ducasse, Marco Túlio Valente |
ICSME | 3 |
| 2015 | System specific, source code transformationsabstractDuring its lifetime, a software system might undergo a major transformation effort in its structure, for example to migrate to a new architecture or bring some drastic improvements to the system. Particularly in this context, we found evidences that some sequences of code changes are made in a systematic way. These sequences are composed of small code transformations (e.g., create a class, move a method) which are repeatedly applied to groups of related entities (e.g., a class and some of its methods). A typical example consists in the systematic introduction of a Factory design pattern on the classes of a package. We define these sequences as transformation patterns. In this paper, we identify examples of transformation patterns in real world software systems and study their properties: (i) they are specific to a system; (ii) they were applied manually; (iii) they were not always applied to all the software entities which could have been transformed; (iv) they were sometimes complex; and (v) they were not always applied in one shot but over several releases. These results suggest that transformation patterns could benefit from automated support in their application. From this study, we propose as future work to develop a macro recorder, a tool with which a developer records a sequence of code transformations and then automatically applies them in other parts of the system as a customizable, large-scale transformation operator. Gustavo Santos, Nicolas Anquetil, Anne Etien, Stéphane Ducasse, Marco Túlio Valente |
ICSME | 2 |
| 2015 | Developers' perception of co-change patterns: An empirical studyabstractCo-change clusters are groups of classes that frequently change together. They are proposed as an alternative modular view, which can be used to assess the traditional decomposition of systems in packages. To investigate developer's perception of co-change clusters, we report in this paper a study with experts on six systems, implemented in two languages. We mine 102 co-change clusters from the version history of such systems, which are classified in three patterns regarding their projection to the package structure: Encapsulated, Crosscutting, and Octopus. We then collect the perception of expert developers on such clusters, aiming to ask two central questions: (a) what concerns and changes are captured by the extracted clusters? (b) do the extracted clusters reveal design anomalies? We conclude that Encapsulated Clusters are often viewed as healthy designs and that Crosscutting Clusters tend to be associated to design anomalies. Octopus Clusters are normally associated to expected class distributions, which are not easy to implement in an encapsulated way, according to the interviewed developers. Luciana Lourdes Silva, Marco Túlio Valente, Marcelo de Almeida Maia, Nicolas Anquetil |
ICSME | 4 |
| 2015 | Recording and replaying system specific, source code transformationsabstractDuring its lifetime, a software system is under continuous maintenance to remain useful. Maintenance can be achieved in activities such as adding new features, fixing bugs, improving the system's structure, or adapting to new APIs. In such cases, developers sometimes perform sequences of code changes in a systematic way. These sequences consist of small code changes (e.g., create a class, then extract a method to this class), which are applied to groups of related code entities (e.g., some of the methods of a class). This paper presents the design and proof-of-concept implementation of a tool called MacroRecorder. This tool records a sequence of code changes, then it allows the developer to generalize this sequence in order to apply it in other code locations. In this paper, we discuss MACRORECORDER's approach that is independent of both development and transformation tools. The evaluation is based on previous work on repetitive code changes related to rearchitecting. MacroRecorder was able to replay 92% of the examples, which consisted in up to seven code entities modified up to 66 times. The generation of a customizable, large-scale transformation operator has the potential to efficiently assist code maintenance. Gustavo Santos, Anne Etien, Nicolas Anquetil, Stéphane Ducasse, Marco Túlio Valente |
SCAM | 3 |
| 2015 | OrionPlanning: Improving modularization and checking consistency on software architectureabstractMany techniques have been proposed in the literature to support architecture definition, conformance, and analysis. However, there is a lack of adoption of such techniques by the industry. Previous work have analyzed this poor support. Specifically, former approaches lack proper analysis techniques (e.g., detection of architectural inconsistencies), and they do not provide extension and addition of new features. In this paper, we present ORIONPLANNING, a prototype tool to assist refactorings at large scale. The tool provides support for model-based refactoring operations. These operations are performed in an interactive visualization. The contributions of the tool consist in: (i) providing iterative modifications in the architecture, and (ii) providing an environment for architecture inspection and definition of dependency rules. We evaluate ORIONPLANNING against practitioners' requirements on architecture definition listed in a previous survey. We also evaluate the tool in a concrete example of software remodularization. Gustavo Santos, Nicolas Anquetil, Anne Etien, Stéphane Ducasse, Marco Túlio Valente |
VISSOFT | 2 |
| 2015 | Identifying the exact fixing actions of static rule violationabstractWe study good programming practices expressed in rules and detected by static analysis checkers such as PMD or FindBugs. To understand how violations to these rules are corrected and whether this can be automated, we need to identify in the source code where they appear and how they were fixed. This presents some similarities with research on understanding software bugs, their causes, their fixes, and how they could be avoided. The traditional method to identify how a bug or a rule violation were fixed consists in finding the commit that contains this fix and identifying what was changed in this commit. If the commit is small, all the lines changed are ascribed to the fixing of the rule violation or the bug. However, commits are not always atomic, and several fixes and even enhancements can be mixed in a single one (a large commit). In this case, it is impossible to detect which modifications contribute to which fix. In this paper, we are proposing a method that identifies precisely the modifications that are related to the correction of a rule violation. The same method could be applied to bug fixes, providing there is a test illustrating this bug. We validate our solution on a real world system and actual rules. Hayatou Oumarou, Nicolas Anquetil, Anne Etien, Stéphane Ducasse, Kolyang 0001 |
SANER | 2 |
| 2015 | Does JavaScript software embrace classes?abstractJavaScript is the de facto programming language for the Web. It is used to implement mail clients, office applications, or IDEs, that can weight hundreds of thousands of lines of code. The language itself is prototype based, but to master the complexity of their application, practitioners commonly rely on informal class abstractions. This practice has never been the target of empirical research in JavaScript. Yet, understanding it is key to adequately tuning programming environments and structure libraries such that they are accessible to programmers. In this paper we report on a large and in-depth study to understand how class emulation is employed in JavaScript applications. We propose a strategy to statically detect class-based abstractions in the source code of JavaScript systems. We used this strategy in a dataset of 50 popular JavaScript applications available from GitHub. We found four types of JavaScript software: class-free (systems that do not make any usage of classes), class-aware (systems that use classes, but marginally), class-friendly (systems that make a relevant usage of classes), and class-oriented (systems that have most of their data structures implemented as classes). The systems in these categories represent, respectively, 26%, 36%, 30%, and 8% of the systems we studied. Leonardo Humberto Silva, Miguel Ramos 0001, Marco Túlio Valente, Alexandre Bergel, Nicolas Anquetil |
SANER | 5 |
| 2015 | Automatic detection of system-specific conventions unknown to developers
Andre Hora 0001, Nicolas Anquetil, Anne Etien, Stéphane Ducasse, Marco Túlio Valente |
J. Syst. Softw. | 2 |
| 2014 | Predicting software defects with causality tests
César Couto, Pedro Pires, Marco Túlio Valente, Roberto da Silva Bigonha, Nicolas Anquetil |
J. Syst. Softw. | 5 |
| 2013 | Mining Architectural Patterns Using Association Rules
Cristiano Amaral Maffort, Marco Túlio Valente, Roberto da Silva Bigonha, Andre Hora 0001, Nicolas Anquetil, Jonata Menezes |
SEKE | 5 |
| 2013 | oZone: Layer identification in the presence of cyclic dependencies
Jannik Laval, Nicolas Anquetil, Muhammad Usman Bhatti, Stéphane Ducasse |
Sci. Comput. Program. | 2 |
| 2013 | Software quality metrics aggregation in industryabstractSUMMARY With the growing need for quality assessment of entire software systems in the industry, new issues are emerging. First, because most software quality metrics are defined at the level of individual software components, there is a need for aggregation methods to summarize the results at the system level. Second, because a software evaluation requires the use of different metrics, with possibly widely varying output ranges, there is a need to combine these results into a unified quality assessment. In this paper we derive, from our experience on real industrial cases and from the scientific literature, requirements for an aggregation method. We then present a solution through the Squale model for metric aggregation, a model specifically designed to address the needs of practitioners. We empirically validate the adequacy of Squale through experiments on Eclipse. Additionally, we compare the Squale model to both traditional aggregation techniques (e.g., the arithmetic mean), and to econometric inequality indices (e.g., the Gini or the Theil indices), recently applied to aggregation of software metrics. Copyright © 2012 John Wiley & Sons, Ltd. Karine Mordal-Manet, Nicolas Anquetil, Jannik Laval, Alexander Serebrenik, Bogdan Vasilescu, Stéphane Ducasse |
J. Softw. Evol. Process. | 2 |
| 2012 | Domain specific warnings: Are they any better?abstractTools to detect coding standard violations in source code are commonly used to improve code quality. One of their original goals is to prevent bugs, yet, a high number of false positives is generated by the rules of these tools, i.e., most warnings do not indicate real bugs. There are empirical evidences supporting the intuition that the rules enforced by such tools do not prevent the introduction of bugs in software. This may occur because the rules are too generic and do not focus on domain specific problems of the software under analysis. We underwent an investigation of rules created for a specific domain based on expert opinion to understand if such rules are worthwhile enforcing in the context of defect prevention. In this paper, we performed a systematic study to investigate the relation between generic and domain specific warnings and observed defects. From our experiment on a real case, long term evolution, software, we have found that domain specific rules provide better defect prevention than generic ones. Andre Hora 0001, Nicolas Anquetil, Stéphane Ducasse, Simon Allier |
ICSM | 2 |
| 2012 | A Catalog of Patterns for Concept Lattice Interpretation in Software Reengineering
Muhammad Usman Bhatti, Nicolas Anquetil, Marianne Huchard, Stéphane Ducasse |
SEKE | 2 |
| 2010 | A model-driven traceability framework for software product lines
Nicolas Anquetil, Uirá Kulesza, Ralf Mitschke, Ana Moreira 0001, Jean-Claude Royer, Andreas Rummler, André Sousa |
Softw. Syst. Model. | 1 |
| 2009 | Counselor, a Data Mining Based Time Estimation for Software Maintenance
Hércules Antônio do Prado, Edilson Ferneda, Nicolas Anquetil, Elizabeth d'Arrochella Teixeira |
KES (2) | 3 |
| 2007 | Software maintenance seen as a knowledge management issue
Nicolas Anquetil, Káthia Marçal de Oliveira, Kleiber D. de Sousa, Márcio Greyck Batista Dias |
Inf. Softw. Technol. | 1 |
| 2005 | A Risk Taxonomy Proposal for Software MaintenanceabstractThere can be no doubt that risk management is an important activity in the software engineering area. One proof of this is the large body of work existing in this area. However, when one takes a closer look at it, one perceives that almost all this work is concerned with risk management for software development projects. The literature on risk management for software maintenance is much scarcer. On the other hand, software maintenance projects do present specificities that imply they offer different risks than development. This suggests that maintenance projects could greatly benefit from better risk management tools. One step in this direction would be to help identifying potential risk factors at the beginning of a maintenance project. For this, we propose taxonomy of possible risks for software management projects. The ontology was created from: i) an extensive survey of risk management literature, to list known risk factors for software development; and, ii) an extensive survey of maintenance literature, to list known problems that may occur during maintenance. Kênia Pereira Batista Webster, Káthia Marçal de Oliveira, Nicolas Anquetil |
ICSM | 3 |
| 2003 | Knowledge for Software Maintenance
Nicolas Anquetil, Káthia Marçal de Oliveira, Márcio Greyck Batista Dias, Marcelo Ramal, Ricardo de Moura Meneses |
SEKE | 1 |
| 1999 | Recovering software architecture from the names of source filesabstractWe discuss how to extract a useful set of subsystems from a set of existing source-code file names. This problem is challenging because many legacy systems use thousands of files names, including some that are very short and cryptic. At the same time the problem is important because software maintainers often find it difficult to understand such systems. We propose a general algorithm to cluster files based on their names, and a set of alternative methods for implementing the algorithm. One of the key tasks is picking candidate words to try to identify in file names. We do this by (a) iteratively decomposing file names, (b) finding common substrings, and (c) choosing words in routine names, in an English dictionary or in source-code comments. In addition, we investigate generating abbreviations from the candidate words in order to find matches in file names, as well as how to split file names into components given no word markers. To compare and evaluate our five approaches, we present two experiments. The first compares the ‘concepts’ found in each file name by each method with the results of manually decomposing file names. The second experiment compares automatically generated subsystems with subsystem examples proposed by experts. We conclude that two methods are most effective: extracting concepts using common substrings and extracting those concepts that relate to the names of routines in the files. Copyright © 1999 John Wiley & Sons, Ltd. Nicolas Anquetil, Timothy Lethbridge |
J. Softw. Maintenance Res. Pract. | 1 |
| 1998 | Extracting Concepts from File Names: A New File Clustering CriterionabstractDecomposing complex software systems into conceptually independent subsystems is a significant software engineering activity which received considerable research attention. Most of the research in this domain considers the body of the source code; trying to cluster together files which are conceptually related. We discuss techniques for extracting concepts (abbreviations) from a more informal source of information: file names. The task is difficult because nothing indicates where to split the file names into substrings. In general, finding abbreviations would require domain knowledge to identify the concepts that are referred to in a name and intuition to recognize such concepts in abbreviated forms. We show by experiment that the techniques we propose allow about 90% of the abbreviations to be found automatically. Nicolas Anquetil, Timothy Lethbridge |
ICSE | 1 |