• Intel
  • Microsoft
  • Google
  • Sun Microsystems
  • BT
  • IBM
  • Yahoo! Inc.
  • Zimbra
  • Atlassian Software Systems
  • Disney
  • EnterpriseDB
  • Etelos
  • Ingres
  • JasperSoft
  • Kablink
  • Linagora
  • MindTouch
  • Mozilla Corporation
  • Novell, Inc.
  • Open Invention Network
  • OpSource
  • RightScale
  • Silicon Mechanics
  • Tenth Planet
  • Ticketmaster
  • Voiceroute
  • White Oak Technologies, Inc.
  • XAware
  • ZDNet

Sponsorship Opportunities

For information on exhibition and sponsorship opportunities at the conference, contact Sharon Cordesse at scordesse@oreilly.com.

Media Partner Opportunities

Download the Media & Promotional Partner Brochure (PDF) for more information on trade opportunities with O'Reilly conferences, or contact mediapartners@oreilly.com.

Press and Media

For media-related inquiries, contact Maureen Jennings at maureen@oreilly.com.

OSCON Newsletter

To stay abreast of conference news and to receive email notification when registration opens, please sign up for the OSCON newsletter (login required).

Contact Us

View a complete list of OSCON 2008 Contacts

Encapsulation & Its Discontents: Applying Normal Accident Theory to Software Design

Location: D139/140 Level: Novice
Average rating: **...
(2.33, 6 ratings)

Normal Accident Theory (NAT) describes the accident potential of many
different systems. Initially developed by Charles Perrow in 1979, it is covered in his classic book, Normal Accidents (first published by Basic Books in 1984). It turns out that NAT is very relevant to creating more reliable programs. In fact, the theory predicts some well-established results in OOD, such as “favor object composition over class inheritance” (Design Patterns, Gamma et al.).

According to a NAT-based analysis, however, encapsulation can actually be dangerous — specifically when factoring out common functionality. An apparently trivial, generic piece of code, when called from multiple parts of a program, can tightly couple unrelated subsystems. This can result in unexpected interactions, leading to poorly understood behavior and subtle bugs.

In the presentation, we term such shared code a PORV valve, in honor
of a critical component in the failed nuclear reactor at Three Mile Island. As described by Perrow, a fault in the PORV valve unintentionally connected parts of the plant that were not in a direct operational sequence with each other. The resulting unexpected interactions confused the operators, ultimately turning a mere incident into a serious accident. Utilizing the Adapter pattern can help correct such “PORV valves” in your code.

The talk focuses on what NAT is, how to apply it practically to your
projects, and how the advanced object models of modern programming
languages help in the process. Specifically, we use Python as the
example language, and discuss the experiences that led us to realize
NAT’s potential in our own work.

George Belotsky

CinematX Digital Inc.

George Belotsky is Chief Scientist at CinematX Digital, a company exploring the combination of virtualization and distributed video. He has done extensive work on high performance Internet servers as well as hard real time and embedded systems. His technology interests include Python, C++ and Linux. George has written articles for O’Reilly Network, LinuxWorld and the Linux Journal. His article on C++ memory management made the best of 2003 list on O’Reilly ONLamp. George has also presented at PyCon, LinuxWorld and other venues.

Heath Johns

CinematX Digital Inc.

Heath Johns is the CTO at CinematX Digital, a company exploring the combination of virtualization and distributed video. He likes to take a long view of technology and how it can shrink the distance between people; the concepts of secure computation and human-friendly languages like Python figure heavily in his thoughts about this. His other tech interests include network protocols (with two O’Reilly Network articles published on the topic), and Lisp.

OSCON 2008