• the market, which might demand different features today from those you're building;
• the technology, which makes new things possible by changing all the time but also sets limits that we might not discover until we're some way through the project; and
• the process itself.
Stephen J. Mellor is chief scientist of the Embedded Systems Division at Mentor Graphics. He is active in the Object Management Group, chairing the consortium that added executable actions to the UML, and in specifying MDA. He is also a signatory to the Agile Manifesto and chair of IEEE Software's Advisory Board. Contact him at firstname.lastname@example.org; www.projtech.com.