In software development, the edge cases are hardly every fully documented or understood. That is because software is so malleable that there are so many different input / output combinations. Other engineering professions are much more constrained on their input.