Software security, safety, reliability, availability, serviceability, and similar areas have always been the “soft underbelly” of the software development industry. The author of this paper calls on the field to create a “building code” for building software. The paper includes many examples of code and related works in construction and other industries. I would like to point out two major differences between construction, as an example, and computer software technologies, which makes this an elusive comparison.
The paper overlooks the fact that basic scientific and engineering goes back much further than computer technology. People have been building shelters, homesteads, and agricultural and hunting tools since the Stone Age, as early as three million years ago. This means that humans have been collecting information about how to build and use these and other things they need for survival, and passing that knowledge on to as many as 100,000 generations, assuming an average of 30 years per generation. This is the foundation of our current level of scientific knowledge and engineering know-how in “hard” technology areas such as construction. If we date the origin of computing technology to the 19th century difference engine invented by Charles Babbage (often called the father of the computer), then the programmable computer as we know it is only about 150 years old.
Software is very unlike objects for which building codes have been built in the past. There are infinitely many ways to build most programs, and there are numerous alternative implementations (building procedures) of the same program, probably many more than for any building. If you test this in a programming class in an undergraduate software engineering program, you’ll find that there are as many implementations of a solution to a given problem as there are students, assuming no cheating.
While the author’s clarion call is to be applauded from a software engineering point of view, the form that any advance in this area might take is very hard to foresee.