Annonce non disponible
Annonce non disponible
Ce produit n'est plus disponible à la vente.
PhD Position F/M Lowering the cost of debugging with object-centric debuggers
0,00 €
Annonce N°58190Publié le 09/12/2022 à 00:04
Description
_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)