The grandmaster David Bronstein said: “the essence of Chess is thinking about what Chess is.” In a similar vein, the focus of this blog is thinking about what software engineering is, especially in its role in developing cyber-physical systems. It’s this role that motivates the blog’s title—“The World and the Machine”—because a cyber-physical system combines the physical world with computing machinery as parts of one system. The focus is on the nature and character of these systems, and on the substantial tasks of comprehension, conception, structuring and modelling that logically must precede formal work. Formal mathematical topics are not discussed; nor are technical concerns of programming platforms and languages. Calculation and proof are profitless until you know very confidently what you should be calculating or proving.
Software engineering offers plentiful challenges to understanding and effective practice. Many terms in common use have no clear agreed meanings. What is a system? What is a requirement? What is a software specification, and how is it related to requirements? What is software architecture? What is a model? Many development process questions have no agreed answer. Can system development be seamless—that is, can it be based on one structure common to the artifacts of all development stages? Should design be top-down, or bottom-up? Are system requirements use-cases? Can requirements be complete? Is stepwise refinement practicable? How are requirements related to software architecture?
The blog medium allows me freedom to think and write incrementally, to change the content of posts, to correct my errors, and to reconcile incompatibilities. I hope to make each post self-sufficient, but by the nature of the subject there will be many connections. The page "Blog Structure" gives a rough map of the landscape as I see it, and links between individual posts should be useful.
Many concepts and ideas in this blog spring from the Problem Frames approach to software engineering and its enlargement in my recent work. I believe that some of the ideas here can also be helpful in the context of other approaches, and I hope that this blog—and readers’ comments—will motivate, embody and record further progress. I invite your comments on every post: whether in agreement or rebuttal, I hope you will have found yourself provoked to fruitful reflection.