I think the reason for the Bug depends on the phase in which that bug got introduced.
Software Have bugs due to ------
1-Miscommunication or no communication
2-software complexity
3-programming errors
4-changing requirements
5-Time pressures
6-Poorly documented code