Why are beneficial software engineering practices not being used effectively in the development of software systems? This question has intrigued researchers in software engineering for many years. Billions of dollars per year are spent, and a large proportion wasted, on building and maintaining software systems that are either never completed or, if completed, are of poor quality. This state of software development has led to the introduction of innovative tools and techniques to support the software development process. Initial evidence from use of these tools and techniques shows significant improvements in development productivity and software quality. However, many of these potentially beneficial tools and techniques have not been widely adopted or diffused. This research seeks to examine the reason for why this is so: What factors explain the successful diffusion of new software development techniques into practice?