The main problem was that in software, requirements were often not truly knowable at the get-go of a project, so all of the meticulously crafted dependencies and assumptions were often wrong, and the business needs would change faster than the software project could keep up.

