PhD Position F/M Lowering the cost of debugging with object-centric debuggers
Detail de l'annonce :
_Le descriptif de l’offre ci-dessous est en Anglais_
TYPE DE CONTRAT : CDD
NIVEAU DE DIPLÔME EXIGÉ : Bac + 5 ou équivalent
FONCTION : Doctorant
A PROPOS DU CENTRE OU DE LA DIRECTION FONCTIONNELLE
The Inria Lille - Nord Europe Research Centre was founded in 2008 and
employs a staff of 320, including 280 scientists working in fourteen
research teams. Recognised for its outstanding contribution to the
socio-economic development of the Hauts-De-France région, the Inria
Lille - Nord Europe Research Centre undertakes research in the field
of computer science in collaboration with a range of academic,
institutional and industrial partners.
The strategy of the Centre is to develop an internationally renowned
centre of excellence with a significant impact on the City of Lille
and its surrounding area. It works to achieve this by pursuing a range
of ambitious research projects in such fields of computer science as
the intelligence of data and adaptive software systems. Building on
the synergies between research and industry, Inria is a major
contributor to skills and technology transfer in the field of computer
science.
CONTEXTE ET ATOUTS DU POSTE
The goal of this PhD is to study Object-Centric Debugging, a young but
promising technique for the debugging of object-oriented programs. The
student will join the debugging group within the RMoD team, in the
context of the _ANR 2021 project OCRE: Object-Centric debugging
REloaded_.
RMOD
====
The goal of RMoD is to support remodularization and development of
modular object-oriented applications. We tackle this objective from
two complementary perspectives: reengineering, and constructs for
dynamic languages. In the context of languages, we revisit language
concepts such as modules and composition; we are also working on a new
generation of reflective systems. We experiment with these programming
constructs using Pharo, an open source, reflective, object-oriented
language. http://rmod.inria.fr
MISSION CONFIÉE
When debugging object-oriented programs, we often identify a
suspicious object that needs to be investigated. However, mainstream
debuggers only provide a call-stack based perspective that shows the
executed code in sequential order (which code called which code). FROM
STACK BASED PERSPECTIVES, IT IS EXTREMELY DIFFICULT TO KNOW WHERE TO
APPLY DEBUGGING OPERATIONS because we cannot know at run time where
suspicious objects are used in the code.
The problem is that, at run time, objects are passed around and
interact with each other throughout methods activations. A buggy
object might touch the state of another object (the affected object)
that later produces the visible effects of the bug. When that effect
becomes visible, traditional debuggers only show the active execution
stack, where the buggy object and its past interaction with the
affected object are not observable anymore.
This distance between the affected object (in the active stack) and
the buggy object (in a past, terminated stack) hides the interaction
between the two objects and hinders debugging. STACK BASED
PERSPECTIVES DO NOT PROVIDE ENOUGH INFORMATION TO DECIDE WHERE AND HOW
TO APPLY DEBUGGING OPERATIONS IN THE PROGRAM.
This problem becomes harder in complex programs. Hundreds of instances
from the same class may execute behavior within isolated execution
stacks, but only one of them may cause the bug. It is already
difficult to understand that the effect of a bug observed from the
current execution stack comes from an object in an other, past
execution stack. Now, we also have to differentiate this particular
object from lots of similar objects in order to debug it. Traditional
tools such as breakpoints are impractical to use: IT IS IMPOSSIBLE TO
BREAK THE EXECUTION FOR EACH ONE OF THOSE OBJECTS. To debug only the
right object, developers have to insert complex conditional
instructions into the source code to manually filter the objects. In
the case of hard bugs, it is common that they cannot express those
conditions due to a lack of information or tools. These difficulties
also render other approaches, such as back-in-time debuggers,
ineffective.
This is where OBJECT-CENTRIC DEBUGGING comes into play, with the
capability of breaking execution for a single specific object [1, 2,
3]. Object-centric debugging formulates the hypothesis that, BY
FOCUSING THE SCOPE OF DEBUGGING (VIEWS, INTERACTIONS, OPERATIONS) ON
SINGULAR OBJECTS, TRACKING HARD BUGS AND FINDING THEIR SOURCE WOULD BE
EASIER. Object-centric debugging operations are applied only to
suspicious objects and activate only when those particular objects are
in the right context. Breaking execution when a particular object
receives a message provides a significant gain of user interactions
for finding the source of bugs in specific scenarios [1, 2]. Breaking
execution when two particular objects interact with each other allows
for a program comprehension that would be hard to acquire with
standard breakpoints [1]. Modifying single objects’ behavior in
running programs helps in exposing bugs and finding their source, and
allows developers to hot fix buggy objects [4].
Object-centric debugging has the potential to DRASTICALLY LOWER THE
COST OF TRACKING AND UNDERSTANDING HARD BUGS, and thus to become a
strong reference technique for the debugging of object-oriented
programs. However, the technique is still in its infancy and its
general hypothesis has not been completely tested because it requires
to first solve fundamental and practical problems:
(1) HOW TO FIND OBJECTS TO DEBUG among thousands or millions,
especially when faulty objects are not available from the execution
stack where the effects of bugs become visible?
(2) Object-centric debugging lacks practical and empirical feedback
and evaluation, and there is, AS OF TODAY, NO LARGE-SCALE EMPIRICAL
EVALUATION testing the promises of the technique.
The objective of this project is TO ACHIEVE AND TO UNDERSTAND THE FULL
POTENTIAL OF OBJECT-CENTRIC DEBUGGING by addressing these problems.
Our findings will SET THE FIRST GENERATION OF OBJECT-CENTRIC
DEBUGGERS, and make them available for every object-oriented developer
through:
* Formal and conceptual descriptions including the new solutions for
(1);
* Example implementations to prove the feasibility of the solutions
and to evaluate them (2);
* Systematic debugging methods to choose when and how to use
object-centric debuggers (from (2)).
REFERENCES
[1] J. Ressia, A. Bergel, and O. Nierstrasz. Object-centric debugging.
In Proceeding of the 34rd international conference on Software
engineering, ICSE ’12, 2012.
[2] C. Corrodi. Towards efficient object-centric debugging with
declarative breakpoints. In SATToSE 2016.
[3] S. Costiou, M. Kerboeuf, G. Cavarle, and A. Plantec. Lub: A
pattern for fine grained behavior adaptation at runtime. Science of
Computer Programming, 161:149–171, 2018.
[4] S. Costiou. Unanticipated behavior adaptation : application to the
debugging of running programs. Theses, Université de Bretagne
occidentale - Brest, Nov. 2018.
PRINCIPALES ACTIVITÉS
THE PLAN IS TO:
* Join the team work around debugging, that includes 3 researchers
and 1 phd student from the RMoD team at Inria Lille, a collaboration
with Thales DMS Brest, the SMartse team from University of Chicoutimi
At Quebec and with the University of Zurich.
* Survey the key developer activities around debugging
* Define new models and solutions
* Realize and experiment prototypes, using Pharo (www.pharo.org)
* Design and run large-scale empirical evaluations with real
end-users and practitioners
* Publish results in top venues
COMPÉTENCES
TECHNICAL SKILLS AND LEVEL REQUIRED
* OOP, TDD
* Reflective programming
* Program transformation
LANGUAGE
* English
RELATIONAL SKILLS
* Good team work skills
OTHER VALUED APPRECIATED
* Knowledge of the Pharo language is a plus
* A strong interest about debugging and dynamic languages
* A strong will to learn and to explore new things
AVANTAGES
You will integrate a dynamic team composed of international scientific
experts in the domain of software engineering (https://rmod.inria.fr).
You will work on bleeding-edge research topics with international
academic and industrial partners recognized in the field of
reverse-engineering, software evolution, virtual machines, dynamic
languages, reflection and debugging.
You will have the opportunity to integrate the Pharo community, and
participate to the Pharo sprints held every month in the RMoD's
offices.
This will give you great opportunities to link to the community, an
learn from world-class object-oriented languages experts.
You can also benefit from free technical and more general on-site
training.
For international candidates, our administrative services helps you in
many different administrative tasks (visa, residence permit, social
security, accommodations, bank...).
You will work in a stimulating and engaging work environment:
* on-site catering with discounts
* reimbursement of transportation (50%)
* remote working (90 days per year)
* paid leave: 9 weeks a year, with additional facilities for
exceptional cases (e.g., kids)
* social, cultural and sport services and discounts through the local
Inria association
RÉMUNÉRATION
1st and 2nd year : 1 982€ gross monthly salary (before taxes)
3rd year : 2 085€ gross monthly salary (before taxes)