- If it is in the designing phase then the reason is misinterpreted or unclear requirements,
- If the bug gets introduced during the coding phase then it is probably because of wrong logic, or check not put in for all possible use-cases.
- If a bug gets introduced as a side-effect of fixing another bug, then it may be because of lack of understanding of overall code by the one who is fixing the bug. This happens while maintaining the legacy softwares
- Sometimes, the requirements changes very often and the to align to the changing requirements, the developer put lot of patch work in the code which make it more prone to bugs.


