{"id":270,"date":"2009-03-03T18:14:20","date_gmt":"2009-03-03T23:14:20","guid":{"rendered":"http:\/\/vgable.com\/blog\/2009\/03\/03\/vincents-notes-end-to-end-arguments-in-system-design\/"},"modified":"2009-03-03T18:14:22","modified_gmt":"2009-03-03T23:14:22","slug":"vincents-notes-end-to-end-arguments-in-system-design","status":"publish","type":"post","link":"https:\/\/vgable.com\/blog\/2009\/03\/03\/vincents-notes-end-to-end-arguments-in-system-design\/","title":{"rendered":"Vincent&#8217;s Notes: End To End Arguments in System Design"},"content":{"rendered":"<p>At <a href=\"http:\/\/mjtsai.com\/blog\/2009\/02\/27\/10-papers-every-programmer-should-read-at-least-twice\/\">Michael Tsai&#8217;s suggestion<\/a> I listened to the paper <cite><a href=\"http:\/\/web.mit.edu\/Saltzer\/www\/publications\/endtoend\/endtoend.txt\">End-To-End Arugments in System Design<\/a><\/cite> while driving.  (Fair warning: Since I was also driving while listening, I didn&#8217;t absorb everything as well as I should have.)<\/p>\n<p>The thrust of the paper is that you generally want to make your low level components (aka libraries) simpler then you think. Counter-intuitively, building extra reliability into a low-level component does <em>not<\/em> (usually) make it easier to build a reliable application that uses the component.  That&#8217;s because the application has to work around all sorts of other errors from different components.  So it must have error handling code.  Making one low level component &#8220;smarter&#8221; does not change this.  But it does make the component more complex.  And some of that complexity is duplicate code that does just what the application&#8217;s error handling code does.<\/p>\n<p>The &#8220;End to End&#8221; in the title of the paper is from a file transfer application having to do an &#8220;end to end&#8221; check to make sure that the files at both end of the transmission are the same.<\/p>\n<blockquote>\n<h3>Conclusions<\/h3>\n<p>End-to-end arguments are a kind of &#8220;Occam&#8217;s razor&#8221; when it comes to<br \/>\nchoosing the functions to be provided in a communication subsystem.<br \/>\nBecause the communication subsystem is frequently specified before<br \/>\napplications that use the subsystem are known, the designer may be<br \/>\ntempted to &#8220;help&#8221; the users by taking on more function than necessary.<br \/>\nAwareness of end-to-end arguments can help to reduce such temptations&#8230;.<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>At Michael Tsai&#8217;s suggestion I listened to the paper End-To-End Arugments in System Design while driving. (Fair warning: Since I was also driving while listening, I didn&#8217;t absorb everything as well as I should have.) The thrust of the paper is that you generally want to make your low level components (aka libraries) simpler then [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[364,158,169,363],"class_list":["post-270","post","type-post","status-publish","format-standard","hentry","category-programming","tag-error-correction","tag-optimization","tag-software-development","tag-vincent-notes"],"_links":{"self":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts\/270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/comments?post=270"}],"version-history":[{"count":0,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts\/270\/revisions"}],"wp:attachment":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/media?parent=270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/categories?post=270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/tags?post=270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}