Jean Privat | Université Paris 1 - Panthéon-Sorbonne (original) (raw)

Papers by Jean Privat

Research paper thumbnail of Rapport de recherche Latece 2017-4 The Codification of Program Dependencies of JSP Custom Tag Libraries in JEE Applications

JSP custom tag libraries aim to improve the code reusability and quality. However, the use of cus... more JSP custom tag libraries aim to improve the code reusability and quality. However, the use of custom tag libraries makes analyzing program dependencies difficult for several reasons. We identified five reasons that are: (1) we need to visit and to parse several files that have different syntaxes to understand the semantic of each custom tag, (2) implicit dependencies of callback methods related to the Web container services, (3) there are many different ways used to develop custom tags, (4) the reliance on different metamodel in the implementation of tag libraries, and (5) the use of multilanguage code in the output stream defined in tag handlers. In this paper, we discuss these problems and provide strategies to solve them, in order to codify program elements and related dependencies of JSP custom tag libraries. We implement these solutions in terms of a set of tools that can be used to identify a KDM model including the program elements and their related dependencies of JSP custom...

Research paper thumbnail of Using Natural Language Processing for Documentation Assist

Nowadays, most of the code hosting platforms for open-source projects consider the README file as... more Nowadays, most of the code hosting platforms for open-source projects consider the README file as the project cover. As it is the first piece of documentation seen by the project user or maintainer, such a document needs to be crafted with care. Documentation assist can be a useful tool to help documentation writers produce better documentation like README files. In this paper, we show how an abstract representation of a README file can help documentation assist tools provide better suggestions to writers. Our approach benefits from natural language processing tools and techniques to analyze the content of a README file. Using this model and the current cursor position within the document, our tool can suggest pieces of documentation, examples, and figures as well as structure improvements and update suggestions to the writer. Suggestions are presented as cards that can be selected to automatically enhance the document under writing.

Research paper thumbnail of Static Code Analysis of Multilanguage Software Systems

ArXiv, 2019

Identifying dependency call graphs of multilanguage software systems using static code analysis i... more Identifying dependency call graphs of multilanguage software systems using static code analysis is challenging. The different languages used in developing today's systems often have different lexical, syntactical, and semantic rules that make thorough analysis difficult. Also, they offer different modularization and dependency mechanisms, both within and between components. Finally, they promote and--or require varieties of frameworks offering different sets of services, which introduce hidden dependencies, invisible with current static code analysis approaches. In this paper, we identify five important challenges that static code analysis must overcome with multilanguage systems and we propose requirements to handle them. Then, we present solutions of these requirements to handle JEE applications, which combine server-side Java source code with a number of client-side Web dialects (e.g., JSP, JSF) while relying on frameworks (e.g., Web and EJB containers) that create hidden dep...

Research paper thumbnail of Chapter 1 An introduction to Object-Oriented Analysis and Design

Research paper thumbnail of Genericity and (Co)variance, an Empirical Study

Since its first introduction in an object-oriented programming language, genericity has kept comp... more Since its first introduction in an object-oriented programming language, genericity has kept complex relationship with variance, especially covariance. For instance, current languages like Java, C , Scala, Eiffel, Dart and Nit, offer different forms of variance, either unsafe (eg array covariance) or safe (definition- or use-site variance). This paper presents an empirical study analyzing the different uses of variance in actual programs, principally in Java, and secondarily in Nit. This study tries to quantify (i) the usages of unsafe covariance and its transformation into safe variance; (ii) the usages of use-site variance, its effective usefulness in a polymorphic type flow, and its possible tranformation into definition-site variance. The results provide concrete arguments in favor of a modification of the specifications of gener- icity in these object-oriented languages, by reinforcing both the safety and the flexibility of their type systems.

Research paper thumbnail of Rapport de recherche Latece 2017-3 Identifying KDM Model of JSP Pages

In this report, we propose our approach that identifies a KDM model of JSP pages. Our approach is... more In this report, we propose our approach that identifies a KDM model of JSP pages. Our approach is based on two main steps. The first one aims to reduce the problem space by translating JSP pages into Java Servlets where we can use existing tools to identify a KDM model. The second step aims to complete the resulting KDM model by identifying dependencies of JSP tags that are not codified by the translation step.

Research paper thumbnail of Raison et sentiments ; Orgueil et préjugés ; Northanger Abbey : trois chefs-d'oeuvre illustrés / Jane Austin

Research paper thumbnail of Modules and Class Refinement—A Meta-modeling Approach to Object-Oriented Languages

