"Thinking of software as a product rather than a medium in which knowledge is embodied is often a prescription for failure, because it doesn't focus attention on the true risks associated with software development [[2, 4]]. Instead, it is helpful to think of software development as a process of embodying technical knowledge and knowledge of customer needs into a coherent solution. Under this view, if we want to understand and manage the risks associated with software development, we must first focus on the translation of customer needs into project requirements and specifications. These specifications then guide the design, which is ultimately implemented in system functionality, features, and code." - The one-minute risk assessment tool, from Programming Languages Vol. 2, No. 9 - Dec/Jan 2004-2005.