PhD and postdoc positions in verification in Switzerland






The Chair of Software Engineering, my group at the Schaffhausen Institute of Technology in Switzerland (SIT), has open positions for both PhD students and postdocs. We are looking for candidates with a passion for reliable software and a mix of theoretical knowledge and practical experience in software engineering. Candidates should have degrees in computer science … Read more




Publication announcement: survey on requirements techniques, formal and non-formal






There is a new paper out, several years in the making: The Role of Formalism in System Requirements Jean-Michel Bruel, Sophie Ebersold, Florian Galinier, Manuel Mazzara, Alexander Naumchev, Bertrand Meyer Computing Surveys (ACM), vol. 54, no. 5, June 2021, pages 1-36 DOI: https://doi.org/10.1145/3448975 Preprint available here. The authors are from the Schaffhausen Institute of Technology … Read more




Some contributions






Science progresses through people taking advantage of others’ insights and inventions. One of the conditions that makes the game possible is that you acknowledge what you take. For the originator, it is rewarding to see one’s ideas reused, but frustrating when that happens without acknowledgment, especially when you are yourself punctilious about citing your own … Read more




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




New video lecture: distances, invariants and recursion






I have started a new series of video lectures, which I call “Meyer’s Object-Oriented Classes” (MOOC). The goal is to share insights I have gained over the years on various aspects of programming and software engineering. Many presentations are focused on one area, such as coding, design, analysis, theoretical computer science (even there you find … Read more




Getting a program right, in nine episodes






About this article: it originated as a series of posts on the Communications of the ACM blog. I normally repost such articles here. (Even though copy-paste is usually not good, there are three reasons for this duplication: the readership seems to be largely disjoint; I can use better formatting, since their blog software is more … 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




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