With object-oriented programming, classes and inheritance have sometimes been considered as a def... more With object-oriented programming, classes and inheritance have sometimes been considered as a definitive answer to the need for modularity and reusability in programming languages. However, this view of object-oriented languages is often considered as too limited and many authors have claimed that classes do not make appropriate modules. On the one hand, separate concerns are generally distributed on a set of closely related classes, while on the other, a class implements several unrelated concerns. The so-called expression problem stresses this limitation of the traditional view on object-oriented programming, which makes it easy to add new classes but quite impossible to add concerns to previously defined classes. Accordingly, recent research has yielded a lot of proposals addressing these commonly agreed needs. These proposals are based on various notions, e.g. virtual classes, higher-order hierarchies, nested inheritance, mixin layers or classboxes. All of these proposals are ve...

Research paper thumbnail of Modules and Class Refinement: A Meta-modeling Approach to Object-Oriented Programming

With object-oriented programming, classes and inheritance have sometimes been considered as a def... more With object-oriented programming, classes and inheritance have sometimes been considered as a definitive answer to the need for modularity and reusability in programming languages. However, this view of object-oriented languages is often considered as too limited and many authors have claimed that classes do not make appropriate modules. On the one hand, separate concerns are generally distributed on a set of closely related classes, while on the other, a class implements several unrelated concerns. The so-called expression problem stresses this limitation of the traditional view on object-oriented programming, which makes it easy to add new classes but quite impossible to add concerns to previously defined classes. Accordingly, recent research has yielded a lot of proposals addressing these commonly agreed needs. These proposals are based on various notions, e.g. virtual classes, higher-order hierarchies, nested inheritance, mixin layers or classboxes. All of these proposals are ve...

Research paper thumbnail of Les intermédiaires de lecture

Research paper thumbnail of Preexistence and concrete type analysis in the context of multiple inheritance

Proceedings of the 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools

Research paper thumbnail of A taxonomy of service identification approaches for legacy software systems modernization

Journal of Systems and Software

Research paper thumbnail of Preexistence revisited

Proceedings of the 10th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems, 2015

Preexistence is a property which asserts that the receiver of a given call site has been instanti... more Preexistence is a property which asserts that the receiver of a given call site has been instantiated before the current invocation of the considered method [Detlefs and Agesen, 1999]. Hence, preexistence is a mean to avoid on-stack replacement when a method must be recompiled during its own activation. In the original proposition, preexistence is an immutable property, its analysis is purely intra-procedural, and it considers only values. In this paper, we propose to extend it to a simple inter-procedural static analysis that considers types too, not only values. A consequence of this extension is that preexistence is no longer immutable, hence the analysis is not monotonous.

Research paper thumbnail of L�affiche de lecture

Pratiques Theorie Pratique Pedagogie, 1995

Research paper thumbnail of Efficient Separate Compilation of Object-Oriented Languages

Compilers of object-oriented languages used in industry are mainly based on a separate compilatio... more Compilers of object-oriented languages used in industry are mainly based on a separate compilation framework. However, the knowledge of the whole program improves the eciency of compilation; therefore the most ecient implementation techniques are global. In this paper, we propose a compromise by including three global compilation techniques in a genuine separate compilation framework.

Research paper thumbnail of PRM, The Language. Version O.2

This document is a draft. The PRM language specification may evolve. The current prmc interpretat... more This document is a draft. The PRM language specification may evolve. The current prmc interpretation may differ from the present specification.

Research paper thumbnail of Refining Classes in Statically Typed Object-Oriented Languages

Classes and specialisation bring simultaneously structuration and flexibility to object oriented ... more Classes and specialisation bring simultaneously structuration and flexibility to object oriented programs. However, numerous model extension propositions (aspects, modules, etc.) prove these qualities are often considered insufficient. This article proposes two binded notions of class refinement and modules, the first one brings flexibility and the second one, the structuration. Modules contain a coherent set of class definitions and can modify classes defined in modules they depend. This proposition focuses on statically typed languages where modules can be separately compiled. It is based on a module metamodel similar to the class one and problems with multiple specialisation and refinement are managed like those in multiple inheritance.

Research paper thumbnail of A la recherche du temps (calendaire) perdu

Poetique Revue De Theorie Et D Analyse Litteraires, 2000

Research paper thumbnail of Table-ronde sur la réécriture: Cinq réponses écrites à un questionnaire commun

Pratiques Theorie Pratique Pedagogie, 2000

Research paper thumbnail of La fiche de lecture

Pratiques Theorie Pratique Pedagogie, 1996

L'histoire de la scolarisation de la fiche de lecture permet de prendre conscience des proces... more L'histoire de la scolarisation de la fiche de lecture permet de prendre conscience des processus de transposition didactique et de leurs enjeux. Support d'animation culturelle dans les mouvements d'education populaire d'apres-guerre, la fiche de lecture traditionnelle apparait dans les Instructions officielles dans les annees 70 et se transforme souvent en exercice scolaire de pur controle bureaucratique des lectures personnelles des eleves, sans apprentissage progressif et sans reelle perspective de reinvestissement.

