Daniel M. Berry
Cheriton School of Computer Science
University of Waterloo
Waterloo, ON, Canada
After I draw lessons from the first real-life application I wrote in 1965, we are drawn to Fred Brooks's conclusion that the hardest part of software development is determining its requirements. We look at various reasons that determining requirements is so difficult. The fundamental difference between mathematical modeling and programming, each of which builds mathematical models of the real world, lies at the heart of this difficulty. This difference and our human ambitions lead us to the conclusion that there can be no long lasting software engineering silver bullet.