Review: End-to-End Arguments in System Design

From: Robert Danek <rdanek_at_sympatico.ca>
Date: Wed, 13 Sep 2006 23:39:12 -0400

Paper: End-to-End Arguments in System Design by Saltzer, Reed, and

Clark.

Name: Robert Danek.
Course: CS2209, Fall '06.

The paper "End-to-End Arguments in System Design" proposes a
design philosophy in which functionality that is
traditionally developed as part of low-level modules in a
distributed system should be omitted from those modules.
Instead, the onus should be placed on the higher-level
application that builds on top of those modules to supply the
necessary functionality.

The main argument supporting this design philosophy asserts that when a
module includes the low-level function, it may not be able to
implement the functionality exactly as required by the
higher-level application; this means that the application will
have to implement its own version of the function. Rather than
duplicating the function in both the distributed system module
and the high-level application, the application should be given
sole responsibility for implementing the function.

One weak argument for the end-to-end philosophy that the
authors make is that by providing lots of functionality in
lower-level components, applications that do not require that
functionality will be forced to use -- and pay for -- it anyway.
This seems more like an argument for increasing the flexibility
of what functionality can be enabled in lower-level components as
opposed to an argument for using an end-to-end approach.

On the positive side, the authors do not always advocate
that a strict end-to-end approach is best. They suggest that there
are cases where assigning certain functionality to lower-level
modules may be beneficial, in particular for performance reasons.
Received on Wed Sep 13 2006 - 23:39:22 EDT

This archive was generated by hypermail 2.2.0 : Thu Sep 14 2006 - 01:24:23 EDT