Research paper thumbnail of Rapport de recherche Latece 2017-4 The Codification of Program Dependencies of JSP Custom Tag Libraries in JEE Applications

JSP custom tag libraries aim to improve the code reusability and quality. However, the use of cus... more JSP custom tag libraries aim to improve the code reusability and quality. However, the use of custom tag libraries makes analyzing program dependencies difficult for several reasons. We identified five reasons that are: (1) we need to visit and to parse several files that have different syntaxes to understand the semantic of each custom tag, (2) implicit dependencies of callback methods related to the Web container services, (3) there are many different ways used to develop custom tags, (4) the reliance on different metamodel in the implementation of tag libraries, and (5) the use of multilanguage code in the output stream defined in tag handlers. In this paper, we discuss these problems and provide strategies to solve them, in order to codify program elements and related dependencies of JSP custom tag libraries. We implement these solutions in terms of a set of tools that can be used to identify a KDM model including the program elements and their related dependencies of JSP custom...

Research paper thumbnail of Using Natural Language Processing for Documentation Assist

Nowadays, most of the code hosting platforms for open-source projects consider the README file as... more Nowadays, most of the code hosting platforms for open-source projects consider the README file as the project cover. As it is the first piece of documentation seen by the project user or maintainer, such a document needs to be crafted with care. Documentation assist can be a useful tool to help documentation writers produce better documentation like README files. In this paper, we show how an abstract representation of a README file can help documentation assist tools provide better suggestions to writers. Our approach benefits from natural language processing tools and techniques to analyze the content of a README file. Using this model and the current cursor position within the document, our tool can suggest pieces of documentation, examples, and figures as well as structure improvements and update suggestions to the writer. Suggestions are presented as cards that can be selected to automatically enhance the document under writing.

Research paper thumbnail of Static Code Analysis of Multilanguage Software Systems

ArXiv, 2019

Identifying dependency call graphs of multilanguage software systems using static code analysis i... more Identifying dependency call graphs of multilanguage software systems using static code analysis is challenging. The different languages used in developing today's systems often have different lexical, syntactical, and semantic rules that make thorough analysis difficult. Also, they offer different modularization and dependency mechanisms, both within and between components. Finally, they promote and--or require varieties of frameworks offering different sets of services, which introduce hidden dependencies, invisible with current static code analysis approaches. In this paper, we identify five important challenges that static code analysis must overcome with multilanguage systems and we propose requirements to handle them. Then, we present solutions of these requirements to handle JEE applications, which combine server-side Java source code with a number of client-side Web dialects (e.g., JSP, JSF) while relying on frameworks (e.g., Web and EJB containers) that create hidden dep...

Research paper thumbnail of Chapter 1 An introduction to Object-Oriented Analysis and Design

Research paper thumbnail of Genericity and (Co)variance, an Empirical Study

Since its first introduction in an object-oriented programming language, genericity has kept comp... more Since its first introduction in an object-oriented programming language, genericity has kept complex relationship with variance, especially covariance. For instance, current languages like Java, C , Scala, Eiffel, Dart and Nit, offer different forms of variance, either unsafe (eg array covariance) or safe (definition- or use-site variance). This paper presents an empirical study analyzing the different uses of variance in actual programs, principally in Java, and secondarily in Nit. This study tries to quantify (i) the usages of unsafe covariance and its transformation into safe variance; (ii) the usages of use-site variance, its effective usefulness in a polymorphic type flow, and its possible tranformation into definition-site variance. The results provide concrete arguments in favor of a modification of the specifications of gener- icity in these object-oriented languages, by reinforcing both the safety and the flexibility of their type systems.

Research paper thumbnail of Rapport de recherche Latece 2017-3 Identifying KDM Model of JSP Pages

In this report, we propose our approach that identifies a KDM model of JSP pages. Our approach is... more In this report, we propose our approach that identifies a KDM model of JSP pages. Our approach is based on two main steps. The first one aims to reduce the problem space by translating JSP pages into Java Servlets where we can use existing tools to identify a KDM model. The second step aims to complete the resulting KDM model by identifying dependencies of JSP tags that are not codified by the translation step.

Research paper thumbnail of Raison et sentiments ; Orgueil et préjugés ; Northanger Abbey : trois chefs-d'oeuvre illustrés / Jane Austin

Research paper thumbnail of Modules and Class Refinement—A Meta-modeling Approach to Object-Oriented Languages

