Les définitions inductives, les programmes récursives, les continuations, et l’évaluation partielle

When: Thursday, 20th June, 10h-11h30
Where: B31, Inria Building B
Who: Olivier Danvy

Les définitions inductives, les programmes récursifs, les continuations, et l’évaluation partielle

Résumé:

Les structures de données sont typiquement décrites de façon inductive.
Les programmes qui les traversent sont typiquement écrits de façon
récursive, en suivant leur structure.  Les continuations permettent de
traverser les données sans suivre forcément leur structure.
L’évaluation partielle permet d’exploiter le fait que les données, en
tout ou en partie, ne sont pas disponibles au même moment.
Le but de cet exposé est d’illustrer ces concepts et leur utilité.

(English) Tips and Tricks for Communication in Computer Science: Reviews, Papers and Talks

Désolé, cet article est seulement disponible en Anglais Américain.

Suman Saha: Improving the Quality of Error-Handling Code

What: Improving the Quality of Error-Handling Code in Systems Software using Function-Local Information
Who: Suman Saha, PhD in the Inria REGAL group
When: March 12th, 11am
Where: Inria B31

http://pagesperso-systeme.lip6.fr/Suman.Saha

Abstract

Adequate error-handling code is essential to the reliability of any systems software. On an error, such code is responsible for releasing acquired resources to restore the system to a viable state. Omitting such operations leads not only to memory leaks, but also to system crashes and deadlocks.

The C language does not provide any abstractions for exception handling or other forms of error handling, leaving programmers to devise their own conventions for detecting and handling errors. The Linux coding style guidelines suggest placing error handling code at the end of each function, where it can be reached by gotos whenever an error is detected. This coding style has the advantage of putting all of the error-handling code in one place, which eases understanding and maintenance, and reduces code duplication. Nevertheless, this coding style is not always applied. In the first part of the thesis, we propose an automatic program transformation that transforms error-handling code into this style. We have implemented this algorithm as a tool and have applied this tool to five directories (drivers, fs, net, arch, and sound) in Linux 3.6 kernel source code as well as to five widely used open-source systems software projects: PostgreSQL, Apache, Wine, Python, and PHP. This tool successfully converts 22% of the conditionals containing state-restoring error-handling code that have the scope to merge code into one, from the basic strategy to the goto-based strategy.

Even when error handling code is structured according to the Linux coding style guidelines, the management of the releasing of allocated resources remains a continual problem in ensuring the robustness of systems software. Finding such faults is very challenging due to the difficulty of systematically reproducing system errors and the diversity of system resources and their associated resource release operations. To address these issues, over 10 years of research has focused on macroscopic approaches that globally scan a code base for common resource-release operations. Such approaches are notorious for their high rates of false positives, while at the same time, in practice, they leave many faults undetected.

In the second part of the thesis, we propose a novel microscopic approach to finding resource- release faults in systems software, taking into account such software’s diversity of resource types and resource-release operations. Rather than generalizing from the results of a complete scan of the source code, our approach achieves precision and scalability by focusing on the error-handling code of each function. Using a tool, Hector, that we have developed based on this approach, we have found 485 faults in 19 different C systems software projects, including Linux, Python, and Apache, with a false positive rate of 23%, well below the 30% that has been reported to be acceptable to developers. Some of these faults are exploitable by an unprivileged malicious user, making it possible to crash the entire system.

PRIME – Yet another middleware for pervasive computing

Désolé, cet article est seulement disponible en Anglais Américain.

Michele Lanza: Software Visualization

What: Software Visualization: Principles, Practice, Myths, Perils, Promises, Evaluation, and all the rest
Who: Michele Lanza, Professor at the University of Lugano
When: Friday 15th February, 11h
Where: Inria B21

ABSTRACT

The title says it all: In this talk I will introduce the principles that govern software visualization, and show through a series of examples how they can be applied in practice. Furthermore I will reflect on how such research can be evaluated.

BIO

Michele Lanza is associate professor of the faculty of informatics, which he co-founded in 2004. His doctoral dissertation, completed in 2003 at the University of Bern,received the prestigious European Ernst Denert award for best thesis in software engineering of 2003. Prof. Lanza received the Credit Suisse Award for best teaching in 2007 and 2009.

At the University of Lugano Prof. Lanza leads the REVEAL research group, working in the areas of software visualization, evolution,and reverse engineering. He authored more than peer-reviewed 100 technical papers and the book « Object-Oriented Metrics in Practice ».

Prof. Lanza is involved in a number of scientific communities,and has served on more than 80 program committees. He is president of CHOOSE (the Swiss Object-Oriented Software Engineering society). He was program co-chair of ICSM (the IEEE International Conference on Software Maintenance) in 2010, of MSR (the Working Conference on Mining Software Repositories) in 2007 and 2008, of VISSOFT (the IEEE Workshop on Visualizing Software) in 2009, of IWPSE (the International Workshop on Principles of Software Evolution) in 2007. He is steering committee member of ICSM, MSR, VISSOFT, Softvis, and IWPSE. He was keynote speaker at MSR 2010 and CBSOFT 2011.

Journée Cloud SlapOS

Désolé, cet article est seulement disponible en Anglais Américain.

The Challenges of Cross-Language Interoperability

On Monday 4 February 2013, 14:00-15:30 Inria Lille room B31 (new
building), David Chisnall (a Research Associate in the University of Cambridge Computer Lab) will give a talk on “The Challenges of Cross-Language Interoperability”

As software becomes more complex, it becomes increasingly clear that no single language is an ideal solution for all parts of a program. The extremes range from CPU-specific assembly routines for micro-optimised hot paths to very high-level domain-specific languages for cleaner expression of application-specific ideas. At the same time, code reuse becomes increasingly important: modern applications are often over 90% shared libraries and completely implementing even comparatively simple systems without reusing any existing code is rarely economically feasible.

ArchLint: A Lightweight Approach for Architecture Conformance Based on a Combination of Static and Historical Source Code Analysis

On Friday 18 January 2013, 11:00-12:00 INRIA Lille room B21 (new building), Cristiano Maffort (PhD student at Federal University of Minas Gerais, Belo Horizonte, Brazil) will give a talk on “ArchLint: A Lightweight Approach for Architecture Conformance Based on a Combination of Static and Historical Source Code Analysis”

Abstract:

Software architecture conformance is a key software quality
control activity that aims to reveal the progressive gap normally
observed between concrete and planned software architectures.
Therefore, we presents ArchLint, an lightweight approach for
architecture conformance based on a combination of static and
historical software analysis. For this purpose, ArchLint relies on
four heuristics for detecting both absences and divergences in source
code based architectures. We have applied ArchLint in an
industrial-strength system and as a result we have detected 119
architectural violations, with an overall precision of 46.7% and a
recall of 96.2%, for divergences. We also compare ArchLint with
reflexion models, a well-known model-based approach for architecture
conformance. We show that ArchLint can detect more violations than
reflexion models, particularly absences, using a simple high-level
model that does not require successive refinements.

Few issues in the development of service oriented architectures

Désolé, cet article est seulement disponible en Anglais Américain.

Understanding Code Changes With AST Differencing

Désolé, cet article est seulement disponible en Anglais Américain.