Michael Jackson has been a fundamental contributor to the field of software engineering.
I first learned from Michael with JSP, Jackson Structured Programming and after with JSP, Jackson System Development. I have taught several editions of my course at PUC-Rio using the JSD book.
I use to say that Michael´s writings have evolved in a truly computer science way, that is: bottom up. He started with JSP, then move to JSD, then to the great book on Software Requirements and Specifications and recently to the real abstract book: Problems Frames.
I regret that the great book on Requirements used the “and” in its title: lack of cohesion. However, this is symptomatic of the confusion that these terms bring to the software engineer.
Anyway, this note is to call your attention to a must read paper by Jackson: “Some Basic Tenets of Description”. It is short, 7 pages, and it is aimed at the “heart” of software engineering: modeling.
Let me start by the conclusion. Here Jackson brings out 3 important mantras, of his own. They are:
• "Distinguish the machine from the problem domain"
• "Don’t restrict description to the machine", and
• "State explicitly what is described".
I would add another 4, extracted from the Section titles of the article.
• “Requirements Are Not Given Properties”
• “The Model Is Not the Reality”
• “The Problem Is Not at the Interface”
• “Describing the Machine Is Not Enough”
The article is concise and right to the point. It distinguishes the machine, the problem domain (which I rather name Universe of Discourse) and explicitly points that requirements are desired needs of a set of actors, such that they must reflect a bridge from the problem domain to the machine.
p.s. In searching for the links to JSP and JSD, I found this commentary by Michael on the rationale for both methods.