Agile vs Waterfall: Choosing the Right Methodology for Software Development