Software Structures: A Careful Look - Lorge Parnas, David (IEEE software, 2018)
In the half century since Edsger Dijkstra published "The Structure of the 'THE'-Multiprogramming System," it has become clear that the ability to design a software system's structure is at least as important as the ability to design efficient algorithms or write code in a particular programming language. Although the word "structure" appeared in the paper's title and was used seven more times, Dijkstra never defined the term. Closer examination revealed that he was discussing at least three distinct structures. His failure to define "structure," or to clearly distinguish the structures that were important in his software, has led many to confuse those structures. This article aims to clarify what those structures are, their differences, and each one's importance.