The right forms of expression






If you want to know whether your_string has at least one upper-case character, you will write this in Eiffel: if  ∃ c: your_string ¦ c.is_upper then … Such predicate-calculus boolean expressions, using a quantifier ∀ (“for all”) or ∃ (“there exists”) are becoming common in Eiffel code. They are particularly useful in Design by Contract … Read more




Notations you didn’t even know you could use






Consider the following expression: ∃ c: s   ¦   moisture (c) = soft This is obviously mathematics. To express such a property in a programming language, you have to write a function containing a loop that iterates through the elements of s. Right? Wrong. The above construct is valid Eiffel. It’s a consequence of recent … Read more




This Wednesday in Nice: survey talk on the Eiffel method






The “Morgenstern Colloquium” at the University of Nice / INRIA Sophia Antipolis invited me to give a talk, next Wednesday (18 December) at 11 in Sophia Antipolis, in the aptly named* “Kahn Building”. The announcement appears here. I proposed various topics but (pleasant surprise) the organizers explicitly asked me to lecture about what I really … Read more




Adult entertainment






Sign seen in a Singapore shopping center:   Let us make sure we understand: here children are not allowed, but playing is. As a consequence such playing must be performed by non-children only. Adults welcome to play! Maybe it is actually not the intended meaning.  Instead of (and (not (allowed children)) (allowed playing)) the desired … Read more




Formality in requirements: new publication






The best way to make software requirements precise is to use one of the available “formal” approaches. Many have been proposed; I am not aware of a general survey published so far. Over the past two years, we have been working on a comprehensive survey of the use of formality in requirements, of which we … Read more




Why not program right?






(Originally published on CACM blog.) Most of the world programs in a very strange way. Strange to me. I usually hear the reverse question: people ask us, the Eiffel community, to explain why we program our way. I hardly understand the question, because the only mystery is how anyone can even program in any other … Read more




Towards empirical answers to important software engineering questions






(Adapted from a two-part article on the Communications of the ACM blog.) 1 The rise of empirical software engineering One of the success stories of software engineering research in recent decades has been the rise of empirical studies. Visionaries such as Vic Basili, Marvin Zelkowitz and Walter Tichy advocated empirical techniques early [1, 2, 3]; … Read more




Split the Root: a little design pattern






Many programs take “execution arguments” which the program users provide at the start of execution. In EiffelStudio you can enter them under Execution -> Execution parameters. The program can access them through the Kernel Library class ARGUMENTS. Typically, the root class of the system inherits from ARGUMENTS and its creation procedure will include something like … Read more




AutoProof workshop: Verification As a Matter of Course






The AutoProof technology pursues the goal of “Verification As a Matter Of Course”, integrated into the EVE development environment. (The AutoProof  project page here; see particularly the online interactive tutorial.) A one-day workshop devoted to the existing AutoProof and current development will take place on October 1 near Toulouse in France. It is an informal … Read more