With object-oriented programming, classes and inheritance have sometimes been considered as a def... more With object-oriented programming, classes and inheritance have sometimes been considered as a definitive answer to the need for modularity and reusability in programming languages. However, this view of object-oriented languages is often considered as too limited and many authors have claimed that classes do not make appropriate modules. On the one hand, separate concerns are generally distributed on a set of closely related classes, while on the other, a class implements several unrelated concerns. The so-called expression problem stresses this limitation of the traditional view on object-oriented programming, which makes it easy to add new classes but quite impossible to add concerns to previously defined classes. Accordingly, recent research has yielded a lot of proposals addressing these commonly agreed needs. These proposals are based on various notions, e.g. virtual classes, higher-order hierarchies, nested inheritance, mixin layers or classboxes. All of these proposals are ve...

Research paper thumbnail of Modules and Class Refinement: A Meta-modeling Approach to Object-Oriented Programming

With object-oriented programming, classes and inheritance have sometimes been considered as a def... more With object-oriented programming, classes and inheritance have sometimes been considered as a definitive answer to the need for modularity and reusability in programming languages. However, this view of object-oriented languages is often considered as too limited and many authors have claimed that classes do not make appropriate modules. On the one hand, separate concerns are generally distributed on a set of closely related classes, while on the other, a class implements several unrelated concerns. The so-called expression problem stresses this limitation of the traditional view on object-oriented programming, which makes it easy to add new classes but quite impossible to add concerns to previously defined classes. Accordingly, recent research has yielded a lot of proposals addressing these commonly agreed needs. These proposals are based on various notions, e.g. virtual classes, higher-order hierarchies, nested inheritance, mixin layers or classboxes. All of these proposals are ve...

Research paper thumbnail of Les intermédiaires de lecture

Research paper thumbnail of Preexistence and concrete type analysis in the context of multiple inheritance

Proceedings of the 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools

Research paper thumbnail of A taxonomy of service identification approaches for legacy software systems modernization

Journal of Systems and Software

Research paper thumbnail of Preexistence revisited

Proceedings of the 10th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems, 2015

Preexistence is a property which asserts that the receiver of a given call site has been instanti... more Preexistence is a property which asserts that the receiver of a given call site has been instantiated before the current invocation of the considered method [Detlefs and Agesen, 1999]. Hence, preexistence is a mean to avoid on-stack replacement when a method must be recompiled during its own activation. In the original proposition, preexistence is an immutable property, its analysis is purely intra-procedural, and it considers only values. In this paper, we propose to extend it to a simple inter-procedural static analysis that considers types too, not only values. A consequence of this extension is that preexistence is no longer immutable, hence the analysis is not monotonous.

Research paper thumbnail of L�affiche de lecture

Pratiques Theorie Pratique Pedagogie, 1995

Research paper thumbnail of Efficient Separate Compilation of Object-Oriented Languages

Compilers of object-oriented languages used in industry are mainly based on a separate compilatio... more Compilers of object-oriented languages used in industry are mainly based on a separate compilation framework. However, the knowledge of the whole program improves the eciency of compilation; therefore the most ecient implementation techniques are global. In this paper, we propose a compromise by including three global compilation techniques in a genuine separate compilation framework.

Research paper thumbnail of PRM, The Language. Version O.2

This document is a draft. The PRM language specification may evolve. The current prmc interpretat... more This document is a draft. The PRM language specification may evolve. The current prmc interpretation may differ from the present specification.

Research paper thumbnail of Refining Classes in Statically Typed Object-Oriented Languages

Classes and specialisation bring simultaneously structuration and flexibility to object oriented ... more Classes and specialisation bring simultaneously structuration and flexibility to object oriented programs. However, numerous model extension propositions (aspects, modules, etc.) prove these qualities are often considered insufficient. This article proposes two binded notions of class refinement and modules, the first one brings flexibility and the second one, the structuration. Modules contain a coherent set of class definitions and can modify classes defined in modules they depend. This proposition focuses on statically typed languages where modules can be separately compiled. It is based on a module metamodel similar to the class one and problems with multiple specialisation and refinement are managed like those in multiple inheritance.

Research paper thumbnail of A la recherche du temps (calendaire) perdu

Poetique Revue De Theorie Et D Analyse Litteraires, 2000

Research paper thumbnail of Table-ronde sur la réécriture: Cinq réponses écrites à un questionnaire commun

Pratiques Theorie Pratique Pedagogie, 2000

Research paper thumbnail of La fiche de lecture

Pratiques Theorie Pratique Pedagogie, 1996

L'histoire de la scolarisation de la fiche de lecture permet de prendre conscience des proces... more L'histoire de la scolarisation de la fiche de lecture permet de prendre conscience des processus de transposition didactique et de leurs enjeux. Support d'animation culturelle dans les mouvements d'education populaire d'apres-guerre, la fiche de lecture traditionnelle apparait dans les Instructions officielles dans les annees 70 et se transforme souvent en exercice scolaire de pur controle bureaucratique des lectures personnelles des eleves, sans apprentissage progressif et sans reelle perspective de reinvestissement.