Logical beats sequential






Often,  “we do this and then we do that” is just a lazy way of stating “to do that, we must have achieved this.” The second form is more general than the first, since there may be many things you can “do” to achieve a certain condition. The extra generality is welcome for software requirements, … Read more




New paper: optimization of test cases generated from failed proofs






Li Huang (PhD student at SIT) will be presenting at an ISSRE workshop the paper Improving Counterexample Quality from Failed Program Verification, written with Manuel Oriol and me. One can find the text on arXiv here. (I will update this reference with the official publication link when I have it.) The result being presented is … Read more




New book: the Requirements Handbook






I am happy to announce the publication of the Handbook of Requirements and Business Analysis (Springer, 2022). It is the result of many years of thinking about requirements and how to do them right, taking advantage of modern principles of software engineering. While programming, languages, design techniques, process models and other software engineering disciplines have … Read more




Introduction to the Theory of Programming Languages: full book now freely available






Short version: the full text of my Introduction to the Theory of Programming Languages book (second printing, 1991) is now available. This page has more details including the table of chapters, and a link to the PDF (3.3MB, 448 + xvi pages). The book is a survey of methods for language description, particularly semantics (operational, … Read more




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




Tomorrow (Thursday) noon EDT: ACM talk on requirements






In the software engineering family requirements engineering is in my experience the poor cousin, lagging behind the progress of other parts (such as design). I have been devoting attention to the topic in recent months and am completing a book on the topic. Tomorrow (Thursday), I will be covering some of the material in a … 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