This website is about the 2014 edition of the school. Visit this year's edition of LASER.
Access lecture material School pictures
LASER Logo
 

11th LASER Summer School on Software Engineering

Leading-Edge Software Engineering

September 7-13, 2014 - Elba Island, Italy

Read the proceedings of previous LASER schools
LASER proceedings 2013/2014 LASER proceedings 2011 LASER proceedings 2008-2010 LASER proceedings 2007/2008

Harald C. Gall (University of Zurich)
Daniel Jackson (MIT)
Michael Jackson (The Open University)
Erik Meijer (Applied Duality)
Bertrand Meyer (ETH Zurich)
Gail C. Murphy (University of British Columbia)
Moshe Y. Vardi (Rice University)

Lectures

More lectures will be announced later.

The Trailing Edge

Speaker: Michael Jackson, The Open University

Description:

In these lectures I shall talk about the trailing edge of software engineering in the sense that everything I shall say is well known to every one of you. Why, then, am I saying it? Because novelty at the leading edge may sometimes obscure older, less exciting, insights and relegate valuable wisdom to a neglected place at the trailing edge of research and practice. This older---almost intuitive---wisdom should play a vital part in software development. Its role is to set the contexts and structures within which bright new techniques can be most effectively deployed.

There is another, metaphorical, meaning of my title. In aeronautics the vital control surfaces are located at the trailing edges of the aerodynamic surfaces---wings, tailplane and fins. These trailing edge surfaces exert a controlling force on the airflow, and help to direct the aircraft in the desired direction. Formalisms allow us to discharge proof obligations: but what should we prove? Software technology allows us to design and implement software function, but what effects do we want that function to evoke in the problem world?

My lecture topics will include: problem structures; the relationship between a system and the requirements of its stakeholders; the search for symptoms which indicate potential system failure; and the inevitability of structural conflict between the functional view of a system and its software architecture.

A central theme is the system behaviour produced by the interaction of the computing machine and the heterogeneous problem world domains: the stakeholder requirements can be regarded as desired properties of this behaviour. Since the system itself is a material and human reality located in the physical world, it is necessary to pay careful attention to behaviour of the problem world, distinguishing it rigorously from the behaviour of the computing machine. In a typical system the combined behaviour is very complex, and this complexity can be addressed by loose decomposition into its constituent behaviours, followed, in a distinct task, by their reconciliation and recombination.

The concluding lecture recapitulates some principles, and addresses general methodological concerns, drawing illustration from the examples presented and discussed in the preceding lectures.

Short biography:
see Speakers page



Improving the Productivity of Software Developers

Speaker: Gail C. Murphy, University of British Columbia

Description:

Regardless of how great a software system is, more is always needed: more functionality, easier to use interfaces, better program structure and so on. Meeting these needs typically requires software developers to do more: to code more, to use more libraries, to produce better analyzable specifications, to work with more other developers and designers and so on. We are quickly reaching and may have already exceeded what developers can achieve without significant improvements to the languages and tools with which they work on a daily basis. In this series of lectures, we will consider how the structure of a developer’s work and the structure of the information on which they work may provide opportunities to provide these significant improvements through such approaches as recommendation systems.

Short biography:
see Speakers page



(Re)thinking software design through concepts

Speaker: Daniel Jackson, MIT

Description:

What is the essence of software design? The premise of these lectures is that this essence lies in the concepts in terms of which the software’s behavior is articulated. The conceptual model is (in a successful system) reflected in the user interface and forms the basis of the abstractions in the code. Arguably, once the conceptual model has been determined, the game is largely over: if the conceptual model is elegant, simple and powerful, then the resulting system is likely to be too. But if the conceptual model is clumsy, complex and incoherent, the system’s development may not even reach completion.

Topics will include: the idea of concepts, and how they are identified and invented; dependency relationships between concepts that give the feature-structure of applications; relational models of conceptual state; frequently occurring conceptual idioms; and concept-based design criteria. I’ll also talk about some case studies we’ve been doing in my research group on conceptual redesign, such as our work on Gitless, an attempt to address the conceptual problems in the Git version control system.

Short biography:
see Speakers page



An effective software process

Speaker: Bertrand Meyer, ETH Zurich

Description:

A whole branch of software engineering concerns itself with studying software processes and proposing new variants. The topic can be pretty boring but took on a new life with the development of agile methods and the non-standard process models they propose. In this set of lectures I will discuss a variety of models, traditional and agile, propose a mathematical formalization for discussing and improving process models, and introduce a model that combines the best of approaches known today.

Short biography:
see Speakers page



Automata-Theoretic Verification

Speaker: Moshe Y. Vardi, Rice University

Description:

Algorithmic verification is one of the most successful applications of automated reasoning in computer science. In algorithmic verification one uses algorithmic techniques to establish the correctness of the system under verification with respect to a given property. Automata-theoretic Model checking is an algorithmic-verification technique that is based on a small number of key ideas, tying together graph theory, automata theory, and logic. In this self-contained tutorial I will describe how this "holy trinity" gave rise to algorithmic-verification tools, and discuss its applicability to both finite-state and infinite-state systems.

Short biography:
see Speakers page



Systematic Mining of Software Repositories

Speaker: Harald C. Gall, University of Zurich

Description:

The replication of studies in mining software repositories (such as those published in MSRconf.org) has become essential for providing empirical answers to fundamental software engineering problems. The challenge is to compare the many mining techniques or assess their findings across a multitude of projects. It has been shown that very few of these mining studies can be easily replicated. However, their replication is just as fundamental as the studies themselves and it is one of the main threats to validity that they suffer from.

In this seminar, we show how to systematically mine software repositories to support empirical software engineering and how to alleviate the problem of replicating mining studies. Further, we present platforms such as our SOFAS or MiningHub that enable systematic mining. SOFAS, for example, is a platform that enables a systematic and repeatable analysis of software projects by providing extensible and composable analysis workflows. These workflows can be applied on a multitude of software projects, facilitating the replication and scaling of mining studies.

We show how and to which degree systematic mining and replication of studies can be achieved. We also characterize how studies can be enriched to deliver even more comprehensive answers by extending the analysis workflows provided by the platform.

Short biography:
see Speakers page



Principles of Reactive Programming

Speaker: Erik Meijer, Applied Duality, Inc.

Description:

As computers are moving further apart in space, we can no longer ignore the fundamental effects of programming: exceptions, asynchrony, and dimensionality. In these lectures we will explore the consequences of making these effects explicit in our code and present new programming language constructs and APIs to help developers handle them in their code. In particular we will focus on the language-independent Reactive Extensions (Rx) library that re-implements familiar operators over synchronous collections such as map, filter, fold, … over asynchronous data streams.

Short biography:
see Speakers page



The serious side of coding for fun

Speaker: Judith Bishop, Microsoft Research

Description:

Learning to code can be made more effective and sustainable if it is perceived as fun by the learner. Code Hunt uses puzzles that players have to explore by means of clues presented as test cases. Players iteratively modify their code to match the functional behaviour of secret solutions. They are essentially re-engineering from test cases instead of coding to a specification. In this tutorial I’ll introduce Code Hunt and its underlying technologies, Pex, Z3 and Microsoft Azure, but concentrate on the software engineering challenges presented by a browser-based game that is used by millions of people world-wide. Some of these are how to keep the game refreshed, how to analyse statistics, and how to run fair competitions based on the game. Opportunities for collaboration with the Code Hunt team will be mentioned.

Short biography:
see Speakers page


Chair of Software Engineering - ETH Zurich