Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Floréal Morandat

dblp:11/7473 · DBLP profile ↗
← Back
9ranked-venue papers
1as first author
0since 2021 · last 2017
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 7 · 1 first-authorSystems, architecture and hardware · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
3 papers
Software maintenance and evolution · 54% Programming languages and type systems · 18% Program analysis · 14%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Performance modeling and evaluation · 100%

Topics — the 11 heaviest of 11, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis › program representation
abstract syntax tree analysis
0.212014
Fine-grained and accurate source code differencing · ASE 2014
Software maintenance and evolution › program differencing
edit script generation
0.212014
Fine-grained and accurate source code differencing · ASE 2014
Software maintenance and evolution
program differencing
0.212014
Fine-grained and accurate source code differencing · ASE 2014
Software maintenance and evolution › refactoring
automated code transformation
0.112012
Eval begone!: semi-automated removal of eval from javascript programs · OOPSLA 2012
Programming languages and type systems › dynamic languages
javascript
0.112012
Eval begone!: semi-automated removal of eval from javascript programs · OOPSLA 2012
Software maintenance and evolution
refactoring
0.112012
Eval begone!: semi-automated removal of eval from javascript programs · OOPSLA 2012
Compilers and program optimization › compiler construction
compilation schemes
0.112009
Empirical assessment of object-oriented implementations with multiple inheritance and static typing · OOPSLA 2009
Programming languages and type systems
method dispatch
0.112009
Empirical assessment of object-oriented implementations with multiple inheritance and static typing · OOPSLA 2009
Compilers and program optimization › compiler toolchain
separate compilation
0.112009
Empirical assessment of object-oriented implementations with multiple inheritance and static typing · OOPSLA 2009
Software maintenance and evolution › software configuration management
version control
0.112014
Fine-grained and accurate source code differencing · ASE 2014
Performance modeling and evaluation
benchmarking
0.012009
Empirical assessment of object-oriented implementations with multiple inheritance and static typing · OOPSLA 2009

Methods — techniques the papers use, named apart from their topics

