Programs are everywhere in our daily life: computers and phones but also fridges, planes and so on. The main actor in the process of creating these programs is human beings. As thorough as they can be, humans are known to make involuntary errors without their awareness. Thus, once finished an already hard phase of writing a program, they have to face the maintenance phase on which they have to deal with errors they had previously made. All long their development task, developers have to continuously face their (or their colleagues) errors. This key observation arises the need of aiding developers in their development/maintenance tasks. Thus, for assisting developers, a large number of tools exist, some still in development, others are integrated in the IDE (debugging, test suites, refactoring, etc.). Some of these tools are manual, while others propose automatic assistance. To be effective, automated tools should capture in the best way as possible how the program is structured and works. For this purpose, one particularly well-suited data structure is graphs, materializing how concepts relate to each others. Using such data structures for proposing assistance tools to developers is a quite promising way to proceed. In this thesis, we concentrate on tools based on a graph representation of the program. Two big challenges on which we concentrate in this thesis are change impact analysis (CIA) and fault localization (FL). The former concentrates on the determination of the impacts of a potential change which may be issued by the developer where the latter identifies a fault based on what happened during program execution. Both concepts are complementary: the former concentrates on ante-mortem sight of the problem on which one wants to identify a fault before the failure occurs while the latter concentrates on post-mortem sight on which real failures are analyzed to define a way to go back to their sources. In this thesis we face two main problems: (i) the lack of a systematic evaluation methodology or framework to assess the performance of change impact analysis techniques and (ii) most current fault localization techniques focus on a specific set of elements reported by their approach without thinking about how they depend on each others across the program as a whole. In this thesis, we aim at finding solutions to these problems. We present four contri- butions to address the two presented problems. The two first contributions concentrate mainly on the change impact analysis side of this thesis while the third works on the fault localization side. The last contribution is a possible application for future works. In a few words, this thesis explores the causes and consequences of failures on computer programs by proposing tools based on graphs.
Directeur de Thèse : Philippe PREUX, Professeur à l'Université de Lille 3 Jean-Rémy FALLERI, Maître de Conférence-HDR, l'ENSEIRB de Bordeau Pascal POIZAT, Professeur à l'Université de Paris Ouest Nanterre Pascale KUNTZ-COSPEREC, Professeure l'Université de Nantes Martin MONPERRUS, Maître de Conférences-HDR à l'Université de Lille 1.
Thèse de l'équipe SequeL soutenue le 3 novembre 2016