What is the role of troubleshooting and root cause analysis in software engineering, and how can fault tree diagrams aid in this process? Why is it important to divide a complex software development project into phases? Explain how different approaches to process methodologies (such as linear, iterative, and agile) impact the execution of these phases. Which approach would you recommend for a dynamic project and why? [10 Marks]