Bertrand Meyer's EiffelWorld column

 
     Bertrand Meyer is the founder and Chief Architect of Eiffel Software, as well as Professor of Software Engineering at ETH Zurich, where he currently serves as chairman of the Computer Science Department.

To receive Dr. Meyer's column, sign up to request your free subscription to EiffelWorld.

Previous Columns:

The end of Configuration Management as we know it (May 2007)
Because software engineering research sometimes appears remote or even  esoteric, it is easy to forget that some ideas once considered leading-edge have forever altered, for the better, the way we produce software. Hardly a better example may be found than configuration management. Not so long ago software engineering experts had to hector programmers to use CM tools, and remind them of the dangers of disregarding that advice, as attested by the many examples of software catastrophes due to nothing more subtle than deploying version 5.2 of module A together with version 5.1 of module B, no longer compatible with its. More...
Jot at 5 (March 2007)
Not all readers of this column may be familiar yet with the Journal of Object Technology (JOT), the principal international journal on objects and components, published at ETH Zurich. As JOT (http://www.jot.fm) is now approaching its fifth anniversary you may be interested in a glimpse (adapted from a editorial of last year) into the enterprise, its goals, and its operation. More...
Eiffel is an ISO Standard (January 2007)
2006 will remain for the Eiffel community as a milestone: the year when the Eiffel language definition became a standard of the International Standards Organization (ISO). The ISO standard, released in November, is the culmination of the Eiffel standard process started five years ago within ECMA International. The first major result of that effort was the initial ECMA standard, published in June 2005 as discussed in my April 2005. More...
The Truth about Multiple Inheritance (October 2006)
Most Eiffel programmers probably don't need much convincing on this month's topic, but it is the victim of misconceptions so widely held as to justify a short clarification. Multiple inheritance has long been the target of a FUD campaign (seeding Fear, Uncertainty and Doubt) which, one must say, has been pretty effective. For fun I sometimes ask a new audience to raise their hands if they have been successfully convinced that multiple inheritance is "bad" in some sense; whether they are students or engineers, the show of hands is always impressive. More...
The Challenge of Concurrency (June/July 2006)
Concurrency is the biggest scandal in programming and it's time we did something about it. The scandal has existed for a long time but until recently it affected few people, since as a programmer you only needed concurrency if you were writing an operating system, a network controller or other such system-level software. The rest of us didn't have to worry about inadequate concurrent programming solutions -- only suffer the consequences when for no clear reason our machines hung and our connections broke. Today what has changed for programmers is not the pain but how many feel it. More...
Open EiffelStudio (April/May 2006)
On April 5 the "Big Red Button" was pushed, instantly releasing the entire source code of EiffelStudio: 4200 classes and a million lines of code (out of which 1100 classes and 300000 lines for libraries). For detailed figures see http://tinyurl.com/qfnwz; there's even the movie version at http://tinyurl.com/mkwfp (specifically, the last few minutes). You can see all the code, and compile it; you'll find all that's needed, including the configuration management repository, discussion groups, lists of exciting projects, wikis etc. at http://eiffelsoftware.origo.ethz.ch/. The source code itself is the result of about 20 years of work devoted to building a great object-oriented software development environment. More...
Values and references (March 2006)
Among the most interesting language adaptations provided by the ECMA standard is a better semantics for expanded types, addressing a central problem of object-oriented programming. These ideas have not been publicized that much yet, but they are worth taking a look at and, better yet, are fully implemented in the forthcoming release of EiffelStudio. More...
What will remain of Extreme Programming? (February 2006)
It is difficult after reading "Extreme Programming Refactored: The Case against XP" by Matt Stephens and Doug Rosenberg (Apress, 2003) to suppress a smile the next time you hear extreme praise for XP. Placed under the patronage of Groucho Marx, the book takes delight in constrasting the hype of those it calls "the Extremos" with the more prosaic results they produce. More...
Defense and illustration of Wikipedia (January 2006)
This note, more precisely Part One, was prepared in late December of 2005 as a reaction to a critique of Wikipedia by four well-known computer scientists. Their article highlights, Cassandra-style, all that can go wrong with the Wikipedia concept of an encyclopedia produced by an iterative "community process" allowing anyone to edit any entry. A scary prospect indeed. As my critique of their critique acknowledges, it's hard to find fault with their cogently argued analysis -- except for one detail: in its eagerness to paint a theoretical picture of Wikipedia as a disaster waiting to happen, it skipped checking the real Wikipedia, which would have revealed that the disaster has not happened. More...
Open-source Eiffel Downloads (Nov/December 2005)
Over the past few months a number of research efforts and plain student projects at ETH have yielded software products that should be of great practical interest to the readers of Eiffel World. All are freely downloadable. They're also all open-source software: their authors will be delighted if others want to participate in continuing the development. More...
Business plus pleasure (Sept/October 2005)
Our topic for this month is a set of distinct but closely connected innovations in the recently adopted Eiffel standard, already implemented in release 5.6 of EiffelStudio. They illustrate how carefully designed language mechanisms can, in the Eiffel spirit, reconcile strict methodological principles with user convenience, insistence on consistency and generality, and an ever present concern to keep the language simple. More...
Component = Contract + Implementation+ Proof Obligation (August 2005)
If you take a quick look at it, this EiffelWorld column will seem rather theoretical. In fact it's not; I'd like to explain what (in my view) the most basic notion of computer science, "program", means. Since we all know by now that a software system doesn't do one thing but provides an array of useful mechanisms -- in Eiffel, through classes and their features -- we'll deal right away with a more general notion: "component". In pre-O-O programming a component is a program; in the object world it is a feature for the present discussion, but the same ideas apply to classes. More...
Complete contracts through models (July 2005)
While this column often touches on general issues of software engineering and the IT industry, I will this time address a more technical question, which many people ask in connection with Design by Contract. It's the matter of how to formulate contracts that say not just the truth and only the truth, but all the truth, specifying all the relevant properties of a class. We may call them "complete contracts". It is widely believed that complete contracts are not possible because of the simplicity of the assertion language in Eiffel (boolean expressions plus the "old" notation). Here I intend to show otherwise. More...
The next programming frontier (June 2005)
Comparing the general state of programming today to what most people practiced twenty, fifteen or even ten years ago, no one can deny that things have improved. Even for those who don't program in Eiffel, the level of abstraction has risen a bit. We reason less operationally and more statically; as an example that will appear obvious only to those who did not live through the pre-structured-programming days, we shed the goto style of reasoning -- "When we reach that label, we are coming from that place, so it must be the case that... wait, we could also be coming from that other More...
The power of simplicity (May 2005)
The best defense against falling prey to technology fashion is to be skeptical of complex solutions. Is the complexity warranted? Sometimes it is, but often it's just a smokescreen to hide the existence of simple and effective answers. Take the basic idea of object technology: to use the power of software modeling techniques -- essentially, abstract data types -- to describe systems of just any kind. The idea was there from the beginning, and Eiffel took it to its full development thanks to Design by Contract (and multiple inheritance, genericity, deferred classes, Uniform Access, More...
Towards an Eiffel standard (April 2005)
Some readers of EiffelWorld will probably have heard of the international standardization effort currently proceeding around Eiffel. Here is the story. A standard provides critical protection for users of a technology: a long-term guarantee of stability and availability. For the Eiffel standard we decided to go through ECMA, an international organization based in Switzerland (http://www.ecma-international.org). ECMA is known in the industry as the originator of many standards that lie at the core of computer technology, More...
Write it right or right the wrongs? (March 2005)
In the continued search for ways of making systems that we can really trust, there's long been two opposing trends: pushing for better techniques and tools to produce software that will work the first time around ("Write it right"); and hoping for tools that, accepting programs have bugs, will catch them ("Right the wrongs").Forty years ago (following some early insights of Alan Turing) researchers started to investigate "program proving". After a while they accepted that you can't prove a program unless it's been written right from the start with that goal in mind More...
Real programmers don't use assertions (February 2005)
Yes, it's hard to believe (this is 2005!), but there are still people, many in fact, who allege that contracts are a good idea in principle but that you just can't convince programmers to use them. You won't hear this in Eiffel circles -- Eiffel programmers just use Design by Contract, apparently not knowing they're not supposed to be able to -- but they're common elsewhere. At a recent NSF workshop on software verification in California, several speakers, some of them quite august, repeated this canard. More...
Testable, Reusable Units of Cognition (December 2004/ January 2005)
The educational content of a technical topic consists, ultimately, of elementary chunks of knowledge. Identifying and classifying such units - Testable, Reusable Units of Cognition, or "Trucs" - serves to understand the topic better, and can be useful for teaching a class on the topic, writing a textbook or course notes, defining a standard curriculum, preparing exam questions, assessing job candidates' claims that they master the topic, and in general to compare and consolidate educators' understanding of the area. Trucs are similar to "design patterns" More...
Teaching programming with Eiffel (November 2004)
Meant for the most demanding industry applications, Eiffel has always been used for education too. There was a lull in the late nineties because of the forced march to Java in many universities; with the Java wave past and a return to reason, we are seeing a considerable surge of interest in Eiffel for teaching programming. The expressiveness of the language, the power of Design by Contract mechanisms, the focus on simplicity, combined with the attraction of the environment, the availability on every platform that a student may want to use More ...
To conform or to convert? (October 2004)
Can you assign the value 3 to a "real" variable? In most programming languages the answer is yes, but only as a kind of special, somewhat shameful trick. In an object-oriented context we might be tempted to believe that inheritance will take care of the issue, but if the temptation lasts much longer than half a minute it's time for a refresher course in object technology. Polymorphism (say attaching a value of type SAVINGS_ACCOUNT to an entity of type ACCOUNT) doesn't change any objects; conversion does More ...
Test or spec? Test and spec? Test from spec! (September 2004)
Which came first? As an intermediate result towards a more general research goal, it has recently been demonstrated that the egg precedes the omelet. A full proof falls beyond the scope of this modest EiffelWorld column, but here is the idea: you can construct the omelet from the egg, but not the egg from the omelet. (The chicken is covered by a separate lemma.) The reader will already have jumped mentally to an important special case; for omelet read test, and for egg read specification, particularly in the form of Eiffel contracts More...
Offshore Development: What does it mean for software engineering? (August 2004)
The world of software engineering is never dull. Like (I am sure) many readers of EiffelWorld, I like to watch what's going on, both the day-to-day events and the deeper trends, reported or not by the press. The editors have invited me to share some of these observations with their readers; it's a great pleasure to accept. To kick off this short column it's appropriate to reflect on a trend that, as much as any technical development, is affecting almost all aspects of software engineering: offshore development More...