From: Jonas Lindberg (jonaslin@kth.se)
Date: Tue Oct 12 2004 - 16:46:10 PDT
End-To-End Arguments in System Design
J. H. Saltzer, D. P. Reed, and D. D. Clark
Reviewed by: Jonas Lindberg
This paper discusses the "end-to-end argument" which is an argument for
designing shared lower layers to be slim and only include features that are
absolutely necessary. The authors argues extra features included in shared
functionality, in an attempt to make life easier for application
programmers, might actually become limiting or redundant in many cases.
The authors do a good job giving examples of limiting or redundant shared
functionality. A number of these examples show that functionality required
in an application in some cases by nature need to be implemented in the
actual application, making similar functionality provided by lower layers
redundant and some times even limiting. However, having redundant
functionality is not always a bad thing - in some cases it actually improves
performance.
As I see it, the most important point in this paper is that when designing a
function, it is crucial to have a solid understanding of how it will be
used. Having such understanding, the designer can include functionality that
improves performance in some cases without being limiting in other. Since it
often is hard to predict all the ways in which certain functionality will be
used and how cool features can become limiting, the argument for keeping the
design slim and modular makes sense.
How to make design trade-offs and properly divide functionality into
different layers are as of coarse as relevant today as ever. The paper
explains an argument on how to do this and it is therefore also relevant.
Especially the first half of the paper is interesting reading.
This archive was generated by hypermail 2.1.6 : Wed Oct 13 2004 - 00:46:30 PDT