Some business software fail because the tech guy fails to understand the business needs. So we have software that runs but does not work. On the other end of the scale, business people keep pushing to cut corners. So we now have a business software that is perceived to work, but it actually does not run properly. I think we all know about this classic tug of war. However I am thinking maybe business software fail because people do not care. In the software business people move from one place to another in just a few months or years. The life of the software is longer than the average tenure of a business or tech staff. I see people only caring about their current deliverable, or what will make him more to his/her next job.
In a way having a open source base may help (not the silver bullet) in getting the software to live beyond the people who handles it. However its not possible to open source all software, and a more important consideration is open sourcing will not guarantee a community will evolve around it. Until then those people who cares about software that works will have to work with those people who just cares for the bucks. Sadly there are more people who is in it for the buck, which also makes it hard to make software that works.