| 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... |