Distinguished Lecture - Design-Driven Software Development: A Programming Language-Inspired Approach

Location: 2150 Torgersen Hall
Date: Friday, February 22, 2013
Time:  11:15-12:30pm
This talk is open to the general public.


Charles Consel
Inria / University of Bordeaux



Raising the level of abstraction beyond programming is a very active research topic involving a range of areas, including software engineering, programming languages and formal verification. The challenge is to allow design dimensions of a software system, both functional and non-functional, to be expressed in a high-level way, instead of being encoded with a programming language. Such design dimensions can then be leveraged to verify conformance properties and to generate programming support.

Our research on this topic is to take up this challenge with an approach inspired by programming languages, introducing a full-fledged language for designing software systems and processing design descriptions both for verification and code generation purposes. Our approach is also inspired by domain-specific languages in that it defines a conceptual framework to guide software development. Lastly, to make our approach practical to software developers, we introduce a methodology and a suite of tools covering the development life-cycle.

This talk gives an overview of our approach and presents our main research results, illustrated by concrete examples.

Charles Consel is a professor of Computer Science at University of Bordeaux. He served on the faculty of Yale University, Oregon Graduate Institute and the University of Rennes.

He leads the Phoenix research group at INRIA. He has been designing and implementing Domain-Specific Languages (DSLs) for a variety of areas including device drivers, programmable routers, stream processing, and telephony services. These DSLs have been validated with real-sized applications and showed measureable benefits compared to applications written in general-purpose languages.

His research interests include programming languages, software engineering, distributed systems and operating systems.