Out of the Tar Pit
📜 Abstract
Complexity is the single major difficulty in the successful development of large-scale software systems. Existing design principles and art methodologies (in particular as they relate to decomposition) do not adequately address all the major causes of complexity - in particular state, which is a major source of complexity in this context, is not handled adequately. By analyzing the different causes of complexity we aim to find a set of approaches to software design which minimize complexity, especially that caused by state. In developing our approaches we draw heavily on previous work in formal methods and functional programming and our major conclusions are that formal methods and functional programming have a large role to play in the development of these approaches. In fact we encourage the use of functional programming and formal methods, but recognize that these are not by themselves sufficient. We conclude that the main components in a programming system should be split on the basis of dealing with state, control, and logic - and we show that this may be done regardless of the paradigm in which one is working.
✨ Summary
The paper “Out of the Tar Pit” by Ben Moseley and Peter Marks is highly influential in the realm of software architecture due to its discussion on complexity management in the development of large-scale software systems. Despite not being published in a major journal, the concepts from the paper found significant traction in academic and industrial settings, influencing the way many think about handling complexity, particularly state and control in programming. The paper is often referenced in discussions around software architecture, functional programming, and system design principles.
In terms of specific references, the concepts introduced have been echoed in various platforms and discussions on software design patterns, encouraging separation of state, control, and logic to mitigate complexity. However, due to its mode of distribution and target audience (largely academic and professional development communities), formal citations in prominent research papers are relatively sparse.
- Hickey, R. “The Value of Values” (https://www.infoq.com/presentations/Value-Values-Rich-Hickey/), a presentation where the author discusses related principles introduced in Clojure and functional programming.
- “Domain Modeling Made Functional” by Scott Wlaschin (https://fsharpforfunandprofit.com/books/), a book that reflects similar ideas in the context of functional programming.
Overall, the paper has provided foundational insights into managing software complexity, especially through leveraging functional programming and has shaped discourse in modern software development practices, albeit more through community-driven adoption rather than traditional academic routes.