Cold War comfort on software engineering’s birthday
Yesterday's issues at 40
Forty years ago today, at the height of the Cold War, around 50 computing experts gathered in the southern German market town of Garmisch to change history.
With the Soviet Union and Warsaw Pact glowering at the west, the participants - drawn both from academia and industry - met under the auspices of the North Atlantic Treaty Organization (NATO) and spent four days discussing the problems of producing reliable software for the rapidly-growing population of digital computers.
The event was called the NATO Software Engineering Conference because the phrase "software engineering" was, according to the official proceedings, "provocative, in implying the need for software manufacture to be based on the types of theoretical foundations and practical disciplines, that are traditional in the established branches of engineering".
It was the birth of a phrase that has today become pervasive.
Exactly who thought up the phrase is lost in the mists of time, but it is generally attributed to Friedrich "Fritz" Bauer, professor emeritus at Munich University of Technology and the chairman of the Garmisch conference.
The argument over whether software production can legitimately claim to be an engineering discipline continues to this day and, even after 40 years, the formal qualification "software engineer" still does not exist despite hundreds of thousands of programmers claiming the title.
Against the background of the continuing Cold War and acutely aware of the strategic significance of computer technology, the NATO Science Committee had tossed around the idea of holding an event to look into software production for a couple of years.
From bullets to bytes
In 1968, the year the Soviets put down the Prague uprising, programming was still a very young discipline. Knowledge of good practice was beginning to emerge, but it was still far from clear how the fast-growing demand for software would be met.
It was, after all, only 20 years since Tom Kilburn at Manchester University had written what is usually thought of as the first program and only ten years since the word "software" had first appeared in print - in an article by the statistician John Tukey. So, at the time, programming was still seen as an arcane pursuit more akin to alchemy or magic than engineering. The Garmisch conference changed this forever and paved the way for software engineering to become the pervasive discipline it is today.
It was an unusual gathering because it brought researchers and teachers together with industrialists and commercial programmers. So Turing Award winners such as Edsger Dijkstra, Peter Naur and Alan Perlis sat next to programmers from IBM and Bell Labs and software entrepreneurs.
The discussions were divided into three main streams - design, production, and service - with an additional stream on "special topics" that covered education and software pricing.
With one key exception, most of the issues raised at Garmisch are as relevant today as they were in 1968. The exception was the hot issue of pricing software separately from hardware - so-called unbundling. The following year IBM preempted a potential anti-trust suit by doing just this - pricing its hardware and software separately. It was a move widely seen as the beginnings of an independent software industry.
Other topics discussed at Garmisch continue to preoccupy software producers even now. They included how to build reliable software for large projects and deliver it on time, how to devise proper education paths for programmers, and what methods and technologies might make programming easier.
The solutions put forward fitted well with the theme of software engineering in that they sought to move software production towards being a manufacturing process. Key to this was the concept of the software component - the subject of a presentation by another eminent software pioneer Doug McIlroy of Bell Labs.
"Coming from one of the larger sophisticated users of machines, I have ample opportunity to see the tragic waste of current software writing techniques," McIlroy began. "At Bell Telephone Laboratories, we have about 100 general purpose machines from a dozen manufacturers. Even though many are dedicated to special applications, a tremendous amount of similar software must be written for each.
"What I have just asked for is simply industrialism, with programming terms substituted for some of the more mechanically oriented terms appropriate to mass production. I think there are considerable areas of software ready, if not overdue, for this approach," he went on.
McIlroy's later contributions to the then-embryonic Unix operating system put these ideas into practice and the concept of components has, of course, since become enshrined in modern software production.
But despite the improvements made in software production in the last 40 years, there still remains a lot of work to be done to fully realize the ambitions of the Garmisch conference. Brian Randell emeritus professor of computing at Newcastle University and co-editor of the Garmisch proceedings in an interview with The Register told us that while there has been some progress, a great deal more work remains to be done.
"The big change has been the growth of mass-installed packaged software - which did not exist at the time of Garmisch," Randell said. "We have seen the power of evolution work very well to create a wonderful variety of high-quality software. But in the area of custom-built software - the focus of the 1968 conference - we still face huge problems and there are still horror stories about large projects which have failed."
Randell acknowledged that the problems software engineers are trying to solve now are much more complex than they were 40 years ago - but he is disappointed that there has not been more progress in three key areas.
"I would like to see better program language and development environment support - it is too fragmented and there are around 8,000 different programming languages which is very divisive.
"I would have liked to have seen more extensive use of components, and I would like to see more progress in multiprocessing. There are a lot of vague things being said about 'multicore' these days - but you don't solve a research problem by giving it a new name."
Many of the Garmisch participants have moved on to the computer room in the sky and the rest are retired or semi-retired. But the legacy they created in a German town 40 years ago - that software production was important enough to merit serious, disciplined study - will live on for a long time. ®