MichaelFeathers describes a Seam as ''a place where you can alter behavior in your program without editing in that place'' in his book WorkingEffectivelyWithLegacyCode. An excerpt of the full description is published at http://www.phptr.com/articles/article.asp?p=359417&seqNum=2&rl=1. --BrianTakita As with stone-cutting, you discover seams in your LegacyCode as you try to extract smaller gems to UnitTest from the BigBallOfMud of your LegacyCode (to extend a metaphor). There are several ways to implement a seam: * using the language pre-processor or other macro facilities of the source language * using virtual methods if working in an object oriented system * using linker options