Omar Chebaro

Postdoc at ASCOLA team (EMN-INRIA, LINA)

Combining static analysis, program slicing and test generation for C program debugging

Software validation remains a crucial part in software development process. Two major techniques have improved in recent years, dynamic and static analysis. They have complementary strengths and weaknesses.

We present in this thesis a new original combination of these methods to make the research of runtime errors more accurate, automatic and reduce the number of false alarms. We prove as well the correction of the method. In this combination, static analysis reports alarms of runtime errors some of which may be false alarms, and test generation is used to confirm or reject these alarms.

When applied on large programs, test generation may lack time or space before confirming out certain alarms as real bugs or finding that some alarms are unreachable. To overcome this problem, we propose to reduce the source code by program slicing before running test generation. Program slicing transforms a program into another simpler program, which is equivalent to the original program with respect to certain criterion.

Four usages of program slicing were studied. The first usage is called all. It applies the slicing only once, the simplification criterion is the set of all alarms in the program. The disadvantage of this usage is that test generation may lack time or space and alarms that are easier to classify are penalized by the analysis of other more complex alarms. In the second usage, called each, program slicing is performed with respect to each alarm separately. However, test generation is executed for each sliced program and there is a risk of redundancy if some alarms are included in many slices.

To overcome these drawbacks, we studied dependencies between alarms on which we base to introduce two advanced usages of program slicing : min and smart. In the min usage, the slicing is performed with respect to subsets of alarms. These subsets are selected based on dependencies between alarms and the union of these subsets cover the whole set of alarms. With this usage, we analyze less slices than with each, and simpler slices than with all. However, the dynamic analysis of some slices may lack time or space before classifying some alarms, while the dynamic analysis of a simpler slice could possibly classify some. Usage smart applies previous usage iteratively by reducing the size of the subsets when necessary. When an alarm cannot be classified by the dynamic analysis of a slice, simpler slices are calculated. These works are implemented in sante, our tool that combines the test generation tool PathCrawler and the platform of static analysis Frama-C. Experiments have shown, firstly, that our combination is more effective than each technique used separately and, secondly, that the verification is faster after reducing the code with program slicing. Simplifying the program by program slicing also makes the detected errors and the remaining alarms easier to analyze.

Keywords: static analysis, program slicing, all-paths test generation, runtime errors, alarm-guided test generation, bugs, false positive.

Flexible and expressive aspect-based control over service compositions in the cloud

Administartion autonome d'applications réparties

Avec l'évolution des technologies et la réduction des coûts, la taille des systèmes répartis a très rapidement accru, entrainant avec elle la complexité des systèmes mis au point. L'administration de ces derniers est une tâche réputée ardue et très coûteuse en ressources et actuellement cette tâche s'effectue manuellement. L'administration autonomique est une approche visant à améliorer cette situation.

En effet c'est un modèle de programmation dans lequel le système serait capable de se configurer, de se réparer, de se protéger et de se gérer tout seul.

Dans notre équipe de recherche, nous visons à mettre au point un middleware d'administration et de supervision qui peut administrer ce genre d'application. Il s'appelle TUNe. Mon travail consistait précisément à enrichir TUNe en le dotant de fonctions spécifiques et nécessaires à l'administration des serveurs web à continu dynamique tels que les serveurs de commerce électronique comme eBay. Une des technologies disponibles pour construire ce type d'application est de la développer suivant une architecture J2EE auxquelles seront appliquées les caractéristiques de TUNe pour des fins d'auto administration.