Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Four Decades of Software Engineering, are Changes Coming?

Four Decades of Software Engineering, are Changes Coming?

Leia em Português

This item in japanese

In his latest blog, Jean Bezivin, Professor emeritus at Nantes University, retraced the history of software engineering over the last four decades as he sees radical changes coming. Jean sees three major ruptures in Software Engineering that have happened:

The first one was discussed at the Garmisch NATO meeting in October 1968. The emergence of complex systems obliged to realize that the period of the individual (and isolated) programmer was over, and that the target was “large programming systems of more than 30,000 instructions, produced by more than 25 programmers, in more than 6 months’ development time, with more than one level of management”.
A second important rupture could be observed in the early 80’s with the paradigm change from procedural to object-oriented programming.
A third rupture was triggered by the OMG MDA initiative in November 2000.

Each rupture seems to be characterized by some inadequacy of the current practices with the problems that our industry is trying to solve. For instance, Object Oriented languages emerged when the procedural paradigm could not easily describe real world situations, allow large scale software reusability, or enable the development of stable software architectures.

Today, he sees new factors emerging that have the potential to redefine software engineering. For instance, "the end-user programmer" , the specialization of software engineering tasks, the rapid arrival on the market of huge amounts of software applications in so-called application stores (Apple, Google, etc.), the increasing diversity of technological solutions and the need to make applications interoperate at a reasonable cost, new technological evolutions (e.g., cloud computing). For him, we are heading towards a context where:

there will be a huge number of rapidly evolving interacting applications, often written by different people in a number of different languages, and usually not developed with classical software development life-cycle. Each of these applications has a specific data model, state model and event model.

In order to predict the rupture(s) to come, he provides a hint:

The invariant that may be noticed in practices and technology ruptures is that they are very often related to language issues [as] ... the practical and theoretical core of software engineering is language engineering.

He concludes his post by providing some potential direction for the evolution of today's programming languages:

The key [...] probably lies in the collaboration between professional and end-user programmers, but do we need to invent a specific software engineering set of practices for end-users?
Textual languages stay very important but many kinds of visual languages are appearing and some languages offer an abstract syntax with various concrete syntaxes, sometimes textual, tabular or visual. These languages are defined not only by grammars, but also by metamodels, schemas, ontologies, etc.
More than inventing new languages, the difficulty will be in establishing precise and operational semantic relations between all these DSLs that will constitute the core of the new software engineering practices for the 21st century. Language interoperability will anyway be an important part of the corresponding landscape.

Is an evolution of software engineering long overdue? If yes, has it started? what will software engineering look like in 5 years? 

Rate this Article