What's wrong with Git? A conceptual design analysis De Rossi & Jackson Onward! 2013 We finished up last week talking about the how to find good concepts / abstractions in a software design and what good modularization looks like. Today's paper jumps 40+ years to look at some of those issues in a modern context … Continue reading What’s wrong with Git? A conceptual design analysis
Tag: Software Engineering
Mostly posts relating to software design and architecture.
A design methodology for reliable software systems
A design methodology for reliable software systems Liskov 1972 We've come to the end of Liskov's list. The final paper is by Barbara Liskov herself, on the question of how best to go about designing software systems so that we can have some confidence they will work. The unfortunate fact is that the standard approach … Continue reading A design methodology for reliable software systems
Programming with Abstract Data Types
Programming with Abstract Data Types Liskov & Zilles, ACM SIGPLAN Notices, 1974 This is paper 6/7 from Liskov's list, and it's by Barbara Liskov herself. What an enormous impact this paper has had on how we program today. Has there been any single advance in programming languages since this work (42 years ago) which has … Continue reading Programming with Abstract Data Types
Protection in programming languages
Protection in programming languages Morris Jr., CACM 1973 This is paper 5/7 on Liskov's list. Experienced programmers will attest that hostility is not a necessary precondition for catastrophic interference between programs. So what can we do to ensure that program modules are appropriately protected and isolated? We still need to allow modules to cooperate and … Continue reading Protection in programming languages
Hierarchical program structures
Hierarchical Program Structures Dahl and Hoare, 1972 We continue to work our way through Liskov's list. 'Hierarchical program structures' is actually a book chapter, and is notable for defining a 'prefix' mechanism that looks awfully like a form of class inheritance, paving the way for hierarchical program structures (i.e. Class hierarchies). The main takeaway for … Continue reading Hierarchical program structures
Information distribution aspects of design methodology
Information distribution aspects of design methodology Parnas, 1971 We're continuing with Liskov's listthis week, and today's paper is another classic from David Parnas in which you can see some of the same thinking as in 'On the criteria....' Parnas talks about the modules of a system (for contemporary feel, we could call them 'microservices' once … Continue reading Information distribution aspects of design methodology
Program development by stepwise refinement
Program development by stepwise refinement Wirth, CACM 1971 This is the second of Barbara Liskov's 7 'must-read' CS papers. Wirth's main point is that we have a tendency to focus far too much on mastering the syntax and style associated with a particular programming language, and nowhere near enough time on the process by which … Continue reading Program development by stepwise refinement
Go to statement considered harmful
Go to statement considered harmful Dijkstra, CACM 1968 It sounds like the Heidelberg Laureate Forum this summer was a great event. Johanna Pirker was there and took notes on Barbara Liskov's talk, including 7 papers that Liskov highlighted as 'must reads' for computer scientists. I'm sure you've figured out where this is going... for the … Continue reading Go to statement considered harmful
Hints for computer system design
Hints for Computer System Design Butler Lampson, 1983 If there's been an unifying theme for The Morning Paper posts over the last couple of weeks, it's probably this: learning from the hard-won expertise of some of the greats in our field. So it seems fitting to end this run of papers with Butler Lampson's "Hints … Continue reading Hints for computer system design
The Rise of Worse is Better
Lisp: Good News, Bad News, How to Win Big Richard Gabriel, EuroPal 1990 While John Hughes was lamenting that the world at large didn't understand the benefits of functional programming, Richard Gabriel was considering the reasons for the difficulties within the Lisp community: "Lisp has done quite well over the last ten years... yet the … Continue reading The Rise of Worse is Better