empirical comparison · 0.2benchmarking · 0.2tree differencing · 0.2static pattern recognition · 0.1corpus analysis · 0.1
YearPublicationVenuePosition
2017 Raters' reliability in clone benchmarks construction
Alan Charpentier, Jean-Rémy Falleri, Floréal Morandat, Elyas Ben Hadj Yahia, Laurent Réveillère
Empir. Softw. Eng.3
2014 Automatic extraction of developer expertise
abstract
Context: Expert identification is becoming critical to ease the communication between developers in case of global software development or to better know members of large software communities. To quickly identify who are the experts that will best perform a given development task, both the assignment of skills to developers and the computation of their corresponding expertise level have to be automated. Since the real level of expertise is tedious to assess, our challenge is to identify developers having a significant level of experience with respect to a skill. Method: In this paper we propose XTic, an approach that takes up this challenge with the intent to be accurate and efficient. XTic provides a language to specify skills. It also provides an automatic process that extracts skills and experience levels from source code repositories. Our approach is based on the idea that an expert has a high level of experience with respect to a skill. Results: We have validated XTic both on open source and industrial projects to measure its accuracy and its efficiency. The results we obtained show that its accuracy is between moderate and strong and that it scales well with medium and large size software projects. Conclusion: XTic supports the specification of a diversity of developer skills and the extraction of the expertise of these developers under the form of level of experience.
Cédric Teyton, Marc Palyart, Jean-Rémy Falleri, Floréal Morandat, Xavier Blanc 0001
EASE4
2014 Fine-grained and accurate source code differencing
abstract
At the heart of software evolution is a sequence of edit actions, called an edit script, made to a source code file. Since software systems are stored version by version, the edit script has to be computed from these versions, which is known as a complex task. Existing approaches usually compute edit scripts at the text granularity with only add line and delete line actions. However, inferring syntactic changes from such an edit script is hard. Since moving code is a frequent action performed when editing code, it should also be taken into account. In this paper, we tackle these issues by introducing an algorithm computing edit scripts at the abstract syntax tree granularity including move actions. Our objective is to compute edit scripts that are short and close to the original developer intent. Our algorithm is implemented in a freely-available and extensible tool that has been intensively validated.
Jean-Rémy Falleri, Floréal Morandat, Xavier Blanc 0001, Matias Martinez, Martin Monperrus
ASE2
2014 A fast abstract syntax tree interpreter for R
abstract
Dynamic languages have been gaining popularity to the point that their performance is starting to matter. The effort required to develop a production-quality, high-performance runtime is, however, staggering and the expertise required to do so is often out of reach of the community maintaining a particular language. Many domain specific languages remain stuck with naive implementations, as they are easy to write and simple to maintain for domain scientists. In this paper, we try to see how far one can push a naive implementation while remaining portable and not requiring expertise in compilers and runtime systems. We choose the R language, a dynamic language used in statistics, as the target of our experiment and adopt the simplest possible implementation strategy, one based on evaluation of abstract syntax trees. We build our interpreter on top of a Java virtual machine and use only facilities available to all Java programmers. We compare our results to other implementations of R.
Tomas Kalibera, Petr Maj, Floréal Morandat, Jan Vitek
VEE3
2013 EZ: Towards Efficient Asynchronous Protocol Gateway Construction
Yérom-David Bromberg, Floréal Morandat, Laurent Réveillère, Gaël Thomas 0001
DAIS2
2012 Evaluating the Design of the R Language - Objects and Functions for Data Analysis
Floréal Morandat, Brandon Hill, Leo Osvald, Jan Vitek
ECOOP1
2012 Eval begone!: semi-automated removal of eval from javascript programs
abstract
Eval endows JavaScript developers with great power. It allows developers and end-users, by turning text into executable code, to seamlessly extend and customize the behavior of deployed applications as they are running. With great power comes great responsibility, though not in our experience. In previous work we demonstrated through a large corpus study that programmers wield that power in rather irresponsible and arbitrary ways. We showed that most calls to eval fall into a small number of very predictable patterns. We argued that those patterns could easily be recognized by an automated algorithm and that they could almost always be replaced with safer JavaScript idioms. In this paper we set out to validate our claim by designing and implementing a tool, which we call Evalorizer, that can assist programmers in getting rid of their unneeded evals. We use the tool to remove eval from a real-world website and validated our approach over logs taken from the top 100 websites with a success rate over 97% under an open world assumption.
Fadi Meawad, Gregor Richards, Floréal Morandat, Jan Vitek
OOPSLA3
2011 Perfect class hashing and numbering for object-oriented implementation
abstract
Abstract Late binding and subtyping create run‐time overhead for object‐oriented languages, especially in the context of both multiple inheritance and dynamic loading, for instance for JAVA interfaces. In a previous article, we proposed a novel approach based on perfect hashing and truly constant‐time hashtables for implementing subtype testing and method invocation in a dynamic loading setting. In this first study, we based our efficiency assessment on Driesen's abstract computational model for the time aspect, and on large‐scale benchmarks for the space aspect. The conclusions were that the technique was promising but required further research in order to assess its scalability. This article presents some new results on perfect class hashing that enhance its interest. We propose and test both new hashing functions and an inverse problem that amounts to selecting the best class identifiers in order to minimize the overall hashtable size. This optimizing approach is proven to be optimal for single‐inheritance hierarchies. Experiments within an extended testbed with random class loading and under cautious assumptions about what should be a sensible class‐loading order show that perfect class hashing scales up gracefully, especially on JAVA‐like multiple‐subtyping hierarchies. Furthermore, perfect class hashing is implemented in the PRM compiler testbed, and compared here with the coloring technique, which amounts to maintaining the single‐inheritance implementation in multiple inheritance. The overall conclusion is that the approach is efficient from both time and space standpoints with the bit‐wise and hashing function. In contrast, the poor time efficiency of modulus hashing function on most processors is confirmed. Copyright © 2010 John Wiley & Sons, Ltd.
Roland Ducournau, Floréal Morandat
Softw. Pract. Exp.2
2009 Empirical assessment of object-oriented implementations with multiple inheritance and static typing
abstract
Object-oriented languages involve a threefold tradeoff between runtime efficiency, expressiveness (multiple inheritance), and modularity, i.e. open-world assumption (OWA). Runtime efficiency is conditioned by both the implementation technique and compilation scheme. The former specifies the data structures that support method invocation, attribute access and subtype testing. The latter consists of the production line of an executable from the source code. Many implementation techniques have been proposed and several compilation schemes can be considered from fully global compilation under the closed-world assumption (CWA) to separate compilation with dynamic loading under the OWA, with midway solutions. This article reviews a significant subset of possible combinations and presents a systematic, empirical comparison of their respective efficiencies with all other things being equal. The testbed consists of the Prm compiler that has been designed for this purpose. The considered techniques include C++ subobjects, coloring, perfect hashing, binary tree dispatch and caching. A variety of processors were considered. Qualitatively, these first results confirm the intuitive or theoretical abstract assessments of the tested approaches. As expected, efficiency increases as CWA strengthens. From a quantitative standpoint, the results are the first to precisely compare the efficiency of techniques that are closely associated with specific languages like C++ and Eiffel. They also confirm that perfect hashing should be considered for implementing Java and .Net interfaces.
Roland Ducournau, Floréal Morandat, Jean Privat
OOPSLA2