Thanks for your response. So its all about designing the system and reduce the riskness involved in system interactions?
That isn't it though, there are the non-functional aspects of the system that the design will need to take into account. Things like scalability, performance, etc.
For example, think of a SaaS application that handles taxes. How would you design the interactions with government systems & banks, how would security work and how would you handle performance? That's what I meant by risky areas - risk to the project success, areas that may not be well known in the solution yet and may be "moving targets". Writing out the software that implements the tax law is probably a daunting task but should be very well known (probably a giant if/else tree with basic math).