This is what agile was created to solve. It was an acceptance of the reality and an attempt to live with that rather than trying to bend it to your will.
Agile does not exclude different roles, on the contrary.
There should actually be testing associated with every step:
Is X a real problem worth solving (severity or cost x frequency)?
Would Y be an appropriate solution (test a mockup, prototype, or stub UI)?
Does the Z implementation work (as in, not just does the problem get solved when Z is used, but does Z actually get used to solve the problem)?
Have you ever played that telephone game?
And if they are, it often ends with impossible to implement/maintain designs.
Do you think business analysis is about software architecture? Oh boy.
Given the tendency for software architectures to mirror org-charts, the two aren't as disparate as you think.
If you go straight from problem to coder, you shouldn't be surprised that you don't have a proper solution, because nobody really made a proper solution. That's like building a house without an architect. Hire an analyst.